rocksndiamonds.git
5 years agofixed some bugs with (not) displaying virtual buttons
Holger Schemel [Thu, 15 Nov 2018 00:12:08 +0000 (01:12 +0100)]
fixed some bugs with (not) displaying virtual buttons

This corrects the following situations regarding virtual buttons:

* Fixed displaying virtual buttons while tapes are played.
* Fixed displaying virtual buttons after all players were gone.
* Fixed *not* displaying virtual buttons when tape stopped playing and
  the user can continue playing the game.

5 years agoremoved support for SDL 1.2
Holger Schemel [Wed, 14 Nov 2018 22:30:20 +0000 (23:30 +0100)]
removed support for SDL 1.2

5 years agoadded support for level sketch copy/paste using Ctrl-c/v in level editor
Holger Schemel [Mon, 12 Nov 2018 23:31:34 +0000 (00:31 +0100)]
added support for level sketch copy/paste using Ctrl-c/v in level editor

This enhances the existing support for dumping brushes from the level
editor as level sketches (to STDOUT and/or "stdout.txt", which can
then be added to posts in the R'n'D web forum), as follows:

- Ctrl-c copies the current level (or brush) into the clipboard
- Ctrl-x copies the current level, but as small sized level sketch
- Ctrl-v pastes a level sketch from the clipboard into the current
  level (or brush, if active)

This makes it easy to copy level sketches from the level editor to the
R'n'D web forum, and also from the forum to the level editor (just
temporarily go to the "reply" form for a post containing a level
sketch, then copy the "source code" text of the level sketch to the
clipboard using Ctrl-c, then paste it into the level editor using
Ctrl-v).

This will also make it easy to copy a whole playfield from one level
file to another in the level editor (playfield size will automatically
be adjusted to the size of the pasted playfield).

5 years agomoved (and renamed) global variables to game structure (ZX/ZY)
Holger Schemel [Wed, 14 Nov 2018 20:10:38 +0000 (21:10 +0100)]
moved (and renamed) global variables to game structure (ZX/ZY)

5 years agomoved (and renamed) global variables to game structure (ExitX/ExitY)
Holger Schemel [Wed, 14 Nov 2018 19:59:13 +0000 (20:59 +0100)]
moved (and renamed) global variables to game structure (ExitX/ExitY)

5 years agomoved (and renamed) global variable to game structure (AllPlayersGone)
Holger Schemel [Fri, 9 Nov 2018 07:29:04 +0000 (08:29 +0100)]
moved (and renamed) global variable to game structure (AllPlayersGone)

5 years agoimproved internal handling of "game over" state
Holger Schemel [Thu, 8 Nov 2018 20:40:55 +0000 (21:40 +0100)]
improved internal handling of "game over" state

5 years agomoved game values for score and health from player to game structure
Holger Schemel [Mon, 5 Nov 2018 20:37:56 +0000 (21:37 +0100)]
moved game values for score and health from player to game structure

5 years agomoved flag for "game over" from player to game structure
Holger Schemel [Mon, 5 Nov 2018 20:35:53 +0000 (21:35 +0100)]
moved flag for "game over" from player to game structure

This also removes asymmetric behaviour depending on players being the
"local player" or any other player in team mode (which happened if one
player dies and the other enters the exit, for example -- in one case,
the game will be treated as "game over", in the other case the game
will continue running without asking to play again).

5 years agomoved game values for things still needed from player to game structure
Holger Schemel [Tue, 30 Oct 2018 21:09:29 +0000 (22:09 +0100)]
moved game values for things still needed from player to game structure

5 years agorenamed functions (after removing parameter in previous commit)
Holger Schemel [Tue, 30 Oct 2018 20:56:49 +0000 (21:56 +0100)]
renamed functions (after removing parameter in previous commit)

5 years agoremoved parameter from functions (which always had the same value)
Holger Schemel [Tue, 30 Oct 2018 20:55:52 +0000 (21:55 +0100)]
removed parameter from functions (which always had the same value)

