mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-02 00:42:29 +00:00
90 lines
4.8 KiB
Lua
90 lines
4.8 KiB
Lua
--Helper function for common use
|
|
local function AddBox(panel,cmd,str)
|
|
panel:AddControl("CheckBox",{Label=str, Command=cmd})
|
|
end
|
|
--Helper function for common use
|
|
local function AddTextBox(panel,cmd,str)
|
|
panel:AddControl("TextBox",{Label=str, Command=cmd})
|
|
end
|
|
local function AddSlider(panel,cmd,str,min,max,fl)
|
|
panel:AddControl("Slider",{Label=str, Command=cmd,min=min,max=max,type=fl and "float"})
|
|
end
|
|
-- Build admin panel
|
|
local function AdminPanel(panel)
|
|
if not LocalPlayer():IsAdmin() then return end
|
|
AddBox(panel,"metrostroi_train_requirethirdrail",Metrostroi.GetPhrase("Panel.RequireThirdRail"))
|
|
--panel:AddControl("CheckBox",{Label="Trains require 3rd rail", Command = "metrostroi_train_requirethirdrail"})
|
|
end
|
|
-- Build regular client panel
|
|
local function ClientPanel(panel)
|
|
panel:ClearControls()
|
|
panel:SetPadding(0)
|
|
panel:SetSpacing(0)
|
|
panel:Dock( FILL )
|
|
local Lang = vgui.Create("DComboBox")
|
|
Lang:SetValue(Metrostroi.CurrentLanguageTable and Metrostroi.CurrentLanguageTable.lang or Metrostroi.GetPhrase("Panel.Language"))
|
|
Lang:SetColor(color_black)
|
|
for k,v in pairs(Metrostroi.Languages) do
|
|
Lang:AddChoice(v.lang, k)
|
|
end
|
|
Lang.OnSelect = function(Lang,index,value,data)
|
|
Metrostroi.ChoosedLang = data
|
|
RunConsoleCommand("metrostroi_language",Metrostroi.ChoosedLang)
|
|
end
|
|
panel:AddItem(Lang)
|
|
panel:ControlHelp(Metrostroi.GetPhrase("AuthorText"))
|
|
if Metrostroi.HasPhrase("AuthorTextMetadmin") then
|
|
panel:ControlHelp(Metrostroi.GetPhrase("AuthorTextMetadmin"))
|
|
end
|
|
|
|
|
|
AddBox(panel,"metrostroi_drawcams",Metrostroi.GetPhrase("Panel.DrawCams"))
|
|
AddBox(panel,"metrostroi_disablehud",Metrostroi.GetPhrase("Panel.DisableHUD"))
|
|
AddBox(panel,"metrostroi_disablecamaccel",Metrostroi.GetPhrase("Panel.DisableCamAccel"))
|
|
AddBox(panel,"metrostroi_disablehovertext",Metrostroi.GetPhrase("Panel.DisableHoverText"))
|
|
AddBox(panel,"metrostroi_disablehovertextpos",Metrostroi.GetPhrase("Panel.DisableHoverTextP"))
|
|
AddBox(panel,"metrostroi_screenshotmode",Metrostroi.GetPhrase("Panel.ScreenshotMode"))
|
|
AddBox(panel,"metrostroi_shadows1",Metrostroi.GetPhrase("Panel.ShadowsHeadlight"))
|
|
AddBox(panel,"metrostroi_shadows3",Metrostroi.GetPhrase("Panel.RedLights"))
|
|
AddBox(panel,"metrostroi_shadows2",Metrostroi.GetPhrase("Panel.ShadowsOther"))
|
|
AddBox(panel,"metrostroi_shadows4",Metrostroi.GetPhrase("Panel.PanelLights"))
|
|
AddBox(panel,"metrostroi_sprites",Metrostroi.GetPhrase("Panel.PanelSprites"))
|
|
local DRouteNumber = panel:TextEntry(Metrostroi.GetPhrase("Panel.RouteNumber"),"metrostroi_route_number")
|
|
AddBox(panel,"metrostroi_minimizedshow",Metrostroi.GetPhrase("Panel.MinimizedShow"))
|
|
AddSlider(panel,"metrostroi_cabfov",Metrostroi.GetPhrase("Panel.FOV"),65,100)
|
|
AddSlider(panel,"metrostroi_cabz",Metrostroi.GetPhrase("Panel.Z"),-10,10,true)
|
|
AddSlider(panel,"metrostroi_renderdistance",Metrostroi.GetPhrase("Panel.RenderDistance"),960,3072)
|
|
panel:Button(Metrostroi.GetPhrase("Panel.ReloadClient"),"metrostroi_reload_client",true)
|
|
|
|
function DRouteNumber:OnChange()
|
|
local oldval = self:GetValue()
|
|
local NewValue = ""
|
|
for i = 1,math.min(3,#oldval) do
|
|
NewValue = NewValue..((oldval[i] or ""):upper():match("[%d]+") or "")
|
|
end
|
|
local oldpos = self:GetCaretPos()
|
|
self:SetText(NewValue)
|
|
self:SetCaretPos(math.min(#NewValue,oldpos,3))
|
|
end
|
|
end
|
|
local function ClientAdvanced(panel)
|
|
panel:ClearControls()
|
|
panel:SetPadding(0)
|
|
panel:SetSpacing(0)
|
|
panel:Dock( FILL )
|
|
AddBox(panel,"metrostroi_drawdebug",Metrostroi.GetPhrase("Panel.DrawDebugInfo"))
|
|
AddBox(panel,"metrostroi_drawsignaldebug",Metrostroi.GetPhrase("Panel.DrawSignalDebugInfo"))
|
|
panel:Button(Metrostroi.GetPhrase("Panel.CheckAddons"),"metrostroi_addons_check")
|
|
panel:Button(Metrostroi.GetPhrase("Panel.ReloadLang"),"metrostroi_language_reload",true)
|
|
AddSlider(panel,"metrostroi_softdrawmultipier",Metrostroi.GetPhrase("Panel.SoftDraw"),25,400)
|
|
AddBox(panel,"metrostroi_language_softreload",Metrostroi.GetPhrase("Panel.SoftReloadLang"))
|
|
--panel:AddControl("combobox","metrostroi_language",{Label="Language", options = {"Русский","Английский"}})
|
|
--panel:AddControl("Checkbox",{Label="Draw debugging info", Command = "metrostroi_drawdebug"})
|
|
end
|
|
|
|
hook.Add("PopulateToolMenu", "Metrostroi cpanel", function()
|
|
spawnmenu.AddToolMenuOption("Utilities", "Metrostroi", "metrostroi_admin_panel", Metrostroi.GetPhrase("Panel.Admin"), "", "", AdminPanel)
|
|
spawnmenu.AddToolMenuOption("Utilities", "Metrostroi", "metrostroi_client_panel", Metrostroi.GetPhrase("Panel.Client"), "", "", ClientPanel)
|
|
spawnmenu.AddToolMenuOption("Utilities", "Metrostroi", "metrostroi_clientadv_panel", Metrostroi.GetPhrase("Panel.ClientAdvanced"), "", "", ClientAdvanced)
|
|
end)
|