June 2013
-
add projectile member .userdata and predefined label PROJ_USERDATA.
Show details
It is a 32-bit signed integer. No version bump necessary, although CON code accessing this new member will not work with earlier revisions (obviously).
-
bound-check defineprojectile tile/sound members.
Show details
Also from Lunatic, make these members read-only and provide methods that allow setting them to either -1 or a number in [0..MAX{TILES,SOUNDS}-1].
-
rename bitint members to *bits instead of *x.
-
General
Fix accessing the wrong animation indices with negative viewtypes.
Show details
(I think; untested.)
-
strip dir prefixes on file-not-found; _getpname, ud.m_player_skill.
-
showview and showviewunbiased.
-
keep status number symbols in actor.STAT instead of gv.STAT_*.
-
General
Allow negating an action's viewtype 5 or 7, meaning to x-flip the shown sprite.
-
add preliminary helper code for local gamevar saving.
-
fix current incarnation of gamevar saving/restoration.
-
prettify listglobals.sh output.
-
properly generate references to gamevars named like Lua keywords.
-
free a couple of file-scope local slots by storing stuff in tables.
-
don't write an int32_t where a char is expected.
-
General
game.c: fix out-of-bounds write in G_GetSubString().
-
tweak sector.STAT.* and other names a little.
-
General
Fix the display of numbers with TEXT_GAMETEXTNUMHACK and TEXT_XOFFSETZERO. (Fix level stats, part 2.)
Show details
The commit revises the definition of qstrdim when TEXT_[XY]OFFSETZERO are used. With these flags, the offsets the user specifies are now the only dimensions the function cares about in terms of tile placement, so depending on the difference between the offset(s) and the size of the final tile, it may be slightly more or less than the dimensions actually displayed on the screen because tile size is never taken into account. (For example, if your font is nominally 9x7 like the Duke bluefont and you use a TEXT_XOFFSETZERO of 5 with a string five characters long, the total x dimension will be 25 even though the last character will overhang that amount by four pixels. If you use a TEXT_XOFFSETZERO of 12 with the same string, the total x width will be 60 even though there will be three pixels of empty space on the right edge.) This change was made because assigning text an arbitrary constant width in general implies an intent to keep character positions constant even with a variable width font, but returning the visible span of pixels on the screen that the tiles cover would have caused the string to move when alignment options other than the top-left were used. In other words, you can now safely use TEXT_[XY]OFFSETZERO with the alignment options and the text won't jiggle. Also, with TEXT_GAMETEXTNUMHACK, numerals are now effectively TEXT_XOFFSETZERO text that respect the above paragraph, so number count displays can look nice with alignment options too. Having to modify the extent/offset code makes me realize that I'm not quite happy with its structure because it gets tangled juggling different concepts like character width, X offset, and spacing, and how they relate when the line wraps or in terms of the final size. Fortunately, it produces correct results as far as I know, and it's not necessarily ugly, just hard to understand. Handle with care.
-
General
Fix display of level stats by fixing G_ScreenText() handling of (orientation & 2).
-
proper handling of dynamic remappings with weapon defaults.
Show details
That is, the gamevars named WEAPONx_* in CON will now have the remapped value if they were not overridden from CON ('gamevar' at file scope). For C-CON, everything except signaling an override from the CON parser is in place.
-
hook up dynamicsoundremap.
-
General
Make S_MenuSound() use stack'd array to get rid of S_StaticToDynamicMenuSound().
-
hook up qstrdim and screentext.
Show details
Also add some recent keywords to the list in con_lang.lua which I had forgotten all along.
-
sector[].ceiling/.floor gets a reference to a ceiling-or-floor struct.
Show details
Also, make sector[].*stat a bitint type. Now, a piece of code could look like this: local sec = sector[i] local ceil = sec.ceiling ceil.statx:flip(sector.STAT.SMOOSH)
-
fix a couple of oversights, tweak some stuff.
-
real user per-player vars.
Show details
The previous behavior was to translate them as global gamevars, since LunaCON currently has no support for multiplayer. However, then some errors would be missed where such gamevars are accessed in no-player context (e.g. EVENT_ENTERLEVEL). On by default, disabled with -fno-playervar.
-
General
Lunatic/classic: in TROR maps (V10), enable non-power-of-two wall drawing.
Show details
Also, fix clearing a bunch in new-format-map (=Lunatic) build.
-
fix mistranslation of CON "else { if" to Lua "elseif".
Show details
When encountering a non-empty statement inside braces, emit "do" ... "end".
-
General
Replace use of preprocessor macro WIN32 with _WIN32. (Blame clang.)
-
General
Make improvements utilizing G_ScreenText().
-
General
For all HUD and text shadows that use pal 4, also use shade 127.
-
General
Text wrapper conversion.
Show details
G_PrintGameText(), minitext_(), G_DrawTXDigiNumZ(), and menutext_() now wrap G_ScreenText(). G_GameTextLen() now wraps G_ScreenTextSize(). G_DrawDigiNum_() now wraps G_DrawTXDigiNumZ().
-
General
Prettify the DEF progress meter by relocating '\n' en masse.
Show details
It should be transparent even with the meter disabled.
-
General
Dynamicsoundremap.
May 2013
-
General
Add qstrdim and screentext, powerful new functions for HUD text.
-
General
Remove an unused variable from startwin.game.c.
-
General
Update credits.
-
also reset per-actor gamevars from spawns originating from C.
Show details
Take care not to do it twice. Still untested though.
-
split 'replace' option for actor chaining flags into soft/hard.
Show details
Hard replacement reassigns the tile flags, while soft replacement bitwise ORs them, as in CON (since some flags might already have been set using commands like spritenoshade).
-
reset per-actor gamevars on actor spawn, untested.
-
General
Compile DEF progress meter only on Windows or if having the startup window.
Show details
The latter checked with #defined HAVE_GTK2, which is probably not correct for every platform. In builds without a startup window, the periods get mingled with stdout output otherwise.
-
implement 'definegametype', allow writing userdef.level_number.
Show details
Also, allow (implicit) actor index -1 to 'sound' like in C-CON and fix MULTIMODE gamevar definition (was 0, not 1).
-
allow setting first walls of TROR sectors independently.
Show details
In 3D mode, Alt+F now only attempts to set the first wall of the aimed at wall, not collecting upper/lower neighbors. For this, press Shift+Alt+F. In 2D mode, they are always collected.
-
General
Fix potential oob access when flipping the floor [F] in 2D mode.
-
General
Replace inline "qsetmode==200" checks with in3dmode().
Show details
Analogously for the negation; remove a couple of redundant decls of "qsetmode".
-
General
Make deletion of an ambient sound MUSICANDSFX sprite stop its sound again.
Show details
Add a test case source/lunatic/test/delmusicsfx.lua.
-
add actor.delete() and various 'length' methods to geom.vec3/ivec3.
-
remove "found `gettspr' outside of EVENT_ANIMATESPRITES" warning.
Show details
Because one may obviously use gettspr/settspr in states called from that event.
-
fix 'zadd' DEF token handling. (Polymer has it right.)
-
General
With DNCOORDS display, print number of sprites currently on the screen.
Show details
Only in debugging builds.
-
add a couple of ud members, gamevars; handle 'dynamicremap' only once.
Show details
Also, allow MAXVOLUMES+1 to first arg of 'music'.