Skip to content

Commit

Permalink
Search Engine: Add support for fluid containers
Browse files Browse the repository at this point in the history
  • Loading branch information
Zomis committed Feb 22, 2021
1 parent def583d commit 0da7311
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 0 deletions.
27 changes: 27 additions & 0 deletions factorio-search-engine_0.0.1/plugins/fluids/fluids.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
local search_utils = require "search_utils"
local table = require "__flib__.table"
local gui = require "__flib__.gui"

local plugin = {
options_type = "fluids",
options_search = function(force, text)
local filtered = table.filter(game.fluid_prototypes, function(_, key)
return search_utils.name_contains(key, text)
end)
return table.map(filtered, function(_, key) return key end)
end,
options_render = function(context, results)
for name in pairs(results) do
local sprite_button = context.parent.add {
type = "sprite-button",
name = "fluids_result__" .. name,
style = "slot_button",
sprite = "fluid/" .. name
}
sprite_button.tooltip = game.fluid_prototypes[name].localised_name
end
gui.update_filters("small_search_window.choose_things.result_button", context.player.index, {"fluids_result"}, "add")
end
}

return plugin
36 changes: 36 additions & 0 deletions factorio-search-engine_0.0.1/plugins/fluids/fluids_container.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
local CONTAINERS = "Containers"

return {
search_options = {
fluids = { CONTAINERS }
},
search_loops = {
fluids = {
[CONTAINERS] = function(_, _, task_data)
local player = game.get_player(task_data.player_index)
return player.surface.find_entities_filtered {
type = "storage-tank",
force = player.force
}
end
}
},
search_filters = {
fluids = {
[CONTAINERS] = {
function(player, search_params, item, results)
if not item.valid then return end
local amount = item.get_fluid_count(search_params.name)
if amount <= 0 then return nil end
table.insert(results, {
entity = item,
location = item.position,
owner = item.last_user,
count = amount
})
end
}
}
}
-- game.print(tostring(#game.player.surface.find_entities_filtered { type="transport-belt", force=game.player.force }))
}
2 changes: 2 additions & 0 deletions factorio-search-engine_0.0.1/searcher/main_searcher.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ local searcher = require "searcher/searcher"
local main_searcher = searcher:new()
main_searcher:add_type_plugin(require "plugins/items/items")
main_searcher:add_search_plugin(require "plugins/items/item_container")
main_searcher:add_type_plugin(require "plugins/fluids/fluids")
main_searcher:add_search_plugin(require "plugins/fluids/fluids_container")

main_searcher:add_type_plugin(require "plugins/signals/signals")
main_searcher:add_search_plugin(require "plugins/signals/signals_search")
Expand Down

0 comments on commit 0da7311

Please sign in to comment.