From 52e146dee10b4c8ff2c37256ff3423783e3e549f Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Mon, 4 May 2020 00:40:57 +0200 Subject: [PATCH] Minor code-style improvement and cleanup --- api.lua | 4 +- bags.lua | 24 ++-- callbacks.lua | 10 +- doc/mod_api.txt | 1 - group.lua | 2 - init.lua | 2 +- internal.lua | 23 ++-- item_names.lua | 1 - match_craft.lua | 242 +++++++++++++++++------------------ register.lua | 22 ++-- textures/ui_xyz_off_icon.png | Bin 8606 -> 0 bytes textures/ui_xyz_on_icon.png | Bin 2182 -> 0 bytes waypoints.lua | 1 - 13 files changed, 164 insertions(+), 168 deletions(-) delete mode 100644 textures/ui_xyz_off_icon.png delete mode 100644 textures/ui_xyz_on_icon.png diff --git a/api.lua b/api.lua index d24135b..bf2c43c 100644 --- a/api.lua +++ b/api.lua @@ -11,8 +11,8 @@ minetest.after(0.01, function() unified_inventory.items_list = {} for name, def in pairs(minetest.registered_items) do if (not def.groups.not_in_creative_inventory or - def.groups.not_in_creative_inventory == 0) and - def.description and def.description ~= "" then + def.groups.not_in_creative_inventory == 0) and + def.description and def.description ~= "" then table.insert(unified_inventory.items_list, name) local all_names = rev_aliases[name] or {} table.insert(all_names, name) diff --git a/bags.lua b/bags.lua index c61c982..d8a29b3 100644 --- a/bags.lua +++ b/bags.lua @@ -1,8 +1,8 @@ --[[ -Bags for Minetest + Bags for Minetest -Copyright (c) 2012 cornernote, Brett O'Donnell -License: GPLv3 + Copyright (c) 2012 cornernote, Brett O'Donnell + License: GPLv3 --]] local S = minetest.get_translator("unified_inventory") @@ -31,7 +31,7 @@ unified_inventory.register_button("bags", { type = "image", image = "ui_bags_icon.png", tooltip = S("Bags"), - hide_lite=true + hide_lite = true }) local function get_player_bag_stack(player, i) @@ -168,12 +168,12 @@ end minetest.register_on_joinplayer(function(player) local player_name = player:get_player_name() local bags_inv = minetest.create_detached_inventory(player_name .. "_bags",{ - on_put = function(inv, listname, index, stack, player) + on_put = function(inv, listname, _, stack, player) player:get_inventory():set_size(listname .. "contents", stack:get_definition().groups.bagslots) save_bags_metadata(player, inv) end, - allow_put = function(inv, listname, index, stack, player) + allow_put = function(_, listname, _, stack, player) local new_slots = stack:get_definition().groups.bagslots if not new_slots then return 0 @@ -207,13 +207,13 @@ minetest.register_on_joinplayer(function(player) -- New bag is smaller: Disallow inserting return 0 end, - allow_take = function(inv, listname, index, stack, player) + allow_take = function(_, listname, _, stack, player) if player:get_inventory():is_empty(listname .. "contents") then return stack:get_count() end return 0 end, - on_take = function(inv, listname, index, stack, player) + on_take = function(inv, listname, _, _, player) player:get_inventory():set_size(listname .. "contents", 0) save_bags_metadata(player, inv) end, @@ -229,19 +229,19 @@ end) minetest.register_tool("unified_inventory:bag_small", { description = S("Small Bag"), inventory_image = "bags_small.png", - groups = {bagslots=8}, + groups = {bagslots = 8}, }) minetest.register_tool("unified_inventory:bag_medium", { description = S("Medium Bag"), inventory_image = "bags_medium.png", - groups = {bagslots=16}, + groups = {bagslots = 16}, }) minetest.register_tool("unified_inventory:bag_large", { description = S("Large Bag"), inventory_image = "bags_large.png", - groups = {bagslots=24}, + groups = {bagslots = 24}, }) -- register bag crafts @@ -270,6 +270,6 @@ if minetest.get_modpath("farming") ~= nil then {"", "", ""}, {"farming:string", "unified_inventory:bag_medium", "farming:string"}, {"farming:string", "unified_inventory:bag_medium", "farming:string"}, - }, + }, }) end diff --git a/callbacks.lua b/callbacks.lua index bc90237..f1d32c3 100644 --- a/callbacks.lua +++ b/callbacks.lua @@ -27,14 +27,14 @@ minetest.register_on_joinplayer(function(player) -- Refill slot local refill = minetest.create_detached_inventory(player_name.."refill", { - allow_put = function(inv, listname, index, stack, player) + allow_put = function(_, _, _, stack) if unified_inventory.is_creative(player_name) then return stack:get_count() else return 0 end end, - on_put = function(inv, listname, index, stack, player) + on_put = function(inv, listname, index, stack) local handle_refill = (minetest.registered_items[stack:get_name()] or {}).on_refill or default_refill stack = handle_refill(stack) inv:set_stack(listname, index, stack) @@ -57,7 +57,7 @@ end minetest.register_on_player_receive_fields(function(player, formname, fields) local player_name = player:get_player_name() - local ui_peruser,draw_lite_mode = unified_inventory.get_per_player_formspec(player_name) + local ui_peruser, _ = unified_inventory.get_per_player_formspec(player_name) if formname ~= "" then return @@ -69,7 +69,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) unified_inventory.current_searchbox[player_name] = fields.searchbox end - for i, def in pairs(unified_inventory.buttons) do + for _, def in pairs(unified_inventory.buttons) do if fields[def.name] then def.action(player) minetest.sound_play("click", @@ -120,7 +120,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Check clicked item image button local clicked_item - for name, value in pairs(fields) do + for name, _ in pairs(fields) do local new_dir, mangled_item = string.match(name, "^item_button_([a-z]+)_(.*)$") if new_dir and mangled_item then clicked_item = unified_inventory.demangle_for_formspec(mangled_item) diff --git a/doc/mod_api.txt b/doc/mod_api.txt index c0be129..45db07a 100644 --- a/doc/mod_api.txt +++ b/doc/mod_api.txt @@ -92,4 +92,3 @@ Register a non-standard craft recipe: width = 3, -- ^ Same as `minetest.register_recipe` }) - diff --git a/group.lua b/group.lua index 3864267..712dfa8 100644 --- a/group.lua +++ b/group.lua @@ -115,7 +115,6 @@ local function compute_group_item(group_name_list) return {item = bestitem, sole = false} end - local group_item_cache = {} function unified_inventory.get_group_item(group_name) @@ -124,4 +123,3 @@ function unified_inventory.get_group_item(group_name) end return group_item_cache[group_name] end - diff --git a/init.lua b/init.lua index 1a80abb..9f62bf3 100644 --- a/init.lua +++ b/init.lua @@ -50,7 +50,7 @@ unified_inventory = { -- Disable default creative inventory local creative = rawget(_G, "creative") or rawget(_G, "creative_inventory") if creative then - function creative.set_creative_formspec(player, start_i, pagenum) + function creative.set_creative_formspec() return end end diff --git a/internal.lua b/internal.lua index ee8b4a9..532a05d 100644 --- a/internal.lua +++ b/internal.lua @@ -1,14 +1,16 @@ local S = minetest.get_translator("unified_inventory") local F = minetest.formspec_escape --- This pair of encoding functions is used where variable text must go in --- button names, where the text might contain formspec metacharacters. --- We can escape button names for the formspec, to avoid screwing up --- form structure overall, but they then don't get de-escaped, and so --- the input we get back from the button contains the formspec escaping. --- This is a game engine bug, and in the anticipation that it might be --- fixed some day we don't want to rely on it. So for safety we apply --- an encoding that avoids all formspec metacharacters. +--[[ + This pair of encoding functions is used where variable text must go in + button names, where the text might contain formspec metacharacters. + We can escape button names for the formspec, to avoid screwing up + form structure overall, but they then don't get de-escaped, and so + the input we get back from the button contains the formspec escaping. + This is a game engine bug, and in the anticipation that it might be + fixed some day we don't want to rely on it. So for safety we apply + an encoding that avoids all formspec metacharacters. +]] function unified_inventory.mangle_for_formspec(str) return string.gsub(str, "([^A-Za-z0-9])", function (c) return string.format("_%d_", string.byte(c)) end) end @@ -47,7 +49,6 @@ function unified_inventory.get_per_player_formspec(player_name) end function unified_inventory.get_formspec(player, page) - if not player then return "" end @@ -93,7 +94,7 @@ function unified_inventory.get_formspec(player, page) local filtered_inv_buttons = {} - for i, def in pairs(unified_inventory.buttons) do + for _, def in pairs(unified_inventory.buttons) do if not (draw_lite_mode and def.hide_lite) then table.insert(filtered_inv_buttons, def) end @@ -280,7 +281,7 @@ function unified_inventory.apply_filter(player, filter, search_dir) local ffilter if lfilter:sub(1, 6) == "group:" then local groups = lfilter:sub(7):split(",") - ffilter = function(name, def) + ffilter = function(_, def) for _, group in ipairs(groups) do if not def.groups[group] or def.groups[group] <= 0 then diff --git a/item_names.lua b/item_names.lua index 111c9ee..d769292 100644 --- a/item_names.lua +++ b/item_names.lua @@ -73,4 +73,3 @@ minetest.register_globalstep(function(dtime) end end end) - diff --git a/match_craft.lua b/match_craft.lua index 2dd40b0..5e0a218 100644 --- a/match_craft.lua +++ b/match_craft.lua @@ -3,26 +3,26 @@ -- according to the recipe. --[[ -Retrieve items from inventory lists and calculate their total count. -Return a table of "item name" - "total count" pairs. + Retrieve items from inventory lists and calculate their total count. + Return a table of "item name" - "total count" pairs. -Arguments: - inv: minetest inventory reference - lists: names of inventory lists to use + Arguments: + inv: minetest inventory reference + lists: names of inventory lists to use -Example usage: - -- Count items in "main" and "craft" lists of player inventory - unified_inventory.count_items(player_inv_ref, {"main", "craft"}) + Example usage: + -- Count items in "main" and "craft" lists of player inventory + unified_inventory.count_items(player_inv_ref, {"main", "craft"}) -Example output: - { - ["default:pine_wood"] = 2, - ["default:acacia_wood"] = 4, - ["default:chest"] = 3, - ["default:axe_diamond"] = 2, -- unstackable item are counted too - ["wool:white"] = 6 - } -]]-- + Example output: + { + ["default:pine_wood"] = 2, + ["default:acacia_wood"] = 4, + ["default:chest"] = 3, + ["default:axe_diamond"] = 2, -- unstackable item are counted too + ["wool:white"] = 6 + } +]] function unified_inventory.count_items(inv, lists) local counts = {} @@ -47,23 +47,23 @@ function unified_inventory.count_items(inv, lists) end --[[ -Retrieve craft recipe items and their positions in the crafting grid. -Return a table of "craft item name" - "set of positions" pairs. + Retrieve craft recipe items and their positions in the crafting grid. + Return a table of "craft item name" - "set of positions" pairs. -Note that if craft width is not 3 then positions are recalculated as -if items were placed on a 3x3 grid. Also note that craft can contain -groups of items with "group:" prefix. + Note that if craft width is not 3 then positions are recalculated as + if items were placed on a 3x3 grid. Also note that craft can contain + groups of items with "group:" prefix. -Arguments: - craft: minetest craft recipe + Arguments: + craft: minetest craft recipe -Example output: - -- Bed recipe - { - ["wool:white"] = {[1] = true, [2] = true, [3] = true} - ["group:wood"] = {[4] = true, [5] = true, [6] = true} - } ---]] + Example output: + -- Bed recipe + { + ["wool:white"] = {[1] = true, [2] = true, [3] = true} + ["group:wood"] = {[4] = true, [5] = true, [6] = true} + } +]] function unified_inventory.count_craft_positions(craft) local positions = {} local craft_items = craft.items @@ -99,32 +99,32 @@ function unified_inventory.count_craft_positions(craft) end --[[ -For every craft item find all matching inventory items. -- If craft item is a group then find all inventory items that matches - this group. -- If craft item is not a group (regular item) then find only this item. + For every craft item find all matching inventory items. + - If craft item is a group then find all inventory items that matches + this group. + - If craft item is not a group (regular item) then find only this item. -If inventory doesn't contain needed item then found set is empty for -this item. + If inventory doesn't contain needed item then found set is empty for + this item. -Return a table of "craft item name" - "set of matching inventory items" -pairs. + Return a table of "craft item name" - "set of matching inventory items" + pairs. -Arguments: - inv_items: table with items names as keys - craft_items: table with items names or groups as keys + Arguments: + inv_items: table with items names as keys + craft_items: table with items names or groups as keys -Example output: - { - ["group:wood"] = { - ["default:pine_wood"] = true, - ["default:acacia_wood"] = true - }, - ["wool:white"] = { - ["wool:white"] = true + Example output: + { + ["group:wood"] = { + ["default:pine_wood"] = true, + ["default:acacia_wood"] = true + }, + ["wool:white"] = { + ["wool:white"] = true + } } - } ---]] +]] function unified_inventory.find_usable_items(inv_items, craft_items) local get_group = minetest.get_item_group local result = {} @@ -152,28 +152,28 @@ function unified_inventory.find_usable_items(inv_items, craft_items) end --[[ -Match inventory items with craft grid positions. -For every position select the matching inventory item with maximum -(total_count / (times_matched + 1)) value. + Match inventory items with craft grid positions. + For every position select the matching inventory item with maximum + (total_count / (times_matched + 1)) value. -If for some position matching item cannot be found or match count is 0 -then return nil. + If for some position matching item cannot be found or match count is 0 + then return nil. -Return a table of "matched item name" - "set of craft positions" pairs -and overall match count. + Return a table of "matched item name" - "set of craft positions" pairs + and overall match count. -Arguments: - inv_counts: table of inventory items counts from "count_items" - craft_positions: table of craft positions from "count_craft_positions" + Arguments: + inv_counts: table of inventory items counts from "count_items" + craft_positions: table of craft positions from "count_craft_positions" -Example output: - match_table = { - ["wool:white"] = {[1] = true, [2] = true, [3] = true} - ["default:acacia_wood"] = {[4] = true, [6] = true} - ["default:pine_wood"] = {[5] = true} - } - match_count = 2 ---]] + Example output: + match_table = { + ["wool:white"] = {[1] = true, [2] = true, [3] = true} + ["default:acacia_wood"] = {[4] = true, [6] = true} + ["default:pine_wood"] = {[5] = true} + } + match_count = 2 +]] function unified_inventory.match_items(inv_counts, craft_positions) local usable = unified_inventory.find_usable_items(inv_counts, craft_positions) local match_table = {} @@ -227,17 +227,17 @@ function unified_inventory.match_items(inv_counts, craft_positions) end --[[ -Remove item from inventory lists. -Return stack of actually removed items. + Remove item from inventory lists. + Return stack of actually removed items. -This function replicates the inv:remove_item function but can accept -multiple lists. + This function replicates the inv:remove_item function but can accept + multiple lists. -Arguments: - inv: minetest inventory reference - lists: names of inventory lists - stack: minetest item stack ---]] + Arguments: + inv: minetest inventory reference + lists: names of inventory lists + stack: minetest item stack +]] function unified_inventory.remove_item(inv, lists, stack) local removed = ItemStack(nil) local leftover = ItemStack(stack) @@ -256,17 +256,17 @@ function unified_inventory.remove_item(inv, lists, stack) end --[[ -Add item to inventory lists. -Return leftover stack. + Add item to inventory lists. + Return leftover stack. -This function replicates the inv:add_item function but can accept -multiple lists. + This function replicates the inv:add_item function but can accept + multiple lists. -Arguments: - inv: minetest inventory reference - lists: names of inventory lists - stack: minetest item stack ---]] + Arguments: + inv: minetest inventory reference + lists: names of inventory lists + stack: minetest item stack +]] function unified_inventory.add_item(inv, lists, stack) local leftover = ItemStack(stack) @@ -282,15 +282,15 @@ function unified_inventory.add_item(inv, lists, stack) end --[[ -Move items from source list to destination list if possible. -Skip positions specified in exclude set. + Move items from source list to destination list if possible. + Skip positions specified in exclude set. -Arguments: - inv: minetest inventory reference - src_list: name of source list - dst_list: name of destination list - exclude: set of positions to skip ---]] + Arguments: + inv: minetest inventory reference + src_list: name of source list + dst_list: name of destination list + exclude: set of positions to skip +]] function unified_inventory.swap_items(inv, src_list, dst_list, exclude) local size = inv:get_size(src_list) local empty = ItemStack(nil) @@ -312,21 +312,21 @@ function unified_inventory.swap_items(inv, src_list, dst_list, exclude) end --[[ -Move matched items to the destination list. + Move matched items to the destination list. -If destination list position is already occupied with some other item -then function tries to (in that order): -1. Move it to the source list -2. Move it to some other unused position in destination list itself -3. Drop it to the ground if nothing else is possible. + If destination list position is already occupied with some other item + then function tries to (in that order): + 1. Move it to the source list + 2. Move it to some other unused position in destination list itself + 3. Drop it to the ground if nothing else is possible. -Arguments: - player: minetest player object - src_list: name of source list - dst_list: name of destination list - match_table: table of matched items - amount: amount of items per every position ---]] + Arguments: + player: minetest player object + src_list: name of source list + dst_list: name of destination list + match_table: table of matched items + amount: amount of items per every position +]] function unified_inventory.move_match(player, src_list, dst_list, match_table, amount) local inv = player:get_inventory() local item_drop = minetest.item_drop @@ -374,21 +374,21 @@ function unified_inventory.move_match(player, src_list, dst_list, match_table, a end --[[ -Find craft match and move matched items to the destination list. + Find craft match and move matched items to the destination list. -If match cannot be found or match count is smaller than the desired -amount then do nothing. + If match cannot be found or match count is smaller than the desired + amount then do nothing. -If amount passed is -1 then amount is defined by match count itself. -This is used to indicate "craft All" case. + If amount passed is -1 then amount is defined by match count itself. + This is used to indicate "craft All" case. -Arguments: - player: minetest player object - src_list: name of source list - dst_list: name of destination list - craft: minetest craft recipe - amount: desired amount of output items ---]] + Arguments: + player: minetest player object + src_list: name of source list + dst_list: name of destination list + craft: minetest craft recipe + amount: desired amount of output items +]] function unified_inventory.craftguide_match_craft(player, src_list, dst_list, craft, amount) local inv = player:get_inventory() local src_dst_list = {src_list, dst_list} diff --git a/register.lua b/register.lua index f958a6d..72fe530 100644 --- a/register.lua +++ b/register.lua @@ -21,7 +21,7 @@ local trash = minetest.create_detached_inventory("trash", { -- return 0 -- end --end, - on_put = function(inv, listname, index, stack, player) + on_put = function(inv, listname, index, _, player) inv:set_stack(listname, index, nil) local player_name = player:get_player_name() minetest.sound_play("trash", {to_player=player_name, gain = 1.0}) @@ -193,9 +193,9 @@ unified_inventory.register_page("craft", { -- stack_image_button(): generate a form button displaying a stack of items -- --- The specified item may be a group. In that case, the group will be +-- The specified item may be a group. In that case, the group will be -- represented by some item in the group, along with a flag indicating --- that it's a group. If the group contains only one item, it will be +-- that it's a group. If the group contains only one item, it will be -- treated as if that item had been specified directly. local function stack_image_button(x, y, w, h, buttonname_prefix, item) @@ -226,7 +226,7 @@ local function stack_image_button(x, y, w, h, buttonname_prefix, item) end grouptip = F(grouptip) if andcount >= 1 then - button = button .. string.format("tooltip[%s;%s]", buttonname, grouptip) + button = button .. string.format("tooltip[%s;%s]", buttonname, grouptip) end end return button @@ -260,8 +260,8 @@ local other_dir = { unified_inventory.register_page("craftguide", { get_formspec = function(player, perplayer_formspec) - local formspecy = perplayer_formspec.formspec_y - local formheadery = perplayer_formspec.form_header_y + local formspecy = perplayer_formspec.formspec_y + local formheadery = perplayer_formspec.form_header_y local craftresultx = perplayer_formspec.craft_result_x local craftresulty = perplayer_formspec.craft_result_y @@ -414,7 +414,7 @@ unified_inventory.register_page("craftguide", { end, }) -local function craftguide_giveme(player, formname, fields) +local function craftguide_giveme(player, _, fields) local player_name = player:get_player_name() local player_privs = minetest.get_player_privs(player_name) if not player_privs.give and @@ -425,7 +425,7 @@ local function craftguide_giveme(player, formname, fields) end local amount - for k, v in pairs(fields) do + for k, _ in pairs(fields) do amount = k:match("craftguide_giveme_(.*)") if amount then break end end @@ -441,9 +441,9 @@ local function craftguide_giveme(player, formname, fields) player_inv:add_item("main", {name = output, count = amount}) end -local function craftguide_craft(player, formname, fields) +local function craftguide_craft(player, _, fields) local amount - for k, v in pairs(fields) do + for k, _ in pairs(fields) do amount = k:match("craftguide_craft_(.*)") if amount then break end end @@ -476,7 +476,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return end - for k, v in pairs(fields) do + for k, _ in pairs(fields) do if k:match("craftguide_craft_") then craftguide_craft(player, formname, fields) return diff --git a/textures/ui_xyz_off_icon.png b/textures/ui_xyz_off_icon.png deleted file mode 100644 index 3c1836eb04eee88d81d26c9b83e571f3dacd4c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8606 zcmV;PAz|K$P)fZl%zwa)$>Ya_|iDbitFbS@KyWuym0M^4n zD1!!wg5v^2p#jSDoDHzR<-Kq>TmzHfLdcc@V?%;x!6h&Sz6(#oMyOSRV?HWy3=%51 z3!Z@sj-C^IPv_6Iuo0ey@4^(g1hQnv&WPB-pD%;&!7mYD8OI2CE|>y4N=X_$7P~E|b*RknkKc;dby_;3^fsQv!mk&?;;jv_cCsL8HMK!k)aXx z!vip3C>kWs@!2p1HbIk_*MqHHTY9%**D9y_NUhSXQy8hDIglm-QK1Po!4$|I>LUbN zJzNbhLcJ@JunFG`4VKn!3S9$LPyuC70w-i=6{&J{efTK{PpI-(Qc89P#gV9$|NANT)++#$8FO>Kf!z@?iwAs0fT3Y;R zB`A7HK=51@d$)?Y3D&?0SSC`jRAl#`Mb>;EvS^9O?Ds`pg_nHzeddQEb2w))=dWEQ zvUjaW)q38$Ssi1qI@A$32E|aS*HINn8R`TayY45bBlu;X<=2H^(JxTQ{|2lxJ9sf@ zHH8nf_DU#&69Lip0Rp+7z-oT}NTeA-H!l)-{ymZD3qOiWMoI6OO zBjh^NO+u%Zqk~ZVk?;p|Odq$k`ap{>QQ`BowSNYL<`^wKLMvTApFBDb!4ZApZ$*Yl z!2S%cO5g2mSPjPCGWp!|NEKI+VjdtWY$oMIxVCtnIznees0#EGk~utJ-m4A|!{?1%NI^lZE9}z@8CnNG? z;UHs(2-o8X?{kf%do>~y8GQtcBUqyWqPG$aUvJY0);tKrp9pX0@XqZjXS$bY0SvVin-^njK@(}E5qt!crW zZgzOh{)h25|bmWhxc$!@)3izljwp6vm2>H!6Ij&_+#MBp!mUjZ|3@wPzVP! z+|#NYI$o>D@qa&40HR@W|0LkoII|hpRODL%-2qxqHe22GQ0tt_ou>Pqr;a}{6m`WSBOLi`Onb7J734z zgH8OguEFAs$MZMsN<_&<4Fd-;P< z{PW;B-3#DZqGC@Sz?>R?ohUkCAZ_3JzDr96&kS*$;#WYCivJm`=xF&5z9N$84NmbV zbSM7lo?`5Is1m86G2KIb4jTvsy&CqLoxXZwYPT5jUHwNb50p^%pLgpY3oisif3T39Gkhg*1ae?aM{oZRv&s2`H0+-XFPY-E z+QbhGg$p20kHzNNfyD`Qq3nfXH2D4JxUPRa)N4UC?;AaSI12k=uNrwmSeAn_o+K?=iH1j5FE#&(n>Z zuC>>1g#L9RvBe#8`(p<4P_G~2KR-t|ho0n!1N;_&QL{jQ~azsDxs)zyThu zI78x3gsq(gjzN>z@eB0&SK-u*_y3DvO9$ytuOH$+hxq47z-shJBbtT-lq8!Rstu%p zQaFkxhtVciQe>{qe0fz~9g{}62AZ6EmCw|Y6`b6q#h^Soh@Wx{J2 zdQLjOXIjq5bhuVYf%%{7f4+Cc71_NS>X{wBjEt5=BS+3$al;MgCo5RcKGlm zb!lljWt=<;=p<83G{3W==D#P zURZN;vtQ8{Q-HUiz+f-J|3n?&CVt;&Ip;&(|JNyT0MEO@tE*e@O`BHe4jb0imzKX~ z^k^^VpZ>{-*40&Ut$9$8g#75bb@dIGUmm$$zFH4{~&DaSlfT=Es>06(sOHTYdZ%4A4A}{XBdCm6pO_!5UjPebriqPiqK-}N4P$aTkz@%k$M?tlJgFV@)T^~e$lujRh`yoQVns}lt0 z1WKW3(j>28^=eP;rf?&G$S^M>qiX?FY9Sy)yw5j^luRJ#%58nYidhxI_IPQ-ayHDb;9XHO~ z_t;}zG!pT8ZLyfw{{8QJ&6%0zy%WX?q29lE#~oh#v11-~bJ!8!PB`6J_!eWqrxK3C zURWd2i1^nn?8W57>C>k(5p#xLWQ&+9J43%|EiEl0G!?|nw_*KG1VqLt)_)TvM-cqtPegufF>Gwydo7uI`tt>RfXfKi;cbw5TT3K7c1O9DW%b z`ZYqGrSrEvEzS8zWIg$RbT50@cXH9?VA=_U{8l_3Pfr#(c<&V)b1adgme>9P`jiUX zNt4FA7hN>hC4Bd1sP|ew*Y2a#KXtx||C`WMU`+#MPyoknxn;qr4?Z|QOb56amIgb2 z<_#Su;Sg+0PmgcC_10hS_{V?j@h(}>aRPR>q5y+nFo2s0eVLpzrW6?VMMQ2_0rOs`!lz%)4TmLN2lL8UX|c;Eq7EwU{(+gh}7>yv#`WZhdVqo z{42GA-v5sDbZ^hS_j+wLHSJXVi#WkZ>B7kC8Gdh_b8Wr;W4!iV&PnTG3K7n~8n#){OFOZ}PQdx!VG9rAt$XUv!{Ioa9E^+FY2%{h8>visCipE<^@b#<28>+;cRm&orv5g8kX16&B}U9LfU|JM9} z5H_59u2;KlTd>l%Bl49=rhCtYXDuPyfi=AEFQpI0`zG+YubL@Ehmx=1AY)U$su!{m z1;L0~(DT9ALv%vWIJ{0ls`QF z1tGG<&CB!LDO0R>S_L=X9z&}f-ntF#!iWIZ=mV3zsHH+G;TUX(yhk4KnB(>gtDyk* zi`vUCzbrV!m3~OJ2-MEGzouiDDgCgVoE(2t@MAv>Ssd&$qQrkl!K&WG6fHpA(>XkL zYim81sbq5lj?Zah7uFs$+lF>wIKVWB*=GN0)#D0b3mly>BhPi5)3!?YTO}1Q97p@T za$D%qpJL|tq2Dqpcqzf$zL%CZx<9LWI@Eh172?xKd?%jjFMxpy9(C(^ zvt}9lFTt_{dq0|?$=zW%z*DX|K&z$WQ4R&LNyOQF?X~}l>--2@TczUwU-F{?zt>ru zq@36PjvvFUM1NFp&@+sSi#Uaa_j~E-uc-L_8S0Id6c}~!S6urtbFs^tKi^|`s%tU! zj-d9*d1y;~@{TbkP2V&dx{) z(W2342LJN`KEK`zT7A9eKJY+|n~~8v5QciDF?~Ij>wc+YdfTv-D;;;jgc#TB20P@z zPI(D%t?gUTPWo#)0*F~UfI0-!89s^zg%8Kc{z7CceMmh4?@7h*Dr$!ri#BkU4=P!Ob|P1C&B;M+8_Oh65aQ zMG`szWOaZ8ut8+)5|PP*MPsoqQIJ($4~+9p5bnM$DKh2;{8aGo@w)xK_}-(Bs`vwI zsHb5+gZlW-wg{@JE6@Sl~yKETx$FBG{z zTV6T^`A-~+p(|_hqXhzuloT3CG}GC$=K)%NT*V(SLp`I@ca3fMs^Xs}g#9?4k#V6* zU0X*2foso4GaR5Sj0g~MMcl3&U@zbRvlobrGeX&8#)OR7`d3i!zdREgILY@fvbYoP zr}z_7l=Fr3_hssX4m4)(Bh6qqGt#AwVYWFeH>c)t0C%%ULl_YtY6&+s2bf7{92wZ! zH4F#%5f|=wcB|6)firclUSl|`df{7BQ`1Q5>1AJNYuUlAFuDWG$*XRl|NG3oOR8#*!v;=OwIRlV>{XGI^@^$S~+-0AmW z__4E0!(FbaTL;ix*^*gU;}?u&)5L# zFJAebzN1ORKS{^%Hh;f^U_Et!a>#>?Avr*_I|tYc8wpEuMMlZy%|fB>*3B8+nTsvQ z!!MCgY~Ziz8NGgg&Eiwr&={+y9{(qE8Rr;f8wp*efHE!1hLBP~#Np66<~(h2fc-$e znX^D-ED8S#3bos|u@mYcVWtAk{}qfJaQEt^(EL4)er``9ek-rNfP+l5ly4j)>jVbp zX595?7s@aY2XMM_0KNTt@wRV&`wB`k(-+mYvD07G;#g^$3*fbH`XN#JVFP$o&z$VZ zhNpd@!8AuF#x6}##tU4LMc{QcGCP1~>qN@JaDan2K%%Qjhg{eyvZ`XqlHXE*N?Wc+ z;P3d`vUJ;4)Zzro33q?-x!kL#Tetn)yE@cMW!N81S$}NX%C7ZrfOGz~i*inOMb>oX z0J<2ISQFAj(0Uvo7OY6yV$iPa>?5Z)Z8~Aw-9w?C>J0Jz9zWf-WjpT|ILdH-KBGgu zHEd+@_w7gW^Z!j!XpHyM5%*@wc|3{u75?Vd;^N}8F3NhXE3zA`6G7E*LYISAqg@yd zFwgO?J&6NUz)?=yGk$!mmW2vSCvSDIlUG?;nMNht$=_`&f+f5*rL?p(E!9Ik^Nt<8 zY2%3$=lv_x`EAyO`2R}z&*`STx49w}wuf>AH|Xv{vz2HUh66n5M}TPX5$^#iwL)`P zqO4}A(y$_bZkybmW`sdM2R>sC6E*)W=llt&AL?0e*Los_t$!kATNEg>xm-R6#`fT8 ztoMR-ZYH=tV>_Cy5P2#L2bcyi^G@JSs-YP6L6yH*!Eu7U`=?7vN-}IacyWSByuQ^^ z84bMtFZ36NrE;ieil0gcpgf}}>+k$lo+R{dBsyHmu_w=Beh@tC{*1uQAzRRFnaJH? zIKbCB9iZ880P~)}V*k$9+S<;Ryq?gXbW>t&ZEd=L*AC}ZSt{fR4)Tpu4fR$d{vNik zY1mJx12Bp6|EI*Yb8HhokFwrKee`6@`nb-=@;T-P-M|n~=Kx|$MXm{LQ)rwYlkG$; zgF?u^{(7&4jf+@0h5i=D?s~*ysetD>FKV6tcAWFW9_lR@sptOu#`e=X^O|A@pp4)2 zMfU7g!D|oD`m=hN@+QG%^X_aj8t+G|wP^Mc+J)f&7s7ff+39L0Y7rb5HOgz;vc=DF z|C^1SSv{I^g@dp zpwW7RPT&UJ9JE@6W=lfa7M=|=bT+WdJ5q9?{K+RjYd&=7(w+|G{2`Ct%u#L$j|X|} zdZrHh`~*&ORqqv%@qF}~sdNBZv~ca`!<*LSaE)-infIXVneYR@+~yE4I3zy;pQ6=r z9G&uJhv5L}aED`QY37}&h1|AuAUk{Io(U8FT`xOHBXse|Oa+eXd9$4b3ofJZFNU?M z$LGGCN(Z3t<9GUgnPjHV)f;C1x)19c3xbPt5z7o<9&Ch<&}=T+h4pNJ>m89g9SSDB zGgTiB)x1aKD!ef5Q12@3GAbs=Gt8~8Z+36Jb(bp=32Rj^l@37a%h1kkt!K9)e^!)X zVOkG`@8rtP%{k`t8G?`J*$->bY6+T!`EZDfae$@KBtyYdfyb2*f?{06k9LV<9qL`a z^hX8Lbcz%UY~UO<$_;Z>FI5iUFKhb~S%_bdWRa(a*QWPzs{6k}tg{2yXq%9Ooj~~i z;02Mtkg!bGpnsuH1Wo#Y0u>;E0GkhpjOxRXX@u^KalD$E@HcR#*a5iqOg>`;I7veP z5%?ec{KH;RQu3fTV#GFAB(5`nUEZL(>#n<&wb$1EciuZz!ZPRl^Y4ylXD2M3E?X36 zJSZ{+GNcz)QBfgre>u6LVypM_pL^kN;7qLp==1psAv{aa1>U*SbH|R=da#H8A`Sl= zc|=Ub(xsl-)e?pw%4lcJnkN%?+>uZbl0L0U`vUQN!ccA>zSr0N`qwAAU;En9eu&>_ zY~Vc84p0E$S&Tu%J@?7PN#zF4E*#*=0p$SxwEDh%o_Enj#Lm9O{=Xgs_3rBc;Iv3nTjJ06t@3LI{larcS-n%gQ?5-FGtN z!B#X`hBnn`)cJnMkg$z#{1Y6Y#?}u|fr3x5b`fe39y%tqU$&s)4L>$nw`J8 zKGuwM1pC8of!BVI0w?Vu>QR(aT!|C z{qLZOoGC-xG%jR3$MsxP0zAd;1PX;X67N{iiu9x9zc`q3zTp6qAq23^Kfb;cn{PFHOen(&z zP$zW@MgI0#75|J|6*;|{aC|Btw9N_Xpc&%eDDghD{6Q@Kx%%y6ZPqX2GCF?yVLdFN z?&qO_e4bVzay5>yuciwpsMo@@K&#T+%jfV7#;~vAp97CTB$)SGf-`-y#FR zN)V`2~eDQ{QX3L)rm0k6Ts-YALVK1zM_o?f*2U?>j7P*KET}vcztJM(< zComkrxSws15A}@R{up=^s;%N1Tkem+0e#}fht%<0>Uv;_uSZ(&RHDJ5ik>)uF|lzB z^qWQ_gK?bOt_upJf2Ld^e5RA}{`ph}$p ztWFTz(aL*W&O1V-e9P4pM0aqs`qA)B$aih?AQtgYKpxO2TpC5|dm_JIK;6pOVEG~= z@X}cn!YNlLsJ1%+=%SJS+zw91_Y*t~mk)xL|5xy2FyH&cp|uC%uNH9@QkV0oQ#l(f z57Y_9-~?|Jb#!Fh%4ALu_`LyIAO;C=Mb^RHt`^=syITD@aF?#?Ii12g5Yuu-x)6U? zN6YsXiM%;qqv32hODq@E8O9e-faB@}6$Y4~a~~5&lGePn4(=R0TSRW~ZIC4Kd*?f_j<2t()j0Uwmhz4=g zHsQ@){>ebd-wtbF33Y++Q(vNPWUyPg9zPSg7)N;Rpvb8sI{YbxE=LMRL}-RKhy|m9 zohsN1Yhf`$&ViZmlJY9dhQ+WJcI)WF^YOqnFhy^I2D8O0Ra&+p$cH`f2`r=R?@<*1M$2 z)wz$r0SL7Ez4IyiA9ak+&tFV?hOoCy7z*JK?1GJy?IX(g9%Y?NnQzyS|An@ldL$%{!4a+{ zHLNE@HsT0wrz4aaeT1IuHK-3dMS#X0(x4b(EBb#8;j03|ABDq^1C-76m$(;EHd^|1 zZ)&Sw0s$Mc#k7b`BI7oT-1{jZ5=V#}((ri#O1euAN?rKacRUC0hz^AML!H9IO3FaF z_Rgb2Nv!DWPbu?H9I6(%-iG<9bZ57!<_^jTq!=_^aXDGJ~Aq~P69RiD2Wl*fw zln)1B2W$XZd^N&vp~XKuo3hNIOtWOjdTblCrO<-Lf6QbLt!W-np>UU0biRh!A~F1Xkq926aum#q@Qm%0k*E*MLeqFb1y*aV;Nk zP494RZ*h&&xz-f!+8MHsSYszL+)3p>_A$TWBz0Rf{O%EPh!E~!ZJ~v5Oa&}bF;7}3 z*4K~edkR$S1F%5>uX9auW^Kq`5gA6yyO^+hJvsMw zgqcBjxO-LDJsQG!&E*`2a})l1HuIkK99ILM zA6?RM|NS}ypYbmLYaaje4gUAPat$(M1H%Zx*@$!jPI1MDB46eB4;-I@xwO~~a1cr% z0x|yXegKFYgUI{5wwQAkaxOy8C4~RRpR9qe&gC;_^VzSRrJGfUY{-Ue$cAjlhHS`& kY{-Ue$cAjlhHS|GAG8xfWIy61wg3PC07*qoM6N<$f}eD+=Kufz diff --git a/textures/ui_xyz_on_icon.png b/textures/ui_xyz_on_icon.png deleted file mode 100644 index 003ea63344be5dbf1f7a2b5da8eb6911e4aeb329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2182 zcmaKu`9Bkm1I8!i*i}f5ZKO}BIX{lcIoHV9D9W9jIhyO!T5^R*V#<~KEZd7*ZTL=fbaM9dYI!>XEw ztCMvHMkKG;PZ*znC}1cLB4Eo>@xVRciLTcv(<;n!RWltG$_bA<0x~RF7ieNZ=Kfpl zq|4kD1F3~VR=RTa^e%qj>yN6IZKsDdE!$KD!&Arqx8iGr1wte%E*7fC>v5hgyDdF& zIMepR$}?Cp8||xR91h9NIHJdi5BOof!n9 zNr{YjQ913cMtkkT;kcjka&pVNMlwaxhP)1E6x#)-Hcl%hL1@Ax!7+Bf#E6VB-LY43 zLK#YukOBwmpojFXGFk*h#On0|d07SVJWvzTGi5)MZO!X^IOlBBZ&tLQsW{HsD=m;H z3nu9*t_mKe60XZfBo%69txNRJ2}fy@eGx(ICYAj&0|5pes~~JJZ`NWs zXfGc@WgS{3{qo)L@4;|pkr*B+; zpl__~81Q_Y6M6lKltEtB=6&Dgvlh`JML)7q{0om}8-1=LZw+^>wHM`Yn1hmhi{mqI zkUlEWXx5Q@E#*^fAp8FLsDw;n$^-^Mpk4?7VCCLBS0ioxefJQph}Y8WDxHYKC%DaQ z;S}S{SxnxrX!9e)2O$3D(a}s)^K?Fsnr)dgYAEgs*N+MRAcFhsAtt+nKqn3tX!>A| z1ov$oM*^>J27j`N+!YN9YUgUVDi7_^D2K1$;313Dr4NYEy>ZC!n*?sr4bU`n7X_G# zK{&~O*Kj((kKI=w2WB+EPWcc2#H<)eJ^{NJXi}UR;}%KD1hd!U zrzlkqN2*Y`%i5Uh*xC->5p`nn-txzl!Q3n>dHca*Bh5TYHps&g{ozy;zTt|o>Edl1 zGZb36Bo{vk=IC2nMpmFtP|UePYO|={)YE6oFFjRlt+Ky3`lS|;{=(+14mjMnLPXRb z=%$uxJ8-$2t1#y^7}V6~%B{VevlrJm-VD{LLA%dpIAwU1e_iR|;d?CfdWxB= zbsW0u$iNG4;z#+L&BAYpyDkSmLkQhz!>PXr4Wh^EF6jZqi?k>6M9#OAM$mg?TH!|z zmtluqC?B?WV@!9!nCU3Log)4<+f4e6Xv<*!cX^+(t@wu;i^$T0m~&{ch3VWE>q%i@ z1|2ucYMEm`;RBBJz*}ENv~w%L)W*&Tt-A_Vmb=pl`O3pB)+I4u19?_`g6$m=UUoOV zJ4iCLa6=0jw*LJ2E|pO;mt)v>qz=b(0&q-;>~<%wlal}}*J=NwXP!y~Ka7dufwZCc zol_l@ld4hwn4up9~Ohll2w^?KZn@|4IqM>?o2sYWdzV=I#HaV4u@Z%+cb-$ls zJ)&m>qI_b9TkysleiNE|}Mrvu3O^xpPCH&hbs5@O@OD1J2IZc;z z;MeFgh5WE#L^LQRpJxS@BKg;*Nw~$Ij%|EYr!}tbnB~J73wyNN;N&?QgghL{OL2?S zhrvSmF>G}ayjIFgH+X8geB)a`}fF^>uc>{K*ChO1tmvbO|6}R z=ezexO#6VrJKM+E49hPQJ7>FqzH(^hYZ`_~!CVW9*%J`$*eCXwJFz5zxb3$#)ykbT z8x$eyO*@5UW=Xu=kbUHN!4sfUzG_eqvaXeQ%fZknc{kp6`(02^9}=Vt8$F-7VM|5< z7(1@))*4XvhUK9jV?b^@>u>ToJDB%?ucy?n2yfYnknr z@#~Cu(b|LlVuc*tWFK}5W