rocksndiamonds.git
4 years 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).

4 years 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

4 years 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

4 years 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

4 years 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.

4 years 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! :-)

4 years 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

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

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

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

4 years 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.

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

4 years 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.

4 years 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)

4 years 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

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

4 years 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.

4 years 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

4 years 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

4 years 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

4 years 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

4 years 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

4 years 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.)

4 years 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

4 years 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

4 years 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.

4 years 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

4 years 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

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

4 years 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

4 years 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

4 years 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

4 years 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

4 years 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).

4 years 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.

4 years 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.

4 years 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.

4 years 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

4 years 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.

4 years 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.

4 years 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.

4 years 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.

4 years 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

4 years 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

4 years 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

4 years 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.

4 years 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!

4 years 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

4 years 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.)

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

4 years 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

4 years 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

4 years 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)

4 years 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.

4 years 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.

4 years 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.

4 years 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.

4 years agoadded build support for older versions of Mac OS X
Holger Schemel [Tue, 14 Jul 2020 18:17:45 +0000 (20:17 +0200)]
added build support for older versions of Mac OS X

4 years agoremoved obsolete targets and statements from Makefiles
Holger Schemel [Tue, 14 Jul 2020 18:12:13 +0000 (20:12 +0200)]
removed obsolete targets and statements from Makefiles

4 years agoadded CPU architecture (32/64 bit) to version info screen
Holger Schemel [Mon, 29 Jun 2020 23:07:10 +0000 (01:07 +0200)]
added CPU architecture (32/64 bit) to version info screen

4 years agoadded support for cross-compiling to Windows 64-bit platform
Holger Schemel [Sun, 21 Jun 2020 13:20:54 +0000 (15:20 +0200)]
added support for cross-compiling to Windows 64-bit platform

4 years agofixed compiler warning on non-Unix systems
Holger Schemel [Sun, 21 Jun 2020 13:18:43 +0000 (15:18 +0200)]
fixed compiler warning on non-Unix systems

4 years agoadded pre-processor directive to set if platform has touch device
Holger Schemel [Thu, 18 Jun 2020 18:32:11 +0000 (20:32 +0200)]
added pre-processor directive to set if platform has touch device

4 years agofixed bug with scrollbar still active on virtual buttons config screen
Holger Schemel [Thu, 18 Jun 2020 18:17:49 +0000 (20:17 +0200)]
fixed bug with scrollbar still active on virtual buttons config screen

4 years agoreplaced ILBM graphics source files in repository with converted PNG files
Holger Schemel [Wed, 17 Jun 2020 17:16:23 +0000 (19:16 +0200)]
replaced ILBM graphics source files in repository with converted PNG files

4 years agoversion number set to 4.2.0.0
Holger Schemel [Sun, 14 Jun 2020 22:42:39 +0000 (00:42 +0200)]
version number set to 4.2.0.0

4 years agoupdated title text and border graphic to show current year
Holger Schemel [Sun, 14 Jun 2020 22:39:34 +0000 (00:39 +0200)]
updated title text and border graphic to show current year

4 years agofixed calculation of clickable area for list entries on menu screens
Holger Schemel [Mon, 8 Jun 2020 22:06:06 +0000 (00:06 +0200)]
fixed calculation of clickable area for list entries on menu screens

4 years agoadded setup option to select default or low-pass sounds for EMC levels
Holger Schemel [Mon, 8 Jun 2020 21:45:06 +0000 (23:45 +0200)]
added setup option to select default or low-pass sounds for EMC levels

4 years agofixed text on game engines setup menu screen
Holger Schemel [Sun, 7 Jun 2020 23:08:12 +0000 (01:08 +0200)]
fixed text on game engines setup menu screen

4 years agoadded explicit type for headline entries on setup menu screens
Holger Schemel [Sun, 7 Jun 2020 23:03:01 +0000 (01:03 +0200)]
added explicit type for headline entries on setup menu screens

