rocksndiamonds.git
2 weeks agoadded disabling overlay touch buttons when showing envelope master 4.2.0.3
Holger Schemel [Sun, 4 Oct 2020 23:54:44 +0000 (01:54 +0200)]
added disabling overlay touch buttons when showing envelope

2 weeks agoadded check to prevent unnecessary SDL download for Android build
Holger Schemel [Sun, 4 Oct 2020 23:17:43 +0000 (01:17 +0200)]
added check to prevent unnecessary SDL download for Android build

2 weeks agoremoved unnecessary screen redraws when waiting for events to continue
Holger Schemel [Sun, 4 Oct 2020 23:12:51 +0000 (01:12 +0200)]
removed unnecessary screen redraws when waiting for events to continue

2 weeks agoadded waiting for press/release events when waiting for events to continue
Holger Schemel [Sun, 4 Oct 2020 23:10:05 +0000 (01:10 +0200)]
added waiting for press/release events when waiting for events to continue

2 weeks agoadded always clearing player action when waiting for events to continue
Holger Schemel [Sun, 4 Oct 2020 23:07:05 +0000 (01:07 +0200)]
added always clearing player action when waiting for events to continue

2 weeks agoadded clearing player action for non-game finger release events
Holger Schemel [Sun, 4 Oct 2020 22:59:34 +0000 (00:59 +0200)]
added clearing player action for non-game finger release events

2 weeks agoadded clearing virtual buttons when clearing player action
Holger Schemel [Sun, 4 Oct 2020 22:57:27 +0000 (00:57 +0200)]
added clearing virtual buttons when clearing player action

2 weeks agoadded clearing touch info when clearing player action
Holger Schemel [Sun, 4 Oct 2020 22:55:29 +0000 (00:55 +0200)]
added clearing touch info when clearing player action

2 weeks agomoved code for setting touch info for finger events to separate function
Holger Schemel [Sun, 4 Oct 2020 22:52:23 +0000 (00:52 +0200)]
moved code for setting touch info for finger events to separate function

2 weeks agoadded creating engine snapshots when using mouse click events
Holger Schemel [Sat, 3 Oct 2020 23:52:40 +0000 (01:52 +0200)]
added creating engine snapshots when using mouse click events

Before, when using mouse click events as CE change events, clicking on
a CE with mouse click event did not save a new game engine snapshot,
so undo/redo of CE mouse click events did not work.

With this change, undo/redo snapshots will also be created when using
mouse click events.

2 weeks agofixed single-step mode for mouse click events
Holger Schemel [Sat, 3 Oct 2020 22:56:42 +0000 (00:56 +0200)]
fixed single-step mode for mouse click events

Before, when using mouse click events as CE change events, pressing a
mouse button in the playfield when in single-step mode was immediately
followed by entering pause mode again.

With this change, pause mode is not entered as long as a mouse button
is pressed. (This already works similarly in the MM game engine.)

3 weeks agochanged compiling on Android to use optimization for release builds
Holger Schemel [Fri, 2 Oct 2020 13:09:57 +0000 (15:09 +0200)]
changed compiling on Android to use optimization for release builds

3 weeks agochanged gcc optimization level from "-O3" to "-O2" for releases
Holger Schemel [Fri, 2 Oct 2020 12:51:59 +0000 (14:51 +0200)]
changed gcc optimization level from "-O3" to "-O2" for releases

This change was done due to general recommendations and because of
some versions of gcc emitting lots of misleading warnings with "-O3"
related to pointers possibly being null in cases where they surely
cannot be null ("warning: argument 1 null where non-null expected"
for "strcmp(s1, s2)" in src/libgame/misc.c after explicitly checking
that s1 is not null), which makes it harder to recognize "real"
warnings when building the distribution packages.

3 weeks agofixed showing commit hash on version page of info screen for Android
Holger Schemel [Thu, 1 Oct 2020 22:37:24 +0000 (00:37 +0200)]
fixed showing commit hash on version page of info screen for Android

