Build 3128
SVN-
Generale
Fix console key changing breakage
Nickname SVN e nomi Git sono unificati per persona.
Fix console key changing breakage
Prettify some code where I felt was necessary.
When binding a key, take care of processing one-to-many binds properly in menu.
This means that the "Keyboard Setup" should now properly reflect the bindings, except in the theoretical case of one gamefunc being bound more than two keys. (What was fixed is the one key to many gamefuncs case.)
Get rid of the code reading in [KeyDefinitions] section of eduke32.cfg.
That section was only ever read in for little profit and never written out! Keyboard input is actually dispatched as OSD commands for a good while, so that old cruft has to go!
Clean up control.c.
- Remove everything using CONTROL_KeyMapping, which was only written to. - Remove unused functions, make local ones static. - Remove private function declarations in _control.h.
Fix one key <--> multiple gamefuncs dispatching.
Fix linking with CLANG=1 by separating $(INVOCATION) into $(COMPILER) and $(LINKER) and removing "-x" from clang as a linker in Makefile.common. Additionally, the Build tools are now affected by CPLUSPLUS=1, for which small corrections have been made.
Fix build error after C++ conversion.
Fix building with SDL 1.2.
Add horrible tracking template; for each structure you'll want to create a
separate tracker type by #defining __TRACKER_NAME and __TRACKER_GLOBAL_OFFSET. eg.: Then if you have a tracked value and a value of the same type at the given offset: Tracker_1<int32_t> trackedInt; int32_t trackedIntDirty = 0; // 4 bytes after trackedIntDirty will become 1 everytime trackedInt changes.
Tweak r3116.
Fix mixed declarations and code in backtrace.c.
Work-in-progress adjustment to the C code to compile under C++. It builds for me without errors using Win32 MinGW-GCC, but it still generates warning soup. No guarantees about MSVC or anything using SDL. Enable C++ by building with CPLUSPLUS=1. C remains the default and should compile with no change in setup.
Credit to Plagman for the idea and doing the work on the game side, which is included in this commit. (Building as C++ will give us features with which we can make improvements and optimizations on the multiplayer code and Polymer.)
Add some compile time defined names for p->inven_icon values. Too bad these values aren't in the same order as the inventory items themselves... (dukeinv_t and dukeinvicon_t values do not match).
engine.c: add bound-check assert failing for sprites in m32's textured 2D mode.
Also, disable drawing sprites in that mode for now.
functionality to rotate or scale RShift-highlighted stuff smoothly.
This is done by pressing LShift and - holding down the left mouse button for scaling, or - the right mouse button for rotating the highlighted walls/sprites with respect to a pivot point determined as the center of the bounding box of all highlighted points. Note that scaling sectors isn't that easy and the current functionality is very rudimentary: there's no z scaling, no xrepeat correction, and sprites aren't touched expect for their position. The user is responsible to maintain map consistency, for example to prevent wall-lines of the same sector crossing each other.
when looking for matching wall in 2nd pt. ins., don't skip gray nextwalls.
This fixes a bug where it's not possible to split a sector under certain circumstances, reported by Micky C here: http://forums.duke4.net/topic/1348-mapster32-problems-and-bugs/page__view__findpost__p__138380 Also, don't allow zero in various 'F functions: Resize selection and Global {shade, visibility} divide.
Work around the transparent line with on-screen chaingun and linear filtering.
We do this by messing with the GL texture that gets uploaded for CHAINGUN. Since this is implemented on the engine side, the static value for CHAINGUN (2536) is used, and the tile dimensions are compared to 211x55 to have a little confidence that the tile wasn't overridden by a mod. Hack indeed.
print determined frame rate to the log.
Currently, the FPS determination is based on libvpx's vpxdec.c code, which uses the FPS provided in the IVF file in one case, and simply sets it to 30 FPS in the other. For the first case, a "correction" is carried out for something which the comments suggest to originate from other (old?) VPX encoder versions.
update structures, find maps case-insensitively in findmaps.sh.
draw lines to linking sprites with LShift, jump to them with +[ or +]
When LShift is pressed and the mouse is over a linking sprite (as determined by the tag labeling system), lines are drawn to all other sprites, and pressing [ or ] will cycle these then. False positives and missed sprites are possible. Additional changes: - consider SE 31 and 32's lotag to NOT be linking, since the ACTIVATOR is what matters. The original maps are inconsistent there. - When pressing Alt+[ or Alt+] and there are no corruptions, say so instead of doing [ or ].
make geom.lua work standalone, fix __eq metamethods for dvec[23]_t.
Hopefully fix the projectile breakage, and add some predefined names for working with the built in statnums
Move win32 "Initialized nedmalloc" message out of the function that prints the Windows version since it doesn't really belong there.
A pretty useless fix from a newer version of kplib than we forked from. I'm just tired of seeing it in my tree. ;)
Retire the actorscrptr[], actorLoadEventScrptr[], SpriteFlags[], ActorType[], SpriteCacheList[], ProjectileData[] and DefaultProjectile[] arrays in favor of a tile_t structure exposed as g_tile[]. This consolidates most of the MAXTILES sized arrays on the game side into one place.
Add EVENT_CHANGEMENU and clean up menus.c a little more.
This event is useful in certain circumstances where you want to skip a menu/screen value and the design of the monster switch statement would require the M_ChangeMenu() call to be intercepted or the unwanted screen will flash for a split second.
Two new player structure members: "autostep" and "autostep_sbw".
These control the maximum difference in height between two sectors that the player will automatically traverse without needing to jump. The latter controls the special case when the player's sector's lotag is ST_1_ABOVE_WATER or p->spritebridge == 1. BYTEVERSION bumped.
Remove unused variable "doretry" from S_PlaySound().
Revise grpfiles[] to include the censored South Korean GRP.
Fix harmless warnings in the Build tools.
WIP networking updates from Jasper Foreman
Comment out the A_GetZLimits() call right before the Bassert() in A_MoveSprite(). This call is a problem because the assertion expects "dasectnum" and spr->sectnum to match, but A_GetZLimits() can itself call A_SetSprite() which results in another call to A_MoveSprite() and can potentially change the sectnum again.
This commit also adds the NOTELEPORT sprite flag, which of course prevents sprites from teleporting.
only let emitshadow affect shadows, not lightmaps.
Lightmaps are already opt-in anyway.
add support for negative lights
And hook them up to cstat 128 (half-submerged, 'c' in mapster).
add a prlight flag to make shadow-less spotlights
And hook it up to SE cstat 64 ('1' in mapster32). This disables both lightmaps and shadow maps for the spotlight; please let me know if you have a usecase where you want lightmaps but no shadow maps for specific lights.
Remove a debug line I accidentally committed a few days ago.