aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--advtrains/trainhud.lua21
-rw-r--r--advtrains/wagons.lua19
2 files changed, 32 insertions, 8 deletions
diff --git a/advtrains/trainhud.lua b/advtrains/trainhud.lua
index b2744ad..f9f4876 100644
--- a/advtrains/trainhud.lua
+++ b/advtrains/trainhud.lua
@@ -103,18 +103,20 @@ function advtrains.set_trainhud(name, text, driver)
if not player then
return
end
+ local drivertext = driver or ""
local driverhud = {
hud_elem_type = "image",
name = "ADVTRAINS_DRIVER",
position = {x=0.5, y=1},
offset = {x=0,y=-170},
- text = driver or "",
+ text = drivertext,
alignment = {x=0,y=-1},
- scale = {x=1,y=1},}
+ scale = {x=1,y=1},
+ }
if not hud then
- hud = {["driver"]={}}
+ hud = {}
advtrains.hud[name] = hud
- hud.id = player:hud_add({
+ hud.id = player:hud_add {
hud_elem_type = "text",
name = "ADVTRAINS",
number = 0xFFFFFF,
@@ -123,18 +125,23 @@ function advtrains.set_trainhud(name, text, driver)
text = text,
scale = {x=200, y=60},
alignment = {x=0, y=-1},
- })
- hud.oldText=text
+ }
hud.driver = player:hud_add(driverhud)
+ hud.oldText = text
+ hud.oldDriver = drivertext
else
if hud.oldText ~= text then
player:hud_change(hud.id, "text", text)
hud.oldText=text
end
if hud.driver then
- player:hud_change(hud.driver, "text", driver or "")
+ if hud.oldDriver ~= drivertext then
+ player:hud_change(hud.driver, "text", drivertext)
+ hud.oldDriver = drivertext
+ end
elseif driver then
hud.driver = player:hud_add(driverhud)
+ hud.oldDriver = drivertext
end
end
end
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index 14bb58a..536c8d4 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -13,7 +13,20 @@ local GETOFF_TP_DELAY = 0.5
local IGNORE_WORLD = advtrains.IGNORE_WORLD
advtrains.wagons = {}
-advtrains.wagon_prototypes = {}
+advtrains.wagon_alias = {}
+advtrains.wagon_prototypes = setmetatable({}, {
+ __index = function(t, k)
+ local rtn_val = rawget(t, k)
+ if rtn_val ~= nil then
+ return rtn_val
+ end
+ local alias = advtrains.wagon_alias[k]
+ if alias then
+ return rawget(t, alias)
+ end
+ return nil
+ end
+})
advtrains.wagon_objects = {}
local unload_wgn_range = advtrains.wagon_load_range + 32
@@ -1326,6 +1339,10 @@ function advtrains.get_wagon_prototype(data)
return wt, advtrains.wagon_prototypes[wt]
end
+function advtrains.register_wagon_alias(src, dst)
+ advtrains.wagon_alias[src] = dst
+end
+
function advtrains.standard_inventory_formspec(self, pname, invname)
--[[minetest.chat_send_player(pname, string.format("self=%s, pname=%s, invname=%s", self, pname, invname))
for k,v in pairs(self) do