z_mirror/EditorExtensions

git clone https://git.raiguard.me/z_mirror/EditorExtensions

Caleb HeuerRe-add debug world overridinge4c5e75

1.14
2.7 KiB99 linesraw
1local util = require("__EditorExtensions__/scripts/util")
2
3local editor_gui_width = 474
4
5--- @param e EventData.CustomInputEvent|EventData.on_lua_shortcut
6local function on_toggle_editor(e)
7  local input = e.prototype_name or e.input_name
8  if input ~= "ee-toggle-map-editor" then
9    return
10  end
11
12  local player = game.get_player(e.player_index)
13  if not player then
14    return
15  end
16
17  local group = player.permission_group
18  if not player.admin or (group and not group.allows_action(defines.input_action.toggle_map_editor)) then
19    player.print({ "message.ee-cannot-use-map-editor" })
20    return
21  end
22
23  player.toggle_map_editor()
24end
25
26--- @param e EventData.on_player_toggled_map_editor
27local function on_player_toggled_map_editor(e)
28  local player = game.get_player(e.player_index)
29  if not player then
30    return
31  end
32
33  player.set_shortcut_toggled("ee-toggle-map-editor", player.controller_type == defines.controllers.editor)
34
35  local in_editor = player.controller_type == defines.controllers.editor
36  local margin = in_editor and editor_gui_width or 0
37  player.gui.top.style.left_margin = margin
38  player.gui.left.style.left_margin = margin
39
40  if global.editor_toggled or not game.tick_paused then
41    return
42  end
43  global.editor_toggled = true
44  if game.tick_paused and settings.global["ee-prevent-initial-pause"].value then
45    game.tick_paused = false
46  end
47end
48
49--- @param e EventData.on_player_created
50local function on_player_created(e)
51  local player = game.get_player(e.player_index)
52  if not player then
53    return
54  end
55
56  util.player_can_use_editor(player)
57
58  if player.mod_settings["ee-auto-alt-mode"].value then
59    local game_view_settings = player.game_view_settings
60    game_view_settings.show_entity_info = true
61    player.game_view_settings = game_view_settings
62  end
63
64  if not util.in_debug_world() and not util.in_testing_scenario() then
65    player.print({ "message.ee-welcome" })
66  end
67end
68
69--- @param e EventData.on_permission_group_edited
70local function on_permission_group_edited(e)
71  for _, player in pairs(e.group.players) do
72    util.player_can_use_editor(player)
73  end
74end
75
76local editor = {}
77
78editor.on_init = function()
79  for player_index in pairs(game.players) do
80    --- @cast player_index uint
81    on_player_created({ player_index = player_index })
82  end
83end
84
85editor.on_configuration_changed = function()
86  for _, player in pairs(game.players) do
87    util.player_can_use_editor(player)
88  end
89end
90
91editor.events = {
92  [defines.events.on_lua_shortcut] = on_toggle_editor,
93  [defines.events.on_permission_group_edited] = on_permission_group_edited,
94  [defines.events.on_player_created] = on_player_created,
95  [defines.events.on_player_toggled_map_editor] = on_player_toggled_map_editor,
96  ["ee-toggle-map-editor"] = on_toggle_editor,
97}
98
99return editor