From 29a8456ebd330739d99eb8aa07a66a8ae0b695f8 Mon Sep 17 00:00:00 2001 From: Alexsandro Percy Date: Mon, 18 Dec 2023 21:48:06 -0300 Subject: [PATCH] added texture management --- init.lua | 1 + texture_management.lua | 99 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 texture_management.lua diff --git a/init.lua b/init.lua index 0e51e88..1bbbc47 100644 --- a/init.lua +++ b/init.lua @@ -55,6 +55,7 @@ dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "inventory_management.lu dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "light.lua") dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "physics_lib.lua") dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "lib_planes" .. DIR_DELIM .. "init.lua") +dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "texture_management.lua") local is_biofuel_installed = false if biomass then diff --git a/texture_management.lua b/texture_management.lua new file mode 100644 index 0000000..84fa322 --- /dev/null +++ b/texture_management.lua @@ -0,0 +1,99 @@ +-- Function to extract textures from a node definition +local function getTexturesFromNode(node) + local textures = {} + + if node.tiles then + if type(node.tiles) == "string" then + table.insert(textures, node.tiles) + elseif type(node.tiles) == "table" then + for _, tile in pairs(node.tiles) do + if type(tile) == "string" then + table.insert(textures, tile) + end + end + end + end + + return textures +end + +-- Function to extract textures from an entity definition +local function getTexturesFromEntity(entityDef) + local textures = {} + + if entityDef.textures then + if type(entityDef.textures) == "string" then + table.insert(textures, entityDef.textures) + elseif type(entityDef.textures) == "table" then + for _, texture in pairs(entityDef.textures) do + if type(texture) == "string" then + table.insert(textures, texture) + end + end + end + end + + return textures +end + +-- Function to extract textures from an item definition +local function getTexturesFromItem(itemDef) + local textures = {} + + if itemDef.inventory_image then + table.insert(textures, itemDef.inventory_image) + end + + return textures +end + +-- Function to list all loaded textures +function listLoadedTextures() + local loadedTextures = {} + + for name, node in pairs(minetest.registered_nodes) do + local textures = getTexturesFromNode(node) + + for _, texture in pairs(textures) do + table.insert(loadedTextures, texture) + end + end + + for name, entityDef in pairs(minetest.registered_entities) do + local textures = getTexturesFromEntity(entityDef) + + for _, texture in pairs(textures) do + table.insert(loadedTextures, texture) + end + end + + for name, itemDef in pairs(minetest.registered_items) do + local textures = getTexturesFromItem(itemDef) + + for _, texture in pairs(textures) do + table.insert(loadedTextures, texture) + end + end + + if airutils.is_minetest then + table.insert(loadedTextures,'bubble.png') + table.insert(loadedTextures,'heart.png') + end + + return loadedTextures +end + +airutils.all_game_textures = listLoadedTextures() + +-- Function to check if a texture is in the list of loaded textures +function airutils.isTextureLoaded(textureToFind) + local textures = airutils.all_game_textures + + for _, texture in pairs(textures) do + if texture == textureToFind then + return true + end + end + + return false +end