diff --git a/depends.txt b/depends.txt
index 36dd5c2..cf4425b 100644
--- a/depends.txt
+++ b/depends.txt
@@ -1,3 +1,4 @@
display_api
font_api
digilines
+scifi_nodes?
diff --git a/functions.lua b/functions.lua
index 0fcfd26..50c69f2 100644
--- a/functions.lua
+++ b/functions.lua
@@ -18,8 +18,6 @@
along with signs. If not, see .
--]]
-digiterms.columns = 30
-
local function get_lines(pos)
local lines = {}
local meta = minetest.get_meta(pos)
@@ -74,8 +72,96 @@ local function push_text(lines, text, maxlines, maxcolumns)
end
function digiterms.push_text_on_screen(pos, text)
- local lines = get_lines(pos)
- push_text(lines, text, 6, digiterms.columns)
- set_lines(pos, lines)
- display_api.update_entities(pos)
+ local def = minetest.registered_nodes[minetest.get_node(pos).name]
+ if def.display_entities and def.display_entities["digiterms:screen"] then
+ def = def.display_entities["digiterms:screen"]
+ if def.lines and def.columns then
+ local lines = get_lines(pos)
+ push_text(lines, text, def.lines, def.columns)
+ set_lines(pos, lines)
+ display_api.update_entities(pos)
+ else
+ minetest.log("warning", "[digiterms] At "..minetest.pos_to_string(pos)
+ ..", digiterms:screen entity should have 'lines' and 'columns' attribures.")
+ end
+ else
+ minetest.log("warning", "[digiterms] Node at "..minetest.pos_to_string(pos)
+ .." does not have digiterms:screen entity.")
+ end
+end
+
+local node_def_defaults = {
+ groups = { display_api = 1},
+ on_place = display_api.on_place,
+ on_destruct = display_api.on_destruct,
+ on_rotate = display_api.on_rotate,
+ on_punch = display_api.update_entities,
+ on_construct = function(pos)
+ minetest.get_meta(pos):set_string("formspec",
+ "field[channel;Channel;${channel}]")
+ display_api.on_construct(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, player)
+ local name = player:get_player_name()
+ if minetest.is_protected(pos, name) then
+ minetest.record_protection_violation(pos, name)
+ return
+ end
+
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+ digiline = {
+ wire = { use_autoconnect = false },
+ receptor = {},
+ effector = {
+ action = function(pos, _, channel, msg)
+ if channel ~= minetest.get_meta(pos):get_string("channel") then
+ return
+ end
+ digiterms.push_text_on_screen(pos, msg)
+ end,
+ },
+ },
+}
+
+function superpose_table(base, exceptions)
+ local result = table.copy(base)
+ for key, value in pairs(exceptions) do
+ if type(value) == 'table' then
+ result[key] = superpose_table(result[key] or {}, value)
+ else
+ result[key] = value
+ end
+ end
+ return result
+end
+
+function digiterms.register_monitor(
+ nodename, nodedef, nodedefon, nodedefoff)
+ local ndef = superpose_table(node_def_defaults, nodedef)
+ if nodedefon and nodedefoff then
+ ndef.on_punch = function(pos, node)
+ display_api.on_destruct(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("display_text", nil)
+ minetest.swap_node(pos, {name = nodename..'_off',
+ param = node.param, param2 = node.param2 })
+ end
+ minetest.register_node(nodename, superpose_table(ndef, nodedefon))
+
+ -- Register the corresponding Off node
+ ndef.drops = nodename
+ ndef.groups.not_in_creative_inventory = 1
+ ndef.on_destruct = nil
+ ndef.on_punch = function(pos, node)
+ minetest.swap_node(pos, {name = nodename, -- Stange but it works
+ param = node.param, param2 = node.param2 })
+ display_api.update_entities(pos)
+ end
+ minetest.register_node(nodename..'_off', superpose_table(ndef, nodedefoff))
+ else
+ minetest.register_node(nodename, ndef)
+ end
end
diff --git a/init.lua b/init.lua
index 1d16ddc..bb3cc69 100644
--- a/init.lua
+++ b/init.lua
@@ -28,4 +28,12 @@ dofile(digiterms.path.."/functions.lua")
dofile(digiterms.path.."/nodes.lua")
--dofile(digiterms.path.."/crafts.lua")
+if minetest.get_modpath("scifi_nodes") then
+ print ('[digiterms] scifi_nodes present, adding some more nodes')
+ dofile(digiterms.path.."/scifi_nodes.lua")
+else
+ print ('[digiterms] scifi_nodes absent')
+end
+
+
display_api.register_display_entity("digiterms:screen")
diff --git a/nodes.lua b/nodes.lua
index 8108aed..4b9bdb8 100644
--- a/nodes.lua
+++ b/nodes.lua
@@ -18,57 +18,6 @@
along with signs. If not, see .
--]]
-local common_node_def = {
- groups = { display_api = 1},
- on_place = display_api.on_place,
- on_destruct = display_api.on_destruct,
- on_rotate = display_api.on_rotate,
- on_punch = display_api.update_entities,
- on_construct = function(pos)
- minetest.get_meta(pos):set_string("formspec",
- "field[channel;Channel;${channel}]")
- display_api.on_construct(pos)
- end,
- on_receive_fields = function(pos, formname, fields, player)
- local name = player:get_player_name()
- if minetest.is_protected(pos, name) then
- minetest.record_protection_violation(pos, name)
- return
- end
-
- if (fields.channel) then
- minetest.get_meta(pos):set_string("channel", fields.channel)
- end
- end,
- digiline = {
- wire = { use_autoconnect = false },
- receptor = {},
- effector = {
- action = function(pos, _, channel, msg)
- if channel ~= minetest.get_meta(pos):get_string("channel") then
- return
- end
- digiterms.push_text_on_screen(pos, msg)
- end,
- },
- },
-}
-
-function digiterms.register_monitor(nodename, nodedef)
- def = table.copy(common_node_def)
- for key, value in pairs(nodedef) do
- if key == 'groups' then
- def[key] = def[key] or {}
- for key2, value2 in pairs(value) do
- def[key][key2] = value2
- end
- else
- def[key] = value
- end
- end
- minetest.register_node(nodename, def)
-end
-
local cathodic_node_box = {
type = "fixed",
fixed = {
@@ -111,9 +60,6 @@ digiterms.register_monitor('digiterms:lcd_monitor', {
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = false,
- tiles = { "digiterms_lcd_sides.png", "digiterms_lcd_sides.png",
- "digiterms_lcd_sides.png", "digiterms_lcd_sides.png",
- "digiterms_lcd_back.png", "digiterms_lcd_front.png" },
drawtype = "nodebox",
groups = {choppy = 1, oddly_breakable_by_hand = 1},
node_box = lcd_node_box,
@@ -129,36 +75,14 @@ digiterms.register_monitor('digiterms:lcd_monitor', {
color = "#203020", font_name = digiterms.font, halign="left", valing="top",
},
},
- on_punch = function(pos, node)
- display_api.on_destruct(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("display_text", nil)
- minetest.swap_node(pos, {name = 'digiterms:lcd_monitor_off',
- param = node.param, param2 = node.param2 })
- end
-})
-
-minetest.register_node('digiterms:lcd_monitor_off', {
- description = "LCD monitor",
- paramtype = "light",
- paramtype2 = "facedir",
- drops = "digiterms:lcd_monitor",
- sunlight_propagates = false,
+}, {
+ tiles = { "digiterms_lcd_sides.png", "digiterms_lcd_sides.png",
+ "digiterms_lcd_sides.png", "digiterms_lcd_sides.png",
+ "digiterms_lcd_back.png", "digiterms_lcd_front.png" },
+}, {
tiles = { "digiterms_lcd_sides.png", "digiterms_lcd_sides.png",
"digiterms_lcd_sides.png", "digiterms_lcd_sides.png",
"digiterms_lcd_back.png", "digiterms_lcd_front_off.png" },
- drawtype = "nodebox",
- groups = {choppy = 1, oddly_breakable_by_hand = 1, not_in_creative_inventory = 1},
- node_box = lcd_node_box,
- collision_box = lcd_collision_box,
- selection_box = lcd_collision_box,
- on_place = display_api.on_place,
- on_receive_fields = common_node_def.on_receive_fields,
- on_punch = function(pos, node)
- minetest.swap_node(pos, {name = 'digiterms:lcd_monitor',
- param = node.param, param2 = node.param2 })
- display_api.update_entities(pos)
- end,
})
digiterms.register_monitor('digiterms:cathodic_amber_monitor', {
@@ -166,9 +90,6 @@ digiterms.register_monitor('digiterms:cathodic_amber_monitor', {
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = false,
- tiles = { "digiterms_amber_top.png", "digiterms_amber_bottom.png",
- "digiterms_amber_sides.png", "digiterms_amber_sides.png^[transformFX]",
- "digiterms_amber_back.png", "digiterms_amber_front.png",},
drawtype = "nodebox",
groups = {choppy = 1, oddly_breakable_by_hand = 1},
node_box = cathodic_node_box,
@@ -184,36 +105,14 @@ digiterms.register_monitor('digiterms:cathodic_amber_monitor', {
color = "#FFA000", font_name = digiterms.font, halign="left", valing="top",
},
},
- on_punch = function(pos, node)
- display_api.on_destruct(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("display_text", nil)
- minetest.swap_node(pos, {name = 'digiterms:cathodic_amber_monitor_off',
- param = node.param, param2 = node.param2 })
- end
-})
-
-minetest.register_node('digiterms:cathodic_amber_monitor_off', {
- description = "Cathodic amber monitor",
- paramtype = "light",
- paramtype2 = "facedir",
- drops = "digiterms:cathodic_amber_monitor",
- sunlight_propagates = false,
- tiles = { "digiterms_amber_top.png", "digiterms_amber_bottom.png",
+}, {
+ tiles = { "digiterms_amber_top.png", "digiterms_amber_bottom.png",
"digiterms_amber_sides.png", "digiterms_amber_sides.png^[transformFX]",
- "digiterms_amber_back.png", "digiterms_amber_front_off.png",},
- drawtype = "nodebox",
- groups = {choppy = 1, oddly_breakable_by_hand = 1, not_in_creative_inventory = 1},
- node_box = cathodic_node_box,
- collision_box = cathodic_collision_box,
- selection_box = cathodic_collision_box,
- on_place = display_api.on_place,
- on_receive_fields = common_node_def.on_receive_fields,
- on_punch = function(pos, node)
- minetest.swap_node(pos, {name = 'digiterms:cathodic_amber_monitor',
- param = node.param, param2 = node.param2 })
- display_api.update_entities(pos)
- end,
+ "digiterms_amber_back.png", "digiterms_amber_front.png",},
+}, {
+ tiles = { "digiterms_amber_top.png", "digiterms_amber_bottom.png",
+ "digiterms_amber_sides.png", "digiterms_amber_sides.png^[transformFX]",
+ "digiterms_amber_back.png", "digiterms_amber_front_off.png",},
})
digiterms.register_monitor('digiterms:cathodic_green_monitor', {
@@ -221,9 +120,6 @@ digiterms.register_monitor('digiterms:cathodic_green_monitor', {
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = false,
- tiles = { "digiterms_green_top.png", "digiterms_green_bottom.png",
- "digiterms_green_sides.png", "digiterms_green_sides.png^[transformFX]",
- "digiterms_green_back.png", "digiterms_green_front.png",},
drawtype = "nodebox",
groups = {choppy = 1, oddly_breakable_by_hand = 1},
node_box = cathodic_node_box,
@@ -239,34 +135,12 @@ digiterms.register_monitor('digiterms:cathodic_green_monitor', {
color = "#00FF00", font_name = digiterms.font, halign="left", valing="top",
},
},
- on_punch = function(pos, node)
- display_api.on_destruct(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("display_text", nil)
- minetest.swap_node(pos, {name = 'digiterms:cathodic_green_monitor_off',
- param = node.param, param2 = node.param2 })
- end
-})
-
-minetest.register_node('digiterms:cathodic_green_monitor_off', {
- description = "Cathodic green monitor",
- paramtype = "light",
- paramtype2 = "facedir",
- drops = "digiterms:cathodic_green_monitor",
- sunlight_propagates = false,
+}, {
+ tiles = { "digiterms_green_top.png", "digiterms_green_bottom.png",
+ "digiterms_green_sides.png", "digiterms_green_sides.png^[transformFX]",
+ "digiterms_green_back.png", "digiterms_green_front.png",},
+}, {
tiles = { "digiterms_green_top.png", "digiterms_green_bottom.png",
"digiterms_green_sides.png", "digiterms_green_sides.png^[transformFX]",
"digiterms_green_back.png", "digiterms_green_front_off.png",},
- drawtype = "nodebox",
- groups = {choppy = 1, oddly_breakable_by_hand = 1, not_in_creative_inventory = 1},
- node_box = cathodic_node_box,
- collision_box = cathodic_collision_box,
- selection_box = cathodic_collision_box,
- on_place = display_api.on_place,
- on_receive_fields = common_node_def.on_receive_fields,
- on_punch = function(pos, node)
- minetest.swap_node(pos, {name = 'digiterms:cathodic_green_monitor',
- param = node.param, param2 = node.param2 })
- display_api.update_entities(pos)
- end,
})
diff --git a/scifi.lua b/scifi.lua
deleted file mode 100644
index ff348a7..0000000
--- a/scifi.lua
+++ /dev/null
@@ -1,36 +0,0 @@
-digiterms.register_monitor('digiterms:scifi_monitor', {
- description = "Scifi monitor",
- paramtype = "light",
- paramtype2 = "facedir",
- use_texture_alpha = true,
- sunlight_propagates = true,
- light_source = 15,
- tiles = {
- "digiterms_scifi_glscrn.png",
- "digiterms_scifi_glscrn.png",
- "digiterms_scifi_glscrn.png",
- "digiterms_scifi_glscrn.png",
- "digiterms_scifi_glscrn.png",
- "digiterms_scifi_glscrn.png",
- },
- drawtype = "nodebox",
- node_box = {
- type = "fixed",
- fixed = {
- {-0.4375, -0.5, -0.125, 0.4375, -0.1875, 0.0625}, -- NodeBox1
- {-0.375, -0.5, -0.0625, 0.375, 0.5, 0}, -- NodeBox10
- }
- },
- sounds = default.node_sound_glass_defaults(),
- groups = {choppy = 1, oddly_breakable_by_hand = 1},
- display_entities = {
- ["digiterms:screen"] = {
- on_display_update = font_api.on_display_update,
- depth = -7/16 - display_api.entity_spacing,
- top = -1/16,
- size = { x = 23/32, y = 10/16 },
- columns = 20, lines = 4,
- color = "#76EDCD", font_name = digiterms.font, halign="left", valing="top",
- },
- },
-})
diff --git a/scifi_nodes.lua b/scifi_nodes.lua
new file mode 100644
index 0000000..9ab4dcb
--- /dev/null
+++ b/scifi_nodes.lua
@@ -0,0 +1,169 @@
+--[[
+ font_api mod for Minetest - Library to add font display capability
+ to display_api mod.
+ (c) Pierre-Yves Rollo
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+--]]
+
+digiterms.register_monitor('digiterms:scifi_glassscreen', {
+ description = "Digiline glassscreen",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ use_texture_alpha = true,
+ sunlight_propagates = true,
+ light_source = 15,
+ tiles = {
+ "digiterms_scifi_glscrn.png",
+ "digiterms_scifi_glscrn.png",
+ "digiterms_scifi_glscrn.png",
+ "digiterms_scifi_glscrn.png",
+ "digiterms_scifi_glscrn.png",
+ "digiterms_scifi_glscrn.png",
+ },
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.5, -0.125, 0.4375, -0.1875, 0.0625}, -- NodeBox1
+ {-0.375, -0.5, -0.0625, 0.375, 0.5, 0}, -- NodeBox10
+ }
+ },
+ sounds = default.node_sound_glass_defaults(),
+ groups = {choppy = 1, oddly_breakable_by_hand = 1},
+ display_entities = {
+ ["digiterms:screen"] = {
+ on_display_update = font_api.on_display_update,
+ depth = -1/32,
+ top = -5/32,
+ size = { x = 23/32, y = 10/16 },
+ columns = 20, lines = 4,
+ color = "#76EDCD", font_name = digiterms.font, halign="left", valing="top",
+ },
+ },
+})
+
+digiterms.register_monitor("digiterms:scifi_widescreen", {
+ description = "Digiline widescreen",
+ tiles = {
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "digiterms_scifi_widescreen.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ light_source = 5,
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.375, -0.3125, 0.4375, 0.375, 0.3125, 0.5}, -- NodeBox1
+ {-0.5, -0.375, 0.375, -0.375, 0.375, 0.5}, -- NodeBox2
+ {0.375, -0.375, 0.375, 0.5, 0.375, 0.5}, -- NodeBox3
+ {-0.3125, 0.25, 0.375, 0.3125, 0.375, 0.5}, -- NodeBox4
+ {-0.3125, -0.375, 0.375, 0.25, -0.25, 0.5}, -- NodeBox5
+ {-0.5, -0.3125, 0.375, 0.5, -0.25, 0.5}, -- NodeBox6
+ {-0.5, 0.25, 0.375, 0.5, 0.3125, 0.5}, -- NodeBox7
+ }
+ },
+ groups = {cracky=1, oddly_breakable_by_hand=1},
+ display_entities = {
+ ["digiterms:screen"] = {
+ on_display_update = font_api.on_display_update,
+ depth = 7/16 - display_api.entity_spacing,
+ size = { x = 11/16, y = 8/16 },
+ columns = 12, lines = 2,
+ color = "#72ba9a", font_name = digiterms.font, halign="left", valing="top",
+ },
+ },
+})
+
+digiterms.register_monitor("digiterms:scifi_tallscreen", {
+ description = "Digiline tallscreen",
+ tiles = {
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "digiterms_scifi_tallscreen.png"
+ },
+ drawtype = "nodebox",
+ light_source = 5,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.3125, -0.375, 0.4375, 0.3125, 0.375, 0.5}, -- NodeBox1
+ {-0.375, 0.375, 0.375, 0.375, 0.5, 0.5}, -- NodeBox2
+ {-0.375, -0.5, 0.375, 0.375, -0.375, 0.5}, -- NodeBox3
+ {0.25, -0.3125, 0.375, 0.375, 0.3125, 0.5}, -- NodeBox4
+ {-0.375, -0.25, 0.375, -0.25, 0.3125, 0.5}, -- NodeBox5
+ {-0.3125, -0.5, 0.375, -0.25, 0.5, 0.5}, -- NodeBox6
+ {0.25, -0.5, 0.375, 0.3125, 0.5, 0.5}, -- NodeBox7
+ }
+ },
+ groups = {cracky=1, oddly_breakable_by_hand=1},
+ display_entities = {
+ ["digiterms:screen"] = {
+ on_display_update = font_api.on_display_update,
+ depth = 7/16 - display_api.entity_spacing,
+ size = { x = 7/16, y = 12/16 },
+ columns = 8, lines = 3,
+ color = "#72ba9a", font_name = digiterms.font, halign="left", valing="top",
+ },
+ },
+})
+
+digiterms.register_monitor("digiterms:scifi_keysmonitor", {
+ description = "Digiline keyboard and monitor",
+ tiles = {
+ "scifi_nodes_keyboard.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "scifi_nodes_black.png",
+ "digiterms_scifi_monitor.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.4375, 0.5, -0.4375, -0.0625}, -- NodeBox1
+ {-0.125, -0.5, 0.375, 0.125, 0.0625, 0.4375}, -- NodeBox2
+ {-0.25, -0.5, 0.125, 0.25, -0.4375, 0.5}, -- NodeBox3
+ {-0.5, -0.3125, 0.25, 0.5, 0.5, 0.375}, -- NodeBox4
+ }
+ },
+ groups = {cracky=1, oddly_breakable_by_hand=1},
+ display_entities = {
+ ["digiterms:screen"] = {
+ on_display_update = font_api.on_display_update,
+ depth = 4/16 - display_api.entity_spacing,
+ top = -5/32,
+ size = { x = 10/16, y = 7/16 },
+ columns = 16, lines = 3,
+ color = "#B4F1EC", font_name = digiterms.font, halign="left", valing="top",
+ },
+ },
+})
diff --git a/svg/scifi_monitors.svg b/svg/scifi_monitors.svg
index f97acfb..1a7396b 100644
--- a/svg/scifi_monitors.svg
+++ b/svg/scifi_monitors.svg
@@ -33,10 +33,10 @@
inkscape:document-units="px"
inkscape:current-layer="g1617"
showgrid="true"
- inkscape:window-width="1462"
- inkscape:window-height="707"
- inkscape:window-x="299"
- inkscape:window-y="40"
+ inkscape:window-width="1423"
+ inkscape:window-height="824"
+ inkscape:window-x="900"
+ inkscape:window-y="229"
inkscape:window-maximized="0"
inkscape:grid-bbox="true">
-
-
-
-
-
@@ -336,7 +313,7 @@
image/svg+xml
-
+
@@ -357,16 +334,33 @@
inkscape:export-filename="/home/pyrollo/dev/minetest-mods/digiterms/textures/digiterms_scifi_glscrn.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
-
+ x="0"
+ id="image1262"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAFCAYAAABM6GxJAAADJXpUWHRSYXcgcHJvZmlsZSB0eXBl
+IGV4aWYAAHjarZVblusoDEX/GUUPAb0QDAeDWatn0MPvAyZJxVW37qPbJBY+EQK0ZRLOf/4e4S9c
+xJKDmudUUoq4tGjhik6O13VZirru+yE+Om96iLZ/YEgCK9djOrd/hW6vAa5bP9714G3HyTvQY8od
+UObMjM72yzuQ8KXTfg5lj6v6YTv7K75CPJ3vz+pIRjeIwoFPIYm4z4EsWIFkqbgz7lEKT4XQl6WI
+6Ne5C8/uLXmP1N1zF+v2kPdUhJi2Q7rlaOtkX+duZejjiujR5fcf2mvIp9yN0fMY57W7qgmZSmFv
+6lEiqwfHA6mUNSyhOb6Gvq9W0DK22JD0jhkPtBaoECPbg5Q6VRp0LtuoYYnKJzssc2NZWhbnwm1B
+0dlosEuRHsCIpYEaeAg/10Jr3rLma5Qxcyd4MiHYJPqpha/EP2nPQGPM0iWaybQrV1gXzwLEMia5
+eYcXgNDYObWV39XC6y2M8QNYAUFbac7YYI3HFeIwetWWLM4CP4sa4lXu5H0HQIowt2ExqGilmEiM
+EkVndiLkMYNPxcpZlA8QIDPuFAbYiCTAyTznxhin5cvGl4yjBSBMkjjQFKmApWqoH9eMGqompsHM
+krllK1aTJE2WUvI0z6jq4urmyd2zF69ZsmbLKXvOueRauAiOMCupeCi5lFIrJq0IXTG6wqPWgw85
+9LAjHX7koxy1oXyaNmupecuttNq5S8fr31P30HMvvZ50opROPe1Mp5/5LGcdqLUhQ4eNNHzkUUZ9
+UttU36nRjdz31GhTm8R0+fmLGmT3Rwiax4lNZiDGSiDukwAKmiezmEmVJ7nJLBbGS2EMamQTTqdJ
+DAT1JLZBT3Yvct9yC6a/xY1/RC5MdP8HuTDRbXKfuX1Brdd16skCNN/CmdMoAwfbsFg54xMflv0u
+2F3QmxDD3UPuAt+F+7SXDf9tHS8b/nQdXDqpzb9KWxaVLfamRFTTdK3zb/zXbfgo1DEjzfNxW9Td
+u3C32h9C2B3LP97+L9nAR7/tLN4FSz/Z2uFq4duV/8zaC2P4eqEyUMMl/AuT5DQTcg0bzgAAAAZi
+S0dEAMQAxADE73nNUQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+IMCQogJIuw9wcAAABX
+SURBVBjTpc5BCsMgAETR16IoeP97eRgVjYF2VWg22eRvhoH5MK9a6wdSSiDGCEII/jnPE+y9wVoL
+vD0ktNbAcRwg53wrzDkv++cPxhjgl6WUW6H3fulfIiIg+TJ8scIAAAAASUVORK5CYII=
+"
+ style="image-rendering:optimizeSpeed"
+ preserveAspectRatio="none"
+ height="5"
+ width="16" />
diff --git a/textures/digiterms_scifi_glscrn.png b/textures/digiterms_scifi_glscrn.png
index 46b4a10..c1bcded 100644
Binary files a/textures/digiterms_scifi_glscrn.png and b/textures/digiterms_scifi_glscrn.png differ
diff --git a/textures/digiterms_scifi_monitor.png b/textures/digiterms_scifi_monitor.png
new file mode 100644
index 0000000..2801567
Binary files /dev/null and b/textures/digiterms_scifi_monitor.png differ
diff --git a/textures/digiterms_scifi_tallscreen.png b/textures/digiterms_scifi_tallscreen.png
new file mode 100644
index 0000000..08935ea
Binary files /dev/null and b/textures/digiterms_scifi_tallscreen.png differ
diff --git a/textures/digiterms_scifi_widescreen.png b/textures/digiterms_scifi_widescreen.png
new file mode 100644
index 0000000..7ac56e6
Binary files /dev/null and b/textures/digiterms_scifi_widescreen.png differ