This is needed when building for Android and was missing in commit
438a173a.

3 weeks agofixed potential crash bug when loading custom artwork
Holger Schemel [Thu, 1 Oct 2020 19:04:15 +0000 (21:04 +0200)]
fixed potential crash bug when loading custom artwork

This patch fixes a memory corruption bug that potentially leads to
program crashes when loading custom artwork (or level sets with custom
artwork) by accessing a potentially invalid bitmap pointer (used for
the global border bitmap).

3 weeks agofixed single-step mode for wrap-around levels in EM engine
Holger Schemel [Tue, 29 Sep 2020 19:35:09 +0000 (21:35 +0200)]
fixed single-step mode for wrap-around levels in EM engine

This fixes a graphical bug when wrapping around in single-step mode by
drawing wrap-around animation before going to single step pause mode.

4 weeks agoadded full compatibility for wrap-around levels in EM engine
Holger Schemel [Fri, 25 Sep 2020 00:08:46 +0000 (02:08 +0200)]
added full compatibility for wrap-around levels in EM engine

The previous support for wrap-around levels in the EM game engine was
some sort of "idealized" implementation that lets the player wrap
around by moving horizontally on the same vertical level position
forever (which results in truely infinite wrap-around levels).

This may be nice and perfect, but has the disadvantage that the
original Emerald Mine Club engine did not work that way, making
existing EMC levels unplayable and/or unsolvable. (Examples are
level 80 of "Ruppelmine 3" or level 34 of "The Exception 2".)

Instead, the original game engine caused the player to step one
vertical position up or down when leaving the playfield at the left
or right border, which is required by the mentioned example levels.

This correction adds a flag that is set by default to use the original
behaviour.

4 weeks agofixed support for wrap-around levels in EM engine
Holger Schemel [Thu, 24 Sep 2020 23:59:21 +0000 (01:59 +0200)]
fixed support for wrap-around levels in EM engine

Fixed initializing wrap-around levels in the EM game engine; this was
done when loading the cave, but using a run-time flag, which is not
set until starting the game.

This is a regression bug of commit 04c0f302.

5 weeks agoadded showing commit hash on version page of info screen
Holger Schemel [Sat, 19 Sep 2020 01:05:28 +0000 (03:05 +0200)]
added showing commit hash on version page of info screen

5 weeks agoenabled init time debugging messages when compiled with debug code
Holger Schemel [Sat, 19 Sep 2020 00:07:36 +0000 (02:07 +0200)]
enabled init time debugging messages when compiled with debug code

5 weeks agoadded multi-part line debug logging functions
Holger Schemel [Fri, 18 Sep 2020 23:58:47 +0000 (01:58 +0200)]
added multi-part line debug logging functions

5 weeks agoremoved unused functions to set/get internal error messages
Holger Schemel [Fri, 18 Sep 2020 23:06:43 +0000 (01:06 +0200)]
removed unused functions to set/get internal error messages

5 weeks agochanged non-fatal error handling to use new error functions
Holger Schemel [Fri, 18 Sep 2020 23:00:23 +0000 (01:00 +0200)]
changed non-fatal error handling to use new error functions

5 weeks agochanged fatal error handling to use new error functions
Holger Schemel [Fri, 18 Sep 2020 22:18:07 +0000 (00:18 +0200)]
changed fatal error handling to use new error functions

5 weeks agomoved variables for network server thread to network structure
Holger Schemel [Fri, 18 Sep 2020 17:18:29 +0000 (19:18 +0200)]
moved variables for network server thread to network structure

5 weeks agorenamed function
Holger Schemel [Fri, 18 Sep 2020 16:34:07 +0000 (18:34 +0200)]
renamed function

5 weeks agochanged check for limiting debug output to substring match
Holger Schemel [Thu, 17 Sep 2020 18:30:14 +0000 (20:30 +0200)]
changed check for limiting debug output to substring match

