z_mirror/EditorExtensions
git clone https://git.raiguard.me/z_mirror/EditorExtensions
cabb4ba
trunk
1local infinity_accumulator =require ( "scripts.infinity-accumulator" ) 2local infinity_loader =require ( "scripts.infinity-loader" ) 3local inventory_filters =require ( "scripts.inventory-filters" ) 4local inventory_sync =require ( "scripts.inventory-sync" ) 5local linked_belt =require ( "scripts.linked-belt" ) 6local util =require ( "scripts.util" ) 7 8local version_migrations ={ 9[ "2.0.0" ] =function () 10-- Preserve testing lab state 11local testing_lab_state ={} 12for player_index , player_table in pairs ( storage . players ) do 13local player =game . get_player ( player_index ) 14if player and player_table . lab_state and player_table . normal_state then 15testing_lab_state [ player_index ] ={ 16normal =player_table . normal_state , 17lab =player_table . lab_state , 18player =player , 19refresh =false , 20} 21end 22end 23-- NUKE EVERYTHING 24storage ={ testing_lab_state =testing_lab_state , wagons =storage . wagons } 25rendering . clear ( "EditorExtensions" ) 26for _ , player in pairs ( game . players ) do 27for _ , gui in pairs ( { player . gui . top , player . gui . left , player . gui . center , player . gui . screen , player . gui . relative } ) do 28for _ , child in pairs ( gui . children ) do 29if child . get_mod () == "EditorExtensions" then 30child . destroy () 31end 32end 33end 34end 35-- Start over 36infinity_accumulator . on_init () 37infinity_loader . on_init () 38inventory_filters . on_init () 39inventory_sync . on_init () 40linked_belt . on_init () 41 42-- Migrate infinity loaders 43for _ , surface in pairs ( game . surfaces ) do 44for _ , combinator in pairs ( surface . find_entities_filtered ( { name ="ee-infinity-loader-dummy-combinator" } )) do 45local cb =combinator . get_control_behavior () --[[@as LuaConstantCombinatorControlBehavior?]] 46if not cb then 47goto continue 48end 49local section =cb . get_section ( 1 ) 50if not section then 51goto continue 52end 53local filter_1 , filter_2 =section . filters [ 1 ], section . filters [ 2 ] 54local loader =combinator . surface . create_entity ( { 55name ="ee-infinity-loader" , 56direction =combinator . direction , 57position =combinator . position , 58force =combinator . force , 59last_user =combinator . last_user , 60fast_replace =true , 61create_build_effect_smoke =false , 62} ) 63if not loader then 64error ( "Failed to create infinity loader replacement." ) 65end 66if filter_1 and filter_1 . value then 67loader . set_filter ( 1 , { name =filter_1 . value . name , quality =filter_1 . value . quality , amount =filter_1 . min } ) 68end 69if filter_2 and filter_2 . value then 70loader . set_filter ( 2 , { name =filter_2 . value . name , quality =filter_2 . value . quality , amount =filter_2 . min } ) 71end 72infinity_loader . snap ( loader ) 73combinator . destroy () 74:: continue :: 75end 76end 77end , 78[ "2.3.0" ] =function () 79storage . aggregate_filters =nil 80storage . infinity_pipe_amount_type =nil 81for _ , gui in pairs ( storage . infinity_pipe_gui or {} ) do 82local window =gui . elems . ee_infinity_pipe_window 83if window and window . valid then 84window . destroy () 85end 86end 87storage . infinity_pipe_gui =nil 88end , 89[ "2.3.1" ] =function () 90for surface_name , surface in pairs ( game . surfaces ) do 91if string . find ( surface_name , "EE_TESTSURFACE_" ) then 92for force_name , force in pairs ( game . forces ) do 93if not string . find ( force_name , "EE_TESTFORCE_" ) then 94force . set_surface_hidden ( surface , true ) 95end 96end 97end 98end 99end , 100--- @param old_version string 101[ "2.4.0" ] =function ( old_version ) 102if helpers . compare_versions ( old_version , "2.0.0" ) > 0 then 103return 104end 105for _ , surface in pairs ( game . surfaces ) do 106for _ , loader in pairs ( surface . find_entities_filtered ( { name ="ee-infinity-loader" } )) do 107loader . set_filter ( 2 , loader . get_filter ( 1 )) 108end 109end 110end , 111[ "2.5.0" ] =function () 112local to_remove ={} 113for unit_number , wagon_data in pairs ( storage . wagons ) do 114local proxy =wagon_data . proxy 115if proxy and proxy . valid and proxy . name == "ee-infinity-wagon-chest" then 116local wagon =proxy . surface . find_entity ( "ee-infinity-cargo-wagon" , proxy . position ) 117if wagon then 118wagon . infinity_container_filters =proxy . infinity_container_filters 119wagon . remove_unfiltered_items =proxy . remove_unfiltered_items 120proxy . destroy () 121end 122table . insert ( to_remove , unit_number ) 123end 124end 125for _ , unit_number in pairs ( to_remove ) do 126storage . wagons [ unit_number ] =nil 127end 128end , 129[ "2.5.1" ] =function () 130local in_debug_world =util . in_debug_world () or util . in_testing_scenario () 131for _ , surface in pairs ( game . surfaces ) do 132if ( in_debug_world and surface . name == "nauvis" ) or string . find ( surface . name , "EE_TESTSURFACE" ) then 133surface . ignore_surface_conditions =true 134end 135end 136end , 137} 138 139--- @class migrations_handler: event_handler 140local migrations ={} 141 142--- @param e ConfigurationChangedData 143function migrations . on_configuration_changed ( e ) 144local old_version =e . mod_changes and e . mod_changes [ script . mod_name ] and e . mod_changes [ script . mod_name ]. old_version 145if not old_version then 146return 147end 148 149for version , callback in pairs ( version_migrations ) do 150if helpers . compare_versions ( version , old_version ) > 0 then 151callback ( old_version ) 152end 153end 154end 155 156return migrations