From c6e81f28821e54f7562c0ae8820a7075c9c6868d Mon Sep 17 00:00:00 2001 From: codexp Date: Sat, 24 Mar 2018 20:35:42 +0100 Subject: add support for cyrillic cahracters --- encoding.lua | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++ init.lua | 88 ++++++++++++----- textures/hdf_00.png | Bin 0 -> 87 bytes textures/hdf_a8.png | Bin 0 -> 150 bytes textures/hdf_b8.png | Bin 0 -> 175 bytes textures/hdf_b9.png | Bin 0 -> 179 bytes textures/hdf_c0.png | Bin 0 -> 180 bytes textures/hdf_c1.png | Bin 0 -> 173 bytes textures/hdf_c2.png | Bin 0 -> 169 bytes textures/hdf_c3.png | Bin 0 -> 141 bytes textures/hdf_c4.png | Bin 0 -> 167 bytes textures/hdf_c5.png | Bin 0 -> 149 bytes textures/hdf_c6.png | Bin 0 -> 172 bytes textures/hdf_c7.png | Bin 0 -> 172 bytes textures/hdf_c8.png | Bin 0 -> 171 bytes textures/hdf_c9.png | Bin 0 -> 173 bytes textures/hdf_ca.png | Bin 0 -> 183 bytes textures/hdf_cb.png | Bin 0 -> 172 bytes textures/hdf_cc.png | Bin 0 -> 176 bytes textures/hdf_cd.png | Bin 0 -> 160 bytes textures/hdf_ce.png | Bin 0 -> 187 bytes textures/hdf_cf.png | Bin 0 -> 143 bytes textures/hdf_d0.png | Bin 0 -> 174 bytes textures/hdf_d1.png | Bin 0 -> 185 bytes textures/hdf_d2.png | Bin 0 -> 145 bytes textures/hdf_d3.png | Bin 0 -> 183 bytes textures/hdf_d4.png | Bin 0 -> 173 bytes textures/hdf_d5.png | Bin 0 -> 186 bytes textures/hdf_d6.png | Bin 0 -> 157 bytes textures/hdf_d7.png | Bin 0 -> 158 bytes textures/hdf_d8.png | Bin 0 -> 144 bytes textures/hdf_d9.png | Bin 0 -> 150 bytes textures/hdf_da.png | Bin 0 -> 175 bytes textures/hdf_db.png | Bin 0 -> 167 bytes textures/hdf_dc.png | Bin 0 -> 172 bytes textures/hdf_dd.png | Bin 0 -> 186 bytes textures/hdf_de.png | Bin 0 -> 185 bytes textures/hdf_df.png | Bin 0 -> 177 bytes textures/hdf_e0.png | Bin 0 -> 176 bytes textures/hdf_e1.png | Bin 0 -> 178 bytes textures/hdf_e2.png | Bin 0 -> 170 bytes textures/hdf_e3.png | Bin 0 -> 151 bytes textures/hdf_e4.png | Bin 0 -> 162 bytes textures/hdf_e5.png | Bin 0 -> 186 bytes textures/hdf_e6.png | Bin 0 -> 147 bytes textures/hdf_e7.png | Bin 0 -> 176 bytes textures/hdf_e8.png | Bin 0 -> 163 bytes textures/hdf_e9.png | Bin 0 -> 167 bytes textures/hdf_ea.png | Bin 0 -> 169 bytes textures/hdf_eb.png | Bin 0 -> 159 bytes textures/hdf_ec.png | Bin 0 -> 160 bytes textures/hdf_ed.png | Bin 0 -> 155 bytes textures/hdf_ee.png | Bin 0 -> 172 bytes textures/hdf_ef.png | Bin 0 -> 146 bytes textures/hdf_f0.png | Bin 0 -> 168 bytes textures/hdf_f1.png | Bin 0 -> 172 bytes textures/hdf_f2.png | Bin 0 -> 148 bytes textures/hdf_f3.png | Bin 0 -> 176 bytes textures/hdf_f4.png | Bin 0 -> 170 bytes textures/hdf_f5.png | Bin 0 -> 172 bytes textures/hdf_f6.png | Bin 0 -> 155 bytes textures/hdf_f7.png | Bin 0 -> 159 bytes textures/hdf_f8.png | Bin 0 -> 145 bytes textures/hdf_f9.png | Bin 0 -> 151 bytes textures/hdf_fa.png | Bin 0 -> 170 bytes textures/hdf_fb.png | Bin 0 -> 166 bytes textures/hdf_fc.png | Bin 0 -> 156 bytes textures/hdf_fd.png | Bin 0 -> 180 bytes textures/hdf_fe.png | Bin 0 -> 164 bytes textures/hdf_ff.png | Bin 0 -> 174 bytes 70 files changed, 329 insertions(+), 24 deletions(-) create mode 100644 encoding.lua create mode 100644 textures/hdf_00.png create mode 100644 textures/hdf_a8.png create mode 100644 textures/hdf_b8.png create mode 100644 textures/hdf_b9.png create mode 100644 textures/hdf_c0.png create mode 100644 textures/hdf_c1.png create mode 100644 textures/hdf_c2.png create mode 100644 textures/hdf_c3.png create mode 100644 textures/hdf_c4.png create mode 100644 textures/hdf_c5.png create mode 100644 textures/hdf_c6.png create mode 100644 textures/hdf_c7.png create mode 100644 textures/hdf_c8.png create mode 100644 textures/hdf_c9.png create mode 100644 textures/hdf_ca.png create mode 100644 textures/hdf_cb.png create mode 100644 textures/hdf_cc.png create mode 100644 textures/hdf_cd.png create mode 100644 textures/hdf_ce.png create mode 100644 textures/hdf_cf.png create mode 100644 textures/hdf_d0.png create mode 100644 textures/hdf_d1.png create mode 100644 textures/hdf_d2.png create mode 100644 textures/hdf_d3.png create mode 100644 textures/hdf_d4.png create mode 100644 textures/hdf_d5.png create mode 100644 textures/hdf_d6.png create mode 100644 textures/hdf_d7.png create mode 100644 textures/hdf_d8.png create mode 100644 textures/hdf_d9.png create mode 100644 textures/hdf_da.png create mode 100644 textures/hdf_db.png create mode 100644 textures/hdf_dc.png create mode 100644 textures/hdf_dd.png create mode 100644 textures/hdf_de.png create mode 100644 textures/hdf_df.png create mode 100644 textures/hdf_e0.png create mode 100644 textures/hdf_e1.png create mode 100644 textures/hdf_e2.png create mode 100644 textures/hdf_e3.png create mode 100644 textures/hdf_e4.png create mode 100644 textures/hdf_e5.png create mode 100644 textures/hdf_e6.png create mode 100644 textures/hdf_e7.png create mode 100644 textures/hdf_e8.png create mode 100644 textures/hdf_e9.png create mode 100644 textures/hdf_ea.png create mode 100644 textures/hdf_eb.png create mode 100644 textures/hdf_ec.png create mode 100644 textures/hdf_ed.png create mode 100644 textures/hdf_ee.png create mode 100644 textures/hdf_ef.png create mode 100644 textures/hdf_f0.png create mode 100644 textures/hdf_f1.png create mode 100644 textures/hdf_f2.png create mode 100644 textures/hdf_f3.png create mode 100644 textures/hdf_f4.png create mode 100644 textures/hdf_f5.png create mode 100644 textures/hdf_f6.png create mode 100644 textures/hdf_f7.png create mode 100644 textures/hdf_f8.png create mode 100644 textures/hdf_f9.png create mode 100644 textures/hdf_fa.png create mode 100644 textures/hdf_fb.png create mode 100644 textures/hdf_fc.png create mode 100644 textures/hdf_fd.png create mode 100644 textures/hdf_fe.png create mode 100644 textures/hdf_ff.png diff --git a/encoding.lua b/encoding.lua new file mode 100644 index 0000000..16e35fe --- /dev/null +++ b/encoding.lua @@ -0,0 +1,265 @@ +-- encoding borrowed from signs_lib mod of https://github.com/lord-server/lord + +local ansi_decode = { + [128] = "\208\130", + [129] = "\208\131", + [130] = "\226\128\154", + [131] = "\209\147", + [132] = "\226\128\158", + [133] = "\226\128\166", + [134] = "\226\128\160", + [135] = "\226\128\161", + [136] = "\226\130\172", + [137] = "\226\128\176", + [138] = "\208\137", + [139] = "\226\128\185", + [140] = "\208\138", + [141] = "\208\140", + [142] = "\208\139", + [143] = "\208\143", + [144] = "\209\146", + [145] = "\226\128\152", + [146] = "\226\128\153", + [147] = "\226\128\156", + [148] = "\226\128\157", + [149] = "\226\128\162", + [150] = "\226\128\147", + [151] = "\226\128\148", + [152] = "\194\152", + [153] = "\226\132\162", + [154] = "\209\153", + [155] = "\226\128\186", + [156] = "\209\154", + [157] = "\209\156", + [158] = "\209\155", + [159] = "\209\159", + [160] = "\194\160", + [161] = "\209\142", + [162] = "\209\158", + [163] = "\208\136", + [164] = "\194\164", + [165] = "\210\144", + [166] = "\194\166", + [167] = "\194\167", + [168] = "\208\129", + [169] = "\194\169", + [170] = "\208\132", + [171] = "\194\171", + [172] = "\194\172", + [173] = "\194\173", + [174] = "\194\174", + [175] = "\208\135", + [176] = "\194\176", + [177] = "\194\177", + [178] = "\208\134", + [179] = "\209\150", + [180] = "\210\145", + [181] = "\194\181", + [182] = "\194\182", + [183] = "\194\183", + [184] = "\209\145", + [185] = "\226\132\150", + [186] = "\209\148", + [187] = "\194\187", + [188] = "\209\152", + [189] = "\208\133", + [190] = "\209\149", + [191] = "\209\151" +} +local utf8_decode = { + [128] = { + [147] = "\150", + [148] = "\151", + [152] = "\145", + [153] = "\146", + [154] = "\130", + [156] = "\147", + [157] = "\148", + [158] = "\132", + [160] = "\134", + [161] = "\135", + [162] = "\149", + [166] = "\133", + [176] = "\137", + [185] = "\139", + [186] = "\155" + }, + [130] = {[172] = "\136"}, + [132] = {[150] = "\185", [162] = "\153"}, + [194] = { + [152] = "\152", + [160] = "\160", + [164] = "\164", + [166] = "\166", + [167] = "\167", + [169] = "\169", + [171] = "\171", + [172] = "\172", + [173] = "\173", + [174] = "\174", + [176] = "\176", + [177] = "\177", + [181] = "\181", + [182] = "\182", + [183] = "\183", + [187] = "\187" + }, + [208] = { + [129] = "\168", + [130] = "\128", + [131] = "\129", + [132] = "\170", + [133] = "\189", + [134] = "\178", + [135] = "\175", + [136] = "\163", + [137] = "\138", + [138] = "\140", + [139] = "\142", + [140] = "\141", + [143] = "\143", + [144] = "\192", + [145] = "\193", + [146] = "\194", + [147] = "\195", + [148] = "\196", + [149] = "\197", + [150] = "\198", + [151] = "\199", + [152] = "\200", + [153] = "\201", + [154] = "\202", + [155] = "\203", + [156] = "\204", + [157] = "\205", + [158] = "\206", + [159] = "\207", + [160] = "\208", + [161] = "\209", + [162] = "\210", + [163] = "\211", + [164] = "\212", + [165] = "\213", + [166] = "\214", + [167] = "\215", + [168] = "\216", + [169] = "\217", + [170] = "\218", + [171] = "\219", + [172] = "\220", + [173] = "\221", + [174] = "\222", + [175] = "\223", + [176] = "\224", + [177] = "\225", + [178] = "\226", + [179] = "\227", + [180] = "\228", + [181] = "\229", + [182] = "\230", + [183] = "\231", + [184] = "\232", + [185] = "\233", + [186] = "\234", + [187] = "\235", + [188] = "\236", + [189] = "\237", + [190] = "\238", + [191] = "\239" + }, + [209] = { + [128] = "\240", + [129] = "\241", + [130] = "\242", + [131] = "\243", + [132] = "\244", + [133] = "\245", + [134] = "\246", + [135] = "\247", + [136] = "\248", + [137] = "\249", + [138] = "\250", + [139] = "\251", + [140] = "\252", + [141] = "\253", + [142] = "\254", + [143] = "\255", + [144] = "\161", + [145] = "\184", + [146] = "\144", + [147] = "\131", + [148] = "\186", + [149] = "\190", + [150] = "\179", + [151] = "\191", + [152] = "\188", + [153] = "\154", + [154] = "\156", + [155] = "\158", + [156] = "\157", + [158] = "\162", + [159] = "\159" + }, + [210] = {[144] = "\165", [145] = "\180"} +} + +local nmdc = { + [36] = "$", + [124] = "|" +} + +function AnsiToUtf8(s) + local r, b = "" + for i = 1, s and s:len() or 0 do + b = s:byte(i) + if b < 128 then + r = r .. string.char(b) + else + if b > 239 then + r = r .. "\209" .. string.char(b - 112) + elseif b > 191 then + r = r .. "\208" .. string.char(b - 48) + elseif ansi_decode[b] then + r = r .. ansi_decode[b] + else + r = r .. "_" + end + end + end + return r +end + +function Utf8ToAnsi(s) + local a, j, r, b = 0, 0, "" + for i = 1, s and s:len() or 0 do + b = s:byte(i) + if b < 128 then + if nmdc[b] then + r = r .. nmdc[b] + else + r = r .. string.char(b) + end + elseif a == 2 then + a, j = a - 1, b + elseif a == 1 then + --if j == nil or b == nil then return r end + --print(j) + --print(b) + --local ansi = utf8_decode[j] + --if ansi == nil then return r end + --if ansi[b] == nil then return r end + if utf8_decode[j] then + if utf8_decode[j][b] then + a, r = a - 1, r .. utf8_decode[j][b] + end + end + elseif b == 226 then + a = 2 + elseif b == 194 or b == 208 or b == 209 or b == 210 then + j, a = b, 1 + else + r = r .. "_" + end + end + return r +end diff --git a/init.lua b/init.lua index 804a720..9af90c4 100644 --- a/init.lua +++ b/init.lua @@ -16,8 +16,16 @@ local enable_colored_metal_signs = true local current_keyword = minetest.settings:get("interact_keyword") or "iaccept" signs_lib = {} +signs_lib.path = minetest.get_modpath(minetest.get_current_modname()) screwdriver = screwdriver or {} +-- Load support for intllib. +local S, NS = dofile(signs_lib.path .. "/intllib.lua") +signs_lib.gettext = S + +-- text encoding +dofile(signs_lib.path .. "/encoding.lua"); + signs_lib.wallmounted_rotate = function(pos, node, user, mode, new_param2) if mode ~= screwdriver.ROTATE_AXIS then return false end minetest.swap_node(pos, {name = node.name, param2 = (node.param2 + 1) % 6}) @@ -113,11 +121,6 @@ signs_lib.sign_post_model = { } } --- Load support for intllib. -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") -signs_lib.gettext = S - -- the list of standard sign nodes signs_lib.sign_node_list = { @@ -174,28 +177,48 @@ end -- CONSTANTS -local MP = minetest.get_modpath("signs_lib") - --- Used by `build_char_db' to locate the file. -local FONT_FMT = "%s/hdf_%02x.png" - --- Simple texture name for building text texture. -local FONT_FMT_SIMPLE = "hdf_%02x.png" - -- Path to the textures. -local TP = MP.."/textures" +local TP = signs_lib.path .. "/textures" +-- Font file formatter +local CHAR_FILE = "%s_%02x.png" +-- Fonts path +local CHAR_PATH = TP .. "/" .. CHAR_FILE + +-- Font name. +local font_name = "hdf" -- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) +-- check if a file does exist +-- to avoid reopening file after checking again +-- pass TRUE as second argument +function file_exists(name, return_handle, mode) + mode = mode or "r"; + local f = io.open(name, mode) + if f ~= nil then + if (return_handle) then + return f + end + io.close(f) + return true + else + return false + end +end + -- Read the image size from a PNG file. -- Returns image_w, image_h. -- Only the LSB is read from each field! local function read_image_size(filename) - local f = io.open(filename, "rb") + local f = file_exists(filename, true, "rb") + -- file might not exist (don't crash the game) + if (not f) then + return 0, 0 + end f:seek("set", 0x0) - local hdr = f:read(8) + local hdr = f:read(string.len(PNG_HDR)) if hdr ~= PNG_HDR then f:close() return @@ -243,8 +266,8 @@ local function build_char_db() local total_width = 0 local char_count = 0 - for c = 32, 126 do - local w, h = read_image_size(FONT_FMT:format(TP, c)) + for c = 32, 255 do + local w, h = read_image_size(CHAR_PATH:format(font_name, c)) if w and h then local ch = string.char(c) charwidth[ch] = w @@ -308,6 +331,19 @@ local function fill_line(x, y, w, c) return table.concat(tex) end +-- make char texture file name +-- if texture file does not exist use fallback texture instead +local function char_tex(font_name, ch) + local c = ch:byte() + local exists, tex = file_exists(CHAR_PATH:format(font_name, c)) + if exists and c ~= 14 then + tex = CHAR_FILE:format(font_name, c) + else + tex = CHAR_FILE:format(font_name, 0x0) + end + return tex, exists +end + local function make_line_texture(line, lineno, pos) local width = 0 @@ -344,9 +380,9 @@ local function make_line_texture(line, lineno, pos) end if #chars < MAX_INPUT_CHARS then table.insert(chars, { - off=ch_offs, - tex=FONT_FMT_SIMPLE:format(c:byte()), - col=("%X"):format(cur_color), + off = ch_offs, + tex = char_tex(font_name, c), + col = ("%X"):format(cur_color), }) end ch_offs = ch_offs + w @@ -387,7 +423,10 @@ local function make_line_texture(line, lineno, pos) end table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) end - table.insert(texture, (":%d,%d=hdf_20.png"):format(xpos + word.w, ypos)) + table.insert( + texture, + (":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") + ) xpos = xpos + word.w + charwidth[" "] if xpos >= (SIGN_WIDTH + charwidth[" "]) then break end end @@ -413,10 +452,11 @@ end local function set_obj_text(obj, text, new, pos) local split = new and split_lines_and_words or split_lines_and_words_old + local text_ansi = Utf8ToAnsi(text) local n = minetest.registered_nodes[minetest.get_node(pos).name] local text_scale = (n and n.text_scale) or DEFAULT_TEXT_SCALE obj:set_properties({ - textures={make_sign_texture(split(text), pos)}, + textures={make_sign_texture(split(text_ansi), pos)}, visual_size = text_scale, }) end @@ -636,7 +676,7 @@ function signs_lib.receive_fields(pos, formname, fields, sender, lock) if fields and fields.text and fields.ok then minetest.log("action", S("@1 wrote \"@2\" to @3sign at @4", (sender:get_player_name() or ""), - fields.text, + fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"), lockstr, minetest.pos_to_string(pos) )) diff --git a/textures/hdf_00.png b/textures/hdf_00.png new file mode 100644 index 0000000..ec762d5 Binary files /dev/null and b/textures/hdf_00.png differ diff --git a/textures/hdf_a8.png b/textures/hdf_a8.png new file mode 100644 index 0000000..75d1495 Binary files /dev/null and b/textures/hdf_a8.png differ diff --git a/textures/hdf_b8.png b/textures/hdf_b8.png new file mode 100644 index 0000000..c8215a1 Binary files /dev/null and b/textures/hdf_b8.png differ diff --git a/textures/hdf_b9.png b/textures/hdf_b9.png new file mode 100644 index 0000000..765437a Binary files /dev/null and b/textures/hdf_b9.png differ diff --git a/textures/hdf_c0.png b/textures/hdf_c0.png new file mode 100644 index 0000000..fe3e380 Binary files /dev/null and b/textures/hdf_c0.png differ diff --git a/textures/hdf_c1.png b/textures/hdf_c1.png new file mode 100644 index 0000000..f589c1c Binary files /dev/null and b/textures/hdf_c1.png differ diff --git a/textures/hdf_c2.png b/textures/hdf_c2.png new file mode 100644 index 0000000..ea6043a Binary files /dev/null and b/textures/hdf_c2.png differ diff --git a/textures/hdf_c3.png b/textures/hdf_c3.png new file mode 100644 index 0000000..1cc88a8 Binary files /dev/null and b/textures/hdf_c3.png differ diff --git a/textures/hdf_c4.png b/textures/hdf_c4.png new file mode 100644 index 0000000..1006dff Binary files /dev/null and b/textures/hdf_c4.png differ diff --git a/textures/hdf_c5.png b/textures/hdf_c5.png new file mode 100644 index 0000000..85c9b92 Binary files /dev/null and b/textures/hdf_c5.png differ diff --git a/textures/hdf_c6.png b/textures/hdf_c6.png new file mode 100644 index 0000000..7e5b16c Binary files /dev/null and b/textures/hdf_c6.png differ diff --git a/textures/hdf_c7.png b/textures/hdf_c7.png new file mode 100644 index 0000000..6303b0e Binary files /dev/null and b/textures/hdf_c7.png differ diff --git a/textures/hdf_c8.png b/textures/hdf_c8.png new file mode 100644 index 0000000..e8ece15 Binary files /dev/null and b/textures/hdf_c8.png differ diff --git a/textures/hdf_c9.png b/textures/hdf_c9.png new file mode 100644 index 0000000..d3dc073 Binary files /dev/null and b/textures/hdf_c9.png differ diff --git a/textures/hdf_ca.png b/textures/hdf_ca.png new file mode 100644 index 0000000..a940065 Binary files /dev/null and b/textures/hdf_ca.png differ diff --git a/textures/hdf_cb.png b/textures/hdf_cb.png new file mode 100644 index 0000000..fa96d93 Binary files /dev/null and b/textures/hdf_cb.png differ diff --git a/textures/hdf_cc.png b/textures/hdf_cc.png new file mode 100644 index 0000000..0c66142 Binary files /dev/null and b/textures/hdf_cc.png differ diff --git a/textures/hdf_cd.png b/textures/hdf_cd.png new file mode 100644 index 0000000..5677f03 Binary files /dev/null and b/textures/hdf_cd.png differ diff --git a/textures/hdf_ce.png b/textures/hdf_ce.png new file mode 100644 index 0000000..9314974 Binary files /dev/null and b/textures/hdf_ce.png differ diff --git a/textures/hdf_cf.png b/textures/hdf_cf.png new file mode 100644 index 0000000..fb6dee9 Binary files /dev/null and b/textures/hdf_cf.png differ diff --git a/textures/hdf_d0.png b/textures/hdf_d0.png new file mode 100644 index 0000000..74b0c17 Binary files /dev/null and b/textures/hdf_d0.png differ diff --git a/textures/hdf_d1.png b/textures/hdf_d1.png new file mode 100644 index 0000000..5197b0f Binary files /dev/null and b/textures/hdf_d1.png differ diff --git a/textures/hdf_d2.png b/textures/hdf_d2.png new file mode 100644 index 0000000..744f4eb Binary files /dev/null and b/textures/hdf_d2.png differ diff --git a/textures/hdf_d3.png b/textures/hdf_d3.png new file mode 100644 index 0000000..048856b Binary files /dev/null and b/textures/hdf_d3.png differ diff --git a/textures/hdf_d4.png b/textures/hdf_d4.png new file mode 100644 index 0000000..49e7b8c Binary files /dev/null and b/textures/hdf_d4.png differ diff --git a/textures/hdf_d5.png b/textures/hdf_d5.png new file mode 100644 index 0000000..f2df843 Binary files /dev/null and b/textures/hdf_d5.png differ diff --git a/textures/hdf_d6.png b/textures/hdf_d6.png new file mode 100644 index 0000000..8f77483 Binary files /dev/null and b/textures/hdf_d6.png differ diff --git a/textures/hdf_d7.png b/textures/hdf_d7.png new file mode 100644 index 0000000..20164b9 Binary files /dev/null and b/textures/hdf_d7.png differ diff --git a/textures/hdf_d8.png b/textures/hdf_d8.png new file mode 100644 index 0000000..72861b0 Binary files /dev/null and b/textures/hdf_d8.png differ diff --git a/textures/hdf_d9.png b/textures/hdf_d9.png new file mode 100644 index 0000000..497b45e Binary files /dev/null and b/textures/hdf_d9.png differ diff --git a/textures/hdf_da.png b/textures/hdf_da.png new file mode 100644 index 0000000..1c24540 Binary files /dev/null and b/textures/hdf_da.png differ diff --git a/textures/hdf_db.png b/textures/hdf_db.png new file mode 100644 index 0000000..e750c0e Binary files /dev/null and b/textures/hdf_db.png differ diff --git a/textures/hdf_dc.png b/textures/hdf_dc.png new file mode 100644 index 0000000..ce2e197 Binary files /dev/null and b/textures/hdf_dc.png differ diff --git a/textures/hdf_dd.png b/textures/hdf_dd.png new file mode 100644 index 0000000..bbb07bd Binary files /dev/null and b/textures/hdf_dd.png differ diff --git a/textures/hdf_de.png b/textures/hdf_de.png new file mode 100644 index 0000000..4c59047 Binary files /dev/null and b/textures/hdf_de.png differ diff --git a/textures/hdf_df.png b/textures/hdf_df.png new file mode 100644 index 0000000..7c29dde Binary files /dev/null and b/textures/hdf_df.png differ diff --git a/textures/hdf_e0.png b/textures/hdf_e0.png new file mode 100644 index 0000000..93d4b14 Binary files /dev/null and b/textures/hdf_e0.png differ diff --git a/textures/hdf_e1.png b/textures/hdf_e1.png new file mode 100644 index 0000000..7bf2382 Binary files /dev/null and b/textures/hdf_e1.png differ diff --git a/textures/hdf_e2.png b/textures/hdf_e2.png new file mode 100644 index 0000000..66b116a Binary files /dev/null and b/textures/hdf_e2.png differ diff --git a/textures/hdf_e3.png b/textures/hdf_e3.png new file mode 100644 index 0000000..5b0a418 Binary files /dev/null and b/textures/hdf_e3.png differ diff --git a/textures/hdf_e4.png b/textures/hdf_e4.png new file mode 100644 index 0000000..e3ec02d Binary files /dev/null and b/textures/hdf_e4.png differ diff --git a/textures/hdf_e5.png b/textures/hdf_e5.png new file mode 100644 index 0000000..09b431a Binary files /dev/null and b/textures/hdf_e5.png differ diff --git a/textures/hdf_e6.png b/textures/hdf_e6.png new file mode 100644 index 0000000..777b8cd Binary files /dev/null and b/textures/hdf_e6.png differ diff --git a/textures/hdf_e7.png b/textures/hdf_e7.png new file mode 100644 index 0000000..9da7dab Binary files /dev/null and b/textures/hdf_e7.png differ diff --git a/textures/hdf_e8.png b/textures/hdf_e8.png new file mode 100644 index 0000000..d7279ae Binary files /dev/null and b/textures/hdf_e8.png differ diff --git a/textures/hdf_e9.png b/textures/hdf_e9.png new file mode 100644 index 0000000..4d40313 Binary files /dev/null and b/textures/hdf_e9.png differ diff --git a/textures/hdf_ea.png b/textures/hdf_ea.png new file mode 100644 index 0000000..2533ec1 Binary files /dev/null and b/textures/hdf_ea.png differ diff --git a/textures/hdf_eb.png b/textures/hdf_eb.png new file mode 100644 index 0000000..4ef9129 Binary files /dev/null and b/textures/hdf_eb.png differ diff --git a/textures/hdf_ec.png b/textures/hdf_ec.png new file mode 100644 index 0000000..18e859b Binary files /dev/null and b/textures/hdf_ec.png differ diff --git a/textures/hdf_ed.png b/textures/hdf_ed.png new file mode 100644 index 0000000..edd951d Binary files /dev/null and b/textures/hdf_ed.png differ diff --git a/textures/hdf_ee.png b/textures/hdf_ee.png new file mode 100644 index 0000000..813e1f7 Binary files /dev/null and b/textures/hdf_ee.png differ diff --git a/textures/hdf_ef.png b/textures/hdf_ef.png new file mode 100644 index 0000000..f2f24d2 Binary files /dev/null and b/textures/hdf_ef.png differ diff --git a/textures/hdf_f0.png b/textures/hdf_f0.png new file mode 100644 index 0000000..697286c Binary files /dev/null and b/textures/hdf_f0.png differ diff --git a/textures/hdf_f1.png b/textures/hdf_f1.png new file mode 100644 index 0000000..01c1e64 Binary files /dev/null and b/textures/hdf_f1.png differ diff --git a/textures/hdf_f2.png b/textures/hdf_f2.png new file mode 100644 index 0000000..df2aaa3 Binary files /dev/null and b/textures/hdf_f2.png differ diff --git a/textures/hdf_f3.png b/textures/hdf_f3.png new file mode 100644 index 0000000..e09cf75 Binary files /dev/null and b/textures/hdf_f3.png differ diff --git a/textures/hdf_f4.png b/textures/hdf_f4.png new file mode 100644 index 0000000..2c0853b Binary files /dev/null and b/textures/hdf_f4.png differ diff --git a/textures/hdf_f5.png b/textures/hdf_f5.png new file mode 100644 index 0000000..fd21a81 Binary files /dev/null and b/textures/hdf_f5.png differ diff --git a/textures/hdf_f6.png b/textures/hdf_f6.png new file mode 100644 index 0000000..189a96f Binary files /dev/null and b/textures/hdf_f6.png differ diff --git a/textures/hdf_f7.png b/textures/hdf_f7.png new file mode 100644 index 0000000..87b2eca Binary files /dev/null and b/textures/hdf_f7.png differ diff --git a/textures/hdf_f8.png b/textures/hdf_f8.png new file mode 100644 index 0000000..3c195aa Binary files /dev/null and b/textures/hdf_f8.png differ diff --git a/textures/hdf_f9.png b/textures/hdf_f9.png new file mode 100644 index 0000000..9fb54ba Binary files /dev/null and b/textures/hdf_f9.png differ diff --git a/textures/hdf_fa.png b/textures/hdf_fa.png new file mode 100644 index 0000000..da72b46 Binary files /dev/null and b/textures/hdf_fa.png differ diff --git a/textures/hdf_fb.png b/textures/hdf_fb.png new file mode 100644 index 0000000..6cfd0fe Binary files /dev/null and b/textures/hdf_fb.png differ diff --git a/textures/hdf_fc.png b/textures/hdf_fc.png new file mode 100644 index 0000000..c8c6918 Binary files /dev/null and b/textures/hdf_fc.png differ diff --git a/textures/hdf_fd.png b/textures/hdf_fd.png new file mode 100644 index 0000000..9130ccd Binary files /dev/null and b/textures/hdf_fd.png differ diff --git a/textures/hdf_fe.png b/textures/hdf_fe.png new file mode 100644 index 0000000..5165296 Binary files /dev/null and b/textures/hdf_fe.png differ diff --git a/textures/hdf_ff.png b/textures/hdf_ff.png new file mode 100644 index 0000000..a1a1f10 Binary files /dev/null and b/textures/hdf_ff.png differ -- cgit v1.2.3