Исправлен мод heroturrets
Добавлен мод blueprint-sandboxes Добавляет метку версии в zzzparanoidal (#72)
This commit is contained in:
186
blueprint-sandboxes/scripts/toggle-gui.lua
Normal file
186
blueprint-sandboxes/scripts/toggle-gui.lua
Normal file
@@ -0,0 +1,186 @@
|
||||
local ToggleGUI = {}
|
||||
|
||||
ToggleGUI.name = BPSB.pfx .. "toggle-gui"
|
||||
ToggleGUI.pfx = ToggleGUI.name .. "-"
|
||||
ToggleGUI.toggleShortcut = ToggleGUI.pfx .. "sb-toggle-shortcut"
|
||||
ToggleGUI.selectedSandboxDropdown = ToggleGUI.pfx .. "selected-sandbox-dropdown"
|
||||
ToggleGUI.resetButton = ToggleGUI.pfx .. "reset-button"
|
||||
ToggleGUI.daytimeSlider = ToggleGUI.pfx .. "daytime-slider"
|
||||
|
||||
function ToggleGUI.Init(player)
|
||||
if player.gui.left[ToggleGUI.name] then
|
||||
return
|
||||
end
|
||||
|
||||
local frame = player.gui.left.add {
|
||||
type = "frame",
|
||||
name = ToggleGUI.name,
|
||||
caption = { "gui." .. ToggleGUI.name },
|
||||
visible = false,
|
||||
}
|
||||
|
||||
local innerFrame = frame.add {
|
||||
type = "frame",
|
||||
name = "innerFrame",
|
||||
direction = "vertical",
|
||||
style = "inside_shallow_frame_with_padding",
|
||||
}
|
||||
|
||||
local topLineFlow = innerFrame.add {
|
||||
type = "flow",
|
||||
name = "topLineFlow",
|
||||
direction = "horizontal",
|
||||
style = BPSB.pfx .. "centered-horizontal-flow",
|
||||
}
|
||||
|
||||
topLineFlow.add {
|
||||
type = "sprite-button",
|
||||
name = ToggleGUI.resetButton,
|
||||
tooltip = { "gui-description." .. ToggleGUI.resetButton },
|
||||
style = "tool_button",
|
||||
sprite = "utility/reset_white",
|
||||
}
|
||||
|
||||
topLineFlow.add {
|
||||
type = "drop-down",
|
||||
name = ToggleGUI.selectedSandboxDropdown,
|
||||
tooltip = { "gui-description." .. ToggleGUI.selectedSandboxDropdown },
|
||||
items = Sandbox.choices,
|
||||
selected_index = global.players[player.index].selectedSandbox,
|
||||
}.style.horizontally_stretchable = true
|
||||
|
||||
local daylightFlow = innerFrame.add {
|
||||
type = "flow",
|
||||
name = "daylightFlow",
|
||||
direction = "horizontal",
|
||||
style = BPSB.pfx .. "centered-horizontal-flow",
|
||||
}
|
||||
|
||||
daylightFlow.add {
|
||||
type = "sprite",
|
||||
tooltip = { "gui-description." .. ToggleGUI.daytimeSlider },
|
||||
sprite = "utility/select_icon_white",
|
||||
resize_to_sprite = false,
|
||||
style = BPSB.pfx .. "sprite-like-tool-button",
|
||||
}
|
||||
|
||||
daylightFlow.add {
|
||||
type = "slider",
|
||||
name = ToggleGUI.daytimeSlider,
|
||||
value = 0.0,
|
||||
minimum_value = 0.5,
|
||||
maximum_value = 0.975,
|
||||
value_step = 0.025,
|
||||
style = "notched_slider",
|
||||
}.style.horizontally_stretchable = true
|
||||
|
||||
ToggleGUI.Update(player)
|
||||
end
|
||||
|
||||
function ToggleGUI.Destroy(player)
|
||||
if not player.gui.left[ToggleGUI.name] then
|
||||
return
|
||||
end
|
||||
player.gui.left[ToggleGUI.name].destroy()
|
||||
end
|
||||
|
||||
function ToggleGUI.FindDescendantByName(instance, name)
|
||||
for _, child in pairs(instance.children) do
|
||||
if child.name == name then
|
||||
return child
|
||||
end
|
||||
local found = ToggleGUI.FindDescendantByName(child, name)
|
||||
if found then return found end
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleGUI.FindByName(player, name)
|
||||
return ToggleGUI.FindDescendantByName(player.gui.left[ToggleGUI.name], name)
|
||||
end
|
||||
|
||||
function ToggleGUI.Update(player)
|
||||
if not player.gui.left[ToggleGUI.name] then
|
||||
return
|
||||
end
|
||||
|
||||
ToggleGUI.FindByName(player, ToggleGUI.selectedSandboxDropdown).selected_index = global.players[player.index].selectedSandbox
|
||||
|
||||
if Sandbox.IsPlayerInsideSandbox(player) then
|
||||
local playerData = global.players[player.index]
|
||||
|
||||
player.set_shortcut_toggled(ToggleGUI.toggleShortcut, true)
|
||||
player.gui.left[ToggleGUI.name].visible = true
|
||||
|
||||
local resetButton = ToggleGUI.FindByName(player, ToggleGUI.resetButton)
|
||||
if game.is_multiplayer
|
||||
and not player.admin
|
||||
and playerData.selectedSandbox ~= Sandbox.player
|
||||
and settings.global[Settings.onlyAdminsForceReset].value
|
||||
then
|
||||
resetButton.enabled = false
|
||||
resetButton.tooltip = { "gui-description." .. ToggleGUI.resetButton .. "-only-admins" }
|
||||
else
|
||||
resetButton.enabled = true
|
||||
resetButton.tooltip = { "gui-description." .. ToggleGUI.resetButton }
|
||||
end
|
||||
|
||||
ToggleGUI.FindByName(player, ToggleGUI.daytimeSlider).slider_value = player.surface.daytime
|
||||
else
|
||||
player.set_shortcut_toggled(ToggleGUI.toggleShortcut, false)
|
||||
player.gui.left[ToggleGUI.name].visible = false
|
||||
ToggleGUI.FindByName(player, ToggleGUI.resetButton).enabled = false
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleGUI.OnGuiValueChanged(event)
|
||||
local player = game.players[event.player_index]
|
||||
if event.element.name == ToggleGUI.daytimeSlider then
|
||||
local daytime = event.element.slider_value
|
||||
return Lab.SetDayTime(player, player.surface, daytime)
|
||||
or SpaceExploration.SetDayTime(player, player.surface, daytime)
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleGUI.OnGuiDropdown(event)
|
||||
local player = game.players[event.player_index]
|
||||
if event.element.name == ToggleGUI.selectedSandboxDropdown then
|
||||
local choice = event.element.selected_index
|
||||
if Sandbox.IsEnabled(choice) then
|
||||
global.players[player.index].selectedSandbox = event.element.selected_index
|
||||
Sandbox.Toggle(event.player_index)
|
||||
else
|
||||
player.print("That Sandbox is not possible.")
|
||||
event.element.selected_index = global.players[player.index].selectedSandbox
|
||||
ToggleGUI.Update(player)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleGUI.OnGuiClick(event)
|
||||
local player = game.players[event.player_index]
|
||||
if event.element.name == ToggleGUI.toggleShortcut then
|
||||
Sandbox.Toggle(event.player_index)
|
||||
elseif event.element.name == ToggleGUI.resetButton then
|
||||
if event.shift then
|
||||
return Lab.ResetEquipmentBlueprint(player.surface)
|
||||
or SpaceExploration.ResetEquipmentBlueprint(player.surface)
|
||||
else
|
||||
local blueprintString = Inventory.GetCursorBlueprintString(player)
|
||||
if blueprintString then
|
||||
return Lab.SetEquipmentBlueprint(player.surface, blueprintString)
|
||||
or SpaceExploration.SetEquipmentBlueprint(player.surface, blueprintString)
|
||||
else
|
||||
return Lab.Reset(player)
|
||||
or SpaceExploration.Reset(player)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleGUI.OnToggleShortcut(event)
|
||||
if (event.input_name or event.prototype_name) == ToggleGUI.toggleShortcut then
|
||||
Sandbox.Toggle(event.player_index)
|
||||
end
|
||||
end
|
||||
|
||||
return ToggleGUI
|
||||
Reference in New Issue
Block a user