LunaCON: hook up qstrdim and screentext.

Also add some recent keywords to the list in con_lang.lua which I had
forgotten all along.

git-svn-id: https://svn.eduke32.com/eduke32@3845 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
helixhorned 2013-06-01 20:09:45 +00:00
parent 75313a78c8
commit 7fcb577f51
4 changed files with 60 additions and 4 deletions

View file

@ -947,6 +947,7 @@ lpeg.P(false) +
"shoot" + "shoot" +
"shiftvarr" + "shiftvarr" +
"shiftvarl" + "shiftvarl" +
"shadeto" +
"setwall" + "setwall" +
"setvarvar" + "setvarvar" +
"setvar" + "setvar" +
@ -976,6 +977,7 @@ lpeg.P(false) +
"sectgethitag" + "sectgethitag" +
"sectclearinterpolation" + "sectclearinterpolation" +
"scriptsize" + "scriptsize" +
"screentext" +
"savenn" + "savenn" +
"savemapstate" + "savemapstate" +
"savegamevar" + "savegamevar" +
@ -1001,6 +1003,7 @@ lpeg.P(false) +
"qsubstr" + "qsubstr" +
"qstrncat" + "qstrncat" +
"qstrlen" + "qstrlen" +
"qstrdim" +
"qstrcpy" + "qstrcpy" +
"qstrcat" + "qstrcat" +
"qsprintf" + "qsprintf" +
@ -1078,6 +1081,7 @@ lpeg.P(false) +
"ifserver" + "ifserver" +
"ifrnd" + "ifrnd" +
"ifrespawn" + "ifrespawn" +
"ifplayersl" +
"ifpinventory" + "ifpinventory" +
"ifphealthl" + "ifphealthl" +
"ifpdistl" + "ifpdistl" +
@ -1184,11 +1188,13 @@ lpeg.P(false) +
"enhanced" + "enhanced" +
"endswitch" + "endswitch" +
"ends" + "ends" +
"endoflevel" +
"endofgame" + "endofgame" +
"endevent" + "endevent" +
"enda" + "enda" +
"else" + "else" +
"echo" + "echo" +
"dynamicsoundremap" +
"dynamicremap" + "dynamicremap" +
"dragpoint" + "dragpoint" +
"divvarvar" + "divvarvar" +
@ -1254,5 +1260,6 @@ lpeg.P(false) +
"actor" + "actor" +
"activatecheat" + "activatecheat" +
"activatebysector" + "activatebysector" +
"activate" +
"action" + "action" +
lpeg.P(false) lpeg.P(false)

View file

