From 91824aaa66c2f9078e76f7e36327b27fbb703622 Mon Sep 17 00:00:00 2001
From: "p.kosyh"
Date: Wed, 27 Jul 2011 13:11:29 +0000
Subject: [PATCH] ref and deref moved to stead
---
stead/dbg.lua | 24 ++---
stead/goto.lua | 42 ++++----
stead/gui.lua | 6 +-
stead/input.lua | 2 +-
stead/object.lua | 54 +++++-----
stead/stead.lua | 266 ++++++++++++++++++++++++-----------------------
stead/xact.lua | 4 +-
7 files changed, 200 insertions(+), 198 deletions(-)
diff --git a/stead/dbg.lua b/stead/dbg.lua
index d20a7c4..0408b69 100644
--- a/stead/dbg.lua
+++ b/stead/dbg.lua
@@ -88,7 +88,7 @@ function disp_obj()
end
dump_obj = function(w)
- w = ref(w)
+ w = stead.ref(w)
if type(w) ~= 'table' then
seen('disp')._txt = '^^No such object.';
return true
@@ -103,8 +103,8 @@ dump_obj = function(w)
if t then
if rc ~='' then rc = rc..'^' end
local n = '';
- if type(o) ~= 'function' and isObject(ref(o)) then
- n = stead.call(ref(o), 'nam');
+ if type(o) ~= 'function' and isObject(stead.ref(o)) then
+ n = stead.call(stead.ref(o), 'nam');
if type(n) ~= 'string' then n = '' else n = ' : '..n; end
end
rc = stead.cat(rc, stead.par(' ', tostring(i)..' : '..t..n));
@@ -138,13 +138,13 @@ end
list_objects = function()
local i,o
- local rc = stead.par(' ', 'Room:'..tostring(deref(dbg_here())),
+ local rc = stead.par(' ', 'Room:'..tostring(stead.deref(dbg_here())),
'Nam:'..tostring(stead.call(dbg_here(),'nam')));
for i,o in opairs(objs(dbg_here())) do
rc = rc..'^';
- o = ref(o)
+ o = stead.ref(o)
rc = stead.cat(rc, stead.par(' ', 'Id:'..tostring(o.id),
- 'Obj:'..tostring(deref(o)),
+ 'Obj:'..tostring(stead.deref(o)),
'Nam:'..tostring(stead.call(o, 'nam')),
'Disabled:'..tostring(isDisabled(o))));
end
@@ -157,8 +157,8 @@ list_inv = function()
local rc=''
for i,o in opairs(inv()) do
if rc ~='' then rc = rc..'^' end
- o = ref(o)
- rc = stead.cat(rc, stead.par(' ', 'Id:'..tostring(o.id), 'Obj:'..tostring(deref(o)),
+ o = stead.ref(o)
+ rc = stead.cat(rc, stead.par(' ', 'Id:'..tostring(o.id), 'Obj:'..tostring(stead.deref(o)),
'Nam:'..tostring(stead.call(o, 'nam')),
'Disabled:'..tostring(isDisabled(o)),
'Taken:'..tostring(taken(o))));
@@ -201,7 +201,7 @@ dump_object = room {
inp_enter = function(s)
local w = s.obj[1]._txt
if type(w) == 'string' then
- if not ref(w) then w = objs(dbg_here()):srch(w); end
+ if not stead.ref(w) then w = objs(dbg_here()):srch(w); end
return dump_obj(w);
end
return back();
@@ -274,14 +274,14 @@ drop_object = dlg {
local k,v
objs(s):zap();
for k,v in ipairs(inv()) do
- v = ref(v);
+ v = stead.ref(v);
if not v.debug then
local n = tostring(stead.call(v, 'nam'));
- local o = deref(v);
+ local o = stead.deref(v);
if type(o) == 'string' then
n = n..' : '..o;
n = _xref_escape(n);
- put (phr(n, true, o..':enable(); drop('..o..','..deref(dbg_here())..')'), s)
+ put (phr(n, true, o..':enable(); drop('..o..','..stead.deref(dbg_here())..')'), s)
end
end
end
diff --git a/stead/goto.lua b/stead/goto.lua
index 38018d7..36c1e56 100644
--- a/stead/goto.lua
+++ b/stead/goto.lua
@@ -15,11 +15,11 @@ go = function (self, where, back, noenter, noexit, nodsc)
return nil, ret(false)
end
- if not isRoom(ref(where)) then
+ if not isRoom(stead.ref(where)) then
error ("Trying to go nowhere: "..where);
end
- if not isRoom(ref(self.where)) then
+ if not isRoom(stead.ref(self.where)) then
error ("Trying to go from nowhere: "..self.where);
end
@@ -29,15 +29,15 @@ go = function (self, where, back, noenter, noexit, nodsc)
local v, r, jump;
- if not isVroom(ref(where)) and not stead.in_exit_call and not noexit then
+ if not isVroom(stead.ref(where)) and not stead.in_exit_call and not noexit then
stead.in_exit_call = true -- to break recurse
- v,r = stead.call(ref(self.where), 'exit', ref(where));
+ v,r = stead.call(stead.ref(self.where), 'exit', stead.ref(where));
stead.in_exit_call = nil
if r == false or (stead.api_version >= "1.3.0" and v == false and r == nil) then
return v, ret(r)
end
if self.where ~= was then
- where = deref(self.where) -- jump
+ where = stead.deref(self.where) -- jump
jump = true
end
end
@@ -45,12 +45,12 @@ go = function (self, where, back, noenter, noexit, nodsc)
local res = v;
v = nil;
- if not isVroom(ref(where)) then
- self.where = deref(where);
+ if not isVroom(stead.ref(where)) then
+ self.where = stead.deref(where);
end
if not jump and not noenter then
- v, r = stead.call(ref(where), 'enter', ref(was));
+ v, r = stead.call(stead.ref(where), 'enter', stead.ref(was));
if r == false or (stead.api_version >= "1.3.0" and v == false and r == nil) then
self.where = was;
return par('^^', res, v), ret(r)
@@ -58,14 +58,14 @@ go = function (self, where, back, noenter, noexit, nodsc)
end
need_scene = true;
- if ref(where) ~= ref(self.where) then -- jump !!!
+ if stead.ref(where) ~= stead.ref(self.where) then -- jump !!!
need_scene = false;
end
res = par('^^',res,v);
if not back then
- ref(where).__from__ = deref(was);
+ stead.ref(where).__from__ = stead.deref(was);
end
ret()
@@ -80,28 +80,28 @@ go = function (self, where, back, noenter, noexit, nodsc)
if not noexit then
self.where = was
stead.in_onexit_call = true
- v = stead.call(ref(was), 'left', ref(to));
+ v = stead.call(stead.ref(was), 'left', stead.ref(to));
stead.in_onexit_call = false
res = par('^^',res,v);
end
- self.where = deref(to)
+ self.where = stead.deref(to)
if not noenter then
stead.in_entered_call = true
- v = stead.call(ref(to), 'entered', ref(was));
+ v = stead.call(stead.ref(to), 'entered', stead.ref(was));
stead.in_entered_call = false
res = par('^^',res,v);
end
- if tonumber(ref(to).__visited) then
- ref(to).__visited = ref(to).__visited + 1;
+ if tonumber(stead.ref(to).__visited) then
+ stead.ref(to).__visited = stead.ref(to).__visited + 1;
elseif here().__visited == nil then
- ref(to).__visited = 1
+ stead.ref(to).__visited = 1
end
- if isDialog(ref(to)) then
- dialog_rescan(ref(to));
+ if isDialog(stead.ref(to)) then
+ dialog_rescan(stead.ref(to));
end
end
return res;
@@ -109,7 +109,7 @@ end
stead.go = go
function player_go(self, where) -- cmd iface
- local w = ref(self.where).way:srch(where);
+ local w = stead.ref(self.where).way:srch(where);
if not w then
return nil,false
end
@@ -149,7 +149,7 @@ end
stead.goin = goin
function goout(what)
- if isRoom(ref(what)) then
+ if isRoom(stead.ref(what)) then
return me():goto(what, true, true, false, true);
end
return me():goto(from(), true, true, false, true);
@@ -158,7 +158,7 @@ stead.goout = goout
function visited(w)
if not w then w = here() end
- w = ref(w)
+ w = stead.ref(w)
if w == nil then
return nil;
end
diff --git a/stead/gui.lua b/stead/gui.lua
index fd4b507..d3018c3 100644
--- a/stead/gui.lua
+++ b/stead/gui.lua
@@ -9,14 +9,14 @@ game.gui = {
}
iface.xref = function(self, str, obj, ...)
- local o = ref(obj);
+ local o = stead.ref(obj);
local cmd=''
if not isObject(o) or isStatus(o) or (not o.id and not isXaction(o)) then
return str;
end
- if ref(ways():srch(obj)) then
+ if stead.ref(ways():srch(obj)) then
cmd = 'go ';
elseif isMenu(o) then
cmd = 'act ';
@@ -32,7 +32,7 @@ iface.xref = function(self, str, obj, ...)
a = a..','..varg[i]
end
if isXaction(o) and not o.id then
- return stead.cat('',str,'');
+ return stead.cat('',str,'');
end
return stead.cat('',str,'');
end;
diff --git a/stead/input.lua b/stead/input.lua
index 0c1fa22..fb5678a 100644
--- a/stead/input.lua
+++ b/stead/input.lua
@@ -206,7 +206,7 @@ end)
lookup_inp = function()
local i,o
for i,o in opairs(objs()) do
- o = ref(o)
+ o = stead.ref(o)
if o._edit then
return o
end
diff --git a/stead/object.lua b/stead/object.lua
index 74cfe71..4e7ba24 100644
--- a/stead/object.lua
+++ b/stead/object.lua
@@ -2,7 +2,7 @@ function player_action(self, what, ...)
local v,r,obj
obj = _G[what];
if not isXaction(obj) then
- obj = ref(self.where):srch(what);
+ obj = stead.ref(self.where):srch(what);
end
if not obj then
return stead.call(game, 'action', what, ...); --player_do(self, what, ...);
@@ -24,7 +24,7 @@ function player_use(self, what, onwhat, ...)
obj = self:srch(what); -- in inv?
if not obj then -- no
- obj = ref(self.where):srch(what); -- in scene?
+ obj = stead.ref(self.where):srch(what); -- in scene?
if not obj then -- no!
return game.err, false;
end
@@ -34,14 +34,14 @@ function player_use(self, what, onwhat, ...)
if scene_use_mode then
return self:action(what, ...); -- call act
else
- v, r = stead.call(ref(obj),'inv', ...); -- call inv
+ v, r = stead.call(stead.ref(obj),'inv', ...); -- call inv
end
if not v and r ~= true then
v, r = stead.call(game, 'inv', obj, ...);
end
return v, r;
end
- obj2 = ref(self.where):srch(onwhat); -- in scene?
+ obj2 = stead.ref(self.where):srch(onwhat); -- in scene?
if not obj2 then
obj2 = self:srch(onwhat); -- in inv?
end
@@ -49,8 +49,8 @@ function player_use(self, what, onwhat, ...)
return game.err, false;
end
- obj = ref(obj)
- obj2 = ref(obj2)
+ obj = stead.ref(obj)
+ obj2 = stead.ref(obj2)
if not scene_use_mode or isSceneUse(obj) then
v, r = stead.call(obj, 'use', obj2, ...);
@@ -72,7 +72,7 @@ function player_use(self, what, onwhat, ...)
end
function vobj_save(self, name, h, need)
- local w = deref(self.where)
+ local w = stead.deref(self.where)
local dsc = self.dsc
if need then
@@ -87,27 +87,27 @@ end
function vobj_act(self, ...)
local o, r = here():srch(self); -- self.nam
- if ref(o) and ref(o).where then
- return goto(ref(o).where);
+ if stead.ref(o) and stead.ref(o).where then
+ return goto(stead.ref(o).where);
end
- return stead.call(ref(r),'act', self.nam, ...);
+ return stead.call(stead.ref(r),'act', self.nam, ...);
end
function vobj_used(self, ...)
local o, r = here():srch(self.nam);
- return stead.call(ref(r),'used', self.nam, ...);
+ return stead.call(stead.ref(r),'used', self.nam, ...);
end
function vobj_use(self, ...)
local o, r = here():srch(self.nam);
- return stead.call(ref(r),'use', self.nam, ...);
+ return stead.call(stead.ref(r),'use', self.nam, ...);
end
function vobj(name, dsc, w)
return obj{ nam = tostring(name),
vobject_type = true,
dsc = dsc,
- where = deref(w),
+ where = stead.deref(w),
act = vobj_act,
used = vobj_used,
use = vobj_use,
@@ -120,7 +120,7 @@ function vway(name, dsc, w)
vobject_type = true,
dsc = dsc,
act = vobj_act,
- where = deref(w),
+ where = stead.deref(w),
used = vobj_used,
use = vobj_use,
save = vobj_save };
@@ -133,18 +133,18 @@ end
function list_check(self, name) -- force using of objects, instead refs
local i, v, ii;
for i,v,ii in opairs(self) do
- local o = ref(v);
+ local o = stead.ref(v);
if not isObject(o) then
error ("No object: "..tostring(v))
return false
end
- if (v.auto_allocated and not ref(v.key_name)) -- renew
- or (isObject(deref(v)) and not v._dynamic_type) then -- no named object!
+ if (v.auto_allocated and not stead.ref(v.key_name)) -- renew
+ or (isObject(stead.deref(v)) and not v._dynamic_type) then -- no named object!
local n = stead.string.format("%s[%d]", name, ii);
v = allocator:new(n, n);
self[ii] = v;
v.auto_allocated = true;
- for_each(v, n, check_list, isList, deref(v));
+ for_each(v, n, check_list, isList, stead.deref(v));
else
self[ii] = o;
end
@@ -155,7 +155,7 @@ end
function list_add(self, name, pos)
local nam = name
if stead.initialized then
- nam = ref(name);
+ nam = stead.ref(name);
end
if not nam then
error ("Add wrong object to list: "..tostring(name), 2);
@@ -164,7 +164,7 @@ function list_add(self, name, pos)
return nil
end
self.__modified__ = true;
- if isObject(deref(nam)) then
+ if isObject(stead.deref(nam)) then
nam._dynamic_type = true
end
if tonumber(pos) then
@@ -183,12 +183,12 @@ function list_set(self, name, pos)
return nil
end
if stead.initialized then
- nam = ref(name);
+ nam = stead.ref(name);
end
if not nam then
error ("Set wrong object in list: "..tostring(name), 2);
end
- if isObject(deref(nam)) then
+ if isObject(stead.deref(nam)) then
nam._dynamic_type = true
end
self.__modified__ = true;
@@ -199,7 +199,7 @@ end
function list_concat(self, other, pos)
local n,o,ii
for n,o,ii in opairs(other) do
- o = ref(o);
+ o = stead.ref(o);
if pos == nil then
self:add(o);
else
@@ -214,7 +214,7 @@ stead.delim = '|'
function list_str(self)
local i, v, vv, o;
for i,o in opairs(self) do
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) and not isDisabled(o) then
vv = nil
if game.gui then
@@ -239,7 +239,7 @@ function obj_str(self)
return
end
for i,o in opairs(self.obj) do
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) and not isDisabled(o) then
vv = nil
if game.gui then
@@ -259,10 +259,10 @@ function path(w, wh) -- search in way, disabled too
if not wh then
wh = here();
else
- wh = ref(wh);
+ wh = stead.ref(wh);
end
local o = ways(wh):srch(w, true);
- o = ref(o);
+ o = stead.ref(o);
if isRoom(o) then
return o
end
diff --git a/stead/stead.lua b/stead/stead.lua
index 079e2b6..cff9f84 100644
--- a/stead/stead.lua
+++ b/stead/stead.lua
@@ -87,8 +87,8 @@ stead.tostring = function(v)
v = stead.string.format("%q", v);
elseif v == nil or type(v) == 'boolean' or type(v) == 'number' then
v = tostring(v);
- elseif type(v) == 'table' and type(deref(v)) == 'string' then
- v = deref(v);
+ elseif type(v) == 'table' and type(stead.deref(v)) == 'string' then
+ v = stead.deref(v);
else
v = nil
end
@@ -413,7 +413,7 @@ function obj_look(self)
v = stead.string.gsub(v, '[{}]','');
end
for i,o in opairs(self.obj) do
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) then
vv = obj_look(o);
v = stead.par(' ',v, vv);
@@ -475,7 +475,7 @@ function obj_str(self)
return
end
for i,o in opairs(self.obj) do
- o = ref(o);
+ o = stead.ref(o);
if o~= nil and not isDisabled(o) then -- isObject is better, but compat layer must be ok
vv = stead.call(o, 'nam');
vv = xref(vv, o);
@@ -539,14 +539,14 @@ function obj(v)
end
-function ref(n, nofunc) -- ref object by name
+function stead.ref(n, nofunc) -- ref object by name
if type(n) == 'string' then
if type(_G[n]) == 'table' then -- fastest path
return _G[n];
end
local f = loadstring('return '..n);
if f then
- return ref(f(), nofunc);
+ return stead.ref(f(), nofunc);
end
return nil;
end
@@ -558,12 +558,13 @@ function ref(n, nofunc) -- ref object by name
if not r then
return nil
end
- return ref(v);
+ return stead.ref(v);
end
return nil
end
+ref = stead.ref
-function deref(n)
+function stead.deref(n)
if type(n) == 'string' then
return n
end
@@ -573,17 +574,18 @@ function deref(n)
end
return n
end
+deref = stead.deref
function list_check(self, name)
local i, v, ii;
for i,v,ii in opairs(self) do
- local o = ref(v);
+ local o = stead.ref(v);
if not o then -- isObject(o) then -- compat
error ("No object: "..tostring(v))
return false
end
- if deref(v) then
- self[ii] = deref(v);
+ if stead.deref(v) then
+ self[ii] = stead.deref(v);
end
end
return true;
@@ -592,7 +594,7 @@ end
function list_str(self)
local i, v, vv, o;
for i,o in opairs(self) do
- o = ref(o);
+ o = stead.ref(o);
if o~= nil and not isDisabled(o) then
vv = stead.call(o, 'nam');
vv = xref(vv, o);
@@ -605,7 +607,7 @@ end
function list_add(self, name, pos)
local nam
- nam = deref(name);
+ nam = stead.deref(name);
if self:look(nam) then
return nil
end
@@ -625,7 +627,7 @@ function list_set(self, name, pos)
if not i then
return nil
end
- nam = deref(name);
+ nam = stead.deref(name);
self.__modified__ = true;
self[i] = nam; -- for spare lists
return true
@@ -634,7 +636,7 @@ end
function list_find(self, name)
local n, v, ii
for n,v,ii in opairs(self) do
- if ref(v) == ref(name, true) then -- do not call func while search
+ if stead.ref(v) == stead.ref(name, true) then -- do not call func while search
return ii;
end
end
@@ -644,7 +646,7 @@ end
function list_disable_all(s)
local k,v
for k,v in opairs(s) do
- local o = ref(v);
+ local o = stead.ref(v);
if isObject(o) then
o:disable()
end
@@ -654,7 +656,7 @@ end
function list_enable_all(s)
local k,v
for k,v in opairs(s) do
- local o = ref(v);
+ local o = stead.ref(v);
if isObject(o) then
o:enable()
end
@@ -672,7 +674,7 @@ end
function list_name(self, name, dis)
local n, o, ii
for n,o,ii in opairs(self) do
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) then
local nam = stead.call(o,'nam') ;
if ( not isDisabled(o) or dis ) and name == tostring(nam) then
@@ -685,7 +687,7 @@ end
function list_id(self, id, dis)
local n,o,ii
for n,o,ii in opairs(self) do
- o = ref(o);
+ o = stead.ref(o);
if dis or not isDisabled(o) then
if isObject(o) and id == o.id then
return ii;
@@ -706,7 +708,7 @@ function list_search(self, n, dis)
return nil
end
end
- if not dis and isDisabled(ref(self[i])) then
+ if not dis and isDisabled(stead.ref(self[i])) then
return nil;
end
return self[i], i;
@@ -724,11 +726,11 @@ end
function list_concat(self, other, pos)
local n,o,ii
for n,o,ii in opairs(other) do
- o = ref(o);
+ o = stead.ref(o);
if pos == nil then
- self:add(deref(o));
+ self:add(stead.deref(o));
else
- self:add(deref(o), pos);
+ self:add(stead.deref(o), pos);
pos = pos + 1;
end
end
@@ -893,7 +895,7 @@ end
function room_look(self)
local i, vv, o;
for i,o in opairs(self.obj) do
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) then
vv = stead.par(' ',vv, o:look());
end
@@ -912,7 +914,7 @@ function obj_search(v, n, dis)
return o, v;
end
for i,o in opairs(v.obj) do
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) then
local r,rr = obj_search(o, n, dis);
if r then
@@ -972,7 +974,7 @@ function dialog_look(self)
local i,n,v,ph
n = 1
for i,ph in opairs(self.obj) do
- ph = ref(ph);
+ ph = stead.ref(ph);
if isPhrase(ph) and not isDisabled(ph) then
v = stead.par('^', v, txtnm(n, ph:look()));
n = n + 1
@@ -985,7 +987,7 @@ function dialog_rescan(self)
local i,k,ph
k = 1
for i,ph in opairs(self.obj) do
- ph = ref(ph);
+ ph = stead.ref(ph);
if isPhrase(ph) and not isDisabled(ph) then
ph.nam = tostring(k);
k = k + 1;
@@ -1003,12 +1005,12 @@ end
function dialog_phrase(self, num)
if not tonumber(num) then
- if isPhrase(ref(num)) then
- return ref(num);
+ if isPhrase(stead.ref(num)) then
+ return stead.ref(num);
end
return nil
end
- return ref(self.obj[tonumber(num)]);
+ return stead.ref(self.obj[tonumber(num)]);
end
function phrase_seen(s, enb, ...)
@@ -1207,15 +1209,15 @@ function player_inv(self)
end
function player_ways(self)
- return iface:ways(stead.cat(ref(self.where).way:str()));
+ return iface:ways(stead.cat(stead.ref(self.where).way:str()));
end
function player_objs(self)
- return iface:objs(stead.cat(ref(self.where):str()));
+ return iface:objs(stead.cat(stead.ref(self.where):str()));
end
function player_look(self)
- return ref(self.where):scene();
+ return stead.ref(self.where):scene();
end
function obj_tag(self, id)
@@ -1226,7 +1228,7 @@ function obj_tag(self, id)
end
for k,v in opairs(self.obj) do
- v = ref(v);
+ v = stead.ref(v);
if isObject(v) and not isDisabled(v) then
id = id + 1;
v.id = id;
@@ -1244,7 +1246,7 @@ function player_tagall(self)
id = obj_tag(me(), id);
for k,v in opairs(ways()) do
- v = ref(v);
+ v = stead.ref(v);
if isRoom(v) and not isDisabled(v) then
id = id + 1;
v.id = id;
@@ -1254,15 +1256,15 @@ end
function player_action(self, what, ...)
local v,r,obj
- obj = ref(self.where):srch(what);
+ obj = stead.ref(self.where):srch(what);
if not obj then
- return stead.call(ref(game), 'action', what, ...); --player_do(self, what, ...);
+ return stead.call(stead.ref(game), 'action', what, ...); --player_do(self, what, ...);
end
v, r = player_take(self, what, ...);
if not v then
- v, r = stead.call(ref(obj), 'act', ...);
+ v, r = stead.call(stead.ref(obj), 'act', ...);
if not v and r ~= true then
- v, r = stead.call(ref(game), 'act', obj, ...);
+ v, r = stead.call(stead.ref(game), 'act', obj, ...);
end
end
return v, r;
@@ -1270,11 +1272,11 @@ end
function player_take(self, what, ...)
local v,r,obj,w
- obj,w = ref(self.where):srch(what);
+ obj,w = stead.ref(self.where):srch(what);
if not obj then
return nil, false;
end
- v,r = stead.call(ref(obj), 'tak', ...);
+ v,r = stead.call(stead.ref(obj), 'tak', ...);
if v and r ~= false then
take(obj, w);
end
@@ -1287,7 +1289,7 @@ function player_use(self, what, onwhat, ...)
obj = self:srch(what); -- in inv?
if not obj then -- no
- obj = ref(self.where):srch(what); -- in scene?
+ obj = stead.ref(self.where):srch(what); -- in scene?
if not obj then -- no!
return game.err, false;
end
@@ -1297,24 +1299,24 @@ function player_use(self, what, onwhat, ...)
if scene_use_mode then
return self:action(what, ...); -- call act
else
- v, r = stead.call(ref(obj),'inv', ...); -- call inv
+ v, r = stead.call(stead.ref(obj),'inv', ...); -- call inv
end
if not v and r ~= true then
v, r = stead.call(game, 'inv', obj, ...);
end
return v, r;
end
- obj2 = ref(self.where):srch(onwhat); -- in scene?
+ obj2 = stead.ref(self.where):srch(onwhat); -- in scene?
if not obj2 then
obj2 = self:srch(onwhat); -- in inv?
end
if not obj2 or obj2 == obj then
return game.err, false;
end
- if not scene_use_mode or isSceneUse(ref(obj)) then
- v, r = stead.call(ref(obj), 'use', obj2, ...);
+ if not scene_use_mode or isSceneUse(stead.ref(obj)) then
+ v, r = stead.call(stead.ref(obj), 'use', obj2, ...);
if r ~= false then
- vv = stead.call(ref(obj2), 'used', obj, ...);
+ vv = stead.call(stead.ref(obj2), 'used', obj, ...);
end
end
if not v and not vv then
@@ -1324,7 +1326,7 @@ function player_use(self, what, onwhat, ...)
end
function player_back(self)
- local where = ref(self.where);
+ local where = stead.ref(self.where);
if where == nil then
return nil,false
end
@@ -1347,10 +1349,10 @@ function go(self, where, back)
if where == nil then
return nil,ret(false)
end
- if not isRoom(ref(where)) then
+ if not isRoom(stead.ref(where)) then
error ("Trying to go nowhere: "..where, 2);
end
- if not isRoom(ref(self.where)) then
+ if not isRoom(stead.ref(self.where)) then
error ("Trying to go from nowhere: "..self.where, 2);
end
@@ -1359,9 +1361,9 @@ function go(self, where, back)
end
local v, r;
- if not isVroom(ref(where)) and not stead.in_exit_call then
+ if not isVroom(stead.ref(where)) and not stead.in_exit_call then
stead.in_exit_call = true -- to break recurse
- v,r = stead.call(ref(self.where), 'exit', where);
+ v,r = stead.call(stead.ref(self.where), 'exit', where);
stead.in_exit_call = nil
if r == false then
return v, ret(r)
@@ -1371,30 +1373,30 @@ function go(self, where, back)
local res = v;
v = nil;
- if not back or not isDialog(ref(self.where)) or isDialog(ref(where)) then
- v, r = stead.call(ref(where), 'enter', self.where);
+ if not back or not isDialog(stead.ref(self.where)) or isDialog(stead.ref(where)) then
+ v, r = stead.call(stead.ref(where), 'enter', self.where);
if r == false then
return v, ret(r)
end
need_scene = true;
- if ref(was) ~= ref(self.where) then -- jump !!!
- where = deref(self.where);
+ if stead.ref(was) ~= stead.ref(self.where) then -- jump !!!
+ where = stead.deref(self.where);
need_scene = false;
end
end
res = stead.par('^^',res,v);
if not back then
- ref(where).__from__ = deref(self.where);
+ stead.ref(where).__from__ = stead.deref(self.where);
end
- self.where = deref(where);
+ self.where = stead.deref(where);
ret();
PLAYER_MOVED = true
- if need_scene then -- or isForcedsc(ref(where)) then -- i'am not sure...
- return stead.par('^^',res,ref(where):scene());
+ if need_scene then -- or isForcedsc(stead.ref(where)) then -- i'am not sure...
+ return stead.par('^^', res, stead.ref(where):scene());
end
return res;
end
@@ -1405,7 +1407,7 @@ function player_goto(self, where, ...)
end
function player_go(self, where)
- local w = ref(self.where).way:srch(where);
+ local w = stead.ref(self.where).way:srch(where);
if not w then
return nil,false
end
@@ -1414,7 +1416,7 @@ function player_go(self, where)
end
function player_save(self, name, h)
- h:write(tostring(name)..".where = '"..deref(self.where).."';\n");
+ h:write(tostring(name)..".where = '"..stead.deref(self.where).."';\n");
savemembers(h, self, name, false);
end
@@ -1471,7 +1473,7 @@ function game_life(self)
for i,o in opairs(self.lifes) do
local vv
local pre
- o = ref(o);
+ o = stead.ref(o);
if not isDisabled(o) then
PLAYER_MOVED = false
vv,pre = stead.call(o, 'life');
@@ -1512,7 +1514,7 @@ function check_room(k, v)
end
function check_player(k, v)
- v.where = deref(v.where);
+ v.where = stead.deref(v.where);
end
function check_object(k, v)
@@ -1525,7 +1527,7 @@ function check_object(k, v)
if isPlayer(v) then
check_player(k, v);
end
- for_each(v, k, check_list, isList, deref(v))
+ for_each(v, k, check_list, isList, stead.deref(v))
end
function for_everything(f, ...)
@@ -1549,15 +1551,15 @@ function do_ini(self, load)
math.randomseed(os.time(os.date("*t")))
rnd(1); rnd(2); rnd(3); -- Lua bug?
- game.pl = deref(game.pl);
- game.where = deref(game.where);
+ game.pl = stead.deref(game.pl);
+ game.where = stead.deref(game.where);
if not load then
for_each_object(call_key);
for_each_codeblock(call_codekey);
for_each_object(check_object);
call_key("game", game);
- for_each(game, "game", check_list, isList, deref(game))
+ for_each(game, "game", check_list, isList, stead.deref(game))
end
for_each_object(call_ini, load);
me():tag();
@@ -1625,7 +1627,7 @@ function game(v)
end
function live(v)
- return ref(game.lifes:srch(v));
+ return stead.ref(game.lifes:srch(v));
end
function isEnableSave()
@@ -1752,7 +1754,7 @@ function savevar (h, v, n, need)
v:save(v.key_name, h, false, true); -- here todo
end
if need then
- if ref(v.key_name) == nil then
+ if stead.ref(v.key_name) == nil then
v.key_name = 'null'
end
h:write(stead.string.format("%s = %s\n", n, v.key_name));
@@ -1857,7 +1859,7 @@ function game_save(self, name, file)
local h;
if file ~= nil then
- file:write(name..".pl = '"..deref(self.pl).."'\n");
+ file:write(name..".pl = '"..stead.deref(self.pl).."'\n");
savemembers(file, self, name, false);
return nil, true
end
@@ -1997,12 +1999,12 @@ iface = {
return n..' - '..str;
end,
xref = function(self, str, obj)
- local o = ref(here():srch(obj));
+ local o = stead.ref(here():srch(obj));
if not o then
- o = ref(ways():srch(obj));
+ o = stead.ref(ways():srch(obj));
end
if not o then
- o = ref(me():srch(obj));
+ o = stead.ref(me():srch(obj));
end
if not o or not o.id then
return str;
@@ -2152,28 +2154,28 @@ iface = {
function me()
- return ref(game.pl);
+ return stead.ref(game.pl);
end
function where(s)
- if not isObject(ref(s)) then error("Wrong parameter to where.", 2); end
- if isPlayer(ref(s)) then
- return ref(ref(s).where);
+ if not isObject(stead.ref(s)) then error("Wrong parameter to where.", 2); end
+ if isPlayer(stead.ref(s)) then
+ return stead.ref(stead.ref(s).where);
end
- return ref(ref(s).__where__);
+ return stead.ref(stead.ref(s).__where__);
end
function here()
- return ref(me().where);
+ return stead.ref(me().where);
end
function from(w)
if w == nil then
w = here();
else
- w = ref(w);
+ w = stead.ref(w);
end
- return ref(w.__from__);
+ return stead.ref(w.__from__);
end
function time()
@@ -2189,7 +2191,7 @@ function objs(w)
if not w then
return here().obj;
else
- return ref(w).obj;
+ return stead.ref(w).obj;
end
end
@@ -2197,7 +2199,7 @@ function ways(w)
if not w then
return here().way;
else
- return ref(w).way;
+ return stead.ref(w).way;
end
end
@@ -2293,7 +2295,7 @@ end
function vobj_save(self, name, h, need)
local dsc = self.dsc;
- local w = deref(self.where);
+ local w = stead.deref(self.where);
if need then
h:write(stead.string.format("%s = vobj(%s, %s, %s, %s);\n",
@@ -2309,32 +2311,32 @@ end
function vobj_act(self, ...)
local o, r = here():srch(self); -- self.nam
- if ref(o) and ref(o).where then
- return goto(ref(o).where);
+ if stead.ref(o) and stead.ref(o).where then
+ return goto(stead.ref(o).where);
end
- return stead.call(ref(r),'act', self.key, ...);
+ return stead.call(stead.ref(r),'act', self.key, ...);
end
function vobj_used(self, ...)
local o, r = here():srch(self.nam);
- return stead.call(ref(r),'used', self.key, ...);
+ return stead.call(stead.ref(r),'used', self.key, ...);
end
function vobj(key, name, dsc, w)
if not tonumber(key) then
error ("vobj key must be number!", 2);
end
- return obj{ key = key, nam = name, dsc = dsc, where = deref(w), act = vobj_act, used = vobj_used, save = vobj_save, obj = list({}) };
+ return obj{ key = key, nam = name, dsc = dsc, where = stead.deref(w), act = vobj_act, used = vobj_used, save = vobj_save, obj = list({}) };
end
function vway(name, dsc, w)
-- o.object_type = true;
- return obj{ key = -1, nam = name, dsc = dsc, act = vobj_act, where = deref(w), used = vobj_used, save = vobj_save, obj = list({}), };
+ return obj{ key = -1, nam = name, dsc = dsc, act = vobj_act, where = stead.deref(w), used = vobj_used, save = vobj_save, obj = list({}), };
end
function vroom_save(self, name, h, need)
if need then
- h:write(name.." = vroom('"..self.nam.."','"..deref(self.where).."');\n");
+ h:write(name.." = vroom('"..self.nam.."','"..stead.deref(self.where).."');\n");
end
savemembers(h, self, name,false);
end
@@ -2351,7 +2353,7 @@ function vroom(name, w)
if w == nil then
error("Wrong parameter to vroom.", 2);
end
- return room { vroom_type = true, nam = name, where = deref(w), enter = vroom_enter, save = vroom_save, };
+ return room { vroom_type = true, nam = name, where = stead.deref(w), enter = vroom_enter, save = vroom_save, };
end
function goto(what)
@@ -2374,7 +2376,7 @@ function rnd(m)
end
function taken(obj)
- if isObject(ref(obj)) and ref(obj)._taken then
+ if isObject(stead.ref(obj)) and stead.ref(obj)._taken then
return true
end
return false;
@@ -2383,16 +2385,16 @@ end
function remove(obj, from)
local o,w
if from then
- o,w = ref(from):srch(obj);
+ o,w = stead.ref(from):srch(obj);
else
o,w = here():srch(obj);
end
if w then
- ref(w).obj:del(obj);
+ stead.ref(w).obj:del(obj);
end
- o = ref(o);
+ o = stead.ref(o);
if not isObject(o) then
- o = ref(obj);
+ o = stead.ref(obj);
end
if isObject(o) then
o.__where__ = nil;
@@ -2403,16 +2405,16 @@ end
function purge(obj, from)
local o,w
if from then
- o,w = ref(from):srch(obj, true);
+ o,w = stead.ref(from):srch(obj, true);
else
o,w = here():srch(obj, true);
end
if w then
- ref(w).obj:purge(obj);
+ stead.ref(w).obj:purge(obj);
end
- o = ref(o);
+ o = stead.ref(o);
if not isObject(o) then
- o = ref(obj);
+ o = stead.ref(obj);
end
if isObject(o) then
o.__where__ = nil;
@@ -2427,7 +2429,7 @@ function taketo(obj, wh, pos)
end
inv():add(obj, pos);
o._taken = true
- wh = deref(me())
+ wh = stead.deref(me())
if type(wh) == 'string' then
o.__where__ = wh;
end
@@ -2444,16 +2446,16 @@ end
function putto(obj, w, pos)
local wh
- local o = ref(obj);
+ local o = stead.ref(obj);
if not isObject(o) then
error ("Trying to put wrong object.", 2);
end
if not w then
- wh = deref(here());
+ wh = stead.deref(here());
w = here();
else
- wh = deref(w);
- w = ref(w);
+ wh = stead.deref(w);
+ w = stead.ref(w);
end
w.obj:add(obj, pos);
if type(wh) == 'string' then
@@ -2477,23 +2479,23 @@ placeto = putto
function replace(obj, obj2, from)
local o,w,i
- if not isObject(ref(obj2)) then
+ if not isObject(stead.ref(obj2)) then
error ("Wrong parameter to replace.", 2);
end
if from then
- o,w = ref(from):srch(obj);
+ o,w = stead.ref(from):srch(obj);
else
o,w = here():srch(obj);
end
if w then
- ref(w).obj:replace(o, obj2);
- ref(obj2).__where__ = deref(w);
+ stead.ref(w).obj:replace(o, obj2);
+ stead.ref(obj2).__where__ = stead.deref(w);
else
place(obj2, from);
end
- o = ref(o);
+ o = stead.ref(o);
if not isObject(o) then
- o = ref(obj);
+ o = stead.ref(obj);
end
if isObject(o) then
o.__where__ = nil;
@@ -2525,10 +2527,10 @@ function seen(obj, wh)
if not wh then
wh = here();
else
- wh = ref(wh);
+ wh = stead.ref(wh);
end
local o,w = wh:srch(obj);
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) then
return o,w
end
@@ -2539,10 +2541,10 @@ function exist(obj, wh)
if not wh then
wh = here();
else
- wh = ref(wh);
+ wh = stead.ref(wh);
end
local o,w = wh:srch(obj, true);
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) then
return o,w
end
@@ -2551,7 +2553,7 @@ end
function have(obj)
local o = inv():srch(obj);
- o = ref(o);
+ o = stead.ref(o);
if isObject(o) then
return o
end
@@ -2561,7 +2563,7 @@ end
function moveto(obj, there, from, pos)
remove(obj, from);
putto(obj, there, pos);
- return ref(obj);
+ return stead.ref(obj);
end
@@ -2719,20 +2721,20 @@ end
stead.set_sound = set_sound
function change_pl(p)
- local o = ref(p);
- if type(deref(p)) ~= 'string' or not o then
+ local o = stead.ref(p);
+ if type(stead.deref(p)) ~= 'string' or not o then
error ("Wrong player name in change_pl...", 2);
end
- game.pl = deref(p);
+ game.pl = stead.deref(p);
return goto(o.where);
end
function disabled(o)
- return isDisabled(ref(o))
+ return isDisabled(stead.ref(o))
end
function disable(o)
- o = ref(o)
+ o = stead.ref(o)
if isObject(o) then
o:disable()
end
@@ -2740,7 +2742,7 @@ function disable(o)
end
function enable(o)
- o = ref(o)
+ o = stead.ref(o)
if isObject(o) then
o:enable()
end
@@ -2748,7 +2750,7 @@ function enable(o)
end
function disable_all(o)
- o = ref(o)
+ o = stead.ref(o)
if isObject(o) or isList(o) then
o:disable_all()
end
@@ -2756,7 +2758,7 @@ function disable_all(o)
end
function enable_all(o)
- o = ref(o)
+ o = stead.ref(o)
if isObject(o) or isList(o) then
o:enable_all()
end
@@ -2880,10 +2882,10 @@ stead.objects = function(s)
allocator = obj {
nam = 'allocator',
get = function(s, n, c)
- if isObject(ref(n)) and stead.api_version >= "1.3.0" then -- static?
- return ref(n);
+ if isObject(stead.ref(n)) and stead.api_version >= "1.3.0" then -- static?
+ return stead.ref(n);
end
- local v = ref(c);
+ local v = stead.ref(c);
if not v then
error ("Null object in allocator: "..tostring(c));
end
@@ -2893,7 +2895,7 @@ stead.objects = function(s)
return v
end,
delete = function(s, w)
- w = ref(w);
+ w = stead.ref(w);
if type(w.key_name) ~= 'string' then
return
end
@@ -2903,7 +2905,7 @@ stead.objects = function(s)
end
end,
new = function(s, n, key)
- local v = ref(n);
+ local v = stead.ref(n);
if type(v) ~= 'table' or type(n) ~= 'string' then
error ("Error in new.", 2);
end
diff --git a/stead/xact.lua b/stead/xact.lua
index ec03aae..0eac986 100644
--- a/stead/xact.lua
+++ b/stead/xact.lua
@@ -62,7 +62,7 @@ __do_xact = function(str, self)
else
oo = objs():srch(o)
if not oo then
- oo = ref(o, true)
+ oo = stead.ref(o, true)
end
end
elseif isObject(self) then
@@ -72,7 +72,7 @@ __do_xact = function(str, self)
error("Wrong link: "..s, 3);
end
d = d:gsub("\001", delim);
- return xref(d, ref(oo, true), unpack(aarg));
+ return xref(d, stead.ref(oo, true), unpack(aarg));
end
if type(str) ~= 'string' then return end
local s = stead.string.gsub(str, '\\?[\\{}]',