5 weeks agomoved checks for debug mode to main logging function
Holger Schemel [Thu, 17 Sep 2020 18:10:16 +0000 (20:10 +0200)]
moved checks for debug mode to main logging function

5 weeks agochanged simple "printf()" debug output to new debug log function
Holger Schemel [Wed, 16 Sep 2020 22:53:03 +0000 (00:53 +0200)]
changed simple "printf()" debug output to new debug log function

5 weeks agochanged printing game tile information to console and log file
Holger Schemel [Wed, 16 Sep 2020 22:27:26 +0000 (00:27 +0200)]
changed printing game tile information to console and log file

5 weeks agochanged printing level editor brush data to console and log file
Holger Schemel [Wed, 16 Sep 2020 22:10:47 +0000 (00:10 +0200)]
changed printing level editor brush data to console and log file

5 weeks agofixed text event handling for newer SDL versions (again)
Holger Schemel [Wed, 16 Sep 2020 21:52:56 +0000 (23:52 +0200)]
fixed text event handling for newer SDL versions (again)

This fixes another regression of commit 5a53ae0c888ee049 and
35da46e4 that still causes incorrect key/text event handling.

The problem occurs when entering uppercase letters, which creates two
key events (pressed and released) with the lowercase letter (while
modifier state indicates that the Shift key is active), plus one text
event with the uppercase letter. The previous logic caused both cases
to be handled as a new key event, effectively handling that letter
twice (one time in lowercase, and another time in uppercase).

An additional check for text input style modifier keys prevents the
lowercase variant of the case described above not to be handled.

5 weeks agochanged simple "printf()" debug output to new debug log function
Holger Schemel [Wed, 16 Sep 2020 21:28:23 +0000 (23:28 +0200)]
changed simple "printf()" debug output to new debug log function

5 weeks agoremoved checking for debug mode when using debug logging
Holger Schemel [Wed, 16 Sep 2020 16:46:33 +0000 (18:46 +0200)]
removed checking for debug mode when using debug logging

5 weeks agofixed debug logging to omit output if debug mode disabled
Holger Schemel [Wed, 16 Sep 2020 16:45:34 +0000 (18:45 +0200)]
fixed debug logging to omit output if debug mode disabled

5 weeks agoadded setting Android log level for new logging functions
Holger Schemel [Wed, 16 Sep 2020 16:37:25 +0000 (18:37 +0200)]
added setting Android log level for new logging functions

5 weeks agochanged warnings and debug output to use new generic logging functions
Holger Schemel [Wed, 16 Sep 2020 16:32:57 +0000 (18:32 +0200)]
changed warnings and debug output to use new generic logging functions

5 weeks agoadded option to limit debug output to specific debug mode
Holger Schemel [Wed, 16 Sep 2020 14:33:22 +0000 (16:33 +0200)]
added option to limit debug output to specific debug mode

5 weeks agoadded generic logging functions (not used yet)
Holger Schemel [Wed, 16 Sep 2020 14:17:15 +0000 (16:17 +0200)]
added generic logging functions (not used yet)

5 weeks agofixed potentially invalid string pointers when parsing options
Holger Schemel [Wed, 16 Sep 2020 13:21:51 +0000 (15:21 +0200)]
fixed potentially invalid string pointers when parsing options

When using command line options like "--option=argument" instead of
"--option argument" (which is especially needed if arguments are
optional), this resulted in invalid string pointers before this fix.

5 weeks agofixed regression bug introduced by changes for "autofix" command
Holger Schemel [Tue, 15 Sep 2020 18:04:33 +0000 (20:04 +0200)]
fixed regression bug introduced by changes for "autofix" command

This fixes program crashes that may happen when using automatic tape
replay with visible feedback (like "autoplay", "autowarp" etc.).

This is a regression of commit e534f3cf.

