From 178386ee53120181e2e78be959d4eb8dc6de0a12 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 8 Feb 2013 02:31:40 -0500 Subject: [PATCH] Added the ability to place a sign onto a brass or wrought iron fence uses code from PilzAdam's rework of thexyz's signs mod. --- characters | 279 ++++++++++++++++++ crafts.lua | 23 ++ fences.lua | 161 ++++++++-- init.lua | 4 +- signs_lib.lua | 191 ++++++++++++ textures/_0.png | Bin 0 -> 239 bytes textures/_1.png | Bin 0 -> 238 bytes textures/_2.png | Bin 0 -> 235 bytes textures/_3.png | Bin 0 -> 241 bytes textures/_4.png | Bin 0 -> 240 bytes textures/_5.png | Bin 0 -> 237 bytes textures/_6.png | Bin 0 -> 246 bytes textures/_7.png | Bin 0 -> 243 bytes textures/_8.png | Bin 0 -> 235 bytes textures/_9.png | Bin 0 -> 245 bytes textures/_a.png | Bin 0 -> 238 bytes textures/_a_.png | Bin 0 -> 251 bytes textures/_am.png | Bin 0 -> 156 bytes textures/_ap.png | Bin 0 -> 228 bytes textures/_as.png | Bin 0 -> 238 bytes textures/_at.png | Bin 0 -> 254 bytes textures/_b.png | Bin 0 -> 249 bytes textures/_b_.png | Bin 0 -> 240 bytes textures/_bl.png | Bin 0 -> 237 bytes textures/_br.png | Bin 0 -> 237 bytes textures/_c.png | Bin 0 -> 236 bytes textures/_c_.png | Bin 0 -> 239 bytes textures/_ca.png | Bin 0 -> 231 bytes textures/_cl.png | Bin 0 -> 233 bytes textures/_cm.png | Bin 0 -> 226 bytes textures/_cr.png | Bin 0 -> 234 bytes textures/_d.png | Bin 0 -> 243 bytes textures/_d_.png | Bin 0 -> 239 bytes textures/_dl.png | Bin 0 -> 239 bytes textures/_dt.png | Bin 0 -> 224 bytes textures/_dv.png | Bin 0 -> 235 bytes textures/_e.png | Bin 0 -> 240 bytes textures/_e_.png | Bin 0 -> 242 bytes textures/_eq.png | Bin 0 -> 228 bytes textures/_ex.png | Bin 0 -> 230 bytes textures/_f.png | Bin 0 -> 244 bytes textures/_f_.png | Bin 0 -> 246 bytes textures/_g.png | Bin 0 -> 251 bytes textures/_g_.png | Bin 0 -> 243 bytes textures/_gt.png | Bin 0 -> 228 bytes textures/_h.png | Bin 0 -> 248 bytes textures/_h_.png | Bin 0 -> 252 bytes textures/_ha.png | Bin 0 -> 233 bytes textures/_hs.png | Bin 0 -> 144 bytes textures/_i.png | Bin 0 -> 237 bytes textures/_i_.png | Bin 0 -> 239 bytes textures/_j.png | Bin 0 -> 240 bytes textures/_j_.png | Bin 0 -> 243 bytes textures/_k.png | Bin 0 -> 247 bytes textures/_k_.png | Bin 0 -> 243 bytes textures/_l.png | Bin 0 -> 238 bytes textures/_l_.png | Bin 0 -> 242 bytes textures/_lt.png | Bin 0 -> 227 bytes textures/_m.png | Bin 0 -> 240 bytes textures/_m_.png | Bin 0 -> 244 bytes textures/_mn.png | Bin 0 -> 228 bytes textures/_n.png | Bin 0 -> 248 bytes textures/_n_.png | Bin 0 -> 252 bytes textures/_o.png | Bin 0 -> 238 bytes textures/_o_.png | Bin 0 -> 239 bytes textures/_p.png | Bin 0 -> 250 bytes textures/_p_.png | Bin 0 -> 246 bytes textures/_pr.png | Bin 0 -> 255 bytes textures/_ps.png | Bin 0 -> 235 bytes textures/_q.png | Bin 0 -> 251 bytes textures/_q_.png | Bin 0 -> 242 bytes textures/_qo.png | Bin 0 -> 232 bytes textures/_qu.png | Bin 0 -> 233 bytes textures/_r.png | Bin 0 -> 241 bytes textures/_r_.png | Bin 0 -> 248 bytes textures/_re.png | Bin 0 -> 243 bytes textures/_s.png | Bin 0 -> 239 bytes textures/_s_.png | Bin 0 -> 243 bytes textures/_sl.png | Bin 0 -> 240 bytes textures/_sm.png | Bin 0 -> 227 bytes textures/_sp.png | Bin 0 -> 215 bytes textures/_sr.png | Bin 0 -> 236 bytes textures/_t.png | Bin 0 -> 241 bytes textures/_t_.png | Bin 0 -> 249 bytes textures/_tl.png | Bin 0 -> 227 bytes textures/_u.png | Bin 0 -> 240 bytes textures/_u_.png | Bin 0 -> 252 bytes textures/_un.png | Bin 0 -> 226 bytes textures/_v.png | Bin 0 -> 249 bytes textures/_v_.png | Bin 0 -> 246 bytes textures/_vb.png | Bin 0 -> 229 bytes textures/_w.png | Bin 0 -> 238 bytes textures/_w_.png | Bin 0 -> 247 bytes textures/_x.png | Bin 0 -> 241 bytes textures/_x_.png | Bin 0 -> 246 bytes textures/_y.png | Bin 0 -> 246 bytes textures/_y_.png | Bin 0 -> 243 bytes textures/_z.png | Bin 0 -> 233 bytes textures/_z_.png | Bin 0 -> 235 bytes textures/homedecor_sign_brass_post.png | Bin 0 -> 548 bytes textures/homedecor_sign_brass_post_back.png | Bin 0 -> 482 bytes textures/homedecor_sign_brass_post_bottom.png | Bin 0 -> 374 bytes textures/homedecor_sign_brass_post_front.png | Bin 0 -> 359 bytes textures/homedecor_sign_brass_post_side.png | Bin 0 -> 383 bytes textures/homedecor_sign_brass_post_top.png | Bin 0 -> 374 bytes textures/homedecor_sign_wrought_iron_post.png | Bin 0 -> 541 bytes .../homedecor_sign_wrought_iron_post_back.png | Bin 0 -> 478 bytes ...omedecor_sign_wrought_iron_post_bottom.png | Bin 0 -> 394 bytes ...homedecor_sign_wrought_iron_post_front.png | Bin 0 -> 343 bytes .../homedecor_sign_wrought_iron_post_side.png | Bin 0 -> 383 bytes .../homedecor_sign_wrought_iron_post_top.png | Bin 0 -> 394 bytes 111 files changed, 631 insertions(+), 27 deletions(-) create mode 100644 characters create mode 100644 signs_lib.lua create mode 100644 textures/_0.png create mode 100644 textures/_1.png create mode 100644 textures/_2.png create mode 100644 textures/_3.png create mode 100644 textures/_4.png create mode 100644 textures/_5.png create mode 100644 textures/_6.png create mode 100644 textures/_7.png create mode 100644 textures/_8.png create mode 100644 textures/_9.png create mode 100644 textures/_a.png create mode 100644 textures/_a_.png create mode 100644 textures/_am.png create mode 100644 textures/_ap.png create mode 100644 textures/_as.png create mode 100644 textures/_at.png create mode 100644 textures/_b.png create mode 100644 textures/_b_.png create mode 100644 textures/_bl.png create mode 100644 textures/_br.png create mode 100644 textures/_c.png create mode 100644 textures/_c_.png create mode 100644 textures/_ca.png create mode 100644 textures/_cl.png create mode 100644 textures/_cm.png create mode 100644 textures/_cr.png create mode 100644 textures/_d.png create mode 100644 textures/_d_.png create mode 100644 textures/_dl.png create mode 100644 textures/_dt.png create mode 100644 textures/_dv.png create mode 100644 textures/_e.png create mode 100644 textures/_e_.png create mode 100644 textures/_eq.png create mode 100644 textures/_ex.png create mode 100644 textures/_f.png create mode 100644 textures/_f_.png create mode 100644 textures/_g.png create mode 100644 textures/_g_.png create mode 100644 textures/_gt.png create mode 100644 textures/_h.png create mode 100644 textures/_h_.png create mode 100644 textures/_ha.png create mode 100644 textures/_hs.png create mode 100644 textures/_i.png create mode 100644 textures/_i_.png create mode 100644 textures/_j.png create mode 100644 textures/_j_.png create mode 100644 textures/_k.png create mode 100644 textures/_k_.png create mode 100644 textures/_l.png create mode 100644 textures/_l_.png create mode 100644 textures/_lt.png create mode 100644 textures/_m.png create mode 100644 textures/_m_.png create mode 100644 textures/_mn.png create mode 100644 textures/_n.png create mode 100644 textures/_n_.png create mode 100644 textures/_o.png create mode 100644 textures/_o_.png create mode 100644 textures/_p.png create mode 100644 textures/_p_.png create mode 100644 textures/_pr.png create mode 100644 textures/_ps.png create mode 100644 textures/_q.png create mode 100644 textures/_q_.png create mode 100644 textures/_qo.png create mode 100644 textures/_qu.png create mode 100644 textures/_r.png create mode 100644 textures/_r_.png create mode 100644 textures/_re.png create mode 100644 textures/_s.png create mode 100644 textures/_s_.png create mode 100644 textures/_sl.png create mode 100644 textures/_sm.png create mode 100644 textures/_sp.png create mode 100644 textures/_sr.png create mode 100644 textures/_t.png create mode 100644 textures/_t_.png create mode 100644 textures/_tl.png create mode 100644 textures/_u.png create mode 100644 textures/_u_.png create mode 100644 textures/_un.png create mode 100644 textures/_v.png create mode 100644 textures/_v_.png create mode 100644 textures/_vb.png create mode 100644 textures/_w.png create mode 100644 textures/_w_.png create mode 100644 textures/_x.png create mode 100644 textures/_x_.png create mode 100644 textures/_y.png create mode 100644 textures/_y_.png create mode 100644 textures/_z.png create mode 100644 textures/_z_.png create mode 100644 textures/homedecor_sign_brass_post.png create mode 100644 textures/homedecor_sign_brass_post_back.png create mode 100644 textures/homedecor_sign_brass_post_bottom.png create mode 100644 textures/homedecor_sign_brass_post_front.png create mode 100644 textures/homedecor_sign_brass_post_side.png create mode 100644 textures/homedecor_sign_brass_post_top.png create mode 100644 textures/homedecor_sign_wrought_iron_post.png create mode 100644 textures/homedecor_sign_wrought_iron_post_back.png create mode 100644 textures/homedecor_sign_wrought_iron_post_bottom.png create mode 100644 textures/homedecor_sign_wrought_iron_post_front.png create mode 100644 textures/homedecor_sign_wrought_iron_post_side.png create mode 100644 textures/homedecor_sign_wrought_iron_post_top.png diff --git a/characters b/characters new file mode 100644 index 00000000..83d65050 --- /dev/null +++ b/characters @@ -0,0 +1,279 @@ +A +_a_ +7 +B +_b_ +5 +C +_c_ +6 +D +_d_ +6 +E +_e_ +5 +F +_f_ +5 +G +_g_ +6 +H +_h_ +6 +I +_i_ +1 +J +_j_ +4 +K +_k_ +5 +L +_l_ +4 +M +_m_ +7 +N +_n_ +6 +O +_o_ +6 +P +_p_ +5 +Q +_q_ +7 +R +_r_ +5 +S +_s_ +5 +T +_t_ +5 +U +_u_ +6 +V +_v_ +7 +W +_w_ +9 +X +_x_ +5 +Y +_y_ +7 +Z +_z_ +5 +a +_a +5 +b +_b +5 +c +_c +4 +d +_d +5 +e +_e +4 +f +_f +4 +g +_g +5 +h +_h +5 +i +_i +1 +j +_j +1 +k +_k +4 +l +_l +1 +m +_m +7 +n +_n +5 +o +_o +5 +p +_p +5 +q +_q +5 +r +_r +3 +s +_s +4 +t +_t +3 +u +_u +4 +v +_v +5 +w +_w +7 +x +_x +5 +y +_y +4 +z +_z +4 + +_sp +2 +0 +_0 +4 +1 +_1 +2 +2 +_2 +4 +3 +_3 +4 +4 +_4 +4 +5 +_5 +4 +6 +_6 +4 +7 +_7 +4 +8 +_8 +4 +9 +_9 +4 +( +_bl +2 +) +_br +2 +{ +_cl +3 +} +_cr +3 +[ +_sl +2 +] +_sr +2 +' +_ap +1 +! +_ex +1 +? +_qu +4 +@ +_at +5 +# +_hs +5 +$ +_dl +4 +% +_pr +5 +^ +_ca +3 +& +_am +5 +* +_as +3 +_ +_un +3 ++ +_ps +3 +- +_mn +3 += +_eq +3 +; +_sm +1 +, +_cm +2 +" +_qo +3 +/ +_dv +5 +~ +_tl +4 +< +_lt +3 +> +_gt +3 +\ +_re +5 +| +_vb +1 +. +_dt +1 diff --git a/crafts.lua b/crafts.lua index 69490e1a..b4b03471 100644 --- a/crafts.lua +++ b/crafts.lua @@ -1321,6 +1321,29 @@ minetest.register_craft( { }, }) +-- the version of brass/wrought iron fences with signs attached + + +minetest.register_craft( { + type = "shapeless", + output = 'homedecor:fence_brass_with_sign', + recipe = { + 'homedecor:fence_brass', + 'default:sign_wall', + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = 'homedecor:fence_wrought_iron_with_sign', + recipe = { + 'homedecor:fence_wrought_iron', + 'default:sign_wall', + }, +}) + +-- other types of fences/gates + minetest.register_craft( { output = "homedecor:fence_picket 6", recipe = { diff --git a/fences.lua b/fences.lua index faa2ca2d..d9bd7cfd 100644 --- a/fences.lua +++ b/fences.lua @@ -1,39 +1,148 @@ -- This file adds fences of various types minetest.register_node("homedecor:fence_brass", { - description = "Brass Fence/railing", - drawtype = "fencelike", - tiles = {"homedecor_tile_brass.png"}, - inventory_image = "homedecor_fence_brass.png", - wield_image = "homedecor_pole_brass.png", - paramtype = "light", - is_ground_content = true, - selection_box = { - type = "fixed", - fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, - }, - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), + description = "Brass Fence/railing", + drawtype = "fencelike", + tiles = {"homedecor_tile_brass.png"}, + inventory_image = "homedecor_fence_brass.png", + wield_image = "homedecor_pole_brass.png", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), walkable = true, }) + minetest.register_node("homedecor:fence_wrought_iron", { - description = "Wrought Iron Fence/railing", - drawtype = "fencelike", - tiles = {"homedecor_tile_wrought_iron.png"}, - inventory_image = "homedecor_fence_wrought_iron.png", - wield_image = "homedecor_pole_wrought_iron.png", - paramtype = "light", - is_ground_content = true, - selection_box = { - type = "fixed", - fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, - }, - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), + description = "Wrought Iron Fence/railing", + drawtype = "fencelike", + tiles = {"homedecor_tile_wrought_iron.png"}, + inventory_image = "homedecor_fence_wrought_iron.png", + wield_image = "homedecor_pole_wrought_iron.png", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), walkable = true, }) +-- brass/wrought iron with signs: + +minetest.register_node("homedecor:fence_brass_with_sign", { + description = "Brass Fence/railing with sign", + drawtype = "nodebox", + tiles = { + "homedecor_sign_brass_post_top.png", + "homedecor_sign_brass_post_bottom.png", + "homedecor_sign_brass_post_side.png", + "homedecor_sign_brass_post_side.png", + "homedecor_sign_brass_post_back.png", + "homedecor_sign_brass_post_front.png", + }, + inventory_image = "homedecor_sign_brass_post.png", + wield_image = "homedecor_sign_brass_post.png", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + { -0.125, -0.5, -0.125, 0.125, 0.5, 0.125 }, + { -0.45, -0.1875, -0.225, 0.45, 0.4375, -0.125 }, + } + }, + selection_box = { + type = "fixed", + fixed = { + { -0.125, -0.5, -0.125, 0.125, 0.5, 0.125 }, + { -0.45, -0.1875, -0.225, 0.45, 0.4375, -0.125 }, + } + }, + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), + walkable = true, + drop = { + max_items = 2, + items = { + { items = { "default:sign_wall" }}, + { items = { "homedecor:fence_brass" }}, + }, + }, + on_construct = function(pos) + homedecor_construct_sign(pos) + end, + on_destruct = function(pos) + homedecor_destruct_sign(pos) + end, + on_receive_fields = function(pos, formname, fields, sender) + homedecor_update_sign(pos, fields) + end, + on_punch = function(pos, node, puncher) + homedecor_update_sign(pos) + end, +}) + +minetest.register_node("homedecor:fence_wrought_iron_with_sign", { + description = "Wrought Iron Fence/railing with sign", + drawtype = "nodebox", + tiles = { + "homedecor_sign_wrought_iron_post_top.png", + "homedecor_sign_wrought_iron_post_bottom.png", + "homedecor_sign_wrought_iron_post_side.png", + "homedecor_sign_wrought_iron_post_side.png", + "homedecor_sign_wrought_iron_post_back.png", + "homedecor_sign_wrought_iron_post_front.png", + }, + inventory_image = "homedecor_sign_wrought_iron_post.png", + wield_image = "homedecor_sign_wrought_iron_post.png", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + { -0.125, -0.5, -0.125, 0.125, 0.5, 0.125 }, + { -0.45, -0.1875, -0.225, 0.45, 0.4375, -0.125 }, + } + }, + selection_box = { + type = "fixed", + fixed = { + { -0.125, -0.5, -0.125, 0.125, 0.5, 0.125 }, + { -0.45, -0.1875, -0.225, 0.45, 0.4375, -0.125 }, + } + }, + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), + walkable = true, + drop = { + max_items = 2, + items = { + { items = { "default:sign_wall" }}, + { items = { "homedecor:fence_wrought_iron" }}, + }, + }, + on_construct = function(pos) + homedecor_construct_sign(pos) + end, + on_destruct = function(pos) + homedecor_destruct_sign(pos) + end, + on_receive_fields = function(pos, formname, fields, sender) + homedecor_update_sign(pos, fields) + end, + on_punch = function(pos, node, puncher) + homedecor_update_sign(pos) + end, +}) + +-- other types of fences + minetest.register_node("homedecor:fence_picket", { drawtype = "nodebox", description = "Unpainted Picket Fence", diff --git a/init.lua b/init.lua index cd92d191..20e91f41 100644 --- a/init.lua +++ b/init.lua @@ -793,8 +793,10 @@ end dofile(minetest.get_modpath("homedecor").."/door_models.lua") dofile(minetest.get_modpath("homedecor").."/door_nodes.lua") -dofile(minetest.get_modpath("homedecor").."/lighting.lua") +dofile(minetest.get_modpath("homedecor").."/signs_lib.lua") dofile(minetest.get_modpath("homedecor").."/fences.lua") + +dofile(minetest.get_modpath("homedecor").."/lighting.lua") dofile(minetest.get_modpath("homedecor").."/kitchen_cabinet.lua") dofile(minetest.get_modpath("homedecor").."/refrigerator.lua") dofile(minetest.get_modpath("homedecor").."/oven.lua") diff --git a/signs_lib.lua b/signs_lib.lua new file mode 100644 index 00000000..873df969 --- /dev/null +++ b/signs_lib.lua @@ -0,0 +1,191 @@ +-- This code was borrowed from Pilzadam's rework of thexyz's signs mod + +-- Font: 04.jp.org + +-- load characters map +local chars_file = io.open(minetest.get_modpath("homedecor").."/characters", "r") +local charmap = {} +local max_chars = 16 +if not chars_file then + print("[homedecor] E: character map file not found") +else + while true do + local char = chars_file:read("*l") + if char == nil then + break + end + local img = chars_file:read("*l") + chars_file:read("*l") + charmap[char] = img + end +end + +local signs_post = { + {delta = {x = 0, y = 0, z = -0.226}, yaw = 0}, + {delta = {x = -0.226, y = 0, z = 0}, yaw = math.pi / -2}, + {delta = {x = 0, y = 0, z = 0.226}, yaw = math.pi}, + {delta = {x = 0.226, y = 0, z = 0}, yaw = math.pi / 2}, +} + +homedecor_construct_sign = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("formspec", "field[text;;${text}]") + meta:set_string("infotext", "") +end + +homedecor_destruct_sign = function(pos) + local objects = minetest.env:get_objects_inside_radius(pos, 0.5) + for _, v in ipairs(objects) do + if v:get_entity_name() == "homedecor:sign_text" then + v:remove() + end + end +end + +homedecor_update_sign = function(pos, fields) + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "") + if fields then + meta:set_string("text", fields.text) + end + local text = meta:get_string("text") + local objects = minetest.env:get_objects_inside_radius(pos, 0.5) + for _, v in ipairs(objects) do + if v:get_entity_name() == "homedecor:sign_text" then + v:set_properties({textures={homedecor_generate_texture(homedecor_create_lines(text))}}) + return + end + end + + -- if there is no entity + local sign_info + if minetest.env:get_node(pos).name == "homedecor:fence_brass_with_sign" + or minetest.env:get_node(pos).name == "homedecor:fence_wrought_iron_with_sign" then + sign_info = signs_post[minetest.env:get_node(pos).param2 + 1] + end + if sign_info == nil then + return + end + local text = minetest.env:add_entity({x = pos.x + sign_info.delta.x, + y = pos.y + sign_info.delta.y, + z = pos.z + sign_info.delta.z}, "homedecor:sign_text") + text:setyaw(sign_info.yaw) +end + +minetest.register_entity("homedecor:sign_text", { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "upright_sprite", + textures = {}, + + on_activate = function(self) + local meta = minetest.env:get_meta(self.object:getpos()) + local text = meta:get_string("text") + self.object:set_properties({textures={homedecor_generate_texture(homedecor_create_lines(text))}}) + end +}) + +-- CONSTANTS +local SIGN_WITH = 110 +local SIGN_PADDING = 8 + +local LINE_LENGTH = 16 +local NUMBER_OF_LINES = 4 + +local LINE_HEIGHT = 14 +local CHAR_WIDTH = 5 + +homedecor_string_to_array = function(str) + local tab = {} + for i=1,string.len(str) do + table.insert(tab, string.sub(str, i,i)) + end + return tab +end + +homedecor_string_to_word_array = function(str) + local tab = {} + local current = 1 + tab[1] = "" + for _,char in ipairs(homedecor_string_to_array(str)) do + if char ~= " " then + tab[current] = tab[current]..char + else + current = current+1 + tab[current] = "" + end + end + return tab +end + +homedecor_create_lines = function(text) + local line = "" + local line_num = 1 + local tab = {} + for _,word in ipairs(homedecor_string_to_word_array(text)) do + if string.len(line)+string.len(word) < LINE_LENGTH and word ~= "|" then + if line ~= "" then + line = line.." "..word + else + line = word + end + else + table.insert(tab, line) + if word ~= "|" then + line = word + else + line = "" + end + line_num = line_num+1 + if line_num > NUMBER_OF_LINES then + return tab + end + end + end + table.insert(tab, line) + return tab +end + +homedecor_generate_texture = function(lines) + local texture = "[combine:"..SIGN_WITH.."x"..SIGN_WITH + local ypos = 12 + for i = 1, #lines do + texture = texture..homedecor_generate_line(lines[i], ypos) + ypos = ypos + LINE_HEIGHT + end + return texture +end + +homedecor_generate_line = function(s, ypos) + local i = 1 + local parsed = {} + local width = 0 + local chars = 0 + while chars < max_chars and i <= #s do + local file = nil + if charmap[s:sub(i, i)] ~= nil then + file = charmap[s:sub(i, i)] + i = i + 1 + elseif i < #s and charmap[s:sub(i, i + 1)] ~= nil then + file = charmap[s:sub(i, i + 1)] + i = i + 2 + else + print("[homedecor] W: unknown symbol in '"..s.."' at "..i.." (probably "..s:sub(i, i)..")") + i = i + 1 + end + if file ~= nil then + width = width + CHAR_WIDTH + table.insert(parsed, file) + chars = chars + 1 + end + end + width = width - 1 + + local texture = "" + local xpos = math.floor((SIGN_WITH - 2 * SIGN_PADDING - width) / 2 + SIGN_PADDING) + for i = 1, #parsed do + texture = texture..":"..xpos..","..ypos.."="..parsed[i]..".png" + xpos = xpos + CHAR_WIDTH + 1 + end + return texture +end + diff --git a/textures/_0.png b/textures/_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b0308799ad48a511ff432f8342fc753302f7f18b GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEpyBfQg~uJR5U*IC~{frD}<5 zL`h0wNvc(HQ7VvPFfuSS(ls;yq7Xw9D-g2KH88Ov6rT>}#<1A|uA6^l_czopr0GEtCP5=M^ literal 0 HcmV?d00001 diff --git a/textures/_2.png b/textures/_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7375c6800a42f151197ec85a4715513535d46394 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEq&!_5LpZJ{Cmdk=XZ)uzm0Xkxq!^4042^UR4S*=b(8LOaEOZS_tPBiVT~{nd(U6;;l9^VCTf-L#0ePSX ec90D@iAkwB3`U_BXPpKLF?hQAxvX9x4`ZU|{GD=lanqdR!T( zR<*=6q9i4;B-JXpC>2OC7#SEE=^7dUQHY_56$n}A8kkra7__>sSd5|}H$NpatrE9} kFA@UsKn?658*&npQgaxLm9DLd1qv~Ey85}Sb4q9e0RNmoRR910 literal 0 HcmV?d00001 diff --git a/textures/_4.png b/textures/_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0fff433cbc86c0fe7a48061dcefb211f6f634fe9 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<40%r%#}JO|$q5J8{}~$?9F!;!bP0l+XkK@y0pL literal 0 HcmV?d00001 diff --git a/textures/_6.png b/textures/_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1eba38ca46032d363f68889ca61720771170de1a GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqER6SiBLpZJ{CpfV8@bK{bSM2OC7#SEE=^7dUQHY_56$n}A8kkra7__>sSd5|}H$Npa otrE9}FA@UsKn?658*&npQgay0g7(B+0tzvBy85}Sb4q9e00+Q84FCWD literal 0 HcmV?d00001 diff --git a/textures/_7.png b/textures/_7.png new file mode 100644 index 0000000000000000000000000000000000000000..dbcd2d18918071b4c9b3ce6c638b27eda973fa25 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqElssJ=LpZJ{CpfV8@cd6a^WQ_I>EryyM$X8?^=xb=f-(#Y6Th=Dn9T3^ z0aUG8;u=wsl30>zm0Xkxq!^4042^UR4S*=b(8LOaEOZS_tPBiVT~{nd(U6;;l9^VC lTf-L#0ePSXc90D@iAkwB4Cbo4^IU*J44$rjF6*2UngDqnKEwb3 literal 0 HcmV?d00001 diff --git a/textures/_8.png b/textures/_8.png new file mode 100644 index 0000000000000000000000000000000000000000..edf6ef528cf12f110d9bd641364d6059ba47a685 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEq&!_5LpZJ{Cmdk=XZ)u! zC8<`)MX5lF!N|bSNY~H+h(ZiatU$;@*TBTez@XK2#bOip1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3|UVX#}JO|$q5R)f6{;SpGr+=3@ET`;tu>hf5A+KKl3>LOl9*n11eN4 zag8WRNi0dVN-jzTQVd20hDN%E20#>IXkrCIX1WF@Rt5%Ft1kaT(U6;;l9^VCTf-9d iY$u=wc90D@iAkwB42jD(&uRq-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3@uL=#}JO|$q5Qv21W)3f7&-oNG!PXpF@rLa6KEFn2O#i9^pwZ>e(JK zFueEX{QoJcO9`k;wZt`|BqgyV)hf9t6-Y4{85kPr8X5pmh@puU2$|^`m{=JYT&=qN v4@E<6eoAIqC2kE%)U%y{8rVTLgTe~DWM4f%h5s- literal 0 HcmV?d00001 diff --git a/textures/_am.png b/textures/_am.png new file mode 100644 index 0000000000000000000000000000000000000000..75d0287bea62b77a76a036502ff9dba1a61b39d5 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=wj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwIgI$D?fo->aB2Y-v)5S4_<9hCCLp}xthC>HF|LXo8<2RDW)WEcNc~RchdzzAi)BU$YLPv z0mg18v+aNkVNVyw5RU7~2@MVZeRz0$cy2H<$mB7yyz4(J0hCrPag8WRNi0dVN-jzT zQVd20hDN%E20#>IXkrCI7PKG=fILtGJIIEd#H7?5 V26YRbIt8E*gQu&X%Q~loCIA-pHG2R6 literal 0 HcmV?d00001 diff --git a/textures/_as.png b/textures/_as.png new file mode 100644 index 0000000000000000000000000000000000000000..3c7a25a03fdd29e096979815204dc958abe2ea0d GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3|UVX#}JO|$q5H|{}~$qfzhA#$sBcptHiD0i-dqY fPy;*2hMdHt)Eovax4lerfkF(Pu6{1-oD!M<$@)2z literal 0 HcmV?d00001 diff --git a/textures/_at.png b/textures/_at.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9841cddb02c6eda1543c7e3570e5760f544050 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3|&tb#}JO|$q5HoB_t();Ggo1{|klwOG^GTHc(>ur)(g+ic#a#1PKYZ zWOjxptla+(9D9Eos8O}VHKHUXu_VKd3>85k%V wEfz=7kei>9nO2EgLr}i-YM=&okPSJBNvSyu4zF)@fh=Y4boFyt=akR{0DAvImjD0& literal 0 HcmV?d00001 diff --git a/textures/_b.png b/textures/_b.png new file mode 100644 index 0000000000000000000000000000000000000000..baf4eaa9cc78549409ee99a74e239d789c2a9273 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3=K~g#}JO|$q5Je{u%#qe`Wv%hi3M0T>S6DQR?C2wxiCC&541*-jki_ zvC2tfpdQr{*NBpo#FA92heDn4Y~O# pnQ4`{H7rrj2HM5I4zeL9F)1~NA<1snX?vg$gQu&X%Q~loCIDISK==Rv literal 0 HcmV?d00001 diff --git a/textures/_b_.png b/textures/_b_.png new file mode 100644 index 0000000000000000000000000000000000000000..b00a3783a9090e36b1eb3f8d967b0952cb094c4b GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<40%r%#}JO|$q5P!5|aN8NAmCloU3=U5RRO}x!i0I1H+s3>`Z%hhUx*8 zs+PD$l%yn&hpI6%nYaYv9g3nIynQ?sg}4# zl%ynMQ-BujrWSHQ>{(Itj_NPE)swJ)w zB`Jv|saDBFsX&Us$iUD@*U$inLJUo;K*(Izz{JYHpqTfD7m9}5{FKbJO57Tl0usIf fHL!zh$Vp5}&0$FP-1~baP>8|P)z4*}Q$iB}A8S6; literal 0 HcmV?d00001 diff --git a/textures/_c_.png b/textures/_c_.png new file mode 100644 index 0000000000000000000000000000000000000000..cab6518a7ae7fe2ee1edff3ca6da4690a0466405 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqE}_WM>(?~lHc+K% ziEBhjN@7W>RdP`(kYX@0Ff`INGytLyLlY|yGS@XQu`)0y=Dp#Cq9HdwB{QuOw+5zw igl|9%>>wL*5|dJM7@UhP-%bPyF?hQAxvX1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3^7j^#}JO|$q5H||0x^)Q||tgzCewE;mBE*KNcOnOMog=OI#yLQW8s2 zt&)pUffR$0fuWJEp#czu7@AmtkfpAHiIstYve9C36b-rgDVb@NxHSajORolMUSFSLpb&$ntDnm{r-UW|Ru4Kf literal 0 HcmV?d00001 diff --git a/textures/_cm.png b/textures/_cm.png new file mode 100644 index 0000000000000000000000000000000000000000..28beedf35619802f5b5e7149ddcdeea2918552b6 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-T!2%>7ZC!F7B#`9o?!wUEZn{7S$m1;Vh%5%u z9$@TtGTRQw5cG6$4B@z*oS-20C%x%XfE|N`6BA=;-o<4=N!1e9h?11Vl2ohYqEsNo zU}Ruuq-$sZL?MPIRv=`lYhYq!V4!TYSR6$|ZhlH;S|x4`LHW|Ffg0FBHsmBGrRFf` UtiQK>1yG2=)78&qol`;+0MK_h3IG5A literal 0 HcmV?d00001 diff --git a/textures/_cr.png b/textures/_cr.png new file mode 100644 index 0000000000000000000000000000000000000000..ac466a95ac65634a99cda40053d28e27f341c408 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;!2%K~KmQO&F(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEBt2amLpZJ{CpfVFpD5uYAST>qBewIuM;61mU92oQYyM9IDpD1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3?)w&#}JO|$q5H|{~7;re`c`3LBm4c$w={vLE`2A^BV;i7;4Ko8H(=S zr~|52Epd$~Nl7e8wMs5Z1yT$~28Kquh6X?sVrXIoLgu;#CRPRp#k@DXP&DM`r(~v8 m;?}?vknjztfgNN+PGVAO4nxZIn|UDbF?hQAxvX1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3^`91#}JO|$q5P!5|aN8NAmCloU2!BVS3|Zl3T&Zp!bJ`omoH23aC=G z#5JNMC9x#cD!C{XNHG{07#iss8URsc90D@iAkwB3@&fB`yB!bF?hQAxvX710V`9G_e99OI-sKD+2>%qs8JV8glbfGSez?YY57h hUJca14zeL9F)1~NL1iJU{w$yngQu&X%Q~loCIA@1I`04g literal 0 HcmV?d00001 diff --git a/textures/_dt.png b/textures/_dt.png new file mode 100644 index 0000000000000000000000000000000000000000..61c1e4a4780fec5d9966bd13b9a5fc128d63e57f GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2%>Xo8<2RDW)WEcNc~RchdzzAi)BU$YLPv z0mg18v+aNkeoq(25RU7~2?x0T87met@ai)%U7u&c29#1Qag8WRNi0dVN-jzTQVd20 zhDN%E20#>IXkrCImbwNeRt5&jMvKK!H00)|WTsW())160y&9;29b`jJVp3`jgP!As RV=X`-22WQ%mvv4FO#p{ZG&ukO literal 0 HcmV?d00001 diff --git a/textures/_dv.png b/textures/_dv.png new file mode 100644 index 0000000000000000000000000000000000000000..996d7cd70faa2c03a59555c3378f0db6cadc1a2e GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3@J|+#}JO|$q5G-|26Dtrh*EKM)GB7CSz2SwTAvZrIGp!Q02Bv_7 hZ$J&~ARBTLlTvdSQWxBdn*$VL@O1TaS?83{1OSVZJq`c> literal 0 HcmV?d00001 diff --git a/textures/_e_.png b/textures/_e_.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f19c127b30fd3ecdcb1a2b24961bd03b60cbe2 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3`I{D#}JO|$q5P!5|aOvixubm?IXkrCImbwNeRt5&jMvKK!H00)|WTsW())160y&9;29b`jJVp3`j VgYD70_9&nbgQu&X%Q~loCIG26H4Oj& literal 0 HcmV?d00001 diff --git a/textures/_ex.png b/textures/_ex.png new file mode 100644 index 0000000000000000000000000000000000000000..b5da8e9440c546db5ca12b735826dbd77c7f1724 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2%>Xo8<2RDW)WEcNc~RchdzzAi)BU$YLPv z0mg18v+aNkQBN1g5RU7~2@MVZeRy~ZSOgOr7#Y+yF|ki#Z?gd^P%UwdC`m~yNwrEY zN(E93Mh1pPx`qZo6k=#%1wxj(1}0Vp2FgZ@#Zffm=BH$)RpQnVlrOy+sDT}1Lr!8+ XY7T?q#r)f%Kp_TCS3j3^P6LpZJ{CpfV8@PNR7NdXb%9(M7>rjIiOcKtIJU}A7N%*x#Kzbpr+ zT(!hCq9i4;B-JXpC>2OC7#SEE=^7dUQHY_56$qK@8kkra7!>o~@Iuj$o1c=IR*72! jQ$WHupayo34LONPsW}X3me={!fI1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3{_7T#}JO|$q5P!5|aOvixubm?1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3@uL=#}JO|Q%@TTF(~jb9qj%8-`LFR(Kp_TCS3j3^P6RdP`(kYX@0Ff`INGytLyLlY|yGS@XQu`)0y=Dp#Cq9HdwB{QuOw+5zw igl|9%>>wL*5|dJM7~D(u$yWe{7(8A5T-G@yGywo(+&vKh literal 0 HcmV?d00001 diff --git a/textures/_gt.png b/textures/_gt.png new file mode 100644 index 0000000000000000000000000000000000000000..f30855a793d25154ab60cb63a3cbc9931996a393 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;!2%K~KmQO&F(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEggspxLpZJ{Cmi7Vmz@5`UGNYq!=pl$KgxSHe*;RZmbgZgq$HN4S|t~y z0x1R~14AQSLjxcRF*LCPAxm8Y6DtD)WuwL7C>nC}Q!>*kacc<5mtGCjzz(t@Cow5C Whruo;{n`Vd5QC?ypUXO@geCw85jrFQ literal 0 HcmV?d00001 diff --git a/textures/_h.png b/textures/_h.png new file mode 100644 index 0000000000000000000000000000000000000000..1a66a9e541c7a6d938346fd41b552ccadef016eb GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<40TTz#}JO|$q5H|{~7;rf9k}jJm+wS&gc1!jhvCTTi_@% literal 0 HcmV?d00001 diff --git a/textures/_h_.png b/textures/_h_.png new file mode 100644 index 0000000000000000000000000000000000000000..87beafcbe02835e5aff1ba53e39bba71dd02a83f GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3~f&r#}JO|$q5Qv21b9<6A}_q5)yv!3;y6&j-0S#g^|w*HUmY?pXVK9 z7#Qw}b27Q;$vp>ZQ!R0gC`m~yNwrEYN(E93Mh1pPx`qZo6k=#%1w!V!1}0Vp2F1KL vyihdc=BH$)RpQpb6p-)@sDT}1Lr!8+Y7T?PQ%0tjKp_TCS3j3^P6uz literal 0 HcmV?d00001 diff --git a/textures/_ha.png b/textures/_ha.png new file mode 100644 index 0000000000000000000000000000000000000000..4618ced4970ad4249fa2c21927194d4ca8034e35 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3<*yc#}JO|$q5Ho|2Z27JGD%FXy3}UftkUygM;xF*YbFv8r2flh?11V zl2ohYqEsNoU}Ruuq-$sZL?MPIRv=`lYhYq!V4!TYSR6$|ZhlH;S|x4`LHW|Ffg0FB cHsmBGrRFdw+b8a_1PU>Dy85}Sb4q9e0HqW+?f?J) literal 0 HcmV?d00001 diff --git a/textures/_hs.png b/textures/_hs.png new file mode 100644 index 0000000000000000000000000000000000000000..6f12becb730e3f6aa28bce06501d58525717fade GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=wj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwIgI(C#eBOhgNkAc4PZ!4!j_b)k{{OdUW@bKIpE7G= iW8*`6W~&80stlHbN)J}<|0xAj$l&Sf=d#Wzp$Py?C??MU literal 0 HcmV?d00001 diff --git a/textures/_i.png b/textures/_i.png new file mode 100644 index 0000000000000000000000000000000000000000..f00114255342403b197d4aa8c303f26c5a435ece GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3>i-s#}JO|$q5H||0Rq5?qAlxdC)z{DCugiECWNm5i8?oZRaSUI@J=_ zh?11Vl2ohYqEsNoU}Ruuq-$sZL?MPIRv=`qYhYq!U{K6^!wW@2ZhlH;S|x4`OaTes gfEw6AHsmBGrRFeXuFMeH4isYWboFyt=akR{0DHGPXaE2J literal 0 HcmV?d00001 diff --git a/textures/_i_.png b/textures/_i_.png new file mode 100644 index 0000000000000000000000000000000000000000..fc658b85325ac5c00ddb6210ed08ca110e1f79f4 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3^`91#}JO|$q5P!5|aNGbNxwA00O5E8;uROJY;0JcZivd@$KxTK$WT` zt`Q|Ei6yC4$wjF^iowXh&`8(N0Ej{iO{_r3T-U(F%D|wQ_l6gWhTQy=%(P0}8khnS hz5z9`gKWr2OiImR@SMbER1Xwl@O1TaS?83{1OR5*JYfI; literal 0 HcmV?d00001 diff --git a/textures/_j.png b/textures/_j.png new file mode 100644 index 0000000000000000000000000000000000000000..87d2f26d71b0e7cac62bc931eb38f510fefc1911 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;!2%K~KmQO&F(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEUO_QmvAUQh^kMk%6I+uAu=Cg&3Mxfsnbbfr*uYK{4+QFBA>A`6-!cmAEx9 j1tfd}YG4Q1kdv5{n!}J~km$?{6k_mn^>bP0l+XkKSUEj1 literal 0 HcmV?d00001 diff --git a/textures/_j_.png b/textures/_j_.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d9ac20049e97f8d648356a624f38d79d2faded GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3?)w&#}JO|$q5P!5|R=U{}yxoO;1R0`Y=P_lFy4*|BMBg8SGqHnID+H zl>(|(Epd$~Nl7e8wMs5Z1yT$~28Kquh6X?sVrXIoLgu;#CRPRp#k@DXP&DM`r(~v8 m;?}?vknjztfgNN+PGVAO4ucmrfAUeF5QC?ypUXO@geCw2N<7m5 literal 0 HcmV?d00001 diff --git a/textures/_k.png b/textures/_k.png new file mode 100644 index 0000000000000000000000000000000000000000..34f9336884854ae4e1de97ebd98114913f521cd1 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3^h*|#}JO|$q5Je{u%#qe`Wvz8x(f<6j-{MT>YQO^>1<3F=mFfU0e)B zw`>D}I#f$sBT7;dOH!?pi&B9UgOP!uk*=Wu5QP|;Sb>nau7Qb_fk83v4KEZ8x%nxX oX_dG&Fa;!h18QIg*^rZ%l$yhk?VeUV8z{u!>FVdQ&MBb@08>mrrvLx| literal 0 HcmV?d00001 diff --git a/textures/_k_.png b/textures/_k_.png new file mode 100644 index 0000000000000000000000000000000000000000..86b623d1bc8d991cfeeca8a1fb301cf07e512195 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3?)w&#}JO|$q5QVf6{;Ot4m5OkP)$DTVoV3N$^yP%QRI6hPHLQU+0~S zQ~|11Epd$~Nl7e8wMs5Z1yT$~28Kquh6X?sVrXIoLgu;#CRPRp#k@DXP&DM`r(~v8 m;?}?vknjztfgNN+PGVAO4uf|MM{qDuh{4m<&t;ucLK6U$r#tlk literal 0 HcmV?d00001 diff --git a/textures/_l.png b/textures/_l.png new file mode 100644 index 0000000000000000000000000000000000000000..defe7ec8d6f87aecb4525a562d2f6dd6deeca444 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3|UVX#}JO|$q5Ho{~7;re`Wv#ia%Ip_MF(o$-oe`h=q-fZ}k+QLe&!2 zh?11Vl2ohYqEsNoU}Ruuq-$sZL?MPIRv=`qYhYq!U{K6^!wW@2ZhlH;S|x4`OaTes gfEw6AHsmBGrRFf?++=!Y0Tg2JboFyt=akR{0H0?&r2qf` literal 0 HcmV?d00001 diff --git a/textures/_l_.png b/textures/_l_.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe1de2fc3e64f374b8913e7a908391ab9fed976 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3`I{D#}JO|$q5P!5|aO%GuePZqrH)HA%pg3dmm{-py_{E*mk_n(*i11 zEpd$~Nl7e8wMs5Z1yT$~28Kquh6X?sVrXIoLgu;#CRPRp#k@DXP&DM`r(~v8;?}?v iknjztfgNN+PGVAO4uj95oMRt=LJXd+elF{r5}E+b$vVUU literal 0 HcmV?d00001 diff --git a/textures/_lt.png b/textures/_lt.png new file mode 100644 index 0000000000000000000000000000000000000000..ec7219d2b44ea4c8156ce907db72d32d2639ba50 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;!2%K~KmQO&F(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEggjjwLpZJ{Cmi7Xw^-&42$WSVag8WRNi0dVN-jzT zQVd20hDN%E20#>IXkrCImbwNeRt5&jMvKK!H00)|WTsW())160y&9;29b`jJVp3`j VgUzPQ?Pq{O44$rjF6*2UngHggIw}AF literal 0 HcmV?d00001 diff --git a/textures/_m.png b/textures/_m.png new file mode 100644 index 0000000000000000000000000000000000000000..e0fe0398fc2018c4e0b623a32b8df0a962e5e544 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<40%r%#}JO|$q5SVf6{-PKXBlK{ISMlwG>wi%m1BQSQ!G|volPSTVn!L zs#@Y2QIe8al4_M)lnSI6j0_BobPWxFD8$gj3WUsc4NR;I42pSgc%f*>%}>cptHiB= kDInn+Py;*2hMdHt)EtJ~b*$Ic0fiVmUHx3vIVCg!0FXI8>i_@% literal 0 HcmV?d00001 diff --git a/textures/_m_.png b/textures/_m_.png new file mode 100644 index 0000000000000000000000000000000000000000..9164da6a50dec297f557d634e3c03d3b738e7027 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3}sIj#}JO|$q5P^{|;xUX*{=Q7J6(i?4;Uqk|X(_`=uU!28Mb+PDU5L zDONz`swJ)wB`Jv|saDBFsX&Us$iUD@*U$inLJUo;K*(Izz{JYHpqTfD7m9}5{FKbJ nO57Tl0usIfHL!zh$Vp5}&0+AJn*A*eD8%6D>gTe~DWM4fljc0Z literal 0 HcmV?d00001 diff --git a/textures/_mn.png b/textures/_mn.png new file mode 100644 index 0000000000000000000000000000000000000000..935a2feea827815e082ec21dbcb70af4d1339afe GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEggspxLpZJ{Cnzu)82wRqwX|Yju+3v+T&X401C&-Rag8WRNi0dVN-jzT zQVd20hDN%E20#>IXkrCImbwNeRt5&jMvKK!H00)|WTsW())160y&9;29b`jJVp3`j VgYJ!+(?M=x@O1TaS?83{1OW3kHRk{T literal 0 HcmV?d00001 diff --git a/textures/_n.png b/textures/_n.png new file mode 100644 index 0000000000000000000000000000000000000000..ac10fd94dd693a90dbb96b966513d03011d548b3 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<40TTz#}JO|$q5SVf6@~Yew_axKlAi~5Az!vIU@zR+67m22rleaU|`VU zVQ1ht7^w}^qFUk_QIe8al4_M)lnSI6j0_BobPWxFD8$gj3WUsc4NR;I42pSgc%f*> r%}>cptHiB=DInn+Py;*2hMdHt)EtI9bDnk)pb&$ntDnm{r-UW|_d!0p literal 0 HcmV?d00001 diff --git a/textures/_n_.png b/textures/_n_.png new file mode 100644 index 0000000000000000000000000000000000000000..d4355c12fefd7f11eb4d32d20acdd9addd760421 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3~f&r#}JO|$q5Qv21b9{C-VS7z_EHZHZ>K!Da@hASgxNwaNt181uqi@ zhJrWjY!hdy`~_-LEpd$~Nl7e8wMs5Z1yT$~28Kquh6X?sVrXIoLgu;#CRPRp#k@DX uP&DM`r(~v8;?}?vknjztfgNN+PGVAO4uc<0((*e%AqG!ZKbLh*2~7Z(*+8}c literal 0 HcmV?d00001 diff --git a/textures/_o.png b/textures/_o.png new file mode 100644 index 0000000000000000000000000000000000000000..080e99d236877c0752ca4a1b0de682cc500a04c1 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEWIbIRLpZJ{Cn)g!N&msWPyz`486Rw!xnadYP6i83*8f{B`T7DCs+PD$ zl%yn8|P)z4*}Q$iB}BceT& literal 0 HcmV?d00001 diff --git a/textures/_o_.png b/textures/_o_.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1905198ca7c33b692789b0e9575d33c7e07a59 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqE!C8<`)MX5lF!N|bSNY~H+h(ZiatU$m;w^M f0X49LY{*GWO3h*LuTGr~GK0a>)z4*}Q$iB}&K^9? literal 0 HcmV?d00001 diff --git a/textures/_p.png b/textures/_p.png new file mode 100644 index 0000000000000000000000000000000000000000..3050959037785abe8101e5d262dd05903e3a21d5 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3{6iL#}JO|Q@b`YGAQsIa{B*Yl0COjH@M+|8e32BfvLZpdl&3j@o=3! z`&|hRMo;z6>_APbC9V-ADTyViR>?)FK#IZ0z|ct7&;W=+3{9*+$XwUJ#LB>+nD>Sk uiiX_$l+3hB+!~ky621X7u!C&KNlZ%3VJJAuysI22#Ng@b=d#Wzp$Pyti9!kh literal 0 HcmV?d00001 diff --git a/textures/_p_.png b/textures/_p_.png new file mode 100644 index 0000000000000000000000000000000000000000..0cca01106fb1287a8cb37e6b9a34ea6eb92dec7c GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3{_7T#}JO|$q5P!5|aN8NAmCloU2z$VKoR;VJ*n*X*rXgkift&UzCk` zlC~5NNJEKhL`h0wNvc(HQ7VvPFfuSS(ls;yq7Xw9D-bf*H88O-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3_VX5#}JO|y{8?y7!(AYE{1>Kzd3iAVv~Y-S6yYMhvhRqj+MH*PN!Wy z&%EoPzOHvA@2`n3H*f=Ws+PD$l%yn8|P)z4*}Q$iB}W7|W0 literal 0 HcmV?d00001 diff --git a/textures/_ps.png b/textures/_ps.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4b5c11c0fb2de09fafd9a2b92380d0fad50931 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3@J|+#}JO|$q5Qvf6^0x!0CgeqS6l02}}%6xtW=ZE&OHzRjHP^MwFx^ zmZVxG7o`Fz1|tJQBV9uSAPO-wu>v7WT>}#<0|RBF#o{O$a`RI%(<*Um2+EgU4b;F6 cvLPoiDK&>d+i;f=H&BSd)78&qol`;+0ITyiT>t<8 literal 0 HcmV?d00001 diff --git a/textures/_q.png b/textures/_q.png new file mode 100644 index 0000000000000000000000000000000000000000..945b6cf040222dedc0751296629d51e3564e1068 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3@uL=#}JO|$q5R)f6{-PKXBl~{Kkj&Q%)afnc$LSWOQJPfzlSIoBuDK zVPUu`!oi?D`_V<9F4Yp(h?11Vl2ohYqEsNoU}Ruuq-$sZL?MPIRv=`qYhYq!U{K6^ w!wW@2ZhlH;S|x4`OaTesfEw6AHsmBGrRFdc?qcbB2oz%QboFyt=akR{00?eIr2qf` literal 0 HcmV?d00001 diff --git a/textures/_q_.png b/textures/_q_.png new file mode 100644 index 0000000000000000000000000000000000000000..f3bf455aa9dd5180b06e43053b902cd9109a39e3 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqE6g^!WLpZJ{Cmi7ZXZ)uUO_QmvAUQh^kMk%6I+uAu=Cg&3Mxfsnbbfr*uYK{4+QFBA>A`6-!cmAEx9 j1tfd}YG4Q1kdv5{n!^y-n6*k1D8%6D>gTe~DWM4fAId(i literal 0 HcmV?d00001 diff --git a/textures/_qo.png b/textures/_qo.png new file mode 100644 index 0000000000000000000000000000000000000000..5d261e34675722e40b2db238e2dffab3b8ace764 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;!2%K~KmQO&F(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqE#64XcLpZJ{CpfVFmz0qBXY6>xhvx|+L(4uU=3SLfnoV2wqHvpE*A!>Q7v(eC`m~y zNwrEYN(E93Mh1pPx`qZo6k=#%1wxj(1}0Vp2FgZ@#Zffm=BH$)RpQnVlrOy+sDT}1 bLr!8+Y7T?FcEYnVpb&$ntDnm{r-UW|WqvyV literal 0 HcmV?d00001 diff --git a/textures/_r.png b/textures/_r.png new file mode 100644 index 0000000000000000000000000000000000000000..39e9fce5b1377db21b3832fa8baa9e1a48766d91 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3 kzDNkj12wRNY{*GWO3h&?Qs%uK4HRPVboFyt=akR{0Ll-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<40TTz#}JO|$q5Qv21b9{H%kD)f;<0tczjlzN-%nHN@C)X|HcCB48C7E z7&obIlK^T_Epd$~Nl7e8wMs5Z1yT$~28Kquh6X?sVrXIoLKeCPCRPRpt*$E;qiD#@ qPsvQH#I50rgn&Fy13SouoW!Km9EKo?1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3?)w&#}JO|$q5cj{}XxC*w}O)Wh@FP?)FK#IZ0z|ct7&;W=+3{9*+$Wqt9#LB=x*=VsiiiX_$l+3hB m+!})NrB?$ru!C&KNlZ%3VTk#E``Q$s5QC?ypUXO@geCwOm^`xp literal 0 HcmV?d00001 diff --git a/textures/_s.png b/textures/_s.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ada1ac7d33e494c101e9f3343772b70a2e15b5 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEcjbDr^EaMAxji=F^EWw~Mo&6}+M&QERo2UMwA z;u=wsl30>zm0Xkxq!^4042^UR4S*=b(8LOaEOZS_tPBiVT~{nd(U6;;l9^VCTf-L# i0ePSXc90D@iAkwB48RdP`(kYX@0Ff`INGytLyLlY|yvd}d!u`)1dbzQL-MMG|WN@iLm mZVg`~1muAl*g-brBqpWiFa+nPoMr_IF?hQAxvX7ZC!F7B#`9o?!wUEZn{7S$m1;Vh%5%u z9$@TtGTRQwkoRwe-%#e`yAP`Ur2OC7#SEE=^7dUQHY_56$n}C8kkra7$_Sp7Dv&Lo1c=IR*73fP`>nP fpayo34LONPsW}YMiTj<+fkF(Pu6{1-oD!M<{GdAM literal 0 HcmV?d00001 diff --git a/textures/_sm.png b/textures/_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..385c64fe05462c1e8e0ec210ab8a337a29397692 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-T!2%>7ZC!F7B#`9o?!wUEZn{7S$m1;Vh%5%u z9$@TtGTRQw5b|_!4B@z*oN$2opK;>Tf9;hk0T6{4nplC5rLKXAm4Sh>(PD8F4Y~O#nQ4`{H3a2LuLf#h2icI5n3S5s VV6DTeln)eQ@O1TaS?83{1OVRaH~jzr literal 0 HcmV?d00001 diff --git a/textures/_sp.png b/textures/_sp.png new file mode 100644 index 0000000000000000000000000000000000000000..4f38a354ddded3a7b2049268d3f10b7a9cceff82 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^93VC$kYL!eQ)nuXVk!yp3ua&_n|#&+#7pvacVS?> z+a7ZC!F7B#`9o?!wUEZn{7S$m1;Vh%5%u z9$@TtGTRQwkoI(O4B@z*oY27N*7jfESiKq>5X@nTk!5B`N@V6Sk8eu>DpM_SjVMV; zEJ?LWE=mPb3`PcqM!JRuKonwVVg*8$x&|gz1_sJTi^Wki1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3PCT`~RWU2S$d*LN;bLgVj7h zwW=kq5hW>!C8<`)MX5lF!N|bSNY~H+h(ZiatU$;@*TBTez@XK2#bOiFVdQ&MBb@06B;}VgLXD literal 0 HcmV?d00001 diff --git a/textures/_t_.png b/textures/_t_.png new file mode 100644 index 0000000000000000000000000000000000000000..773e666c4ffb7b56d43caaea950f682f2099e8c8 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3=K~g#}JO|$q5P!5|aN8&+y^l;pquDbKt-MhKY$zD^i`Vu}yVbag3AU z(rRW-8D++sKs~A@t`Q|Ei6yC4$wjF^iowXh&`8(N0Ej{iO{_r3Lf62=%D|x2b;V*7 s4Y~O#nQ4`{HGGi}kOyjD2icI5n3S5s5b}{B4&)aGPgg&ebxsLQ01MMU>;M1& literal 0 HcmV?d00001 diff --git a/textures/_tl.png b/textures/_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..059fe681302e0ee570644a222ca3fd2319e6b11e GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEggjjwLpZJ{Cn)g!X;08_m1AJ|S;YLe>to{?psZ?%YeY#(Vo9o1a#1Rf zVlXl=G}1LR0HP2>6Dtt1)HN`%GB8j!S}cyDAvZrIGp!Q0hM;`u)j$pGARBTLlTvdS V>a=!GF8~TLc)I$ztaD0e0sx(TIPd@f literal 0 HcmV?d00001 diff --git a/textures/_u.png b/textures/_u.png new file mode 100644 index 0000000000000000000000000000000000000000..98bf8e69d452c0851bcc9f8361da388155157b1e GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<40%r%#}JO|$q5SVf6{;Ot4m5OxKhu?rk3LBv*W8EJHtjbjz5QO_p}3* zs+PD$l%yn=BH$)RpQq0 jMM6LxsDT}1Lr!8+Y7Rr`-b}wAKp_TCS3j3^P6-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3~f&r#}JO|$q5Qv21b9<6A}_q5)yv!3;y6&o;hLa!)FId{;Hp|V*>$( z-710V`9G_e993ta;fD+7a8*A9_Kpv=p9b`jJVp3`jLuea&o&ivZ!PC{xWt~$(697}&K-T~O literal 0 HcmV?d00001 diff --git a/textures/_un.png b/textures/_un.png new file mode 100644 index 0000000000000000000000000000000000000000..01f547ad0d13bc2e469b639ff51bf1de8d5dd70a GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3_(v9#}JO|$q5n}2TpvDZ|7lKd3>85k%VEfz=7kei>9nO2EgLr}i-YM=&okPSJBNvSyu U@oAUZ^?*VQp00i_>zopr03+fylmGw# literal 0 HcmV?d00001 diff --git a/textures/_v.png b/textures/_v.png new file mode 100644 index 0000000000000000000000000000000000000000..b692d1185dfcd70d3a4863ca06f35e333976da0a GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3=K~g#}JO|$q5Rw21b9<6A}_q5)yv!3pNCuxbvTf$LGeEf9fd~K<$c8 z*#50Odio-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3{_7T#}JO|$q5Qv21b9{C-d+aaLxQZzYz#HBl(4w8UB~_U}UIqU}s>n z68R6(P~sXqdU0( literal 0 HcmV?d00001 diff --git a/textures/_vb.png b/textures/_vb.png new file mode 100644 index 0000000000000000000000000000000000000000..7fed7dc5af44413fdf2a99244b5e06fca6bf88a3 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2%>Xo8<2RDW)WEcNc~RchdzzAi)BU$YLPv z0mg18v+aNk5l$e!75QC?ypUXO@geCwwQ8ktT literal 0 HcmV?d00001 diff --git a/textures/_w.png b/textures/_w.png new file mode 100644 index 0000000000000000000000000000000000000000..6a58b07eab0025f942a0dfdff415b56c08ea1230 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3|UVX#}JO|$q5SVf7&1a_whK?o=IjdTqSfGEV!#0rEgbPY_b3=CRbS1d-+kei>9nO2Eg!xsqw gd7uV%kPSJBNvSyu<-zItSAaqcp00i_>zopr0HH`dH2?qr literal 0 HcmV?d00001 diff --git a/textures/_w_.png b/textures/_w_.png new file mode 100644 index 0000000000000000000000000000000000000000..64904dec23e20ee4b4dd633589b365fd1f1da920 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz!2%>-$FVF0QcOwS?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3^h*|#}JO|$q5Qv21b9{C-d+abUn0ZW)|MWAiQhee*;T3C$j`bhWwZ8 zOv^G3{{`w$Epd$~Nl7e8wMs5Z1yT$~28Kquh6X?sVrXIoLKeCPCRPRpt*$E;qiD#@ qPsvQH#I50rgn&Fy13SouoW!Km9ER`=PJS7n5QC?ypUXO@geCyPWjy2n literal 0 HcmV?d00001 diff --git a/textures/_x.png b/textures/_x.png new file mode 100644 index 0000000000000000000000000000000000000000..b769e136ea60eec2f5a50e721dcac8bff3f79960 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3&QUD2sr!$5h8}}#8^<3#yIJ`_ zwW=kq5hW>!C8<`)MX5lF!N|bSNY~H+h(ZiatU$;@*TBTez@XK2#bOi1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3{_7T#}JO|$q5P!5|aN8d$O^${SV-IZeXx*Rl8O~)9PRTC)n5+LSAzG zo1kLx3#6gMHKHUXu_Vu2_tsAvZrI pGp!Q0hA$EV@<0vjARBTLlTvdSB7STW>IDihc)I$ztaD0e0sy)BKu!Pv literal 0 HcmV?d00001 diff --git a/textures/_y.png b/textures/_y.png new file mode 100644 index 0000000000000000000000000000000000000000..777b55e5468b08e9f59602df651c47638793e990 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3{_7T#}JO|$q5Q_21b9{C-d+Gys{T|Viexh_upVE4~Or6!!xW5dy6>! zmDe@#fi#r3MwFx^mZVxG7o`Fz1|tJQBV9uSAPO-wu>v6rT>}#<1A|uA6^l_czopr0QI>)Bme*a literal 0 HcmV?d00001 diff --git a/textures/_y_.png b/textures/_y_.png new file mode 100644 index 0000000000000000000000000000000000000000..0c40de9119d12685ab8b15a8bc0d1c2092a3c664 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e!2%>1GWRb7l1xe7?k)@s?xqWbfIQ9ukH}&m z?E%JaC$sH<3?)w&#}JO|$q5P!5|aN8dvY)?{;$mGAmMZ3R>Gv7mYf6zhQKrI|2ZTs zW&u^JmbgZgq$HN4S|t~y0x1R~14AQSLjxcRF*LCPAq!mt6DtFQR@W7aQ8eV{r(~v8 m;@0p*LO>p;ymI2 literal 0 HcmV?d00001 diff --git a/textures/_z.png b/textures/_z.png new file mode 100644 index 0000000000000000000000000000000000000000..ae010fe106e4da87c3ca42e5cf6ac3e5136bcb4f GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEBs^UlLpZJ{Cn)epNd8kU{-3Q^S2;Tx!qgvt`QIe8a zl4_M)lnSI6j0_BobPWxFD8$gj3WO|l4NR;I3|d`REJo3go1c=IR*74~7YPA*payo3 b4LONPsW}W)y4Qj;fkF(Pu6{1-oD!M<{3|?Q literal 0 HcmV?d00001 diff --git a/textures/_z_.png b/textures/_z_.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3e053974cf51f79366ca0640e36d8d0df7f394 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|0V3b8zA^(yF(rAsyD&7kn=TLn@;D1TB8!2v z2N=7Z%(eqEq&!_5LpZJ{Cmi6EkoPYp&F*9JOF%*l5T8n|*rjC7>$R64!{5 zl*E!$tK_0oAjM#0U}&UkXaGbZh9*`ZWT9(dVr5{^>bhbviiX_$l+3hB+#0?}2*?99 eu!C&KNlZ%3VTcmjQM?c+#Ng@b=d#Wzp$P!{+da(y literal 0 HcmV?d00001 diff --git a/textures/homedecor_sign_brass_post.png b/textures/homedecor_sign_brass_post.png new file mode 100644 index 0000000000000000000000000000000000000000..3f80a8fe569ba7032b79c22d725b99689c452801 GIT binary patch literal 548 zcmV+<0^9wGP)pF2XskIMF-si2nQDpqkS-N0005QNklGVbF0vMldFmPIuSkxX5IN zfI&n&tAeWf@p0-D{A0_F+ z>-89y0h4y<+YZJES1t_kK@q?hS$RAQaCQ4UQ6smnZ7-r8*K*~3L;-6P_6`miPs>G< zm%z){dx${PV_O989IA?#1S3L{7*rK&6O5SE1l_hh9Sjlbx*>LRk|d$7CMc1Xv9wY{ zh`LBAf0)GGH_z0&iv8UkHu{b`_n-gvtX&7xp^tYFHA5=jto;jXfix{piKLwoS?2y8 msGIM!S_NtEEJ-`^-|82&lf{S(HFiJ%0000pF2XskIMF-si2nP~5|GqGQ0004jNkliO-sW-5PfMj*<@>C zYY~)ML_q|h2k~S*dlmF=`5U}=_T&%n=)tQHJV<+xYC&le(`@sxoAr{o_j|)j1kV!lV?2v9-*SUbnOO_WHw^kL%`Y z#$(l7-&|h>u(RQQ3kIXlMZv*tTc(pVX~|iTrJF^m*B{!(uoeU@$ycH3TmNWA{AT(<};yP-6i3mzx_&PD?O z;FdM>9RQSHezte0G+HAJlHWgu)jMDbgsy2dolqD03<&=?901B%nUK_SER*)SjS8zN zr79`!;aXV*DccsZqk>eQ~8YnGM#OOS~PA+EuiHA5`3 YUr#EnrXev?i2wiq07*qoM6N<$g2`RYoB#j- literal 0 HcmV?d00001 diff --git a/textures/homedecor_sign_brass_post_bottom.png b/textures/homedecor_sign_brass_post_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..45c2e53c6994a9b5250a1917f27f8db67e30c3c5 GIT binary patch literal 374 zcmV-+0g3*JP)pF2XskIMF-si2nP~6X18HF0003MNkl+vP* zb1;iKd>IV~9N*kNUY(x+z+^i6R^UQqr8t&_Ak+l_02wlk_HqE3*98F3G#UU@Yh@w4 z95(`hI7ul$)mlo-7xf=nRlCiiEQD!voTNNeewMGz^XlytK9~1*iN7U+NMD?!Wu>fG zzprZhvFu>?^f>biNT@5fpZ7QRXcHWS7`;4fcgoAf$#h2Zu)d4l6NKHvsE1+B95cax zoc0Wsh4_s&jYgV}UzCN|73x}vyXL#@y2WLsOrvo$9QpF2XskIMF-si2nP~5|GqGQ00037NklZu)E&ft3gj(aS-FM3 zd|~0?`f+F98Z=qPia1jSQUHsUt}L8$|HUU{x$oaTGcYh{DM_PffGhg`?K7Gj0|OtX zDJ&3Ue*9t*6yQaZL$-&Lix_Smji%`Si%)Q+iV}QSG(bFx;azk9F_D3Rf#ulc$0WrA69b6=CE}n-!_4yc zpTDo3T;O8+_2~(^2FCyY|D!wi)S|z?KficLid8!#*e5_o8Ossz}WdSPmWtFMl`APr)002ovPDHLk FV1npho6!IO literal 0 HcmV?d00001 diff --git a/textures/homedecor_sign_brass_post_side.png b/textures/homedecor_sign_brass_post_side.png new file mode 100644 index 0000000000000000000000000000000000000000..b988831c26b8771ef86c6fa7e5c8d8bcf7566332 GIT binary patch literal 383 zcmV-_0f7FAP)pF2XskIMF-si2nP~4h`9h30003VNkl~%9~c3)`<6El^zDquWta9+;UYL`Kd$^xMA;Zg)^d8jZvF` z!(MUjozimKw`|mx(ro4pF2XskIMF-si2nP~6X18HF0003MNkl+vP* zb1;iKd>IV~9N*kNUY(x+z+^i6R^UQqr8t&_Ak+l_02wlk_HqE3*98F3G#UU@Yh@w4 z95(`hI7ul$)mlo-7xf=nRlCiiEQD!voTNNeewMGz^XlytK9~1*iN7U+NMD?!Wu>fG zzprZhvFu>?^f>biNT@5fpZ7QRXcHWS7`;4fcgoAf$#h2Zu)d4l6NKHvsE1+B95cax zoc0Wsh4_s&jYgV}UzCN|73x}vyXL#@y2WLsOrvo$9QpF2XskIMF-si2nQDo)OrBs0005JNkl0v@6o#KOcTDa_ z(liMwu~b_TQPG84|BO3Vx)T=#ap4aTw<7)*H*Q5N2!23OQ=@qzM5p zF2r{;1MivVyl~FIKT7J1oqM;n*XeS2RC0DO;O_lLQVV!|=avG92$c&=eL&O^Lcj=A z&e3e9#0`t8E*?L8_DU?kjY|VWK-E)}6)wmkoGO&%grwP^+gZaohse^m0PjD4M-`?{ zInzz)t!4NS7M;>~ok>yh_QMyFB*i(0YFGmD@ev{hA7I}rpN2U$iV!1c2#Cz1sH3bP zc)tqhcRT!=jOncR7>y3OzTM~G=a`~ACT+K=d_WKo(4Z*HpeFz~Ex2}Z!0yMdWLZXD zc+9DomW?q+xV+iLc|`zYWMz03;L6rHf(CA0-I_(6>*VHKKmltb_Vy3R#|6fiCE(@j zJwzbrlC2tM9V0Uz-R!hB!iZT-kTmVeYN$Fi>Qi|~J}PLp64IyuEJ1aaQvR}uPj(*Y zkFwy+?mM>6U*PHU7k{j^b%183v?O73<206{_Ak@|+Pw`z7!o&9(k!V3m^vf>HpJTu f!ZB-c%zx8wxzoSCZ+{hk00000NkvXXu0mjfI=$?7 literal 0 HcmV?d00001 diff --git a/textures/homedecor_sign_wrought_iron_post_back.png b/textures/homedecor_sign_wrought_iron_post_back.png new file mode 100644 index 0000000000000000000000000000000000000000..26781a0b0ce396096019f21289304e2661cf929c GIT binary patch literal 478 zcmV<40U`d0P)pF2XskIMF-si2nQ1YxuA*30004fNkliy-vbV82#E_Xzzs< z`4K@v6b1(p7ZVrX!B=o{)Wks(7j_@P)y*eyHzdS3P!mCGgmBw(TUz?#P^b-M;7s2= z=bn@E<>MfQ?#*RU*_kq{TCZQ$?R2Xw{T|gQ^)xL#N%)-ucP!o7pqVpzWFxrC=g24Yp+h048!Ys2WUu#oGSf z&lhXxhDwb{ol+)c0{}pj1pq*q9tBXQ`(eei?7*8-W>_m80Okt-02H-M;&o^gD`nGm zO-j#CnsFc7GBJ@+a-k&z4?^E{9Lrs(niIF}v>W}w2=xb}c-?3y=CH$@(DP@^S;Z;w zpXCk!@Y4H?hLYTpWLfy&vWSbx7<~HDM8*(0qDVY1NUL0$dbqoqn6&q%9v(CwpPtt* zoi<=Go8v0=sxI*x;x<&03WOjbuN3*rb_R?~lEjIEkk6O5GU#K?N4YR?NoIrk2ga|Y U#MJMjf&c&j07*qoM6N<$f?<`;od5s; literal 0 HcmV?d00001 diff --git a/textures/homedecor_sign_wrought_iron_post_bottom.png b/textures/homedecor_sign_wrought_iron_post_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..054ecd05e03d4ce8a78edbc54cbdf5a9c507c3b4 GIT binary patch literal 394 zcmV;50d@X~P)pF2XskIMF-si2nP~75wKCL0003gNkl^`StqZ7{D~0{Yq$)vRs%ri6f@A2>{5Dw2~GEgjN**q?H69iaLoS z3p0fPcz(bEiK1p;zF7XFRTMucC2^#c^!&hd_3%`GRx72;J#uc&8hc7iVtt+;WVuM+ zR8^ME*SgztMz<$+0t;=+JwF|wS(myzIP3!-{Ah+t({#rD7=14pq1)?w?!F|$GaM2{ zZ3OYTJgR^S(7?MWHbjSR$1*sHqiwU&N)q>HeoW$MGzhnkH>6GT+wQiLvs`E;X)+%E oX)sf>T+A0s-a%0Y0cc5+lh+z1AOHXW07*qoM6N<$f=vXX_y7O^ literal 0 HcmV?d00001 diff --git a/textures/homedecor_sign_wrought_iron_post_front.png b/textures/homedecor_sign_wrought_iron_post_front.png new file mode 100644 index 0000000000000000000000000000000000000000..8910661975e5f1c2a4d297c0ee7726af83ca88b0 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5he4R}c>anMpdfpR zr>`sfT_z58VTPRxI!^+HzInPhhG?8mPC3A^l~uE;hUxwOI^oGv&giamot(O+!#Gue zbwk9_S$JaPb`~B~&F*9@Xv`HpiY&#aczi+qrq@lrw#94=!44)m>S94^HGqFsm zw%A#r$TN*U{=cCC5d5kB_e)uBdHoNrsi_l1p8f|Kp)Rg}C-nL|+g6FryO%S%-tGUv z623~~V7n{xk;M}CT-gPLB_$*x`eN&Rf@};7CvZp@wpw`=->dsq@bg$LYvoNz?(hY_ z8H1VCt)!V l&;9*>{r(*h8&5DXh!%!FXPLQZJ}?9rJYD@<);T3K0RTlGg*yNM literal 0 HcmV?d00001 diff --git a/textures/homedecor_sign_wrought_iron_post_side.png b/textures/homedecor_sign_wrought_iron_post_side.png new file mode 100644 index 0000000000000000000000000000000000000000..f995980c4fe63c0868082bc4860d579376a9dafb GIT binary patch literal 383 zcmV-_0f7FAP)pF2XskIMF-si2nQ1Z&ZoIw0003VNkl z!n(U5zWQk5qet=%9>6pF2XskIMF-si2nP~75wKCL0003gNkl^`StqZ7{D~0{Yq$)vRs%ri6f@A2>{5Dw2~GEgjN**q?H69iaLoS z3p0fPcz(bEiK1p;zF7XFRTMucC2^#c^!&hd_3%`GRx72;J#uc&8hc7iVtt+;WVuM+ zR8^ME*SgztMz<$+0t;=+JwF|wS(myzIP3!-{Ah+t({#rD7=14pq1)?w?!F|$GaM2{ zZ3OYTJgR^S(7?MWHbjSR$1*sHqiwU&N)q>HeoW$MGzhnkH>6GT+wQiLvs`E;X)+%E oX)sf>T+A0s-a%0Y0cc5+lh+z1AOHXW07*qoM6N<$f=vXX_y7O^ literal 0 HcmV?d00001