z_mirror/PipeVisualizer

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

Caleb HeuerUpdate require syntax9443616

main
1.9 KiB81 linesraw
1local entity_data = require("scripts.entity-data")
2local iterator = require("scripts.iterator")
3
4--- @param e EventData.CustomInputEvent|EventData.on_lua_shortcut
5local function on_toggle_mouseover(e)
6  if e.prototype_name and e.prototype_name ~= "pv-toggle-mouseover" then
7    return
8  end
9
10  global.mouseover_enabled[e.player_index] = not global.mouseover_enabled[e.player_index]
11
12  local player = game.get_player(e.player_index)
13  if not player then
14    return
15  end
16
17  player.set_shortcut_toggled("pv-toggle-mouseover", global.mouseover_enabled[e.player_index])
18  if e.input_name then
19    local text
20    if global.mouseover_enabled[e.player_index] then
21      text = { "message.pv-mouseover-enabled" }
22    else
23      text = { "message.pv-mouseover-disabled" }
24    end
25    player.create_local_flying_text({
26      text = text,
27      create_at_cursor = true,
28    })
29  end
30
31  local it = iterator.get(e.player_index)
32  if it and it.in_overlay then
33    return
34  elseif it then
35    iterator.clear_hovered(e.player_index)
36  end
37end
38
39--- @param e EventData.on_selected_entity_changed
40local function on_selected_entity_changed(e)
41  if not global.mouseover_enabled[e.player_index] then
42    return
43  end
44
45  local player = game.get_player(e.player_index)
46  if not player then
47    return
48  end
49
50  local it = iterator.get(e.player_index)
51  if it and it.in_overlay then
52    return
53  end
54
55  local selected = player.selected
56  if selected and it and entity_data.get(it, selected) then
57    return
58  end
59
60  if it then
61    iterator.clear_hovered(e.player_index)
62  end
63  if selected then
64    iterator.request(selected, e.player_index, false, true)
65  end
66end
67
68local mouseover = {}
69
70function mouseover.on_init()
71  --- @type table<PlayerIndex, boolean>
72  global.mouseover_enabled = {}
73end
74
75mouseover.events = {
76  [defines.events.on_lua_shortcut] = on_toggle_mouseover,
77  [defines.events.on_selected_entity_changed] = on_selected_entity_changed,
78  ["pv-toggle-mouseover"] = on_toggle_mouseover,
79}
80
81return mouseover