5 weeks agoimproved startup speed by optimizing parsing of parameter values
Holger Schemel [Tue, 15 Sep 2020 09:07:46 +0000 (11:07 +0200)]
improved startup speed by optimizing parsing of parameter values

Commit bd5cd062 (that introduced event actions for global animations)
also added a nasty performance bottleneck due to complexity of parsing
event action parameters, which slowed down program startup phase quite
significantly. However, in most cases these parameters just stay at
their default values, so checking for that default value first results
in massively speeding up this part of the startup phase.

5 weeks agoadded ability to undo (restore) the previously recorded tape
Holger Schemel [Tue, 15 Sep 2020 06:40:14 +0000 (08:40 +0200)]
added ability to undo (restore) the previously recorded tape

When the in-memory tape is erased with more than a minimum length of
playing time (currently set to 20 seconds), an internal copy of the
tape is created to be able to restore it. Just type ":undo-tape" or
":ut" to undo (restore) the last tape.

If the in-memory tape to be erased is shorter than the minimum length,
an undo tape is created from it if it is longer than the currently
stored undo tape.

5 weeks agofixed key shortcut to start/end game (broken by regression)
Holger Schemel [Mon, 14 Sep 2020 19:42:59 +0000 (21:42 +0200)]
fixed key shortcut to start/end game (broken by regression)

This change fixes a regression of commit 888ee049 (and 35da46e4) that
causes problems when handling text input in situations unrelated to
the Android screen keyboard, like entering key shortcuts to start and
end a game on non-Android platforms.

This commit fixes a bug that results in restarting the game when the
player has died and the "space" key (or other configured key) was used
to return to the main menu (or level editor).

5 weeks agomoved code for fixing single-player tapes to separate function
Holger Schemel [Mon, 14 Sep 2020 15:16:00 +0000 (17:16 +0200)]
moved code for fixing single-player tapes to separate function

5 weeks agominor improvement of function to check for string suffix
Holger Schemel [Mon, 14 Sep 2020 15:00:45 +0000 (17:00 +0200)]
minor improvement of function to check for string suffix

5 weeks agoremoved duplicate function to check for string suffix
Holger Schemel [Mon, 14 Sep 2020 14:56:43 +0000 (16:56 +0200)]
removed duplicate function to check for string suffix

5 weeks agofixed output to logfile for "autofix" command
Holger Schemel [Mon, 14 Sep 2020 08:38:21 +0000 (10:38 +0200)]
fixed output to logfile for "autofix" command

Thanks to Bela Lubkin for this fix.

6 weeks agoadded command to automatically test tapes and try to fix if broken
Holger Schemel [Fri, 11 Sep 2020 17:17:57 +0000 (19:17 +0200)]
added command to automatically test tapes and try to fix if broken

This adds a new command "autofix" that can be used to test and try to
fix existing tapes (by setting a property bit in the tape header).

The only patch currently available is "em_random_bug" that sets the
property bit for using the 64-bit random value workaround in the EM
game engine (see commit 1006b2db for details).

This command is an improved variant for the command "patch tapes"
introduced with commit 7c1d6252.

Thanks to Bela Lubkin for convincing me that this command is in fact a
good idea! :-)

6 weeks agosmall change of console output when auto-playing tapes
Holger Schemel [Fri, 11 Sep 2020 13:13:10 +0000 (15:13 +0200)]
small change of console output when auto-playing tapes

6 weeks agorenamed function
Holger Schemel [Fri, 11 Sep 2020 13:07:52 +0000 (15:07 +0200)]
renamed function

6 weeks agorenamed playfield variable
Holger Schemel [Fri, 11 Sep 2020 10:43:52 +0000 (12:43 +0200)]
renamed playfield variable

6 weeks agorenamed some functions
Holger Schemel [Fri, 11 Sep 2020 09:42:31 +0000 (11:42 +0200)]
renamed some functions

