mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-11 07:11:39 +00:00
Lunatic: document engine.*shadetab() functions. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4262 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
7ca71203f0
commit
b6e9c0b409
5 changed files with 78 additions and 6 deletions
|
@ -1540,7 +1540,6 @@ function gv_access._set_guniqhudid(id)
|
||||||
ffiC.guniqhudid = id
|
ffiC.guniqhudid = id
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TODO: make return 1-based index?
|
|
||||||
function gv_access.currentEpisode()
|
function gv_access.currentEpisode()
|
||||||
return ffiC.ud.volume_number + 1
|
return ffiC.ud.volume_number + 1
|
||||||
end
|
end
|
||||||
|
|
|
@ -345,6 +345,17 @@ The maximum permissible weapon index plus one.
|
||||||
TODO
|
TODO
|
||||||
//////////
|
//////////
|
||||||
|
|
||||||
|
`gv.LUNATIC_CLIENT`::
|
||||||
|
|
||||||
|
A constant indicating which program Lua is embedded into. It can be compared
|
||||||
|
for (in)equality with:
|
||||||
|
+
|
||||||
|
* `gv.LUNATIC_CLIENT_EDUKE32`
|
||||||
|
* `gv.LUNATIC_CLIENT_MAPSTER32`
|
||||||
|
+
|
||||||
|
(Mapster32 supports a subset of Lunatic that is not documented and subject to
|
||||||
|
change at any time.)
|
||||||
|
|
||||||
Variables
|
Variables
|
||||||
^^^^^^^^^
|
^^^^^^^^^
|
||||||
|
|
||||||
|
@ -2111,6 +2122,64 @@ respect to how pixels of objects farther away are drawn. For example:
|
||||||
latexmath:[$i$] are achieved by setting palookup[sh][latexmath:[$i$]] to
|
latexmath:[$i$] are achieved by setting palookup[sh][latexmath:[$i$]] to
|
||||||
palookup[0][latexmath:[$i$]] for each shade sh.
|
palookup[0][latexmath:[$i$]] for each shade sh.
|
||||||
|
|
||||||
|
===== Shade table functions
|
||||||
|
|
||||||
|
`sht = engine.shadetab()`::
|
||||||
|
|
||||||
|
Creates and returns a new shade table object `sht` with all entries initialized
|
||||||
|
to zero. This object can be indexed once with a shade index from 0 to 31,
|
||||||
|
yielding a reference to an array of 256 8-bit unsigned integers. Thus, shade
|
||||||
|
table objects can be used just as indicated in the notation above: `sht[sh][i]`
|
||||||
|
is the resulting color index for shade `sh` and input color index `i`.
|
||||||
|
|
||||||
|
`sht = engine.getshadetab(palnum)`::
|
||||||
|
|
||||||
|
Returns a new shade table object `sht` containing the values for the palookup
|
||||||
|
table of pal `palnum`, provided it is not an alias for the default one (see
|
||||||
|
below). Modifying the returned `sht` does not alter the actual engine-side
|
||||||
|
shade table. An unspecified number of pal indices are reserved from the end of
|
||||||
|
the hard limit 255; attempting to retrieve a shade table for a reserved pal
|
||||||
|
raises as error.
|
||||||
|
+
|
||||||
|
At engine initialization, the shade tables for all non-zero pal numbers are
|
||||||
|
aliased to the default pal 0 one. Subsequently, custom palookup tables are
|
||||||
|
either loaded from LOOKUP.DAT, created by appropriate DEF directives (`fogpal`
|
||||||
|
or `makepalookup`), or assigned using `engine.setshadetab`. If the table for
|
||||||
|
pal `palnum` is aliased to the default one when `getshadetab` is called, *nil*
|
||||||
|
is returned.
|
||||||
|
|
||||||
|
`engine.setshadetab(palnum, sht)`::
|
||||||
|
|
||||||
|
Copies the shade table `sht` to the engine-side palookup table for pal
|
||||||
|
`palnum`. An error is issued if an attempt is made to copy to a reserved
|
||||||
|
`palnum`.
|
||||||
|
+
|
||||||
|
When running in EDuke32, there are additional restrictions:
|
||||||
|
+
|
||||||
|
* A `palnum` for which a shade table has already been registered (that is, one
|
||||||
|
which is *not* aliased to the default one) cannot be re-assigned to.
|
||||||
|
+
|
||||||
|
* `setshadetab` may only be called at first initialization time, that is, when
|
||||||
|
the value of `LUNATIC_FIRST_TIME` is *true*. (`LUNATIC_FIRST_TIME` is a
|
||||||
|
variable in the global environment that indicates whether the Lua game state
|
||||||
|
is created for the very first time and the game is not yet running.)
|
||||||
|
|
||||||
|
//////////
|
||||||
|
===== Shade table methods
|
||||||
|
|
||||||
|
`newsht = sht:remap16(tab)`::
|
||||||
|
|
||||||
|
Rearranges consecutive runs of 16 values of every shade 256-tuple of `sht` by
|
||||||
|
the 0-based selection given by the 0-based sequence `tab`.
|
||||||
|
+
|
||||||
|
.Example
|
||||||
|
[source]
|
||||||
|
----------
|
||||||
|
local perm16 = { [0]=0,1, 2,3, 5,4, 6,7, 8,13, 10,11, 12,9, 14,15 }
|
||||||
|
local newsht = engine.getshadetab(0):remap16(perm16)
|
||||||
|
----------
|
||||||
|
//////////
|
||||||
|
|
||||||
|
|
||||||
The `fs` module -- virtual file system facilities
|
The `fs` module -- virtual file system facilities
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
|
@ -83,7 +83,7 @@ engine.RESERVEDPALS = RESERVEDPALS
|
||||||
|
|
||||||
local function check_palidx(i)
|
local function check_palidx(i)
|
||||||
if (type(i) ~= "number" or not (i >= 0 and i <= 255-RESERVEDPALS)) then
|
if (type(i) ~= "number" or not (i >= 0 and i <= 255-RESERVEDPALS)) then
|
||||||
error("invalid argument #1: palette index must be in the range [0 .. "..255-RESERVEDPALS.."]", 3)
|
error("invalid argument #1: palette swap index must be in the range [0 .. "..255-RESERVEDPALS.."]", 3)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -88,8 +88,6 @@ gameevent
|
||||||
sprite[spr].pal = 6
|
sprite[spr].pal = 6
|
||||||
end
|
end
|
||||||
|
|
||||||
--this is a problem
|
|
||||||
--actor = {}
|
|
||||||
actor[562].flags = bit.bor(actor[562].flags, 2); -- pal 6 with goggles on front SEENINE
|
actor[562].flags = bit.bor(actor[562].flags, 2); -- pal 6 with goggles on front SEENINE
|
||||||
end
|
end
|
||||||
---[[
|
---[[
|
||||||
|
@ -173,6 +171,8 @@ gameevent
|
||||||
|
|
||||||
checkfail("require('engine').setshadetab(200, nil)",
|
checkfail("require('engine').setshadetab(200, nil)",
|
||||||
"setshadetab() may be run only while LUNATIC_FIRST_TIME is true")
|
"setshadetab() may be run only while LUNATIC_FIRST_TIME is true")
|
||||||
|
|
||||||
|
checkfail("sprite[0]:set_picnum(-10)", "invalid tile number")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,6 +193,9 @@ checkfail('print(sprite._nextspritesect[4].whatfield)', "attempt to index a numb
|
||||||
|
|
||||||
-- gamevars are created using a special different mechanism
|
-- gamevars are created using a special different mechanism
|
||||||
checkfail("new_global = 345", "attempt to write into the global environment")
|
checkfail("new_global = 345", "attempt to write into the global environment")
|
||||||
|
-- Can't reassign to existing vars either
|
||||||
|
assert(actor ~= nil)
|
||||||
|
checkfail("actor = 345", "attempt to write into the global environment")
|
||||||
|
|
||||||
-- can't redefine constants in 'gv'
|
-- can't redefine constants in 'gv'
|
||||||
checkfail('gv.CEILING = 3', "attempt to write to constant location")
|
checkfail('gv.CEILING = 3', "attempt to write to constant location")
|
||||||
|
@ -223,7 +226,6 @@ checkfail("do local bt=require'test.test_bitar'; bt.QWE=1; end", "modifying modu
|
||||||
-- the cdata returned by player[] can't be made into a pointer!
|
-- the cdata returned by player[] can't be made into a pointer!
|
||||||
checkfail("do local pl=player[0]; i=pl[1]; end")
|
checkfail("do local pl=player[0]; i=pl[1]; end")
|
||||||
checkfail("do local ud=gv.ud.camerasprite; end", "access forbidden") -- test for proper decl()
|
checkfail("do local ud=gv.ud.camerasprite; end", "access forbidden") -- test for proper decl()
|
||||||
checkfail("sprite[0]:set_picnum(-10)", "invalid tile number")
|
|
||||||
checkfail("gv.g_sizes_of=nil; print(gv.g_sizes_of[0])", "write access forbidden")
|
checkfail("gv.g_sizes_of=nil; print(gv.g_sizes_of[0])", "write access forbidden")
|
||||||
checkfail("gv.cam.sect=-1", "invalid sector number")
|
checkfail("gv.cam.sect=-1", "invalid sector number")
|
||||||
checkfail("local flag=gv.SFLAG_NULL", "missing declaration")
|
checkfail("local flag=gv.SFLAG_NULL", "missing declaration")
|
||||||
|
|
|
@ -160,7 +160,7 @@ local function create_base_shtab_2(basesht)
|
||||||
local basesht = basesht or engine.getshadetab(0)
|
local basesht = basesht or engine.getshadetab(0)
|
||||||
|
|
||||||
local perm16 = { [0]=0,1, 2,3, 5,4, 6,7, 8,13, 10,11, 12,9, 14,15 }
|
local perm16 = { [0]=0,1, 2,3, 5,4, 6,7, 8,13, 10,11, 12,9, 14,15 }
|
||||||
local sht = engine.shadetab():remap16(perm16)
|
basesht = basesht:remap16(perm16)
|
||||||
|
|
||||||
local iperm16 = {}
|
local iperm16 = {}
|
||||||
for i=0,15 do
|
for i=0,15 do
|
||||||
|
@ -177,6 +177,8 @@ local function create_base_shtab_2(basesht)
|
||||||
baseidx[i] = i < 192 and 32*floor(i/32) or 16*floor(i/16)
|
baseidx[i] = i < 192 and 32*floor(i/32) or 16*floor(i/16)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local sht = engine.shadetab()
|
||||||
|
|
||||||
for sh=0,31 do
|
for sh=0,31 do
|
||||||
for i=0,255-16 do
|
for i=0,255-16 do
|
||||||
local bi = baseidx[i]
|
local bi = baseidx[i]
|
||||||
|
|
Loading…
Reference in a new issue