What the commit does:
1. adds curl libraries for mingw from http://curl.haxx.se/gknw.net/7.34.0/dist-w32/curl-7.34.0-devel-mingw32.zip ;
2. adds to the linker "wldap32" and curl libraries;
3. adds "-t" parameter to the client compiled in debug mode, in order to it will start in windowed mode;
4. adds "-D_DEBUG" option to debug modes, in order to get more debug informations;
5. adds icon also to AC server and master binaries;
6. lets to see debug info in console from client compiled in debug mode (removed "-mwindows" and added "gdi32" library to the linker);
7. adds missing jpegenc.h, modelcache.h, scale.h headers to the project.
- fix possible crash in conc (but it's still an ugly hack)
- fix noob usage of strcmp
- flag some memory leaks (it would be nice, if the author(s) would clean
up the mess himself)
- fix crash in substr
- whitespace cleanup
there are plenty more memory leaks in command.cpp - for example, every
goto in cubescript does not clean up anything
now /savemap after /newmap saves to "newmap.cgz" instead of ".cgz"
also, voting for a nonexistent map in singleplayer leaves the client in
some sort of a broken state. this fix blocks the vote.
and: newmap is blocked in bot modes, since that isn't working stable.
the printf format "llx" can not be used on all platforms (for example,
mingw uses a different name for it)
this patch provides a function, that manually converts a 64-bit integer
to a hex string
Thx, Jpablon
This workaround lowers the optimisation level for those parts of the code,
that gcc 4.7 (and probably other versions) would compile to a binary that
crashes after a while. The previous solution for this so-called "linux bug"
was to use clang instead of gcc.
Thx, Jpablon, for doing all the work on this.
This makefile allows changing the compiler to g++ or requesting debug
binaries without editing the makefile.
The makefile sets default values for CXX and ACDEBUG, then reads values
from the file Makefile_local (if it exists). A commandline parameter
overrules both.
Makefile_local is not part of the repository, so it can be changed without
git caring (or nagging) about it. It is listed in .gitignore.
To switch to g++, create a file "Makefile_local" with the content
"CXX=g++".
To compile debug binaries, type "make clean install ACDEBUG=yes".
When g++ is used, "fast-math" is now enabled.
As zeSKB reported, there was no icon for the game window.
This should now be fixed. We might want to make it transparent in the future,
but we would have to make sure it will be supported by any system.
After first run of git AC version "config/history" file doesn't exist, what causes crash of Windows AC version, which can't find this file.
Commit just adds checking, whether this file exists - "if(!histbuf) return;" in loadhistory() .
Commit fixes also location of some brackets and spaces, in order to keep proper AC style.
This commit fixes the issue: https://github.com/assaultcube/AC/issues/21
Player in spectate mode isn't dead, so when he switches from spectate to active mode, he is still non-dead.
Therefore d->state=="CS_DEAD" doesn't work in such cases.
This commit removes also some aimless line.
starting ac_client from the wrong working directory, where
packages/maps/official/*.cgz globs to an empty list, we
trigger a SIGFPE because of rnd(0):
Program received signal SIGFPE, Arithmetic exception.
0x000000000044d37d in rndmapname () at main.cpp:897
897 char *map = newstring(maps[rnd(maps.length())]);
To test this bug make, for example, 3 long-standing sleeps, add checking of number of sleeps before and after existing "loopv(sleep)",
and later type "/resetsleeps" command in AC - result: 3 sleeps "before" and 1 remains "after".
Explanation by stef: after deleting elements from vectors there are no holes,
so if there were sleeps[0], sleeps[1] and sleeps[2], then after removing sleeps[0] there left
sleeps[0] and sleeps[1], so during next loop cycle this sleeps[0] is neglected (because i=1).
Commit just changes loopv to loopvrev (loop from end to begin).
- press B to get the former filled volume view
- raise the value of tagnumfull to get both views simultaneously
- cubescript parameters should be cleaned up before release
The function will now also take care of obsolete clip entities, which
gives the mapper the opportunity to tag clip areas manually and then
have the envelopped (and therefore obsolete) clip entities removed.
When done, the map will be cleaned of "clip & plclip" tags, since clip
already includes the properties of plclip.
To keep things cheap, only tagged areas inside the editing grid are shown.
I added two variables, tagnum and taglife, to allow playing with the
parameters of the sparklies. Those should be removed later. The default
values work quite well on my really crappy onboard graphics card. Higher
values start dropping fps.
Also, the edit status line now shows the tag value of the cube pointed at.
The patch also fixes the bug, that the edit status line did not show
details about the selection, unless there was at least one entity in the
map.
In addition to the existing clip- and plclip-entities, this patch provides
a new approach to provide the same: clip areas by tagging cubes.
Each cube of a map has a parameter "tag". All tags in all existing ac maps
are currently zero. It is a leftover from cube 1. This patch uses the tag value
to determine, if a cube (from floor to ceiling) should be forbidden for
players (tag 0x80) or every moving object (tag 0x40). Tagclips have several
advantages over classic clip entities: they are fast to establish (mark
area, then /edittag 0x80) and are "cheap" for the engine. Tagclips do not
increase the number of entities. As tagclips are always floor to ceiling,
they can't be used to build stairs or platforms. Tagclips should be
preferred over clip entities, but can coexist without problems.
Technically, setting the tag value to 0x40 or 0x80 causes the physics
engine to handle the cube like a "solid".
Older versions of ac did not obey the map header field "headersize".
When a map was written, only the "version" field was updated, even if
the new written header had a different size. Thanks to bigger headers
in map versions 7 & 8 (and now smaller headers again in 9), the headersize
of basically all official maps is bogus. This fix makes sure, only proper
headersizes are written. It also makes the game tolerate different (bigger)
headers - and keeps their content untouched. Future map format extensions
can use this to add header information without breaking existing map parsers.
This patch establishes a new map format 10, which is identical to format 9,
with the exception that the headersize field is guaranteed to be correct.
Format 10 also allows any amount of additional header data.
This patch also cleans up the transformation routines for old map entities.
fixes some assumptions of the engine about the rendering
of mipmapped solid areas at the edge of the world
(confirm bug with an 8x8 solid in the corner of a /newmap)