4 years agomoved game engine settings to separate setup menu screen
Holger Schemel [Sun, 7 Jun 2020 22:30:14 +0000 (00:30 +0200)]
moved game engine settings to separate setup menu screen

4 years agoadded playing door/gate sound when wrapping-around in EM engine
Holger Schemel [Thu, 28 May 2020 17:00:25 +0000 (19:00 +0200)]
added playing door/gate sound when wrapping-around in EM engine

4 years agoremoved functions for correcting playfield buffer position for EM engine
Holger Schemel [Thu, 28 May 2020 16:32:04 +0000 (18:32 +0200)]
removed functions for correcting playfield buffer position for EM engine

4 years agomoved correcting playfield buffer sound position to EM engine
Holger Schemel [Thu, 28 May 2020 16:30:09 +0000 (18:30 +0200)]
moved correcting playfield buffer sound position to EM engine

4 years agomoved correcting playfield buffer scroll position to EM engine
Holger Schemel [Thu, 28 May 2020 16:28:24 +0000 (18:28 +0200)]
moved correcting playfield buffer scroll position to EM engine

4 years agofixed correcting playfield buffer offsets for EM engine
Holger Schemel [Thu, 28 May 2020 16:23:18 +0000 (18:23 +0200)]
fixed correcting playfield buffer offsets for EM engine

4 years agoadded correcting playfield scroll position for EM engine
Holger Schemel [Thu, 28 May 2020 15:35:22 +0000 (17:35 +0200)]
added correcting playfield scroll position for EM engine

4 years agomoved functions for correcting playfield buffer position to EM engine
Holger Schemel [Thu, 28 May 2020 15:24:11 +0000 (17:24 +0200)]
moved functions for correcting playfield buffer position to EM engine

4 years agochanged correcting playfield buffer position for EM engine
Holger Schemel [Thu, 28 May 2020 15:15:19 +0000 (17:15 +0200)]
changed correcting playfield buffer position for EM engine

4 years agoremoved checks for (unused) border element for EM engine
Holger Schemel [Thu, 28 May 2020 13:58:49 +0000 (15:58 +0200)]
removed checks for (unused) border element for EM engine

4 years agoimproved debug output for level/tape file, game and engine versions
Holger Schemel [Mon, 27 Apr 2020 21:53:00 +0000 (23:53 +0200)]
improved debug output for level/tape file, game and engine versions

4 years agofixed element property that caused levels/tapes to be unsolvable
Holger Schemel [Mon, 27 Apr 2020 21:29:15 +0000 (23:29 +0200)]
fixed element property that caused levels/tapes to be unsolvable

This fixes a bug introduced in version 2.0.1 that broke already
existing levels and tapes, and adds some compatibility code for levels
and tapes created later that require the previous behaviour.

This bugfix was needed for level set "rnd_sam_bateman", level 029,
for example, while the compatibility code was needed for level set
"rnd_gerhard_haeusler", level 023, for example.

4 years agochanged move speed for some elements for older game engine versions
Holger Schemel [Thu, 23 Apr 2020 16:32:19 +0000 (18:32 +0200)]
changed move speed for some elements for older game engine versions

This fix adds some compatibility code for a change in version 2.0.1
that lowered the speed of elements falling into magic wall elements.

This change was needed for level set "rnd_conor_mancone", level 014,
for example.

4 years agominor whitespace change
Holger Schemel [Thu, 23 Apr 2020 09:42:45 +0000 (11:42 +0200)]
minor whitespace change

4 years agominor change of preprocessor macro
Holger Schemel [Wed, 22 Apr 2020 22:27:19 +0000 (00:27 +0200)]
minor change of preprocessor macro

4 years agoreplaced a few bitmask operations by modulo operations
Holger Schemel [Wed, 22 Apr 2020 22:22:42 +0000 (00:22 +0200)]
replaced a few bitmask operations by modulo operations

4 years agoreplaced bitmask for game/tape key/mouse actions by flags again
Holger Schemel [Wed, 22 Apr 2020 10:57:15 +0000 (12:57 +0200)]
replaced bitmask for game/tape key/mouse actions by flags again