5 years agorenamed function (after removing parameter in previous commit)
Holger Schemel [Tue, 30 Oct 2018 20:53:47 +0000 (21:53 +0100)]
renamed function (after removing parameter in previous commit)

5 years agoremoved parameter from function (which always had the same value)
Holger Schemel [Tue, 30 Oct 2018 20:40:56 +0000 (21:40 +0100)]
removed parameter from function (which always had the same value)

5 years agomoved flags and values for "level solved" from player to game structure
Holger Schemel [Tue, 30 Oct 2018 20:35:09 +0000 (21:35 +0100)]
moved flags and values for "level solved" from player to game structure

5 years agoadded flags for "level solved" and "game over" to EM engine
Holger Schemel [Tue, 30 Oct 2018 19:55:42 +0000 (20:55 +0100)]
added flags for "level solved" and "game over" to EM engine

5 years agochanged variable name
Holger Schemel [Tue, 30 Oct 2018 19:15:42 +0000 (20:15 +0100)]
changed variable name

5 years agoadded custom artwork mappings to fix warnings in level set 'rnd_alan_bond'
Holger Schemel [Mon, 29 Oct 2018 20:03:40 +0000 (21:03 +0100)]
added custom artwork mappings to fix warnings in level set 'rnd_alan_bond'

5 years agosmall code cleanup
Holger Schemel [Mon, 29 Oct 2018 19:51:22 +0000 (20:51 +0100)]
small code cleanup

5 years agoadded compatibility check if Sokoban objects need to be solved
Holger Schemel [Mon, 29 Oct 2018 19:49:41 +0000 (20:49 +0100)]
added compatibility check if Sokoban objects need to be solved

5 years agoadded editor settings if Sokoban fields and objects need to be solved
Holger Schemel [Mon, 29 Oct 2018 19:32:07 +0000 (20:32 +0100)]
added editor settings if Sokoban fields and objects need to be solved

5 years agofixed unexpected behaviour with solving levels with Sokoban elements
Holger Schemel [Sun, 28 Oct 2018 23:26:22 +0000 (00:26 +0100)]
fixed unexpected behaviour with solving levels with Sokoban elements

This patch fixes problems with levels using a different number of
Sokoban objects and Sokoban fields, causing unexpected behaviour.

Before, levels with Sokoban objects, but without Sokoban fields, could
be solved by just pushing any of the Sokoban objects (which triggers a
check if there are any empty Sokoban fields left in the level, which
is not the case in this scenario). In addition, pushing a Sokoban
object to a Sokoban field would also solve a level with two Sokoban
objects, but only one Sokoban field, but not a level with two Sokoban
fields, but only one Sokoban object, which seems confusing or at least
unexpected. (Things get even more complicated and confusing if Sokoban
fields or objects are created during the game, for example as content
of yam-yams.)

Now, Sokoban fields and objects in a level are tracked independently
and the level is only solved if there are no Sokoban fields or objects
left on the playfield.

Also see the following forum post for a description of the problem:
https://www.artsoft.org/forum/viewtopic.php?f=7&t=2654

5 years agofixed bug with Sokoban auto-exit option only working for local player
Holger Schemel [Sun, 28 Oct 2018 15:41:29 +0000 (16:41 +0100)]
fixed bug with Sokoban auto-exit option only working for local player

5 years agoadded special global animation mode 'NO_TITLE' for all but title screens
Holger Schemel [Sat, 27 Oct 2018 18:29:40 +0000 (20:29 +0200)]
added special global animation mode 'NO_TITLE' for all but title screens

5 years agochanged comments from old to new style (auto-generated files)
Holger Schemel [Tue, 23 Oct 2018 21:53:14 +0000 (23:53 +0200)]
changed comments from old to new style (auto-generated files)

