z_mirror/MouseOverConstruction

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

Caleb HeuerDon't reset shortcut state on configuration changed5a3cd7c

insertion
1.3 KiB43 linesraw
1-- TODO: Execute logic if enabled while entity is selected.
2-- TODO: Cancel logic if disabled while entity is selected.
3
4--- @param e EventData.on_lua_shortcut|EventData.CustomInputEvent
5local function toggle_mouseover(e)
6  local name = e.input_name or e.prototype_name
7  if name ~= "moc-toggle" then
8    return
9  end
10  local player = game.get_player(e.player_index)
11  if not player then
12    return
13  end
14  local new_value = not storage.mouseover_active[e.player_index]
15  storage.mouseover_active[e.player_index] = new_value
16  player.set_shortcut_toggled("moc-toggle", new_value)
17  if e.input_name then
18    player.create_local_flying_text({
19      text = new_value and { "message.moc-enabled" } or { "message.moc-disabled" },
20      create_at_cursor = true,
21    })
22  end
23end
24
25--- @class shortcut_handler : event_handler
26local shortcut_handler = {}
27
28function shortcut_handler.on_init()
29  --- @type Set<PlayerIndex>
30  storage.mouseover_active = {}
31  for _, player in pairs(game.players) do
32    storage.mouseover_active[player.index] = player.is_shortcut_toggled("moc-toggle")
33  end
34end
35
36shortcut_handler.on_configuration_changed = shortcut_handler.on_init
37
38shortcut_handler.events = {
39  [defines.events.on_lua_shortcut] = toggle_mouseover,
40  ["moc-toggle"] = toggle_mouseover,
41}
42
43return shortcut_handler