Holger Schemel [Tue, 20 Oct 2020 22:37:43 +0000 (00:37 +0200)]
added function to get default player name
Holger Schemel [Tue, 20 Oct 2020 22:34:16 +0000 (00:34 +0200)]
renamed and moved function to sanitize player name
Holger Schemel [Tue, 20 Oct 2020 22:04:50 +0000 (00:04 +0200)]
renamed function
Holger Schemel [Tue, 20 Oct 2020 21:55:36 +0000 (23:55 +0200)]
fixed bug with not updating list of user names when typing name
This bug occurs when setup option "multiple users" is disabled and
the player name is changed in the main menu -- when done, enabling
multiple users in the setup menu and entering the name selection
screen shows that the current player name that was just changed is
not updated in the list of user names shown on the name selection
screen.
Holger Schemel [Tue, 20 Oct 2020 21:48:15 +0000 (23:48 +0200)]
moved variable from local to file scope
Holger Schemel [Tue, 20 Oct 2020 18:11:31 +0000 (20:11 +0200)]
added correction when typing name on main menu screen
Holger Schemel [Mon, 19 Oct 2020 21:30:19 +0000 (23:30 +0200)]
minor code improvement
Holger Schemel [Mon, 19 Oct 2020 21:26:15 +0000 (23:26 +0200)]
renamed variables
Holger Schemel [Mon, 19 Oct 2020 21:23:29 +0000 (23:23 +0200)]
minor code change when initializing typing player name
Holger Schemel [Mon, 19 Oct 2020 21:21:10 +0000 (23:21 +0200)]
moved code to draw typing player name to separate function
Holger Schemel [Mon, 19 Oct 2020 21:13:41 +0000 (23:13 +0200)]
changed font used for player name after typing
Holger Schemel [Mon, 19 Oct 2020 21:10:58 +0000 (23:10 +0200)]
changed setting font for player name after typing
Holger Schemel [Mon, 19 Oct 2020 21:05:45 +0000 (23:05 +0200)]
minor code improvement
Holger Schemel [Mon, 19 Oct 2020 19:27:19 +0000 (21:27 +0200)]
added variable to improve readability
Holger Schemel [Mon, 19 Oct 2020 19:12:51 +0000 (21:12 +0200)]
fixed game mode for name selection screen
Holger Schemel [Mon, 19 Oct 2020 17:46:19 +0000 (19:46 +0200)]
added check if typed player name has not changed
Holger Schemel [Mon, 19 Oct 2020 00:19:11 +0000 (02:19 +0200)]
added (and enabled) support for user name selection screen
Holger Schemel [Sun, 18 Oct 2020 23:31:38 +0000 (01:31 +0200)]
added more support for user name selection screen (not used yet)
Holger Schemel [Sun, 18 Oct 2020 23:18:46 +0000 (01:18 +0200)]
changed mapping gadgets when drawing screen to choose from tree
This change allows for checking existence and position of scroll bar
when drawing screen to choose item from tree structure.
Holger Schemel [Sun, 18 Oct 2020 23:14:49 +0000 (01:14 +0200)]
renamed function
Holger Schemel [Sun, 18 Oct 2020 23:12:01 +0000 (01:12 +0200)]
changed default player name to "no name" for all but the first user
Holger Schemel [Sun, 18 Oct 2020 22:54:09 +0000 (00:54 +0200)]
fixed bug with unnecessarily reloading custom artwork on ECS/AGA change
This bug occurs when changing the setup option for ECS/AGA preference
when there exists a level set with both ECS and AGA graphics sets in
the available tree of level sets, and results in (visually) attempting
to reload the current graphics even if the currently active level set
does not have any such graphics variants.
This fix prevents such unnecessary attempts to reload custom graphics,
and adds a better check for changed graphics (also needed if graphics
change from ECS to AGA variant) that really compares the previous with
the current graphics (which may result in the need to reload graphics).
Holger Schemel [Sun, 18 Oct 2020 22:51:14 +0000 (00:51 +0200)]
renamed variable
Holger Schemel [Sun, 18 Oct 2020 22:46:20 +0000 (00:46 +0200)]
minor whitespace change
Holger Schemel [Sun, 18 Oct 2020 12:49:06 +0000 (14:49 +0200)]
changed code to type name to support different last screens
Holger Schemel [Sun, 18 Oct 2020 12:44:32 +0000 (14:44 +0200)]
prepared code to type player name for upcoming multiple names
Holger Schemel [Sun, 18 Oct 2020 12:21:58 +0000 (14:21 +0200)]
changed variable handling when typing name in main menu
Instead of immediately modifying setup player name when typing (and
restoring it when aborting by pressing Escape key), use internal
string buffer instead and only update setup player name after typing
name was successfully finished.
Holger Schemel [Sun, 18 Oct 2020 11:29:04 +0000 (13:29 +0200)]
removed redundant code
Holger Schemel [Sun, 18 Oct 2020 11:25:32 +0000 (13:25 +0200)]
renamed some variables
Holger Schemel [Sun, 18 Oct 2020 00:52:13 +0000 (02:52 +0200)]
added basic support for user name selection screen (not used yet)
Holger Schemel [Sun, 18 Oct 2020 00:29:54 +0000 (02:29 +0200)]
added support for loading list of all user names
Holger Schemel [Sun, 18 Oct 2020 00:16:29 +0000 (02:16 +0200)]
added support for loading and saving number of currently active user
Holger Schemel [Sat, 17 Oct 2020 23:54:32 +0000 (01:54 +0200)]
added support for multiple user game data directories
This change adds support for game data directories for multiple users,
to store individual user configuration files (like setup data and last
played level sets and levels) and individual user content files (like
personal tape files, but not personal level sets and scores, which are
still stored to be accessible by all users).
Special treatment is done for the game data files of the first user,
which are still stored in the main game data directory like before,
so there are no changes in file and directory paths for the "default
user", regardless if multiple user support is enabled or disabled.
Holger Schemel [Sat, 17 Oct 2020 23:25:04 +0000 (01:25 +0200)]
added user structure for upcoming multiple user support
Holger Schemel [Sat, 17 Oct 2020 23:12:38 +0000 (01:12 +0200)]
added setup option for upcoming new name selection screen
Holger Schemel [Wed, 30 Sep 2020 21:45:42 +0000 (23:45 +0200)]
added definitions for upcoming new name selection screen
Holger Schemel [Sat, 17 Oct 2020 16:04:10 +0000 (18:04 +0200)]
removed unnecessary braces in "return" statements
Holger Schemel [Sat, 17 Oct 2020 16:01:23 +0000 (18:01 +0200)]
added missing free() for local string variable
Holger Schemel [Sat, 17 Oct 2020 15:57:44 +0000 (17:57 +0200)]
improved code to type player name in main menu
Holger Schemel [Sat, 17 Oct 2020 15:46:15 +0000 (17:46 +0200)]
improved code to set or change current artwork
Holger Schemel [Sun, 13 Dec 2020 23:40:32 +0000 (00:40 +0100)]
fixed bug with tile selection cursor for MM game engine
Holger Schemel [Sun, 13 Dec 2020 20:22:19 +0000 (21:22 +0100)]
added using setup values for tile selection cursor for MM game engine
Holger Schemel [Sun, 13 Dec 2020 20:10:05 +0000 (21:10 +0100)]
added setup values for tile selection cursor for MM game engine
Holger Schemel [Sun, 13 Dec 2020 19:49:46 +0000 (20:49 +0100)]
added function to remove entry from hash
Holger Schemel [Sun, 13 Dec 2020 19:46:08 +0000 (20:46 +0100)]
moved initializing hash
Holger Schemel [Sun, 13 Dec 2020 11:59:47 +0000 (12:59 +0100)]
fixed setup option position when using narrow font
Holger Schemel [Fri, 11 Dec 2020 00:54:19 +0000 (01:54 +0100)]
improved tile selection cursor for MM game engine
Holger Schemel [Fri, 11 Dec 2020 00:20:23 +0000 (01:20 +0100)]
added previously static function to header file
Holger Schemel [Wed, 9 Dec 2020 22:37:16 +0000 (23:37 +0100)]
moved function to different source file
Holger Schemel [Fri, 30 Oct 2020 14:26:57 +0000 (15:26 +0100)]
added highlighting of drawing element in editor when pressing "Alt" key
Holger Schemel [Wed, 9 Dec 2020 19:04:14 +0000 (20:04 +0100)]
version number set to 4.2.0.6
Holger Schemel [Fri, 4 Dec 2020 20:58:19 +0000 (21:58 +0100)]
fixed time of some game elements when reading native DC2 levels
Holger Schemel [Fri, 4 Dec 2020 20:51:57 +0000 (21:51 +0100)]
fixed score of some game elements when reading native DC2 levels
Holger Schemel [Fri, 4 Dec 2020 20:43:14 +0000 (21:43 +0100)]
fixed mapping of some game elements when reading native DC2 levels
Holger Schemel [Fri, 4 Dec 2020 19:59:10 +0000 (20:59 +0100)]
fixed compiling on OS/2 (ArcaOS, in fact)
Holger Schemel [Tue, 1 Dec 2020 20:22:41 +0000 (21:22 +0100)]
fixed activating robot wheel at wrap-around position for EM engine
Holger Schemel [Tue, 1 Dec 2020 20:18:01 +0000 (21:18 +0100)]
fixed wrap-around with entering EM style door (gate) for EM engine
Holger Schemel [Thu, 26 Nov 2020 23:19:35 +0000 (00:19 +0100)]
added "index.html" file for Emscripten support
Holger Schemel [Thu, 26 Nov 2020 22:33:56 +0000 (23:33 +0100)]
added Emscripten support for running R'n'D in a web browser
Holger Schemel [Thu, 26 Nov 2020 22:08:35 +0000 (23:08 +0100)]
removed unused definition
Holger Schemel [Thu, 26 Nov 2020 17:04:15 +0000 (18:04 +0100)]
minor Makefile changes
Holger Schemel [Thu, 26 Nov 2020 16:58:48 +0000 (17:58 +0100)]
added fix to Makefile to execute "sdl2-config" only once
Holger Schemel [Thu, 26 Nov 2020 16:46:02 +0000 (17:46 +0100)]
added abstractions for using getpwuid()
Holger Schemel [Tue, 24 Nov 2020 22:08:34 +0000 (23:08 +0100)]
removed unused array
Holger Schemel [Wed, 18 Nov 2020 18:21:18 +0000 (19:21 +0100)]
fixed compiler warning with GCC 9
Holger Schemel [Sat, 14 Nov 2020 00:20:47 +0000 (01:20 +0100)]
fixed handling of player at fake acid for EM engine
Holger Schemel [Wed, 11 Nov 2020 23:02:08 +0000 (00:02 +0100)]
version number set to 4.2.0.5
Holger Schemel [Fri, 6 Nov 2020 14:35:02 +0000 (15:35 +0100)]
fixed graphical bugs if digging or collecting caused player relocation
If digging or collecting (but not snapping!) certain tiles or elements
causes the player to be relocated ("teleported"), the corresponding
digging or collecting animation for this element will not be continued
anymore (because the player does not move towards this tile anymore).
To fix this problem, the digged or collected tile will be treated like
being snapped (using a temporary run-time element) for this edge case.
(The resulting engine behaviour is slightly different to the previous
behaviour, but should not break too many levels as this case should be
rather uncommon.)
Holger Schemel [Sat, 31 Oct 2020 22:53:17 +0000 (23:53 +0100)]
increased the maximum tape length for playing extreme levels
Playing Alan Bond's famous "Zelda 2" one-level set requires a tape
playing time of several hours, which may exceed the previous maximum
tape length.
Holger Schemel [Sat, 31 Oct 2020 22:50:46 +0000 (23:50 +0100)]
fixed bug with not setting grid size and buttons after screen changes
Holger Schemel [Sat, 31 Oct 2020 22:49:58 +0000 (23:49 +0100)]
moved setting overlay grid size and buttons to separate function
Holger Schemel [Thu, 29 Oct 2020 07:53:35 +0000 (08:53 +0100)]
changed handling "conf" and "properties" buttons in level editor
When clicking "conf" and "properties" buttons in the level editor when
the previous screen is not the playfield screen, it can be confusing
how to return to the playfield screen (by clicking both buttons in the
"right" order). To make things easier, both buttons now return to the
playfield screen if the user is already on the corresponding screen.
Holger Schemel [Sun, 25 Oct 2020 19:17:27 +0000 (20:17 +0100)]
removed unused function
Holger Schemel [Sun, 25 Oct 2020 18:53:25 +0000 (19:53 +0100)]
fixed bug with copying color key if surfaces have different format
This bug occurs when getting the color key of a surface and setting it
as the color key of another surface that has a surface format that
differs from that of the first surface.
This bug occurs in conjunction with the workaround for the color key
bug in SDL 2.0.12 which prevents transparency in graphics files with
color palette. (See commit
6b6c9eb2 for that workaround.)
Especially, this bug combination occurs on the high score screen of
Alan Bond's "Snake Bite" level set, which then only shows a headline
on a black screen. (This screen uses a trick to show each line on the
screen in a different color by using a background with different
colors and an inverted font with transparent characters and opaque
black surroundings, so missing transparency leads to "black text on
black background".)
Holger Schemel [Sun, 25 Oct 2020 18:33:16 +0000 (19:33 +0100)]
changed function to check if a surface has a color key
Holger Schemel [Sat, 24 Oct 2020 00:50:36 +0000 (02:50 +0200)]
improved inserting level sketch from clipboard to level editor
When pasting a level sketch to the level editor that has been copied
from the R'n'D forum, obsolete (historic) game elements will be mapped
to their current counterparts (just like it is done when loading an
old R'n'D level file). In addition, the corresponding game engine is
auto-detected (if possible) and set accordingly.
Holger Schemel [Thu, 22 Oct 2020 16:37:29 +0000 (18:37 +0200)]
fixed bug with clicked text area gadgets marking level as changed
This bugs happens when clicking into a text area gadgets, then
deactivating it again by clicking somewhere else. This marks the level
as changed, even though nothing was changed at all.
Holger Schemel [Thu, 22 Oct 2020 16:31:50 +0000 (18:31 +0200)]
fixed bug with text area gadgets when pressing "Escape" key
This bugs happens when leaving a text area gadget by pressing the
"Escape" key. While this is allowed and does not cause the previous
text area content to be restored (as text area gadgets cannot be
left using the "Enter" key, and as there may be huge amount of text
being entered), the corresponding callback function is not called, so
the entered text is lost as soon as the gadget gets unmapped.
Holger Schemel [Thu, 22 Oct 2020 16:25:15 +0000 (18:25 +0200)]
fixed bug with text input gadgets when pressing "Escape" key
This bugs happens when incrementing or decrementing a numeric text
input gadget by 5 or 10 (using middle or right mouse button) so that
it gets a value beyond the allowed range. Although this will be
corrected, the "last value" variable still has the bad value, which
gets restored when clicking that text input gadget and then leaving
it by pressing the "Escape" key.
Holger Schemel [Mon, 12 Oct 2020 22:19:06 +0000 (00:19 +0200)]
re-added accidentally removed program icon
The program icon file was unintentionally removed with commit
679bbca8.
Holger Schemel [Mon, 5 Oct 2020 20:49:05 +0000 (22:49 +0200)]
version number set to 4.2.0.4
Holger Schemel [Sun, 4 Oct 2020 23:54:44 +0000 (01:54 +0200)]
added disabling overlay touch buttons when showing envelope
Holger Schemel [Sun, 4 Oct 2020 23:17:43 +0000 (01:17 +0200)]
added check to prevent unnecessary SDL download for Android build
Holger Schemel [Sun, 4 Oct 2020 23:12:51 +0000 (01:12 +0200)]
removed unnecessary screen redraws 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
Holger Schemel [Sun, 4 Oct 2020 23:07:05 +0000 (01:07 +0200)]
added always clearing player action when waiting for events to continue
Holger Schemel [Sun, 4 Oct 2020 22:59:34 +0000 (00:59 +0200)]
added clearing player action for non-game finger release events
Holger Schemel [Sun, 4 Oct 2020 22:57:27 +0000 (00:57 +0200)]
added clearing virtual buttons 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
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
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.
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.)
Holger Schemel [Fri, 2 Oct 2020 13:09:57 +0000 (15:09 +0200)]
changed compiling on Android to use optimization for release builds
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.
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.
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).
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.
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.
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.
Holger Schemel [Sat, 19 Sep 2020 01:05:28 +0000 (03:05 +0200)]
added showing commit hash on version page of info screen