5 years agochanged comments from old to new style (multiple-line comments)
Holger Schemel [Tue, 23 Oct 2018 21:50:21 +0000 (23:50 +0200)]
changed comments from old to new style (multiple-line comments)

5 years agochanged comments from old to new style (one-line comments only)
Holger Schemel [Tue, 23 Oct 2018 19:01:23 +0000 (21:01 +0200)]
changed comments from old to new style (one-line comments only)

5 years agoremoved unneeded 'extern' keyword for function declarations in header files
Holger Schemel [Mon, 22 Oct 2018 17:31:12 +0000 (19:31 +0200)]
removed unneeded 'extern' keyword for function declarations in header files

5 years agoremoved 'inline' keyword (compilers are better at this today)
Holger Schemel [Mon, 22 Oct 2018 17:18:35 +0000 (19:18 +0200)]
removed 'inline' keyword (compilers are better at this today)

5 years agoreplaced preprocessor constants with enum values
Holger Schemel [Sun, 21 Oct 2018 12:51:07 +0000 (14:51 +0200)]
replaced preprocessor constants with enum values

5 years agoadded setup option to ask to play again after game is over but not solved
Holger Schemel [Fri, 12 Oct 2018 22:51:51 +0000 (00:51 +0200)]
added setup option to ask to play again after game is over but not solved

5 years agofixed asking all network clients to "play again" after unsolved game end
Holger Schemel [Fri, 12 Oct 2018 22:37:26 +0000 (00:37 +0200)]
fixed asking all network clients to "play again" after unsolved game end

Before, all network clients were asked to play again after a game was
lost, which could cause problems (or at least confusion) when starting
a new network game from different network clients at the same time.

Now, only the network client which started the network game is asked
to play again, while all other clients only confirm that the game is
over and return to the main menu.

5 years agofixed handling game actions during "play again" request in network mode
Holger Schemel [Fri, 12 Oct 2018 21:41:05 +0000 (23:41 +0200)]
fixed handling game actions during "play again" request in network mode

5 years agofixed bug with synchronization problem with "play again" in network mode
Holger Schemel [Fri, 12 Oct 2018 21:21:24 +0000 (23:21 +0200)]
fixed bug with synchronization problem with "play again" in network mode

This bug caused different frame counters at the network server and
network client due to executing "GameActions()" directly after
restarting the game in "RequestRestartGame()", which increments the
frame counter on the client, but not on the server in the first game
frame.

5 years agoadded request dialog to play again after game is over without solving level
Holger Schemel [Fri, 12 Oct 2018 19:23:26 +0000 (21:23 +0200)]
added request dialog to play again after game is over without solving level

5 years agoadded handling game actions also after unsolved game end (not used yet)
Holger Schemel [Fri, 12 Oct 2018 17:34:30 +0000 (19:34 +0200)]
added handling game actions also after unsolved game end (not used yet)

5 years agoadded functions to check if game is over (and solved or not) (not used yet)
Holger Schemel [Fri, 12 Oct 2018 17:11:03 +0000 (19:11 +0200)]
added functions to check if game is over (and solved or not) (not used yet)

5 years agofixed bug with handling networking packets if request dialog is active
Holger Schemel [Fri, 12 Oct 2018 16:04:30 +0000 (18:04 +0200)]
fixed bug with handling networking packets if request dialog is active

Before, it was possible for a network client to start a new game while
another client was still about answering a request dialog (like asking
if a tape for a solved level should be saved), causing synchronization
problems with network packet handling.

With this bugfix, handling network packets is paused during a request.

5 years agomoved flag for active/inactive game panel from player to game structure
Holger Schemel [Fri, 12 Oct 2018 15:51:04 +0000 (17:51 +0200)]
moved flag for active/inactive game panel from player to game structure

5 years agomoved duplicated code to separate function
Holger Schemel [Fri, 12 Oct 2018 15:24:08 +0000 (17:24 +0200)]
moved duplicated code to separate function

