Giugno 2013
-
add projectile member .userdata and predefined label PROJ_USERDATA.
Mostra dettagli
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.
Mostra dettagli
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.
-
Generale
Fix accessing the wrong animation indices with negative viewtypes.
Mostra dettagli
(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_*.
-
Generale
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.
-
Generale
game.c: fix out-of-bounds write in G_GetSubString().
-
tweak sector.STAT.* and other names a little.
-
Generale
Fix the display of numbers with TEXT_GAMETEXTNUMHACK and TEXT_XOFFSETZERO. (Fix level stats, part 2.)
Mostra dettagli
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.
-
Generale
Fix display of level stats by fixing G_ScreenText() handling of (orientation & 2).
-
proper handling of dynamic remappings with weapon defaults.
Mostra dettagli
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.
-
Generale
Make S_MenuSound() use stack'd array to get rid of S_StaticToDynamicMenuSound().
-
hook up qstrdim and screentext.
Mostra dettagli
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.
Mostra dettagli
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.
Mostra dettagli
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.
-
Generale
Lunatic/classic: in TROR maps (V10), enable non-power-of-two wall drawing.
Mostra dettagli
Also, fix clearing a bunch in new-format-map (=Lunatic) build.
-
fix mistranslation of CON "else { if" to Lua "elseif".
Mostra dettagli
When encountering a non-empty statement inside braces, emit "do" ... "end".
-
Generale
Replace use of preprocessor macro WIN32 with _WIN32. (Blame clang.)
-
Generale
Make improvements utilizing G_ScreenText().
-
Generale
For all HUD and text shadows that use pal 4, also use shade 127.
-
Generale
Text wrapper conversion.
Mostra dettagli
G_PrintGameText(), minitext_(), G_DrawTXDigiNumZ(), and menutext_() now wrap G_ScreenText(). G_GameTextLen() now wraps G_ScreenTextSize(). G_DrawDigiNum_() now wraps G_DrawTXDigiNumZ().
-
Generale
Prettify the DEF progress meter by relocating '\n' en masse.
Mostra dettagli
It should be transparent even with the meter disabled.
-
Generale
Dynamicsoundremap.
Maggio 2013
-
Generale
Add qstrdim and screentext, powerful new functions for HUD text.
-
Generale
Remove an unused variable from startwin.game.c.
-
Generale
Update credits.
-
also reset per-actor gamevars from spawns originating from C.
Mostra dettagli
Take care not to do it twice. Still untested though.
-
split 'replace' option for actor chaining flags into soft/hard.
Mostra dettagli
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.
-
Generale
Compile DEF progress meter only on Windows or if having the startup window.
Mostra dettagli
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.
Mostra dettagli
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.
Mostra dettagli
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.
-
Generale
Fix potential oob access when flipping the floor [F] in 2D mode.
-
Generale
Replace inline "qsetmode==200" checks with in3dmode().
Mostra dettagli
Analogously for the negation; remove a couple of redundant decls of "qsetmode".
-
Generale
Make deletion of an ambient sound MUSICANDSFX sprite stop its sound again.
Mostra dettagli
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.
Mostra dettagli
Because one may obviously use gettspr/settspr in states called from that event.
-
fix 'zadd' DEF token handling. (Polymer has it right.)
-
Generale
With DNCOORDS display, print number of sprites currently on the screen.
Mostra dettagli
Only in debugging builds.
-
add a couple of ud members, gamevars; handle 'dynamicremap' only once.
Mostra dettagli
Also, allow MAXVOLUMES+1 to first arg of 'music'.