6 weeks agoadded command to automatically patch tapes for the "EM random bug"
Holger Schemel [Thu, 10 Sep 2020 18:51:27 +0000 (20:51 +0200)]
added command to automatically patch tapes for the "EM random bug"

This adds a command line option that can be used to patch existing
tapes (by setting or unsetting property bits in the tape header).

The only patch mode currently available is "em_random_bug" that sets
the property bit for using the 64-bit random value workaround in the
EM game engine (see commit 1006b2db for details).

When using "help" for "MODE", all available patch modes will be shown.

6 weeks agosplit function to save tape
Holger Schemel [Thu, 10 Sep 2020 18:35:15 +0000 (20:35 +0200)]
split function to save tape

6 weeks agoadded handling 64-bit random value bug with old tapes in EM engine
Holger Schemel [Thu, 10 Sep 2020 18:19:20 +0000 (20:19 +0200)]
added handling 64-bit random value bug with old tapes in EM engine

See commits 61c3da0 (incomplete fix) and c92edfe9 (final fix) for
details about this problem that was introduced (by a partial fix) in
version 3.3.1.0 and finally fixed in version 4.0.1.2, which resulted
in many tapes recorded between these versions with the EM game engine
to be broken.

To fix these broken tapes, it is required to set a new property bit in
all existing tape files that are affected by this bug.

The functionality to automatically patch these tapes will be added as
a new command line option.

6 weeks agoadded support for tape property bits (not used yet)
Holger Schemel [Thu, 10 Sep 2020 18:09:55 +0000 (20:09 +0200)]
added support for tape property bits (not used yet)

6 weeks agoversion number set to 4.2.0.3
Holger Schemel [Tue, 8 Sep 2020 21:14:03 +0000 (23:14 +0200)]
version number set to 4.2.0.3

6 weeks agoupdated installation instructions 4.2.0.2
Holger Schemel [Tue, 8 Sep 2020 20:32:01 +0000 (22:32 +0200)]
updated installation instructions

6 weeks agofixed version number references for changes since version 4.2.0.0
Holger Schemel [Tue, 8 Sep 2020 17:55:47 +0000 (19:55 +0200)]
fixed version number references for changes since version 4.2.0.0

Fixed some version number references to version 4.1.4.2 that was never
released as packages, but only via Git repository and that was nearly
identical to version 4.1.4.1. Especially it contained the same version
of the Emerald Mine game engine as version 4.1.4.1, so tapes recorded
with version 4.1.4.2 must be played with the old EM engine.

Starting with version 4.2.0.0, the new EM engine will be used.

6 weeks agoadded check if setting vsync mode to selected value was successful
Holger Schemel [Sat, 5 Sep 2020 23:54:33 +0000 (01:54 +0200)]
added check if setting vsync mode to selected value was successful

6 weeks agochanged function logic for changing fullscreen/scaling/vsync to match
Holger Schemel [Sat, 5 Sep 2020 23:29:23 +0000 (01:29 +0200)]
changed function logic for changing fullscreen/scaling/vsync to match

6 weeks agosplit function to toggle fullscreen and change window scaling
Holger Schemel [Sat, 5 Sep 2020 23:23:32 +0000 (01:23 +0200)]
split function to toggle fullscreen and change window scaling

6 weeks agofixed setting setup value and list selection for vsync mode
Holger Schemel [Sat, 5 Sep 2020 23:15:43 +0000 (01:15 +0200)]
fixed setting setup value and list selection for vsync mode

7 weeks agoimproved function to toggle fullscreen or change window scaling
Holger Schemel [Sat, 5 Sep 2020 19:38:50 +0000 (21:38 +0200)]
improved function to toggle fullscreen or change window scaling

7 weeks agoadded re-creating renderer and textures when changing video vsync mode
Holger Schemel [Sat, 5 Sep 2020 19:25:24 +0000 (21:25 +0200)]
added re-creating renderer and textures when changing video vsync mode