5 years agofixed bug with repeating last level in levelset when auto-playing next level
Holger Schemel [Wed, 10 Oct 2018 22:10:44 +0000 (00:10 +0200)]
fixed bug with repeating last level in levelset when auto-playing next level

5 years agofixed bug with high scores for wrong level when auto-playing next level
Holger Schemel [Wed, 10 Oct 2018 22:03:24 +0000 (00:03 +0200)]
fixed bug with high scores for wrong level when auto-playing next level

5 years agoadded checkbox to level editor for using "game of life" bugs
Holger Schemel [Wed, 10 Oct 2018 21:16:35 +0000 (23:16 +0200)]
added checkbox to level editor for using "game of life" bugs

5 years agoadded flag to level files for using "game of life" bugs
Holger Schemel [Wed, 10 Oct 2018 21:04:49 +0000 (23:04 +0200)]
added flag to level files for using "game of life" bugs

5 years agofixed bugs in game logic of "game of life" and "biomaze" elements
Holger Schemel [Wed, 10 Oct 2018 20:45:55 +0000 (22:45 +0200)]
fixed bugs in game logic of "game of life" and "biomaze" elements

5 years agoadded playfield array "Last[][]" to store tile from last game frame
Holger Schemel [Wed, 10 Oct 2018 19:27:50 +0000 (21:27 +0200)]
added playfield array "Last[][]" to store tile from last game frame

5 years agochanged variable name
Holger Schemel [Wed, 10 Oct 2018 19:11:08 +0000 (21:11 +0200)]
changed variable name

5 years agofixed bug with redrawing state changes for "game of life" style elements
Holger Schemel [Wed, 10 Oct 2018 17:51:04 +0000 (19:51 +0200)]
fixed bug with redrawing state changes for "game of life" style elements

The cause for this bug was checking the "Stop[][]" field for deciding
if a "game of life" style element has changed and needs to be redrawn,
but with the current implementation (which is in fact not correct), it
may happen that the same element changes twice in the same game frame,
causing the corresponding graphics not be updated again (and therefore
showing the wrong state).

Directly comparing the new with the old state fixes this problem.

5 years agominor code formatting change
Holger Schemel [Tue, 9 Oct 2018 20:45:36 +0000 (22:45 +0200)]
minor code formatting change

5 years agoimproved checking game speed and vsync settings when selecting either one
Holger Schemel [Tue, 9 Oct 2018 20:30:24 +0000 (22:30 +0200)]
improved checking game speed and vsync settings when selecting either one

5 years agoversion number set to 4.1.1.1
Holger Schemel [Tue, 9 Oct 2018 19:04:35 +0000 (21:04 +0200)]
version number set to 4.1.1.1

5 years agofixed compilation error for SDL 1.2 target 4.1.1.0
Holger Schemel [Mon, 8 Oct 2018 06:05:57 +0000 (08:05 +0200)]
fixed compilation error for SDL 1.2 target

5 years agofixed compiler warning when building without DEBUG symbol
Holger Schemel [Sun, 7 Oct 2018 13:30:55 +0000 (15:30 +0200)]
fixed compiler warning when building without DEBUG symbol

5 years agofixed target name typo in Makefile
Holger Schemel [Sun, 7 Oct 2018 13:14:52 +0000 (15:14 +0200)]
fixed target name typo in Makefile

5 years agoversion number set to 4.1.1.0
Holger Schemel [Sun, 7 Oct 2018 12:08:42 +0000 (14:08 +0200)]
version number set to 4.1.1.0

5 years agoimproved screen output text when trying to connect to network server
Holger Schemel [Sat, 6 Oct 2018 23:24:19 +0000 (01:24 +0200)]
improved screen output text when trying to connect to network server

5 years agoremoved unneeded spaces in request texts
Holger Schemel [Thu, 4 Oct 2018 19:42:34 +0000 (21:42 +0200)]
removed unneeded spaces in request texts

