63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| --todo (sigh), this is old spaghetti, maybe make it fresh, use a map of unit number and next() to clean it up...
 | |
| 
 | |
| function check_interfaces()
 | |
|   local count = global.wind_interfaces_index
 | |
|   if not count then count = 1 end
 | |
|   local array = global.wind_interfaces
 | |
|   if not array then array = {} end
 | |
|   local max = global.wind_interfaces_max_count
 | |
|   if not max then max = 1 end
 | |
|   local entity = array[count]
 | |
|   if entity then
 | |
|     if entity.valid then
 | |
|       if entity.is_connected_to_electric_network() then
 | |
|         local power = 10000*entity.surface.wind_speed
 | |
|         local this_power = power * (math.random()+0.5)
 | |
|         entity.power_production = this_power
 | |
|         entity.electric_buffer_size = this_power
 | |
|       end
 | |
|     else
 | |
|       array[count] = nil
 | |
|     end
 | |
|   end
 | |
|   if count >= max then
 | |
|     count = 1
 | |
|   else
 | |
|     count = count + 1
 | |
|   end
 | |
|   global.wind_interfaces_index = count
 | |
|   global.wind_interfaces = array
 | |
|   global.wind_interfaces_max_count = max
 | |
| end
 | |
| 
 | |
| function built_interface(entity)
 | |
|   if not entity.valid then return end
 | |
|   local count = global.wind_interfaces_max_count + 1
 | |
|   local power = 10000*entity.surface.wind_speed
 | |
|   global.wind_interfaces[count] = entity
 | |
|   entity.energy = 1000
 | |
|   entity.power_production = power
 | |
|   global.wind_interfaces_max_count = count
 | |
| end
 | |
| 
 | |
| function change_wind_hour()
 | |
|   global.wind_hour = math.random(5,40)/1000
 | |
| end
 | |
| 
 | |
| function change_wind_day()
 | |
| 	global.wind_day = math.random(80,120)/100
 | |
| end
 | |
| 
 | |
| function tick_wind()
 | |
| 
 | |
|   global.wind_day = global.wind_day or 1
 | |
|   global.wind_hour = global.wind_hour or 0.02
 | |
| 
 | |
|   local nv = global.wind_hour * global.wind_day
 | |
|   for k, s in pairs(game.surfaces) do
 | |
|     local v = s.wind_speed
 | |
|     dv = (nv-v)/45
 | |
|     s.wind_speed = v + dv
 | |
|   end
 | |
| end
 |