From ac1070284999ab64608e35de13b92c14209ad543 Mon Sep 17 00:00:00 2001 From: codexp Date: Fri, 27 Apr 2018 22:39:23 +0200 Subject: [PATCH] prepare code to be reused later --- homedecor/wardrobe.lua | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/homedecor/wardrobe.lua b/homedecor/wardrobe.lua index c7c60651..920064e1 100644 --- a/homedecor/wardrobe.lua +++ b/homedecor/wardrobe.lua @@ -9,9 +9,21 @@ local wd_cbox = { -- cache set_textures function (fallback to old version) -- default.player_set_textures is deprecated and will be removed in future local set_player_textures = - minetest.global_exists("player_api") and player_api.set_textures + minetest.get_modpath("player_api") and player_api.set_textures or default.player_set_textures +local armor_mod_path = minetest.get_modpath("3d_armor") +local skins = {"male1", "male2", "male3", "male4", "male5"} + +local function set_player_skin(player, skin) + if armor_mod_path then -- if 3D_armor's installed, let it set the skin + armor.textures[player:get_player_name()].skin = skin + armor:update_player_visuals(player) + else + set_player_textures(player, { skin }) + end +end + homedecor.register("wardrobe", { mesh = "homedecor_bedroom_wardrobe.obj", tiles = { @@ -33,7 +45,6 @@ homedecor.register("wardrobe", { }, on_construct = function(pos) local meta = minetest.get_meta(pos) - local skins = {"male1", "male2", "male3", "male4", "male5"} -- textures made by the Minetest community (mostly Calinou and Jordach) local clothes_strings = "" for i = 1,5 do @@ -50,26 +61,12 @@ homedecor.register("wardrobe", { "listring[]") end, on_receive_fields = function(pos, formname, fields, sender) - local skins = {"male1", "male2", "male3", "male4", "male5"} - local playerName = sender:get_player_name() - local armor_mod = minetest.get_modpath("3d_armor") - for i = 1,5 do if fields[skins[i]] then - if armor_mod then -- if 3D_armor's installed, let it set the skin - armor.textures[playerName].skin = "homedecor_clothes_"..skins[i]..".png" - armor:update_player_visuals(sender) - break - end - set_player_textures(sender, { "homedecor_clothes_"..skins[i]..".png" }) + set_player_skin(sender, "homedecor_clothes_"..skins[i]..".png") break elseif fields["fe"..skins[i]] then - if armor_mod then - armor.textures[playerName].skin = "homedecor_clothes_fe"..skins[i]..".png" - armor:update_player_visuals(sender) - break - end - set_player_textures(sender, { skin = "homedecor_clothes_fe"..skins[i]..".png" }) + set_player_skin(sender, "homedecor_clothes_fe"..skins[i]..".png") break end end