5 years agofixed problem when determining maximum word length in request text
Holger Schemel [Wed, 3 Oct 2018 22:34:49 +0000 (00:34 +0200)]
fixed problem when determining maximum word length in request text

5 years agoadded setup option to use extended list for game speed selection
Holger Schemel [Wed, 3 Oct 2018 22:13:18 +0000 (00:13 +0200)]
added setup option to use extended list for game speed selection

5 years agocode cleanup (using new and already existing structures)
Holger Schemel [Wed, 3 Oct 2018 21:52:35 +0000 (23:52 +0200)]
code cleanup (using new and already existing structures)

5 years agoadded check if game speed is high enough for 60 Hz vsync to work
Holger Schemel [Wed, 3 Oct 2018 16:15:01 +0000 (18:15 +0200)]
added check if game speed is high enough for 60 Hz vsync to work

5 years agofixed buggy behaviour when only one player needed to solve a level
Holger Schemel [Wed, 3 Oct 2018 10:01:15 +0000 (12:01 +0200)]
fixed buggy behaviour when only one player needed to solve a level

Before, when setting "[x] only one player must enter exit", a level
with two players was solved when one player was killed, and then the
other player entered an exit. But it was not yet solved if one player
entered an exit and the other player was still on the playfield.

Now, the first player really solves the level when entering an exit,
regardless of any other players still around on the playfield.

5 years agofixed calculating maximum length of string values in setup menu
Holger Schemel [Tue, 2 Oct 2018 19:10:08 +0000 (21:10 +0200)]
fixed calculating maximum length of string values in setup menu

5 years agosmall code cleanup
Holger Schemel [Tue, 2 Oct 2018 19:07:57 +0000 (21:07 +0200)]
small code cleanup

5 years agofixed drawing preferred network player in setup menu
Holger Schemel [Tue, 2 Oct 2018 13:04:31 +0000 (15:04 +0200)]
fixed drawing preferred network player in setup menu

5 years agofixed handling mouse button events when waiting for event to continue
Holger Schemel [Mon, 1 Oct 2018 20:12:38 +0000 (22:12 +0200)]
fixed handling mouse button events when waiting for event to continue

5 years agoadded waiting for key or button after starting or stopping network mode
Holger Schemel [Mon, 1 Oct 2018 20:05:11 +0000 (22:05 +0200)]
added waiting for key or button after starting or stopping network mode

5 years agoadded title and footer text when starting or stopping network mode
Holger Schemel [Mon, 1 Oct 2018 20:03:32 +0000 (22:03 +0200)]
added title and footer text when starting or stopping network mode

5 years agomoved starting or stopping network mode to separate function
Holger Schemel [Mon, 1 Oct 2018 19:22:42 +0000 (21:22 +0200)]
moved starting or stopping network mode to separate function

5 years agoadded drawing program info on startup when initializing network
Holger Schemel [Mon, 1 Oct 2018 18:54:34 +0000 (20:54 +0200)]
added drawing program info on startup when initializing network

5 years agomoved drawing program info on startup to separate function
Holger Schemel [Mon, 1 Oct 2018 18:52:00 +0000 (20:52 +0200)]
moved drawing program info on startup to separate function

5 years agoadded text input setup option to configure network server hostname
Holger Schemel [Mon, 1 Oct 2018 06:32:59 +0000 (08:32 +0200)]
added text input setup option to configure network server hostname

5 years agoadded ignoring screen navigation events if text input gadgets are active
Holger Schemel [Sat, 29 Sep 2018 09:17:10 +0000 (11:17 +0200)]
added ignoring screen navigation events if text input gadgets are active

5 years agoimproved handling network errors (show message instead of stopping program)
Holger Schemel [Sat, 29 Sep 2018 09:07:53 +0000 (11:07 +0200)]
improved handling network errors (show message instead of stopping program)

