It seems that at the current state it is necessary to protect sending stats/ending game from multiple execution,
as that can happen if you e.g. fail a mission more than once in the same tick (e.g. destroying two essential crates at the same time)
Otherwise you can get a blank / stuck frontend (e.g. when using deagle to shoot the two last crates at the same time)!
the best approach might be to never call the function that sends stats and ends game from any event handler directly, but instead have a flag 'isFailed' that is set to true when any of the possible fails happen and to check that flag every tick to send stats and end game if true
To compile and install you need:
- CMake >= 2.6.0
- FreePascal >= 2.2.0
- Qt >= 4.5.0
- SDL >= 1.2.5
- SDL_net >= 1.2.5
- SDL_mixer >= 1.2
- SDL_image >= 1.2
- SDL_ttf >= 2.0
- Lua >= 5.1.0
- Physfs >= 2.1.0
For server:
- Glasgow Haskell Compiler >= 6.10
- bytestring-show package
- dataenc package
- hslogger package
For videorecording:
- FFmpeg or LibAV
- GLUT (when SDL < 2)
For compressed screenshots:
- libpng
Lua will be automatically built if not found.
PhysFS will internally built unless -DPHYSFS_SYSTEM=on is passed to cmake
(also allows to set PHYSFS_LIBRARY and PHYSFS_INCLUDE_DIR if needed).
1. Configure:
$ cmake .
or
$ cmake -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="install_prefix" \
-DDATA_INSTALL_DIR="data_dir" -DNOSERVER=1 .
Add -DNOSERVER=0 to compile net server (remember to check out the additional
dependencies with the hedgewars-server.cabal configuration file. If you have
Qt installed but it is not found, you can set it up with
-DQT_QMAKE_EXECUTABLE="path_to_qmake".
To get a glimpse of the main configuration options, you may use this command
`cat CMakeLists.txt | grep option`
2. Compile:
$ make
3. Install:
# make install
That's all! Enjoy!