When not using OpenGL renderer, changing video vsync mode requires
re-creating renderer and textures with changed vsync settings.

(This uses code for re-creating the screen that was a part of function
"ToggleFullscreenOrChangeWindowScalingIfNeeded()", but that was never
used after support for SDL 1.2 was removed with commit d3e24bbf.)

7 weeks agoadded check for OpenGL renderer when trying to change vsync mode
Holger Schemel [Sat, 5 Sep 2020 18:50:00 +0000 (20:50 +0200)]
added check for OpenGL renderer when trying to change vsync mode

7 weeks agoadded macros for converting vsync mode string and integer values
Holger Schemel [Sat, 5 Sep 2020 18:45:45 +0000 (20:45 +0200)]
added macros for converting vsync mode string and integer values

7 weeks agoadded setting video vsync mode when creating renderer
Holger Schemel [Thu, 3 Sep 2020 23:54:03 +0000 (01:54 +0200)]
added setting video vsync mode when creating renderer

Changing the vsync mode after creating the renderer only works for the
OpenGL renderer. For all other renderers, it must be set when creating
the renderer.

This means that changes to the vsync mode settings in the setup menu
currently only take effect after restarting the program.

7 weeks agoadded storing current video vsync mode after setting it
Holger Schemel [Thu, 3 Sep 2020 23:48:46 +0000 (01:48 +0200)]
added storing current video vsync mode after setting it

7 weeks agoadded option for setting hint for render driver to setup config file
Holger Schemel [Thu, 3 Sep 2020 23:44:27 +0000 (01:44 +0200)]
added option for setting hint for render driver to setup config file

7 weeks agominor whitespace change
Holger Schemel [Thu, 3 Sep 2020 23:21:25 +0000 (01:21 +0200)]
minor whitespace change

7 weeks agochanged "http" to "https" in URLs
Holger Schemel [Thu, 3 Sep 2020 23:13:47 +0000 (01:13 +0200)]
changed "http" to "https" in URLs

7 weeks agoadded displaying render driver on info screen page
Holger Schemel [Thu, 3 Sep 2020 22:50:18 +0000 (00:50 +0200)]
added displaying render driver on info screen page

7 weeks agoimproved displaying video and audio driver on info screen page
Holger Schemel [Thu, 3 Sep 2020 22:43:08 +0000 (00:43 +0200)]
improved displaying video and audio driver on info screen page

7 weeks agoversion number set to 4.2.0.2
Holger Schemel [Thu, 3 Sep 2020 22:20:25 +0000 (00:20 +0200)]
version number set to 4.2.0.2

7 weeks agofixed wrong eater content when loading native EM levels
Holger Schemel [Wed, 2 Sep 2020 18:28:23 +0000 (20:28 +0200)]
fixed wrong eater content when loading native EM levels

This fixes a regression bug from commit baf962d5 that causes wrong
eater content when loading native EM levels.

Native Emerald Mine levels before version V5 only supported 28 eater
objects, but some levels contained object codes above that, which are
now mapped to empty space. (Before, they were mapped to the first 32
eater objects (28 objects, padded with four empty space objects) using
"mod 32" operation, which lead to completely wrong eater objects for
nearly all affected levels.)

Mapping these eater objects to empty space is the best solution for
now, as nearly all affected levels are solvable when using empty space
objects instead (as most of these objects originally mapped to doors
or letter elements).

7 weeks agochanged number of eater arrays from 8 to 4 for pre-V6 EM engine levels
Holger Schemel [Tue, 1 Sep 2020 18:34:54 +0000 (20:34 +0200)]
changed number of eater arrays from 8 to 4 for pre-V6 EM engine levels

This prevents duplication of eater arrays for native EM engine levels
prior to version V6 (which had only four eater arrays). This is more
or less a cosmetical change only for the level editor when looking at
the eater arrays. There is no difference when playing such levels.