5 years agoadded gadget tag to always execute the callback action when leaving gadget
Holger Schemel [Sat, 29 Sep 2018 08:28:11 +0000 (10:28 +0200)]
added gadget tag to always execute the callback action when leaving gadget

5 years agochanged setting cursor when automatically activating text input gadgets
Holger Schemel [Sat, 29 Sep 2018 08:20:41 +0000 (10:20 +0200)]
changed setting cursor when automatically activating text input gadgets

When activating text input gadgets using function "ClickOnGadget()",
do not set the cursor position at the start, but at the end of the
text in the gadget.

5 years agoadded support for (normal and adaptive) vertical sync (vsync)
Holger Schemel [Wed, 26 Sep 2018 18:54:16 +0000 (20:54 +0200)]
added support for (normal and adaptive) vertical sync (vsync)

An option was added to the setup menu to enable vsync for redrawing
the screen in synchronization with the vertical retrace, resulting
in ultra-smooth scrolling on systems where it is supported. To make
use of it in R'n'D together with common LCD displays with 60 Hz screen
refresh frequency, a faster game speed than "normal" has to be chosen,
because "normal speed" in R'n'D means 50 frames per second (which is
the original speed of the game on classic CRT displays, which used a
screen refresh frequency of 50 Hz in Europe by default, and which was
also the original game speed of classic Emerald Mine, for example).

If adaptive vsync is chosen, but not supported, a fallback to normal
vsync is done. (See the SDL wiki for SDL_GL_SetSwapInterval() for a
few more details.)

5 years agofixed compiler warnings (after adding "-Wmissing-prototypes")
Holger Schemel [Wed, 19 Sep 2018 06:50:46 +0000 (08:50 +0200)]
fixed compiler warnings (after adding "-Wmissing-prototypes")

Adding this warning option revealed lots of unused functions (which
are deactivated in the code using preprocessor directives for now and
which will be checked and probably removed in a later step).

5 years agofixed compiler warnings (after adding "-Wstrict-prototypes")
Holger Schemel [Mon, 17 Sep 2018 18:51:57 +0000 (20:51 +0200)]
fixed compiler warnings (after adding "-Wstrict-prototypes")

Adding this warning option revealed a bug with an invalid function
parameter (fixed by previous commit 085eaa4c).

5 years agofixed bug with calling function with invalid (although ignored) parameter
Holger Schemel [Mon, 17 Sep 2018 18:57:19 +0000 (20:57 +0200)]
fixed bug with calling function with invalid (although ignored) parameter

5 years agofixed bug with dragon fire destroying indestructible steel letter walls
Holger Schemel [Mon, 17 Sep 2018 17:51:54 +0000 (19:51 +0200)]
fixed bug with dragon fire destroying indestructible steel letter walls

Before this change, steel letter walls could be destroyed by dragon
fire, although they are set to be indestructible. This change makes
sure that indestructible elements cannot be destroyed by dragon fire
(with the exception of the "acid" element, which is to be discussed,
but would break level 014 of "rnd_paul_e_collins_iii" if changed).

As far as this was tested agains existing solution tapes, this change
does not seem to break any existing levels or tapes.

5 years agofixed list of "indestructible" elements as part of "solid" elements
Holger Schemel [Mon, 17 Sep 2018 17:31:52 +0000 (19:31 +0200)]
fixed list of "indestructible" elements as part of "solid" elements

The list of "solid" elements contains a section with "indestructible"
elements that claims to be identical (with one exception) with the
list that only contains the "indestructible" elements, but quite some
elements were missing (that were probably added to the other list at
some time without also being added to the list of "solid" elements).

This change adds these missing elements. (This should be solved in a
more cleaner way, without listing (nearly) the same elements in two
different lists.)

As far as this was tested agains existing solution tapes, this change
does not seem to break any existing levels or tapes.

5 years agoadded checkbox to player settings in editor if first player solves level
Holger Schemel [Mon, 17 Sep 2018 16:57:54 +0000 (18:57 +0200)]
added checkbox to player settings in editor if first player solves level

