z_mirror/Krastorio2
git clone https://git.raiguard.me/z_mirror/Krastorio2
07409ca6
four-space-indentation
1local flib_position =require ( "__flib__.position" ) 2 3--- @param turbine LuaEntity 4local function build_collision ( turbine ) 5for _ , existing_collision in 6pairs ( 7turbine . surface . find_entities_filtered ( { name ="kr-wind-turbine-collision" , position =turbine . position } ) 8) 9do 10if flib_position . eq ( existing_collision . position , turbine . position ) then 11return 12end 13end 14 15turbine . surface . create_entity ( { 16name ="kr-wind-turbine-collision" , 17position =turbine . position , 18force =turbine . force , 19create_build_effect_smoke =false , 20} ) 21end 22 23--- @param turbine LuaEntity 24local function destroy_collision ( turbine ) 25for _ , collision in 26pairs ( 27turbine . surface . find_entities_filtered ( { name ="kr-wind-turbine-collision" , position =turbine . position } ) 28) 29do 30if flib_position . eq ( collision . position , turbine . position ) then 31collision . destroy () 32end 33end 34end 35 36--- @param e EntityBuiltEvent 37local function on_entity_built ( e ) 38local entity =e . entity or e . destination 39if not entity or not entity . valid or entity . name ~= "kr-wind-turbine" then 40return 41end 42 43build_collision ( entity ) 44end 45 46--- @param e EntityDestroyedEvent 47local function on_entity_destroyed ( e ) 48local entity =e . entity 49if not entity or not entity . valid or entity . name ~= "kr-wind-turbine" then 50return 51end 52 53destroy_collision ( entity ) 54end 55 56--- @class wind_turbine_handler: event_handler 57local wind_turbine_handler ={} 58 59function wind_turbine_handler . on_configuration_changed () 60for _ , surface in pairs ( game . surfaces ) do 61for _ , entity in 62pairs ( surface . find_entities_filtered ( { name ={ "kr-wind-turbine" , "kr-wind-turbine-collision" } } )) 63do 64if entity . name == "kr-wind-turbine" then 65build_collision ( entity ) 66elseif entity . name == "kr-wind-turbine-collision" then 67local existing_turbine =entity . surface . find_entity ( "kr-wind-turbine" , entity . position ) 68if not existing_turbine or not flib_position . eq ( existing_turbine . position , entity . position ) then 69entity . destroy () 70end 71end 72end 73end 74end 75 76wind_turbine_handler . events ={ 77[ defines . events . on_built_entity ] =on_entity_built , 78[ defines . events . on_entity_cloned ] =on_entity_built , 79[ defines . events . on_entity_died ] =on_entity_destroyed , 80[ defines . events . on_player_mined_entity ] =on_entity_destroyed , 81[ defines . events . on_robot_built_entity ] =on_entity_built , 82[ defines . events . on_robot_mined_entity ] =on_entity_destroyed , 83[ defines . events . on_space_platform_built_entity ] =on_entity_built , 84[ defines . events . on_space_platform_mined_entity ] =on_entity_destroyed , 85[ defines . events . script_raised_built ] =on_entity_built , 86[ defines . events . script_raised_destroy ] =on_entity_destroyed , 87[ defines . events . script_raised_revive ] =on_entity_built , 88} 89 90return wind_turbine_handler