Build 3154
SVN-
Generale
Fix useractor enemystayput breakage
Nickname SVN e nomi Git sono unificati per persona.
Fix useractor enemystayput breakage
Make it possible to build a standalone libcache1d.so.
Exporting only (de)compression functions. Also, different reader/writer functions can be set.
Couple of tweaks in player.c to match all ProjectileData[...].xxx with a regexp.
It would be something like "ProjectileData\[([^]]+)]\.([a-z_]+)".
Fix demo playback with diff application enabled.
This requires ripping out the .proj member of tiledata_t back into ProjectileData[] again because it was the only one in g_tile[] that changed during the course of a game. The g_tile[] array is now also correctly flagged as "constant throughout a game" (DS_NOCHK). Savegame version bumped.
Trivial G_Util_PtrToIdx*() tweaks.
Fix viewing through moving cameras.
It's still not pretty though since there's no interpolation from G_DrawRooms().
Lunatic reorganization part 2: split into engine and editor/game parts.
On the engine side (functions starting with L_), there are now the basic parts like state creation and running code from strings and files. The game and editor can add to that by e.g. loading whatever they please into the state. Their functions start with El_ and Em_, respectively. The Lua scripts still reside in source/lunatic, even for the common ones. This is because they will be embedded into the binaries as bytecode or compressed source eventually, so their location on disk will be irrelevant.
Lunatic reorganization part 1: two renames and one deletion.
See the next commit for details.
Clean up texture loading code etc. in polymost.c, no functional changes.
Introduce a per-tile bit preventing fullbrights in GL modes, use for LOADSCREEN.
fix rotatesprite with no screen scaling and non-widescreen aspects.
Also, enable showing sprites in Mapster32's overhead view again, since that was one (the only?) use of that code path. The uninitialized read was introduced in r2927.
When looking through a camera, don't do third person view.
Also, reorganize some G_DrawRooms() code a little without changing anything.
When found a camera sprite for viewscreen, set position etc. immediately.
Instead of later in P_ProcessInput(). This fixes one drawrooms() call in between where the sectnum is the camera's, but the position the player's, which can lead to a slow "outer view" render in Polymer.
Make glbuild C++-safe.
Fix warning in jaudiolib due to void ptr arith.
Fix warnings from pointer math with the trackers.
Add automatic tracking to the sector[], wall[], sprite[] and tsprite[]
arrays; any write access to them will run the corresponding hook and write to the [sector/wall/sprite/tsprite]clean array. Note: tsprite and sprite use the same hook and require running a few more instructions per access in order to disambiguiate; this could be made more optimal (like the other arrays) by clearly separating the types in the game code. Note #2: taking a member's address currently marks it dirty because of tons of helper functions across the editor code. I don't know how many read-only accesses we have after taking a member address, but it could also be fixed with some finessing of the code.
Fix the C++ build on Linux with LTO.
Fix the Linux mapster32 build with LTO enabled.
Fix synthesis fallout after ivfrate addition.
Fix C90 compliance warning in sdlmusic
Fix warning from r3128
Make ivfrate build standalone, Makefile tweaks.
New utility ivfrate(.exe) and a couple of small VP8 changes.
The command-line utility can query and set the frame rate of IVF files, since apparently encoders don't care too much about setting proper values in the IVF header. Also, add the utility to the synthesis build. On the playback side in EDuke32, get rid of the 1/(2*fps) "correction" if the FPS numerator is <1000 (presumably used in older encoders) and properly print the frame rate's fractional part.
"fix" building.
Fix USE_OPENGL=0 build.
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.