@ -792,15 +792,19 @@ function _digitalnumber(tilenum, x, y, num, shade, pal,
orientation, cx1, cy1, cx2, cy2, zoom) orientation, cx1, cy1, cx2, cy2, zoom)
end end
function _gametext(tilenum, x, y, qnum, shade, pal, orientation, local function text_check_common(tilenum, orientation)
cx1, cy1, cx2, cy2, zoom)
if (tilenum >= ffiC.MAXTILES-255+0ULL) then if (tilenum >= ffiC.MAXTILES-255+0ULL) then
error("invalid base tile number "..tilenum, 2) error("invalid base tile number "..tilenum, 3)
end end
return bit.band(orientation, 4095) -- ROTATESPRITE_MAX-1
end
function _gametext(tilenum, x, y, qnum, shade, pal, orientation,
cx1, cy1, cx2, cy2, zoom)
orientation = text_check_common(tilenum, orientation)
local cstr = bcheck.quote_idx(qnum) local cstr = bcheck.quote_idx(qnum)
orientation = bit.band(orientation, 4095) -- ROTATESPRITE_MAX-1
ffiC.G_PrintGameText(0, tilenum, bit.arshift(x,1), y, cstr, shade, pal, ffiC.G_PrintGameText(0, tilenum, bit.arshift(x,1), y, cstr, shade, pal,
orientation, cx1, cy1, cx2, cy2, zoom) orientation, cx1, cy1, cx2, cy2, zoom)
end end
@ -810,6 +814,26 @@ end
-- x86 when clicking wildly through its menu. -- x86 when clicking wildly through its menu.
jit.off(_gametext) jit.off(_gametext)
function _screentext(tilenum, x, y, z, blockangle, charangle, q, shade, pal, orientation,
alpha, xspace, yline, xbetween, ybetween, f, x1, y1, x2, y2)
orientation = text_check_common(tilenum, orientation)
local cstr = bcheck.quote_idx(q)
ffiC.G_ScreenText(tilenum, x, y, z, blockangle, charangle, cstr, shade, pal, orientation,
alpha, xspace, yline, xbetween, ybetween, f, x1, y1, x2, y2)
end
function _qstrdim(tilenum, x, y, z, blockangle, q, orientation,
xspace, yline, xbetween, ybetween, f, x1, y1, x2, y2)
orientation = text_check_common(tilenum, orientation)
local cstr = bcheck.quote_idx(q)
local dim = ffiC.G_ScreenTextSize(tilenum, x, y, z, blockangle, cstr, orientation,
xspace, yline, xbetween, ybetween, f, x1, y1, x2, y2);
return dim.x, dim.y
end
local D = { local D = {
-- TODO: dynamic tile remapping -- TODO: dynamic tile remapping
ACTIVATOR = 2, ACTIVATOR = 2,

View file

@ -651,6 +651,21 @@ int32_t G_PrintGameText(int32_t f, int32_t tile, int32_t x, int32_t y, const
int32_t s, int32_t p, int32_t o, int32_t s, int32_t p, int32_t o,
int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t z); int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t z);
typedef struct {
int32_t x, y;
} vec2_t;
vec2_t G_ScreenText(const int32_t font,
int32_t x, int32_t y, const int32_t z, const int32_t blockangle, const int32_t charangle,
const char *str, const int32_t shade, int32_t pal, int32_t o, const int32_t alpha,
int32_t xspace, int32_t yline, int32_t xbetween, int32_t ybetween, const int32_t f,
const int32_t x1, const int32_t y1, const int32_t x2, const int32_t y2);
vec2_t G_ScreenTextSize(const int32_t font,
int32_t x, int32_t y, const int32_t z, const int32_t blockangle,
const char *str, const int32_t o,
int32_t xspace, int32_t yline, int32_t xbetween, int32_t ybetween,
const int32_t f,
int32_t x1, int32_t y1, int32_t x2, int32_t y2);
void G_SaveMapState(void); void G_SaveMapState(void);
void G_RestoreMapState(void); void G_RestoreMapState(void);
]] ]]

View file

@ -1388,6 +1388,8 @@ local Couter = {
--- 2. Defines and Meta-Settings --- 2. Defines and Meta-Settings
dynamicremap = cmd() dynamicremap = cmd()
/ Cmd.dynamicremap, / Cmd.dynamicremap,
dynamicsoundremap = cmd()
/ Cmd.NYI("`dynamicsoundremap'"),
setcfgname = sp1 * tok.filename setcfgname = sp1 * tok.filename
/ Cmd.nyi("`setcfgname'"), / Cmd.nyi("`setcfgname'"),
setdefname = sp1 * tok.filename setdefname = sp1 * tok.filename
@ -2299,6 +2301,14 @@ local Cinner = {
/ handle.getzrange, / handle.getzrange,
-- screen text and numbers display -- screen text and numbers display
qstrdim = cmd(W,W,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R) -- 2W 16R
/ function(...)
return format("%s,%s=_con._qstrdim("..n_s_fmt(16)..")", ...)
end,
screentext = cmd(R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R) -- 20 R
/ function(...)
return format("_con._screentext("..n_s_fmt(20)..")", ...)
end,
gametext = cmd(R,R,R,R,R,R,R,R,R,R,R) -- 11 R gametext = cmd(R,R,R,R,R,R,R,R,R,R,R) -- 11 R
/ function(...) / function(...)
return format("_con._gametext("..n_s_fmt(11)..",65536)", ...) return format("_con._gametext("..n_s_fmt(11)..",65536)", ...)