A recently made change (commits 2bf392f1 and 6999c82d) added checking
if all players in a level entered an exit before the level is treated
as being successfully solved, changing the previous behaviour where a
level was solved by the first player entering an exit, which differs
from the behaviour in the EM/EMC game engine, where team-mode levels
require all players to enter an exit before the level is solved.

However, this change broke at least one existing level that was based
on the previous behaviour (level 032 of level set "rnd_falk_sobe"), so
a checkbox in the player settings of the level editor was added to be
able to select the desired behaviour, using the "new" behaviour (all
players must enter an exit) as the default setting.

5 years agofixed nasty bug with uninitialized game engine value
Holger Schemel [Sun, 16 Sep 2018 11:27:19 +0000 (13:27 +0200)]
fixed nasty bug with uninitialized game engine value

This change fixed a nasty (although rarely occurring) bug caused by an
uninitialized game engine value for explosion handling (which can only
occur in the very first game frame of the very first game played after
starting the program).

This bug happens, for example, when doing "autotest rnd_helge_hafting"
or "autotest rnd_paul_e_collins_iii 013", while (as described above)
doing "autotest rnd_paul_e_collins_iii 012 013" works just fine (as
the game engine is correctly initialized by playing level 012 when it
comes to level 013, which contains that case of explosion in the first
frame that would else be played differently, causing a failed tape).

5 years agoremoved unused fields from structure definition
Holger Schemel [Sun, 16 Sep 2018 10:50:36 +0000 (12:50 +0200)]
removed unused fields from structure definition

5 years agosmall change to prevent compiler warning
Holger Schemel [Fri, 14 Sep 2018 15:49:59 +0000 (17:49 +0200)]
small change to prevent compiler warning

This change makes Clang happy (which issued a warning before).
(Interestingly, GCC did not care about the previous code.)

5 years agore-added file "RocksBusy.ilbm" (that was accidentally deleted)
Holger Schemel [Fri, 14 Sep 2018 15:43:13 +0000 (17:43 +0200)]
re-added file "RocksBusy.ilbm" (that was accidentally deleted)

The file "graphics/gfx_classic/RocksBusy.ilbm" was deleted by commit
5ef9148d, apparently by accident. This commit recovers the file.

5 years agofixed bug with losing image filename when scaling bitmaps
Holger Schemel [Thu, 13 Sep 2018 21:13:51 +0000 (23:13 +0200)]
fixed bug with losing image filename when scaling bitmaps

5 years agofixed bug with expiring loop sounds for global animations when playing
Holger Schemel [Wed, 12 Sep 2018 19:08:08 +0000 (21:08 +0200)]
fixed bug with expiring loop sounds for global animations when playing

When playing the game, loop sounds are automatically expired if they
are not "refreshed" at regular intervals (to prevent playing sounds
for game elements that do not exist on the playfield anymore).

However, this also affects loop sounds for global animations played
during the game, so special care has to be taken to prevent them from
accidentally being expired, too.

5 years agoimproved clearing event queue after fading and after door/envelope requests
Holger Schemel [Wed, 12 Sep 2018 17:59:18 +0000 (19:59 +0200)]
improved clearing event queue after fading and after door/envelope requests

This is an improvement of commit ba20bcc8, which totally cleared the
event queue after fading and after door/envelope requests, and which
prevented entering multiple key presses by intention (like starting
the game and immediately going to pause mode with the very first
game frame, by quickly pressing "space" twice in the main menu).

This change only removes key presses entered by keyboard auto-repeat
during fading or door/envelope animations, effectively preventing
accidentally entered multiple key events by pressing a key like
"space" or "return" a bit too long (which then triggers auto-repeat),
while it keeps multiple key events that were manually entered.

