z_mirror/EditorExtensions
git clone https://git.raiguard.me/z_mirror/EditorExtensions
e65a4b6
Quezler/patch-1
1local util =require ( "scripts.util" ) 2 3local editor_gui_width =474 4 5--- @param player LuaPlayer 6--- @return boolean 7local function se_check_in_spaceship ( player ) 8local se_interface =remote . interfaces [ "space-exploration" ] 9if not se_interface or not se_interface . get_surface_type then 10return false 11end 12local surface_type =remote . call ( "space-exploration" , "get_surface_type" , { surface_index =player . surface_index } ) --- @diagnostic disable-line: missing-fields 13return surface_type == "spaceship" 14end 15 16--- @param e EventData.CustomInputEvent|EventData.on_lua_shortcut 17local function on_toggle_editor ( e ) 18local input =e . prototype_name or e . input_name 19if input ~= "ee-toggle-map-editor" then 20return 21end 22 23local player =game . get_player ( e . player_index ) 24if not player then 25return 26end 27 28local group =player . permission_group 29if not player . admin or ( group and not group . allows_action ( defines . input_action . toggle_map_editor )) then 30player . ( { "message.ee-cannot-use-map-editor" } ) 31return 32end 33 34local lab_setting =player . mod_settings [ "ee-testing-lab" ]. value 35if lab_setting ~= "off" and se_check_in_spaceship ( player ) then 36player . ( { "message.ee-cannot-use-testing-lab-spaceship" } ) 37return 38end 39 40player . toggle_map_editor () 41end 42 43--- @param e EventData.on_player_toggled_map_editor 44local function on_player_toggled_map_editor ( e ) 45local player =game . get_player ( e . player_index ) 46if not player then 47return 48end 49 50player . set_shortcut_toggled ( "ee-toggle-map-editor" , player . physical_controller_type == defines . controllers . editor ) 51 52if storage . editor_toggled or not game . tick_paused then 53return 54end 55storage . editor_toggled =true 56if game . tick_paused and settings . global [ "ee-prevent-initial-pause" ]. value then 57game . tick_paused =false 58end 59end 60 61--- @param e EventData.on_player_created 62local function on_player_created ( e ) 63local player =game . get_player ( e . player_index ) 64if not player then 65return 66end 67 68util . player_can_use_editor ( player ) 69 70if player . mod_settings [ "ee-auto-alt-mode" ]. value then 71local game_view_settings =player . game_view_settings 72game_view_settings . show_entity_info =true 73player . game_view_settings =game_view_settings 74end 75 76if not util . in_debug_world () and not util . in_testing_scenario () then 77player . ( { "message.ee-welcome" } ) 78end 79end 80 81--- @param e EventData.on_permission_group_edited 82local function on_permission_group_edited ( e ) 83if string . find ( e . type , "permission" ) and e . action ~= defines . input_action . toggle_map_editor then 84return 85end 86for _ , player in pairs ( e . group . players ) do 87util . player_can_use_editor ( player ) 88end 89end 90 91--- @class SERemoteViewToggledEventData: EventData 92--- @field player_index uint 93 94local function register_se_events () 95local se =remote . interfaces [ "space-exploration" ] 96if not se then 97return 98end 99if se . get_on_remote_view_started_event then 100script . on_event ( remote . call ( "space-exploration" , "get_on_remote_view_started_event" ) --[[@as uint]] , function ( e ) 101--- @cast e SERemoteViewToggledEventData 102game . get_player ( e . player_index ). set_shortcut_available ( "ee-toggle-map-editor" , false ) 103end ) 104end 105if se . get_on_remote_view_stopped_event then 106script . on_event ( remote . call ( "space-exploration" , "get_on_remote_view_stopped_event" ) --[[@as uint]] , function ( e ) 107--- @cast e SERemoteViewToggledEventData 108util . player_can_use_editor ( game . get_player ( e . player_index ) --[[@as LuaPlayer]] ) 109end ) 110end 111end 112 113local editor ={} 114 115editor . on_init =function () 116for player_index in pairs ( game . players ) do 117--- @cast player_index uint 118on_player_created ( { player_index =player_index } ) --- @diagnostic disable-line: missing-fields 119end 120register_se_events () 121end 122 123editor . on_load =register_se_events 124 125editor . on_configuration_changed =function () 126for _ , player in pairs ( game . players ) do 127util . player_can_use_editor ( player ) 128end 129end 130 131editor . events ={ 132[ defines . events . on_lua_shortcut ] =on_toggle_editor , 133[ defines . events . on_permission_group_edited ] =on_permission_group_edited , 134[ defines . events . on_player_created ] =on_player_created , 135[ defines . events . on_player_toggled_map_editor ] =on_player_toggled_map_editor , 136[ "ee-toggle-map-editor" ] =on_toggle_editor , 137} 138 139return editor