The previous solution using bitmasks was simply over-engineered.

4 years agoadded support for tapes with both keyboard/joystick and mouse actions
Holger Schemel [Tue, 21 Apr 2020 20:13:13 +0000 (22:13 +0200)]
added support for tapes with both keyboard/joystick and mouse actions

4 years agoreplaced flag for game/tape mouse actions by bitmask
Holger Schemel [Tue, 21 Apr 2020 19:42:07 +0000 (21:42 +0200)]
replaced flag for game/tape mouse actions by bitmask

4 years agofixed bug with potentially wrong data size at tape position
Holger Schemel [Tue, 21 Apr 2020 19:20:40 +0000 (21:20 +0200)]
fixed bug with potentially wrong data size at tape position

4 years agoadded function to calculate data size at tape position
Holger Schemel [Tue, 21 Apr 2020 18:10:59 +0000 (20:10 +0200)]
added function to calculate data size at tape position

4 years agochanged variable for counting number of tape players
Holger Schemel [Tue, 21 Apr 2020 18:05:33 +0000 (20:05 +0200)]
changed variable for counting number of tape players

4 years agoprepared code to support more tape actions than players
Holger Schemel [Tue, 21 Apr 2020 15:57:41 +0000 (17:57 +0200)]
prepared code to support more tape actions than players

4 years agomoved conditions to separate "if" statement
Holger Schemel [Tue, 21 Apr 2020 15:21:01 +0000 (17:21 +0200)]
moved conditions to separate "if" statement

4 years agofixed bug with invisible, but active overlay touch buttons
Holger Schemel [Mon, 20 Apr 2020 21:23:55 +0000 (23:23 +0200)]
fixed bug with invisible, but active overlay touch buttons

This fixes a nasty bug with handling (invisible) overlay touch buttons
on devices without touch screen.

4 years agomoved flag for mouse click events from level to game structure
Holger Schemel [Mon, 20 Apr 2020 21:12:06 +0000 (23:12 +0200)]
moved flag for mouse click events from level to game structure

Without this change, click events for newly built levels that are
started from the level editor, but that are not yet saved, are not
recognized and not handled (because the corresponding flag was set
only when loading a level).

4 years agoadded new change action "move player new" to CE change actions
Holger Schemel [Fri, 17 Apr 2020 22:40:17 +0000 (00:40 +0200)]
added new change action "move player new" to CE change actions

The difference to the already existing change action "move player" is
that "move player new" only moves the player if this starts a "new"
movement (that is, the player is either not moving at all yet, or has
just finished moving to the next tile).

This is useful to prevent the case of an apparent "two-step movement"
caused by moving the player right after a movement has just started,
which then adds a "second" movement after the "first" movement.

4 years agoadded mouse click events to CE change events (experimental)
Holger Schemel [Fri, 17 Apr 2020 22:14:20 +0000 (00:14 +0200)]
added mouse click events to CE change events (experimental)

This addition is sort of fundamental to the R'n'D game engine in that
it extends the previous limitation of game engine input to only four
direction and two buttons, now also handling mouse clicks to elements
in the playfield as configurable custom element change events.

In contrast to the Mirror Magic game engine (which already handles
mouse input), recording mouse click events to tapes still has to be
implemented.

4 years agoadded being able to use CE condition "CE value/score gets 0"
Holger Schemel [Wed, 15 Apr 2020 19:32:21 +0000 (21:32 +0200)]
added being able to use CE condition "CE value/score gets 0"

While the custom element check "CE value/score gets 0 of [<element>]"
always worked fine, using the check "CE value/score gets 0" for the
same element never worked, because this required a previous change
action for changing the CE value or CE score in the same game frame,
but CEs can only change once in one game frame. (And checking in the
next game frame does not work either, because the CE value or score
does not change in the next frame, so it cannot be checked for zero.)

Resetting the CE's change counter after changing the CE value or score
makes it possible to test for zero directly afterwards.