7 weeks agochanged constant number of eater arrays to variable for EM game engine
Holger Schemel [Tue, 1 Sep 2020 18:18:53 +0000 (20:18 +0200)]
changed constant number of eater arrays to variable for EM game engine

This makes it possible to create and play levels with a number of
eater arrays other than eight (which was a contant value before)
when using the EM game engine.

8 weeks agofixed potential crash bug when reading from artwork info cache
Holger Schemel [Sat, 29 Aug 2020 09:57:51 +0000 (11:57 +0200)]
fixed potential crash bug when reading from artwork info cache

This fixes a regression bug from commit 79425634, which allowed for
empty cache entries (as tokens "program_title", "program_copyright"
and "program_company" may be undefined), which may result in crashes
when reading inconsistent or incomplete cache files.

8 weeks agoadded missing cave buffer offsets to robot wheel position
Holger Schemel [Wed, 26 Aug 2020 22:04:29 +0000 (00:04 +0200)]
added missing cave buffer offsets to robot wheel position

8 weeks agofixed pushed objects going into acid in EM engine for old tapes
Holger Schemel [Tue, 25 Aug 2020 21:05:28 +0000 (23:05 +0200)]
fixed pushed objects going into acid in EM engine for old tapes

With the new EM game engine, objects that are pushed towards acid when
initially created fall into acid instead of replacing it (like in the
old engine). This change adds some compatibility code to use the old
behaviour when replaying old tapes.

This is an addition to commit f717d0c1.

8 weeks agofixed handling of pushed objects in EM engine for old tapes
Holger Schemel [Tue, 25 Aug 2020 17:48:51 +0000 (19:48 +0200)]
fixed handling of pushed objects in EM engine for old tapes

This change fixes problems with emulating the behaviour of initially
pushed objects for old tapes. (With the new EM game engine, objects
that are pushed towards the player when initially created always kill
the player, while the object just stopped with the old engine.)

This is an addition to commit 1dd2190d.

8 weeks agofixed handling of androids in EM engine for old tapes
Holger Schemel [Tue, 25 Aug 2020 07:43:28 +0000 (09:43 +0200)]
fixed handling of androids in EM engine for old tapes

This change emulates slight differences in android handling between
the old and new EM game engine to prevent old tapes from breaking.

8 weeks agofixed handling of chain explosions in EM engine for old tapes
Holger Schemel [Tue, 25 Aug 2020 07:14:14 +0000 (09:14 +0200)]
fixed handling of chain explosions in EM engine for old tapes

This change fixes problems with emulating the old behaviour of chain
explosions for old tapes.

This is an addition to commit 6b9e2be7.

2 months agofixed element mapping for amoeba drop for use with EM game engine
Holger Schemel [Sun, 23 Aug 2020 22:42:04 +0000 (00:42 +0200)]
fixed element mapping for amoeba drop for use with EM game engine

2 months agofixed support for initially moving spring in EM game engine
Holger Schemel [Sun, 23 Aug 2020 22:34:23 +0000 (00:34 +0200)]
fixed support for initially moving spring in EM game engine

2 months agoadded support for initially moving spring to R'n'D game engine
Holger Schemel [Fri, 21 Aug 2020 16:45:04 +0000 (18:45 +0200)]
added support for initially moving spring to R'n'D game engine

2 months agofixed support for wrap-around levels in EM engine for old tapes 4.2.0.1
Holger Schemel [Wed, 19 Aug 2020 22:55:32 +0000 (00:55 +0200)]
fixed support for wrap-around levels in EM engine for old tapes

When playing tapes that solved wrap-around levels with the EM engine
that were recorded before wrap-around support was added, deactivate
wrap-around to not break old tapes.

2 months agofixed level editor key shortcuts (broken by regression)
Holger Schemel [Wed, 19 Aug 2020 21:37:33 +0000 (23:37 +0200)]
fixed level editor key shortcuts (broken by regression)

