z_mirror/PipeVisualizer
git clone https://git.raiguard.me/z_mirror/PipeVisualizer
9443616
main
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 ) 6if e . prototype_name and e . prototype_name ~= "pv-toggle-mouseover" then 7return 8end 9 10global . mouseover_enabled [ e . player_index ] =not global . mouseover_enabled [ e . player_index ] 11 12local player =game . get_player ( e . player_index ) 13if not player then 14return 15end 16 17player . set_shortcut_toggled ( "pv-toggle-mouseover" , global . mouseover_enabled [ e . player_index ]) 18if e . input_name then 19local text 20if global . mouseover_enabled [ e . player_index ] then 21text ={ "message.pv-mouseover-enabled" } 22else 23text ={ "message.pv-mouseover-disabled" } 24end 25player . create_local_flying_text ( { 26text =text , 27create_at_cursor =true , 28} ) 29end 30 31local it =iterator . get ( e . player_index ) 32if it and it . in_overlay then 33return 34elseif it then 35iterator . clear_hovered ( e . player_index ) 36end 37end 38 39--- @param e EventData.on_selected_entity_changed 40local function on_selected_entity_changed ( e ) 41if not global . mouseover_enabled [ e . player_index ] then 42return 43end 44 45local player =game . get_player ( e . player_index ) 46if not player then 47return 48end 49 50local it =iterator . get ( e . player_index ) 51if it and it . in_overlay then 52return 53end 54 55local selected =player . selected 56if selected and it and entity_data . get ( it , selected ) then 57return 58end 59 60if it then 61iterator . clear_hovered ( e . player_index ) 62end 63if selected then 64iterator . request ( selected , e . player_index , false , true ) 65end 66end 67 68local mouseover ={} 69 70function mouseover . on_init () 71--- @type table<PlayerIndex, boolean> 72global . 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