diff --git a/better-air-filtering/control.lua b/better-air-filtering/control.lua new file mode 100644 index 0000000..0b6ddd1 --- /dev/null +++ b/better-air-filtering/control.lua @@ -0,0 +1,48 @@ +function onTick(event) + for radius = 0, 4 do + if event.tick % 30 == radius then + for _, surface in pairs(game.surfaces) do + local filters = surface.find_entities_filtered { + name = {"air-filter-machine-1", "air-filter-machine-2", "air-filter-machine-3"} + } + updateAirFilters(surface, filters, radius) + end + end + end +end + +function updateAirFilters(surface, filters, radius) + -- Carefull not to suck in more pollution than can process + -- This would make air filters OP because they would capture cloud without the need to filter + for _, filter in pairs(filters) do + local chunk_pollution = surface.get_pollution(filter.position) + if chunk_pollution > 0 then + local to_insert = math.min(chunk_pollution, 4) + local inserted_amount = filter.insert_fluid({name="pollution", amount=to_insert}) + surface.pollute(filter.position, -inserted_amount) + end + end +end + +function iteratePerChunk(filters) + -- TODO implement +end + +function movePollution(chunkFrom, chunkTo, amount) + -- TODO should make machine consume power to move? +end + +function getPurificationRate(entity) + -- TODO implement + -- 0 if not able to run + -- based on crafting speed and amount of power (if possible) + -- based on recipe? Maybe not -> machine not stronger/weaker +end + +-- TODO +-- Make multiple filters in same chunk absorb balanced amount of pollution (not iterative) +-- Make more efficient +-- + +script.on_event(defines.events.on_tick, onTick) + diff --git a/better-air-filtering/graphics/entity/air-filter-machine.png b/better-air-filtering/graphics/entity/air-filter-machine-1.png similarity index 100% rename from better-air-filtering/graphics/entity/air-filter-machine.png rename to better-air-filtering/graphics/entity/air-filter-machine-1.png diff --git a/better-air-filtering/graphics/entity/air-filter-machine-mk2.png b/better-air-filtering/graphics/entity/air-filter-machine-2.png similarity index 100% rename from better-air-filtering/graphics/entity/air-filter-machine-mk2.png rename to better-air-filtering/graphics/entity/air-filter-machine-2.png diff --git a/better-air-filtering/graphics/entity/air-filter-machine-mk3.png b/better-air-filtering/graphics/entity/air-filter-machine-3.png similarity index 100% rename from better-air-filtering/graphics/entity/air-filter-machine-mk3.png rename to better-air-filtering/graphics/entity/air-filter-machine-3.png diff --git a/better-air-filtering/graphics/icons/air-filter-machine.png b/better-air-filtering/graphics/icons/air-filter-machine-1.png similarity index 100% rename from better-air-filtering/graphics/icons/air-filter-machine.png rename to better-air-filtering/graphics/icons/air-filter-machine-1.png diff --git a/better-air-filtering/graphics/icons/air-filter-machine-mk2.png b/better-air-filtering/graphics/icons/air-filter-machine-2.png similarity index 100% rename from better-air-filtering/graphics/icons/air-filter-machine-mk2.png rename to better-air-filtering/graphics/icons/air-filter-machine-2.png diff --git a/better-air-filtering/graphics/icons/air-filter-machine-mk3.png b/better-air-filtering/graphics/icons/air-filter-machine-3.png similarity index 100% rename from better-air-filtering/graphics/icons/air-filter-machine-mk3.png rename to better-air-filtering/graphics/icons/air-filter-machine-3.png diff --git a/better-air-filtering/graphics/technology/air-filtering.png b/better-air-filtering/graphics/technology/air-filtering-1.png similarity index 100% rename from better-air-filtering/graphics/technology/air-filtering.png rename to better-air-filtering/graphics/technology/air-filtering-1.png diff --git a/better-air-filtering/graphics/technology/air-filtering-mk2.png b/better-air-filtering/graphics/technology/air-filtering-2.png similarity index 100% rename from better-air-filtering/graphics/technology/air-filtering-mk2.png rename to better-air-filtering/graphics/technology/air-filtering-2.png diff --git a/better-air-filtering/graphics/technology/air-filtering-mk3.png b/better-air-filtering/graphics/technology/air-filtering-3.png similarity index 100% rename from better-air-filtering/graphics/technology/air-filtering-mk3.png rename to better-air-filtering/graphics/technology/air-filtering-3.png diff --git a/better-air-filtering/info.json b/better-air-filtering/info.json index e8c73e5..6f47209 100644 --- a/better-air-filtering/info.json +++ b/better-air-filtering/info.json @@ -1,13 +1,14 @@ { - "name": "better-air-filtering", - "version": "0.1.0", - "title": "Better Air Filtering", - "author": "Joey De Pauw", - "contact": "joeydepauw@gmail.com", - "homepage": "", - "factorio_version": "0.17", - "dependencies": [ - "base >= 0.17" - ], - "description": "An extension to the air filtering mod by Schorty." + "name": "better-air-filtering", + "version": "0.1.0", + "title": "Better Air Filtering", + "author": "Joey De Pauw", + "contact": "joeydepauw@gmail.com", + "homepage": "", + "factorio_version": "0.17", + "dependencies": [ + "base >= 0.17", + "!air-filtering" + ], + "description": "An extension to the air filtering mod by Schorty." } diff --git a/better-air-filtering/locale/en/air-filtering.cfg b/better-air-filtering/locale/en/air-filtering.cfg index 2af6b94..7773d47 100644 --- a/better-air-filtering/locale/en/air-filtering.cfg +++ b/better-air-filtering/locale/en/air-filtering.cfg @@ -1,7 +1,7 @@ [entity-name] -air-filter-machine=Air filter machine 1 -air-filter-machine-mk2=Air filter machine 2 -air-filter-machine-mk3=Air filter machine 3 +air-filter-machine-1=Air filter machine 1 +air-filter-machine-2=Air filter machine 2 +air-filter-machine-3=Air filter machine 3 [item-name] expendable-air-filter=Expendable air FIlter @@ -20,12 +20,12 @@ air-filter-recycling=Recycle used air filter [technology-name] air-filtering=Air filtering 1 -air-filtering-mk2=Air filtering 2 -air-filtering-mk3=Air filtering 3 +air-filtering-2=Air filtering 2 +air-filtering-3=Air filtering 3 air-filter-recycling=Recycle used air filter [technology-description] air-filtering=Enables the crafting of Air Filter Machines to improve air quality by reducing pollution -air-filtering-mk2=Improved versions of the Air Filter Machines can filter the air better. Has increased power and air filter consumption. -air-filtering-mk3=The fastest alternative for cleaning the air but at the cost of a high amount of power. It also uses air filters much more quickly. +air-filtering-2=Improved versions of the Air Filter Machines can filter the air better. Has increased power and air filter consumption. +air-filtering-3=The fastest alternative for cleaning the air but at the cost of a high amount of power. It also uses air filters much more quickly. air-filter-recycling=Used air filters can be reused after being recycled by using a bit of coal to refill them. \ No newline at end of file diff --git a/better-air-filtering/prototypes/entity.lua b/better-air-filtering/prototypes/entity.lua index 9162fc7..4e823ee 100644 --- a/better-air-filtering/prototypes/entity.lua +++ b/better-air-filtering/prototypes/entity.lua @@ -1,11 +1,11 @@ data:extend({ { type = "assembling-machine", - name = "air-filter-machine", - icon = "__better-air-filtering__/graphics/icons/air-filter-machine.png", + name = "air-filter-machine-1", + icon = "__better-air-filtering__/graphics/icons/air-filter-machine-1.png", icon_size = 32, flags = { "placeable-neutral", "placeable-player", "player-creation" }, - minable = { hardness = 0.2, mining_time = 0.5, result = "air-filter-machine" }, + minable = { hardness = 0.2, mining_time = 0.5, result = "air-filter-machine-1" }, fast_replaceable_group = "air-filter-machine", max_health = 150, corpse = "medium-remnants", @@ -14,7 +14,7 @@ data:extend({ selection_box = { { -1.5, -1.5 }, { 1.5, 1.5 } }, animation = { - filename = "__better-air-filtering__/graphics/entity/air-filter-machine.png", + filename = "__better-air-filtering__/graphics/entity/air-filter-machine-1.png", priority = "high", width = 99, height = 102, @@ -52,7 +52,7 @@ data:extend({ fuel_inventory_size = 1, burnt_inventory_size = 1, }, - energy_usage = "0.5MW", + energy_usage = "100kW", fixed_recipe = "filter-air", ingredient_count = 1, module_slots = 0, @@ -60,11 +60,11 @@ data:extend({ }, { type = "assembling-machine", - name = "air-filter-machine-mk2", - icon = "__better-air-filtering__/graphics/icons/air-filter-machine-mk2.png", + name = "air-filter-machine-2", + icon = "__better-air-filtering__/graphics/icons/air-filter-machine-2.png", icon_size = 32, flags = { "placeable-neutral", "placeable-player", "player-creation" }, - minable = { hardness = 0.2, mining_time = 0.5, result = "air-filter-machine" }, + minable = { hardness = 0.2, mining_time = 0.5, result = "air-filter-machine-2" }, fast_replaceable_group = "air-filter-machine", max_health = 150, corpse = "medium-remnants", @@ -73,7 +73,7 @@ data:extend({ selection_box = { { -1.5, -1.5 }, { 1.5, 1.5 } }, animation = { - filename = "__better-air-filtering__/graphics/entity/air-filter-machine-mk2.png", + filename = "__better-air-filtering__/graphics/entity/air-filter-machine-2.png", priority = "high", width = 99, height = 102, @@ -126,19 +126,20 @@ data:extend({ { type = "electric", usage_priority = "secondary-input", + drain="150kW", }, - energy_usage = "1MW", + energy_usage = "150kW", ingredient_count = 1, module_slots = 0, allowed_effects=nill }, { type = "assembling-machine", - name = "air-filter-machine-mk3", - icon = "__better-air-filtering__/graphics/icons/air-filter-machine-mk3.png", + name = "air-filter-machine-3", + icon = "__better-air-filtering__/graphics/icons/air-filter-machine-3.png", icon_size = 32, flags = { "placeable-neutral", "placeable-player", "player-creation" }, - minable = { hardness = 0.2, mining_time = 0.5, result = "air-filter-machine-mk3" }, + minable = { hardness = 0.2, mining_time = 0.5, result = "air-filter-machine-3" }, fast_replaceable_group = "air-filter-machine", max_health = 150, corpse = "medium-remnants", @@ -146,7 +147,7 @@ data:extend({ selection_box = { { -1.5, -1.5 }, { 1.5, 1.5 } }, animation = { - filename = "__better-air-filtering__/graphics/entity/air-filter-machine-mk3.png", + filename = "__better-air-filtering__/graphics/entity/air-filter-machine-3.png", priority = "high", width = 99, height = 102, @@ -199,10 +200,15 @@ data:extend({ { type = "electric", usage_priority = "secondary-input", + drain="200kW", }, - energy_usage = "1MW", + energy_usage = "200kW", ingredient_count = 1, module_slots = 0, allowed_effects=nill + }, + { + type = "highlight-box", + name = "air-filter-highlight-chunk", } }) diff --git a/better-air-filtering/prototypes/item.lua b/better-air-filtering/prototypes/item.lua index 335aaa0..5c36fb7 100644 --- a/better-air-filtering/prototypes/item.lua +++ b/better-air-filtering/prototypes/item.lua @@ -5,35 +5,35 @@ data:extend({ }, { type = "item", - name = "air-filter-machine", - icon = "__better-air-filtering__/graphics/icons/air-filter-machine.png", + name = "air-filter-machine-1", + icon = "__better-air-filtering__/graphics/icons/air-filter-machine-1.png", icon_size = 32, flags = {}, subgroup = "production-machine", - order = "f[air-filter-machine]", - place_result = "air-filter-machine", + order = "f[air-filter-machine-1]", + place_result = "air-filter-machine-1", stack_size = 10, }, { type = "item", - name = "air-filter-machine-mk2", - icon = "__better-air-filtering__/graphics/icons/air-filter-machine-mk2.png", + name = "air-filter-machine-2", + icon = "__better-air-filtering__/graphics/icons/air-filter-machine-2.png", icon_size = 32, flags = {}, subgroup = "production-machine", - order = "f[air-filter-machine]-g[air-filter-machine-mk2]", - place_result = "air-filter-machine-mk2", + order = "f[air-filter-machine-1]-g[air-filter-machine-2]", + place_result = "air-filter-machine-2", stack_size = 10 }, { type = "item", - name = "air-filter-machine-mk3", - icon = "__better-air-filtering__/graphics/icons/air-filter-machine-mk3.png", + name = "air-filter-machine-3", + icon = "__better-air-filtering__/graphics/icons/air-filter-machine-3.png", icon_size = 32, flags = {}, subgroup = "production-machine", - order = "g[air-filter-machine-mk2]-h[air-filter-machine-mk3]", - place_result = "air-filter-machine-mk3", + order = "g[air-filter-machine-2]-h[air-filter-machine-3]", + place_result = "air-filter-machine-3", stack_size = 10 }, { @@ -47,7 +47,7 @@ data:extend({ stack_size = 10, fuel_category = "pollution-filter", burnt_result = nill, - fuel_value = "120MW", + fuel_value = "60MW", }, { type = "item", @@ -60,7 +60,7 @@ data:extend({ stack_size = 50, fuel_category = "pollution-filter", burnt_result = "used-air-filter", - fuel_value = "400MW", + fuel_value = "120MW", }, { type = "item", diff --git a/better-air-filtering/prototypes/recipe.lua b/better-air-filtering/prototypes/recipe.lua index 6d3cf6f..046884a 100644 --- a/better-air-filtering/prototypes/recipe.lua +++ b/better-air-filtering/prototypes/recipe.lua @@ -9,7 +9,7 @@ data:extend({ }, { type = "recipe", - name = "air-filter-machine", + name = "air-filter-machine-1", energy_required = 10.0, enabled = "false", ingredients = @@ -18,31 +18,31 @@ data:extend({ { "electronic-circuit", 5 }, { "steel-plate", 10 } }, - result = "air-filter-machine" + result = "air-filter-machine-1" }, { type = "recipe", - name = "air-filter-machine-mk2", + name = "air-filter-machine-2", energy_required = 10.0, enabled = "false", ingredients = { - { "air-filter-machine", 2 }, + { "air-filter-machine-1", 2 }, { "advanced-circuit", 10 } }, - result = "air-filter-machine-mk2" + result = "air-filter-machine-2" }, { type = "recipe", - name = "air-filter-machine-mk3", + name = "air-filter-machine-3", energy_required = 10.0, enabled = "false", ingredients = { - { "air-filter-machine-mk2", 2 }, + { "air-filter-machine-2", 2 }, { "processing-unit", 10 } }, - result = "air-filter-machine-mk3" + result = "air-filter-machine-3" }, { type = "recipe", diff --git a/better-air-filtering/prototypes/technology.lua b/better-air-filtering/prototypes/technology.lua index e0086d3..a6a0ac4 100644 --- a/better-air-filtering/prototypes/technology.lua +++ b/better-air-filtering/prototypes/technology.lua @@ -1,15 +1,15 @@ data:extend({ { type = "technology", - name = "air-filtering", - icon = "__better-air-filtering__/graphics/technology/air-filtering.png", + name = "air-filtering-1", + icon = "__better-air-filtering__/graphics/technology/air-filtering-1.png", icon_size = "64", prerequisites = {"plastics", "steel-processing", "advanced-electronics"}, effects = { { type = "unlock-recipe", - recipe = "air-filter-machine" + recipe = "air-filter-machine-1" }, { type = "unlock-recipe", @@ -33,15 +33,15 @@ data:extend({ }, { type = "technology", - name = "air-filtering-mk2", - icon = "__better-air-filtering__/graphics/technology/air-filtering-mk2.png", + name = "air-filtering-2", + icon = "__better-air-filtering__/graphics/technology/air-filtering-2.png", icon_size = "64", - prerequisites = {"air-filtering"}, + prerequisites = {"air-filtering-1"}, effects = { { type = "unlock-recipe", - recipe = "air-filter-machine-mk2" + recipe = "air-filter-machine-2" } }, unit = @@ -58,15 +58,15 @@ data:extend({ }, { type = "technology", - name = "air-filtering-mk3", - icon = "__better-air-filtering__/graphics/technology/air-filtering-mk3.png", + name = "air-filtering-3", + icon = "__better-air-filtering__/graphics/technology/air-filtering-3.png", icon_size = "64", - prerequisites = {"air-filtering-mk2"}, + prerequisites = {"air-filtering-2"}, effects = { { type = "unlock-recipe", - recipe = "air-filter-machine-mk3" + recipe = "air-filter-machine-3" } }, unit = @@ -87,7 +87,7 @@ data:extend({ name = "air-filter-recycling", icon = "__better-air-filtering__/graphics/technology/air-filter-recycling.png", icon_size = "64", - prerequisites = {"air-filtering"}, + prerequisites = {"air-filtering-1"}, effects = { {