update interval setting and optimization (> 0.1)
This commit is contained in:
parent
a3afe85909
commit
33dd2b9bfd
|
@ -1,4 +1,15 @@
|
|||
---------------------------------------------------------------------------------------------------
|
||||
Version: 0.1.4
|
||||
Date: 2019.11.16
|
||||
Features:
|
||||
- Improved performance thanks to Elrood (https://mods.factorio.com/mod/better-air-filtering/discussion/5de458a8b40f56000b3ca43c)
|
||||
- Setting for update interval (can be changed for better UPS).
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 0.1.3
|
||||
Date: 2019.11.16
|
||||
Locale:
|
||||
- EN for pollution filter fuel category.
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 0.1.2
|
||||
Date: 2019.10.12
|
||||
Features:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
-- # Constants #
|
||||
-- #################
|
||||
|
||||
local INTERVAL = 20
|
||||
local INTERVAL = settings.global["baf-update-interval"].value
|
||||
|
||||
|
||||
|
||||
|
@ -104,45 +104,6 @@ end
|
|||
-- # Update script #
|
||||
-- #####################
|
||||
|
||||
--function updateInserters(event)
|
||||
--for _, surface in pairs(game.surfaces) do
|
||||
-- local inserters = surface.find_entities_filtered({type="inserter"})
|
||||
-- for _, inserter in pairs(inserters) do
|
||||
-- updateInserter(inserter)
|
||||
-- end
|
||||
--end
|
||||
--end
|
||||
|
||||
--function updateInserter(inserter)
|
||||
--game.print(serpent.line(inserter.position))
|
||||
--local drop_target = inserter.drop_target
|
||||
--if drop_target == nil then return end
|
||||
--local pickup_target = inserter.pickup_target
|
||||
--if pickup_target == nil then return end
|
||||
--local burnt_result_inventory = pickup_target.get_burnt_result_inventory()
|
||||
--if burnt_result_inventory == nil then return end
|
||||
--if burnt_result_inventory.is_empty() then return end
|
||||
--if inserter.get_item_count() > 0 then return end
|
||||
--
|
||||
--
|
||||
--local contents = burnt_result_inventory.get_contents()
|
||||
--
|
||||
--
|
||||
--for item_name, count in pairs (contents) do
|
||||
-- fuel_item_name = item_name
|
||||
--end
|
||||
--
|
||||
--if inserter.get_item_count() < 1 then
|
||||
-- if inserter.held_stack.valid_for_read == false then
|
||||
-- if pickup_target.get_item_count(fuel_item_name) > 0 then
|
||||
-- inserter.held_stack.set_stack({name = fuel_item_name, count = 1})
|
||||
-- pickup_target.remove_item({name = fuel_item_name, count = 1})
|
||||
-- return
|
||||
-- end
|
||||
-- end
|
||||
--end
|
||||
--end
|
||||
|
||||
|
||||
function absorbPollution(event)
|
||||
-- game.print("insertPollution")
|
||||
|
@ -209,7 +170,7 @@ function suctionUpdateChunk(chunkTo, dx, dy)
|
|||
local chunkFrom = getFilteredChunk(chunkTo.surface, chunkTo.x + dx, chunkTo.y + dy)
|
||||
local test = chunkFrom:getTotalSuctionRate(0)
|
||||
local pollution = chunkFrom:get_pollution()
|
||||
if pollution > 0 then
|
||||
if pollution > 0.1 then
|
||||
local toPollute = math.min(pollution, totalSuction)
|
||||
local chunksVia = {}
|
||||
for _, step in pairs(stepsToOrigin(dx, dy)) do
|
||||
|
@ -270,6 +231,8 @@ end
|
|||
function generateFunctions()
|
||||
local functions = {}
|
||||
|
||||
table.insert(functions, function(event) game.print(event.tick) end)
|
||||
|
||||
table.insert(functions, absorbPollution)
|
||||
|
||||
for radius = 1, 4 do
|
||||
|
@ -601,14 +564,14 @@ end
|
|||
|
||||
|
||||
-- Set up callbacks
|
||||
|
||||
script.on_event({ defines.events.on_built_entity, defines.events.on_robot_built_entity }, onEntityCreated)
|
||||
|
||||
|
||||
-- on_entity_died should trigger both functions -> called manually
|
||||
script.on_event({ defines.events.on_player_mined_entity, defines.events.on_robot_mined_entity, defines.events.on_entity_died }, onEntityRemoved)
|
||||
script.on_event({ defines.events.on_pre_player_mined_item, defines.events.on_pre_robot_mined_item, defines.events.on_entity_died }, preEntityRemoved)
|
||||
|
||||
local functions = generateFunctions()
|
||||
functions = generateFunctions()
|
||||
local onTick = spreadOverTicks(functions, INTERVAL)
|
||||
script.on_event(defines.events.on_tick, onTick)
|
||||
|
||||
|
@ -617,5 +580,17 @@ script.on_init(init)
|
|||
script.on_configuration_changed(init)
|
||||
|
||||
|
||||
function onSettingsChanged(event)
|
||||
game.print("Settings changed")
|
||||
game.print(serpent.line(event))
|
||||
INTERVAL = settings.global["baf-update-interval"].value
|
||||
|
||||
game.print("Interval: " .. INTERVAL)
|
||||
|
||||
local onTick = spreadOverTicks(functions, INTERVAL)
|
||||
script.on_event(defines.events.on_tick, onTick)
|
||||
end
|
||||
|
||||
script.on_event(defines.events.on_runtime_mod_setting_changed, onSettingsChanged)
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "better-air-filtering",
|
||||
"version": "0.1.2",
|
||||
"version": "0.1.4",
|
||||
"title": "Better Air Filtering",
|
||||
"author": "Joey De Pauw",
|
||||
"contact": "joeydepauw@gmail.com",
|
||||
|
@ -9,7 +9,8 @@
|
|||
"dependencies": [
|
||||
"base >= 0.17",
|
||||
"!air-filtering",
|
||||
"!NauvisDay"
|
||||
"!NauvisDay",
|
||||
"!CW-carbon-capture"
|
||||
],
|
||||
"description": "An overhaul of the air filtering mod by Schorty. Includes complex air filtering steps to remove pollution."
|
||||
}
|
||||
|
|
|
@ -17,6 +17,10 @@ liquid-filter=Liquid filter
|
|||
used-liquid-filter=Used liquid filter
|
||||
|
||||
|
||||
[fuel-category-name]
|
||||
pollution-filter=Air filter
|
||||
|
||||
|
||||
[fluid-name]
|
||||
pollution=Pollution
|
||||
polluted-water=Polluted Water
|
||||
|
@ -29,6 +33,7 @@ filter-air-expendable=Filter air
|
|||
liquid-pollution=Condense pollution
|
||||
air-filter-recycling=Recycle used air filter
|
||||
|
||||
|
||||
[technology-name]
|
||||
air-filtering=Air filtering
|
||||
air-filter-recycling=Recycle used air filters
|
||||
|
@ -40,3 +45,12 @@ air-filtering-2=A stronger air filter that uses electricity to pull pollution to
|
|||
air-filtering-3=An even stronger air filter, capable of cleaning pollution in a 3 chunk radius.
|
||||
reusable-air-filters=More strudy air filters that can be recycled with future technology.
|
||||
air-filter-recycling=Used air filters can be reused after being recycled by using a bit of coal to refill them.
|
||||
|
||||
|
||||
[mod-setting-name]
|
||||
baf-update-interval=Update interval
|
||||
|
||||
[mod-setting-description]
|
||||
baf-update-interval=Updates are implemented efficiently and are spread over an UPDATE INTERVAL amount of ticks. The default of 20 gives three updates per second. 30 would result in 2 updates per second for example.
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
data:extend({
|
||||
{
|
||||
type = "int-setting",
|
||||
name = "baf-update-interval",
|
||||
setting_type = "runtime-global",
|
||||
minimum_value = 5,
|
||||
maximum_value = 120,
|
||||
default_value = 20
|
||||
}
|
||||
})
|
Reference in New Issue