mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
Lunatic translator: qgetsysstr.
git-svn-id: https://svn.eduke32.com/eduke32@3512 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
db2c24b7ef
commit
e6fd95dde8
5 changed files with 76 additions and 3 deletions
|
@ -615,6 +615,46 @@ function _getkeyname(qdst, gfuncnum, which)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local EDUKE32_VERSION_STR = "EDuke32 2.0.0devel "..ffi.string(ffiC.s_buildRev)
|
||||||
|
|
||||||
|
local function quote_strcpy(dst, src)
|
||||||
|
local i=-1
|
||||||
|
repeat
|
||||||
|
i = i+1
|
||||||
|
dst[i] = src[i]
|
||||||
|
until (src[i]==0 or i==MAXQUOTELEN-1)
|
||||||
|
dst[i] = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function _qgetsysstr(qdst, what, pli)
|
||||||
|
local dst = bcheck.quote_idx(qdst)
|
||||||
|
|
||||||
|
local idx = ffiC.ud.volume_number*con_lang.MAXLEVELS + ffiC.ud.level_number
|
||||||
|
local MAXIDX = ffi.sizeof(ffiC.MapInfo) / ffi.sizeof(ffiC.MapInfo[0])
|
||||||
|
|
||||||
|
if (what == ffiC.STR_MAPNAME) then
|
||||||
|
assert(not (idx >= MAXIDX+0ULL))
|
||||||
|
local src = ffiC.MapInfo[idx].name
|
||||||
|
assert(src ~= nil)
|
||||||
|
quote_strcpy(dst, src)
|
||||||
|
elseif (what == ffiC.STR_MAPFILENAME) then
|
||||||
|
assert(not (idx >= MAXIDX+0ULL))
|
||||||
|
local src = ffiC.MapInfo[idx].filename
|
||||||
|
assert(src ~= nil)
|
||||||
|
quote_strcpy(dst, src)
|
||||||
|
elseif (what == ffiC.STR_PLAYERNAME) then
|
||||||
|
ffi.copy(dst, ffiC.g_player[pli].user_name, ffi.sizeof(ffiC.g_player[0].user_name))
|
||||||
|
elseif (what == ffiC.STR_VERSION) then
|
||||||
|
ffi.copy(dst, EDUKE32_VERSION_STR)
|
||||||
|
elseif (what == ffiC.STR_GAMETYPE) then
|
||||||
|
ffi.copy(dst, "multiplayer not yet implemented") -- TODO_MP
|
||||||
|
elseif (what == ffiC.STR_VOLUMENAME) then
|
||||||
|
ffi.copy(dst, "STR_VOLUMENAME: NYI")
|
||||||
|
else
|
||||||
|
error("unknown system string ID "..what, 2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- text rendering
|
-- text rendering
|
||||||
function _minitext(x, y, qnum, shade, pal)
|
function _minitext(x, y, qnum, shade, pal)
|
||||||
|
|
|
@ -37,7 +37,7 @@ local gv_access = {}
|
||||||
-- Notes: do not declare multiple pointers on one line (this is bad:
|
-- Notes: do not declare multiple pointers on one line (this is bad:
|
||||||
-- "int32_t *a, *b"). Do not name array arguments (or add a space
|
-- "int32_t *a, *b"). Do not name array arguments (or add a space
|
||||||
-- between the identifier and the '[' instead).
|
-- between the identifier and the '[' instead).
|
||||||
function decl(str)
|
function decl(str, ...)
|
||||||
-- NOTE that the regexp also catches non-array/non-function identifiers
|
-- NOTE that the regexp also catches non-array/non-function identifiers
|
||||||
-- like "user_defs ud;"
|
-- like "user_defs ud;"
|
||||||
for varname in string.gmatch(str, "([%a_][%w_]*)[[(;]") do
|
for varname in string.gmatch(str, "([%a_][%w_]*)[[(;]") do
|
||||||
|
@ -47,7 +47,7 @@ function decl(str)
|
||||||
gv_access[varname] = true
|
gv_access[varname] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
ffi.cdef(str)
|
ffi.cdef(str, ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Load the definitions common to the game's and editor's Lua interface.
|
-- Load the definitions common to the game's and editor's Lua interface.
|
||||||
|
@ -473,6 +473,12 @@ typedef struct {
|
||||||
char display_bonus_screen;
|
char display_bonus_screen;
|
||||||
char show_level_text;
|
char show_level_text;
|
||||||
} user_defs;
|
} user_defs;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int32_t partime, designertime;
|
||||||
|
char *name, *filename, *musicfn, *alt_musicfn;
|
||||||
|
void *savedstate;
|
||||||
|
} map_t;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
-- EXTERNALLY EXPOSED GAME VARIABLES
|
-- EXTERNALLY EXPOSED GAME VARIABLES
|
||||||
|
@ -482,7 +488,10 @@ hudweapon_t hudweap;
|
||||||
]]
|
]]
|
||||||
|
|
||||||
-- INTERNAL VARIABLES/FUNCTIONS
|
-- INTERNAL VARIABLES/FUNCTIONS
|
||||||
|
decl("map_t MapInfo[($+1)*$];", con_lang.MAXVOLUMES, con_lang.MAXLEVELS)
|
||||||
|
|
||||||
decl[[
|
decl[[
|
||||||
|
const char *s_buildRev;
|
||||||
const char *g_sizes_of_what[];
|
const char *g_sizes_of_what[];
|
||||||
int32_t g_sizes_of[];
|
int32_t g_sizes_of[];
|
||||||
int32_t g_elCallDepth;
|
int32_t g_elCallDepth;
|
||||||
|
|
|
@ -68,6 +68,7 @@ luaJIT_BC_defs_common;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
s_buildRev;
|
||||||
g_sizes_of_what;
|
g_sizes_of_what;
|
||||||
g_sizes_of;
|
g_sizes_of;
|
||||||
g_elCallDepth;
|
g_elCallDepth;
|
||||||
|
|
|
@ -1760,7 +1760,7 @@ local Cinner = {
|
||||||
qsprintf = sp1 * tok.rvar * sp1 * tok.rvar * (sp1 * tok.rvar)^-32
|
qsprintf = sp1 * tok.rvar * sp1 * tok.rvar * (sp1 * tok.rvar)^-32
|
||||||
/ handle.qsprintf,
|
/ handle.qsprintf,
|
||||||
qgetsysstr = cmd(R,R)
|
qgetsysstr = cmd(R,R)
|
||||||
/ handle.NYI,
|
/ "_con._qgetsysstr(%1,%2,_pli)",
|
||||||
qstrcat = cmd(R,R)
|
qstrcat = cmd(R,R)
|
||||||
/ "_con._qstrcat(%1,%2)",
|
/ "_con._qstrcat(%1,%2)",
|
||||||
qstrcpy = cmd(R,R)
|
qstrcpy = cmd(R,R)
|
||||||
|
|
|
@ -6,6 +6,14 @@ gamevar n -12345678 0 // a number having length 9 in the decimal representation
|
||||||
// overlong string at definition (should warn)
|
// overlong string at definition (should warn)
|
||||||
definequote 400 123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789=123456789-
|
definequote 400 123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789=123456789-
|
||||||
|
|
||||||
|
// alloc some quotes, test empty quote syntax
|
||||||
|
definequote 401
|
||||||
|
definequote 402
|
||||||
|
definequote 403
|
||||||
|
definequote 404
|
||||||
|
definequote 405
|
||||||
|
definequote 406
|
||||||
|
|
||||||
onevent EVENT_ENTERLEVEL
|
onevent EVENT_ENTERLEVEL
|
||||||
redefinequote 114 QWE
|
redefinequote 114 QWE
|
||||||
|
|
||||||
|
@ -63,4 +71,19 @@ onevent EVENT_ENTERLEVEL
|
||||||
redefinequote 117 123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789=123456789-
|
redefinequote 117 123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789=123456789-
|
||||||
userquote 117 // should end in "=1234567" (= total length 127 = MAXQUOTELEN-1)
|
userquote 117 // should end in "=1234567" (= total length 127 = MAXQUOTELEN-1)
|
||||||
userquote 400 // same thing
|
userquote 400 // same thing
|
||||||
|
|
||||||
|
// test passing empty quote
|
||||||
|
userquote 401
|
||||||
|
|
||||||
|
// qgetsysstr test
|
||||||
|
qgetsysstr 401 STR_MAPNAME
|
||||||
|
qgetsysstr 402 STR_MAPFILENAME
|
||||||
|
qgetsysstr 403 STR_PLAYERNAME
|
||||||
|
qgetsysstr 404 STR_VERSION
|
||||||
|
qgetsysstr 405 STR_GAMETYPE
|
||||||
|
qgetsysstr 406 STR_VOLUMENAME
|
||||||
|
|
||||||
|
redefinequote 400 %s | %s | %s | %s | %s | %s
|
||||||
|
qsprintf 400 /*<-*/ 400 /*args:*/ 401 402 403 404 405 406
|
||||||
|
userquote 400
|
||||||
endevent
|
endevent
|
||||||
|
|
Loading…
Reference in a new issue