5 years agofixed bug with not recognizing ".mode_loop: false" for music
Holger Schemel [Wed, 12 Sep 2018 07:04:51 +0000 (09:04 +0200)]
fixed bug with not recognizing ".mode_loop: false" for music

Before, music was always played in loop mode, even if it was defined
with option "<music>.mode_loop: false".

Now, disabling loop mode for music in config files will indeed cause
music to be played only once.

Note: This commit changed the behaviour of the existing function
"PlayMusic()" (which always played music in loop mode before), which
will now play music only once, while a new function "PlayMusicLoop()"
was added, which always plays music in loop mode.

5 years agocleanup of network level function names and parameters
Holger Schemel [Sat, 8 Sep 2018 23:12:25 +0000 (01:12 +0200)]
cleanup of network level function names and parameters

5 years agofixed bug with displaying the wrong level number in the game panel
Holger Schemel [Sat, 8 Sep 2018 22:07:47 +0000 (00:07 +0200)]
fixed bug with displaying the wrong level number in the game panel

When introducing a global levelset identifier and level number (see
commit b7fe72dc), the level number to be displayed on the game panel
was updated in the main menu and for network games, but not when
selecting another level from the main menu or when automatically
playing the next level after solving a level (and skipping the main
menu before starting the next level), which results in displaying the
wrong level number in the game panel in many cases.

This was fixed now by updating the level number when loading the level
from the level file (moving the function to update the level number to
be displayed from the main menu to the function to load the level).

5 years agofixed bug with different global border when playing from level editor
Holger Schemel [Fri, 7 Sep 2018 14:20:14 +0000 (16:20 +0200)]
fixed bug with different global border when playing from level editor

When using different screen border images for the in-game screen
(while playing the game, as defined by "global.border.PLAYING") and
for the level editor (defined by "global.border.EDITOR"), test-playing
a level from the level editor resulted in a graphically broken global
screen border (while everything looks correct when playing from the
main menu).

5 years agoimproved preprocessor macro to determine array size
Holger Schemel [Tue, 4 Sep 2018 20:13:11 +0000 (22:13 +0200)]
improved preprocessor macro to determine array size

5 years agofixed bug with overwriting level file info from level template
Holger Schemel [Mon, 3 Sep 2018 21:33:02 +0000 (23:33 +0200)]
fixed bug with overwriting level file info from level template

This bug (which was causing crashes due to double free()ing strings)
was a nasty side effect of changing string pointers in the file info
structure from using string references (allocated and freed somewhere
else) to copies of strings allocated and freed for each change, while
still copying the file info from the level template over to the file
info of the level file in function "ActivateLevelTemplate()" (causing
duplicates of string pointers which were therefore freed twice).

This bug was most probably the real cause for the problems fixed by
the changes in commit 759e0bea.

5 years agoadded checking for invalid/malicious packet size in network protocol
Holger Schemel [Fri, 31 Aug 2018 06:46:03 +0000 (08:46 +0200)]
added checking for invalid/malicious packet size in network protocol

5 years agoadded checking for invalid/malicious filenames in network protocol
Holger Schemel [Fri, 31 Aug 2018 06:13:05 +0000 (08:13 +0200)]
added checking for invalid/malicious filenames in network protocol

5 years agoadded using global levelset identifier and level number for network games
Holger Schemel [Thu, 30 Aug 2018 19:51:16 +0000 (21:51 +0200)]
added using global levelset identifier and level number for network games

This change/addition was required for correctly handling identifiers
and level numbers when playing network games (for which the related
levelset possibly does not exist locally, but was sent by the network
server). This includes showing the correct level number for the level
that is played over the network, and saving the resulting high scores
for the correct level in the correct levelset score directory (again,
even if this levelset or level number does not exist locally).

5 years agoadded (and set) identifier and level number to global levelset structure
Holger Schemel [Thu, 30 Aug 2018 19:46:11 +0000 (21:46 +0200)]
added (and set) identifier and level number to global levelset structure