z_mirror/EditorExtensions
git clone https://git.raiguard.me/z_mirror/EditorExtensions
d620480
hidden-items
1local util =require ( "__EditorExtensions__/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 } ) 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 . controller_type == defines . controllers . editor ) 51 52local in_editor =player . controller_type == defines . controllers . editor 53local margin =in_editor and editor_gui_width or 0 54player . gui . top . style . left_margin =margin 55player . gui . left . style . left_margin =margin 56 57if global . editor_toggled or not game . tick_paused then 58return 59end 60global . editor_toggled =true 61if game . tick_paused and settings . global [ "ee-prevent-initial-pause" ]. value then 62game . tick_paused =false 63end 64end 65 66--- @param e EventData.on_player_created 67local function on_player_created ( e ) 68local player =game . get_player ( e . player_index ) 69if not player then 70return 71end 72 73util . player_can_use_editor ( player ) 74 75if player . mod_settings [ "ee-auto-alt-mode" ]. value then 76local game_view_settings =player . game_view_settings 77game_view_settings . show_entity_info =true 78player . game_view_settings =game_view_settings 79end 80 81if not util . in_debug_world () and not util . in_testing_scenario () then 82player . ( { "message.ee-welcome" } ) 83end 84end 85 86--- @param e EventData.on_permission_group_edited 87local function on_permission_group_edited ( e ) 88if string . find ( e . type , "permission" ) and e . action ~= defines . input_action . toggle_map_editor then 89return 90end 91for _ , player in pairs ( e . group . players ) do 92util . player_can_use_editor ( player ) 93end 94end 95 96--- @class SERemoteViewToggledEventData: EventData 97--- @field player_index uint 98 99local function register_se_events () 100local se =remote . interfaces [ "space-exploration" ] 101if not se then 102return 103end 104if se . get_on_remote_view_started_event then 105script . on_event ( remote . call ( "space-exploration" , "get_on_remote_view_started_event" ), function ( e ) 106--- @cast e SERemoteViewToggledEventData 107game . get_player ( e . player_index ). set_shortcut_available ( "ee-toggle-map-editor" , false ) 108end ) 109end 110if se . get_on_remote_view_stopped_event then 111script . on_event ( remote . call ( "space-exploration" , "get_on_remote_view_stopped_event" ), function ( e ) 112--- @cast e SERemoteViewToggledEventData 113util . player_can_use_editor ( game . get_player ( e . player_index ) --[[@as LuaPlayer]] ) 114end ) 115end 116end 117 118local editor ={} 119 120editor . on_init =function () 121for player_index in pairs ( game . players ) do 122--- @cast player_index uint 123on_player_created ( { player_index =player_index } ) 124end 125register_se_events () 126end 127 128editor . on_load =register_se_events 129 130editor . on_configuration_changed =function () 131for _ , player in pairs ( game . players ) do 132util . player_can_use_editor ( player ) 133end 134end 135 136editor . events ={ 137[ defines . events . on_lua_shortcut ] =on_toggle_editor , 138[ defines . events . on_permission_group_edited ] =on_permission_group_edited , 139[ defines . events . on_player_created ] =on_player_created , 140[ defines . events . on_player_toggled_map_editor ] =on_player_toggled_map_editor , 141[ "ee-toggle-map-editor" ] =on_toggle_editor , 142} 143 144return editor