This change fixes a regression of commit 888ee049 that causes problems
when handling text input in situations unrelated to the Android screen
keyboard, like entering key shortcuts with upper case letters inside
the level editor on non-Android platforms.

Thanks to Eizzoux for reporting this bug!

2 months agoversion number set to 4.2.0.1
Holger Schemel [Tue, 18 Aug 2020 21:55:05 +0000 (23:55 +0200)]
version number set to 4.2.0.1

2 months agofixed bug with reanimating killed player by CE condition 4.2.0.0
Holger Schemel [Wed, 12 Aug 2020 18:56:01 +0000 (20:56 +0200)]
fixed bug with reanimating killed player by CE condition

When checking for CE condition "explosion of <element>" using the
player as <element>, it is possible to create a new player right after
the player died (exploded).

However, this only worked when directly changing the CE to the player,
but not when using an extended change target (to create the player on
some adjacent tile next to the CE) that puts the new player on a tile
that is walkable (which is especially true for tiles that are empty).

This change fixes this bug. (The problematic code is in function
"CreateFieldExt()", but always checking for reanimating a killed
player in "InitPlayerField()" seems to be the better (more clean)
fix for this bug.)

2 months agorenamed targets in Makefile
Holger Schemel [Mon, 10 Aug 2020 15:26:17 +0000 (17:26 +0200)]
renamed targets in Makefile

2 months agoupdated custom game controller mappings for newer SDL versions on Android
Holger Schemel [Mon, 10 Aug 2020 00:02:26 +0000 (02:02 +0200)]
updated custom game controller mappings for newer SDL versions on Android

2 months agoadded disabling overlay touch buttons when using joystick
Holger Schemel [Sun, 9 Aug 2020 23:14:31 +0000 (01:14 +0200)]
added disabling overlay touch buttons when using joystick

2 months agoadded tutorial level sets (those which are always part of the distribution)
Holger Schemel [Tue, 28 Jul 2020 23:12:42 +0000 (01:12 +0200)]
added tutorial level sets (those which are always part of the distribution)

2 months agochanged build system for Android from Ant to Gradle
Holger Schemel [Mon, 27 Jul 2020 23:44:27 +0000 (01:44 +0200)]
changed build system for Android from Ant to Gradle

This change is due to an upgrade of the SDL library version used
for building the Android version from 2.0.5 to 2.0.12, which does
not use Ant anymore, but switched to Gradle several versions ago.

2 months agofixed screen size for newer SDL versions on Android
Holger Schemel [Sat, 25 Jul 2020 22:29:09 +0000 (00:29 +0200)]
fixed screen size for newer SDL versions on Android

Using the previous code with newer SDL versions on Android, setting
the drawable screen size using the physical display size does not work
correctly anymore (as the display is usually larger than the drawable
screen area). This is corrected by using the effective size of the
renderer as soon as it is created.

3 months agofixed screen rotation for newer SDL versions on Android
Holger Schemel [Tue, 14 Jul 2020 21:18:56 +0000 (23:18 +0200)]
fixed screen rotation for newer SDL versions on Android

Using the previous code with newer SDL versions on Android, screen
rotation did not work anymore, because the "resizable" flag seems
to be needed even when creating fullscreen surfaces to correctly
detect device rotation in recent SDL versions.

This was fixed by always using the "resizable" flag, regardless of
windowed or fullscreen surfaces on all platforms.

3 months agofixed text event handling for newer SDL versions on Android
Holger Schemel [Tue, 14 Jul 2020 21:03:10 +0000 (23:03 +0200)]
fixed text event handling for newer SDL versions on Android

Using the previous code with newer SDL versions on Android, when
entering text using the screen keyboard, all keys were processed
twice, because of different handling of text events and modifier
keys in recent SDL versions.

The new, more generic approach should work for all SDL versions
on all platforms.