rocksndiamonds.git
2 years agoadded improved element collecting animations
Holger Schemel [Sun, 30 May 2021 22:14:11 +0000 (00:14 +0200)]
added improved element collecting animations

2 years agoadded command line function to write element collecting image to directory
Holger Schemel [Sun, 30 May 2021 21:40:29 +0000 (23:40 +0200)]
added command line function to write element collecting image to directory

2 years agorenamed command to create level sketch images
Holger Schemel [Sun, 30 May 2021 20:59:54 +0000 (22:59 +0200)]
renamed command to create level sketch images

2 years agoadded marking all images from non-default graphics directory as "redefined"
Holger Schemel [Sat, 29 May 2021 09:25:39 +0000 (11:25 +0200)]
added marking all images from non-default graphics directory as "redefined"

This change is required for the case of custom graphics sets that
replace graphics by simply adding an image file with the same filename
as the default graphics, like "RocksElements.png", but without adding
changed graphics definitions in a "graphicsinfo.conf" config file.

This caused the new (custom) image file to be loaded instead of the
default image file, but did not mark the affected game graphics in the
custom image file to be "redefined" so far (which is required to
invalidate related action or direction graphics loaded from other
image files, which are now overridden by the new base graphics).

This change marks all graphics in such images files as "redefined".

2 years agochanged variable and preprocessor definition names for game base directory
Holger Schemel [Fri, 14 May 2021 22:58:43 +0000 (00:58 +0200)]
changed variable and preprocessor definition names for game base directory

2 years agoremoved unused code for writable game data directory
Holger Schemel [Fri, 14 May 2021 16:54:23 +0000 (18:54 +0200)]
removed unused code for writable game data directory

2 years agoremoved unused code for common (system-wide) data directory
Holger Schemel [Fri, 14 May 2021 16:46:42 +0000 (18:46 +0200)]
removed unused code for common (system-wide) data directory

2 years agoremoved support for global (common/system-wide) scores directory
Holger Schemel [Fri, 14 May 2021 16:43:49 +0000 (18:43 +0200)]
removed support for global (common/system-wide) scores directory

2 years agoadded setup option to force showing local scores only
Holger Schemel [Fri, 14 May 2021 16:14:32 +0000 (18:14 +0200)]
added setup option to force showing local scores only

2 years agoforced displaying last added high score entry
Holger Schemel [Fri, 14 May 2021 15:54:38 +0000 (17:54 +0200)]
forced displaying last added high score entry

2 years agoadded saving score tape and server score if score not added to local scores
Holger Schemel [Wed, 12 May 2021 22:36:16 +0000 (00:36 +0200)]
added saving score tape and server score if score not added to local scores

2 years agofixed skipping historic score entries with empty tape basename
Holger Schemel [Wed, 12 May 2021 22:08:51 +0000 (00:08 +0200)]
fixed skipping historic score entries with empty tape basename

2 years agomoved flag for unique score entry per player name to function parameter
Holger Schemel [Tue, 11 May 2021 18:08:16 +0000 (20:08 +0200)]
moved flag for unique score entry per player name to function parameter

2 years agofixed checking player name when adding new score entry
Holger Schemel [Tue, 11 May 2021 18:03:26 +0000 (20:03 +0200)]
fixed checking player name when adding new score entry

2 years agoadded dumping levels and tapes by level set and number
Holger Schemel [Tue, 11 May 2021 17:43:49 +0000 (19:43 +0200)]
added dumping levels and tapes by level set and number

2 years agoadded "rate time over score" flag when dumping level
Holger Schemel [Tue, 11 May 2021 17:42:15 +0000 (19:42 +0200)]
added "rate time over score" flag when dumping level

2 years agoadded special summary when playing/testing tape by filename
Holger Schemel [Fri, 7 May 2021 15:11:13 +0000 (17:11 +0200)]
added special summary when playing/testing tape by filename

2 years agomoved some expressions for "autotest" result to separate variables
Holger Schemel [Fri, 7 May 2021 15:08:16 +0000 (17:08 +0200)]
moved some expressions for "autotest" result to separate variables

2 years agochanged "autotest" result from "OK" to "WARN" if no tapes were played
Holger Schemel [Wed, 5 May 2021 22:32:31 +0000 (00:32 +0200)]
changed "autotest" result from "OK" to "WARN" if no tapes were played

2 years agoadded support for playing/testing tape by filename
Holger Schemel [Wed, 5 May 2021 22:29:28 +0000 (00:29 +0200)]
added support for playing/testing tape by filename

2 years agoadded using hostname for high score server from setup file
Holger Schemel [Wed, 5 May 2021 08:50:23 +0000 (10:50 +0200)]
added using hostname for high score server from setup file

2 years agoadded runtime flag to store if high score server is available
Holger Schemel [Mon, 3 May 2021 10:50:11 +0000 (12:50 +0200)]
added runtime flag to store if high score server is available

2 years agoadded setup option to enable or disable using high score server
Holger Schemel [Sun, 2 May 2021 17:04:34 +0000 (19:04 +0200)]
added setup option to enable or disable using high score server

2 years agoremoved merging local and server scores after loading server scores
Holger Schemel [Sun, 2 May 2021 16:56:36 +0000 (18:56 +0200)]
removed merging local and server scores after loading server scores

2 years agoadded reloading server scores after download has finished
Holger Schemel [Sat, 1 May 2021 23:19:14 +0000 (01:19 +0200)]
added reloading server scores after download has finished

2 years agoadded loading/saving high scores from/to score server as thread
Holger Schemel [Sat, 1 May 2021 22:44:12 +0000 (00:44 +0200)]
added loading/saving high scores from/to score server as thread

2 years agoadded function to load and merge local and server scores
Holger Schemel [Sat, 1 May 2021 15:27:46 +0000 (17:27 +0200)]
added function to load and merge local and server scores

2 years agominor code change
Holger Schemel [Sat, 1 May 2021 15:21:59 +0000 (17:21 +0200)]
minor code change

2 years agoadded allocating memory buffers that are too large for the stack
Holger Schemel [Sat, 1 May 2021 15:12:15 +0000 (17:12 +0200)]
added allocating memory buffers that are too large for the stack

2 years agoremoved local variables only used for storing copy of global variable
Holger Schemel [Sat, 1 May 2021 15:04:01 +0000 (17:04 +0200)]
removed local variables only used for storing copy of global variable

2 years agoremoved function parameter only used for storing copy of global variable
Holger Schemel [Sat, 1 May 2021 14:57:26 +0000 (16:57 +0200)]
removed function parameter only used for storing copy of global variable

2 years agoremoved local variable only used for storing copy of global variable
Holger Schemel [Sat, 1 May 2021 14:52:30 +0000 (16:52 +0200)]
removed local variable only used for storing copy of global variable

2 years agomoved calculating first entry on high score screen to separate function
Holger Schemel [Sat, 1 May 2021 13:55:40 +0000 (15:55 +0200)]
moved calculating first entry on high score screen to separate function

2 years agoadded freeing buffer for Base64 encoded file
Holger Schemel [Fri, 30 Apr 2021 15:57:49 +0000 (17:57 +0200)]
added freeing buffer for Base64 encoded file

2 years agoadded loading high scores from score server
Holger Schemel [Sat, 24 Apr 2021 23:56:20 +0000 (01:56 +0200)]
added loading high scores from score server

2 years agoadded functions to handle score cache files and directories
Holger Schemel [Sat, 24 Apr 2021 23:50:32 +0000 (01:50 +0200)]
added functions to handle score cache files and directories

2 years agoadded saving high scores to score server
Holger Schemel [Sat, 24 Apr 2021 23:45:52 +0000 (01:45 +0200)]
added saving high scores to score server

2 years agoextended function to set score info structure to default values
Holger Schemel [Sat, 24 Apr 2021 23:35:47 +0000 (01:35 +0200)]
extended function to set score info structure to default values

2 years agoadded last added score entry position to score info structure
Holger Schemel [Sat, 24 Apr 2021 23:31:04 +0000 (01:31 +0200)]
added last added score entry position to score info structure

2 years agofixed saving already erased score tape
Holger Schemel [Sat, 24 Apr 2021 23:18:28 +0000 (01:18 +0200)]
fixed saving already erased score tape

2 years agofixed saving score tape if no tape was recorded
Holger Schemel [Sat, 24 Apr 2021 23:15:07 +0000 (01:15 +0200)]
fixed saving score tape if no tape was recorded

2 years agoimproved (and fixed) adding new score entry
Holger Schemel [Sat, 24 Apr 2021 23:09:11 +0000 (01:09 +0200)]
improved (and fixed) adding new score entry

2 years agomoved adding new score entry to separate function
Holger Schemel [Sat, 24 Apr 2021 22:57:43 +0000 (00:57 +0200)]
moved adding new score entry to separate function

2 years agorenamed function
Holger Schemel [Sat, 24 Apr 2021 22:50:27 +0000 (00:50 +0200)]
renamed function

2 years agochanged variable name
Holger Schemel [Sat, 24 Apr 2021 22:36:01 +0000 (00:36 +0200)]
changed variable name

2 years agochanged variable name
Holger Schemel [Sat, 24 Apr 2021 22:23:17 +0000 (00:23 +0200)]
changed variable name

2 years agoadded functions to convert between HTTP client and server encoding
Holger Schemel [Sat, 24 Apr 2021 22:08:21 +0000 (00:08 +0200)]
added functions to convert between HTTP client and server encoding

2 years agoadded functions to convert between ISO-8859-1 and UTF-8
Holger Schemel [Sat, 24 Apr 2021 22:06:44 +0000 (00:06 +0200)]
added functions to convert between ISO-8859-1 and UTF-8

2 years agoadded basic HTTP support
Holger Schemel [Sat, 24 Apr 2021 22:00:26 +0000 (00:00 +0200)]
added basic HTTP support

2 years agocleanup of code for Base64 encoding and decoding
Holger Schemel [Tue, 6 Apr 2021 21:40:45 +0000 (23:40 +0200)]
cleanup of code for Base64 encoding and decoding

2 years agoadded Base64 encoding and decoding to libgame header file
Holger Schemel [Tue, 6 Apr 2021 21:40:01 +0000 (23:40 +0200)]
added Base64 encoding and decoding to libgame header file

2 years agominor whitespace change
Holger Schemel [Tue, 6 Apr 2021 12:35:56 +0000 (14:35 +0200)]
minor whitespace change

2 years agoadded initial code for Base64 encoding and decoding
Holger Schemel [Tue, 6 Apr 2021 12:34:10 +0000 (14:34 +0200)]
added initial code for Base64 encoding and decoding

2 years agoadded saving tape basename for each high score entry
Holger Schemel [Sun, 4 Apr 2021 12:29:27 +0000 (14:29 +0200)]
added saving tape basename for each high score entry

2 years agominor whitespace change
Holger Schemel [Sun, 4 Apr 2021 11:57:41 +0000 (13:57 +0200)]
minor whitespace change

2 years agoadded saving tape for each high score entry
Holger Schemel [Sun, 4 Apr 2021 11:56:42 +0000 (13:56 +0200)]
added saving tape for each high score entry

2 years agominor code improvement
Holger Schemel [Fri, 2 Apr 2021 23:22:07 +0000 (01:22 +0200)]
minor code improvement

2 years agofixed mouse button CE change events for older levels
Holger Schemel [Wed, 24 Mar 2021 23:29:16 +0000 (00:29 +0100)]
fixed mouse button CE change events for older levels

2 years agofixed counting last step when using steps instead of seconds
Holger Schemel [Sat, 20 Mar 2021 10:26:55 +0000 (11:26 +0100)]
fixed counting last step when using steps instead of seconds

Before this change, the very last step was not counted anymore when
using steps instead of seconds/frames and the game already being
marked as "solved".

This change (together with the previous commit) fixes this bug.

2 years agochanged calculating final game values when game is really over
Holger Schemel [Sat, 20 Mar 2021 10:16:59 +0000 (11:16 +0100)]
changed calculating final game values when game is really over

Before this change, final game values (like final score and final
playing time or steps) were calculated before the game was really
over (but instead at the time the player started moving to the exit).

This especially caused calculating a wrong playing time that did not
include the time the player needed to finally reach the exit, which
was especially wrong when using steps instead of seconds/frames to
count the playing time, as the very last step was always missing in
this case.

This change fixes this bug by moving the code to calculate the final
game values to a later point where there is no player action anymore.

2 years agoadded some comments
Holger Schemel [Sat, 20 Mar 2021 10:12:20 +0000 (11:12 +0100)]
added some comments

2 years agocleanup of function to get high score list text entry
Holger Schemel [Sat, 20 Mar 2021 10:11:07 +0000 (11:11 +0100)]
cleanup of function to get high score list text entry

2 years agomoved converting score to time from high score screen to score file loader
Holger Schemel [Sat, 20 Mar 2021 10:04:05 +0000 (11:04 +0100)]
moved converting score to time from high score screen to score file loader

2 years agochanged loading native Supaplex levels to rate high scores by playing time
Holger Schemel [Sat, 20 Mar 2021 09:30:48 +0000 (10:30 +0100)]
changed loading native Supaplex levels to rate high scores by playing time

2 years agoadded level editor option to sort high scores by playing time (or steps)
Holger Schemel [Thu, 18 Mar 2021 18:44:50 +0000 (19:44 +0100)]
added level editor option to sort high scores by playing time (or steps)

2 years agochanged high score screen to show time instead of score for Supaplex levels
Holger Schemel [Fri, 12 Mar 2021 13:36:13 +0000 (14:36 +0100)]
changed high score screen to show time instead of score for Supaplex levels

2 years agomoved filesystem code for Emscripten platform to separate functions
Holger Schemel [Fri, 12 Mar 2021 07:54:57 +0000 (08:54 +0100)]
moved filesystem code for Emscripten platform to separate functions

2 years agoadded using played time for high score calculation
Holger Schemel [Thu, 11 Mar 2021 17:44:11 +0000 (18:44 +0100)]
added using played time for high score calculation

2 years agoadded storing played time in score files (not used yet)
Holger Schemel [Thu, 11 Mar 2021 19:35:24 +0000 (20:35 +0100)]
added storing played time in score files (not used yet)

2 years agoimproved code for final time calculation
Holger Schemel [Thu, 11 Mar 2021 17:27:11 +0000 (18:27 +0100)]
improved code for final time calculation

2 years agocleanup of high score data structures
Holger Schemel [Thu, 11 Mar 2021 19:33:01 +0000 (20:33 +0100)]
cleanup of high score data structures

2 years agoremoved unused code
Holger Schemel [Tue, 9 Mar 2021 22:59:18 +0000 (23:59 +0100)]
removed unused code

2 years agochanged file format of score files from plain text to IFF
Holger Schemel [Tue, 9 Mar 2021 18:49:00 +0000 (19:49 +0100)]
changed file format of score files from plain text to IFF

2 years agochanged flood fill function to prevent stack overflow crashes
Holger Schemel [Sat, 1 May 2021 13:27:03 +0000 (15:27 +0200)]
changed flood fill function to prevent stack overflow crashes

The previous implementation of the flood fill function (as used in the
level editor) used recursion, which could cause the program to crash
on some systems when using it with maximum level size. This was caused
by a stack overflow on systems that use a stack size not large enough
for the deep recursion involved in such cases. (Such crashes happened
on Windows systems, which usually have a stack size of 1 MB, while it
did not happen on Linux systems, which usually have 8 MB stack size.)

The new flood fill function which uses an iterative algorithm does not
have this problem (as the memory used for it is not on the stack).

3 years agoadded freeing bitmap (potentially replaced after scaling up)
Holger Schemel [Fri, 5 Mar 2021 08:24:23 +0000 (09:24 +0100)]
added freeing bitmap (potentially replaced after scaling up)

3 years agoadded some cleanup and comments
Holger Schemel [Thu, 4 Mar 2021 20:03:55 +0000 (21:03 +0100)]
added some cleanup and comments

3 years agofixed using custom sized game graphics also for global animations
Holger Schemel [Thu, 4 Mar 2021 19:58:03 +0000 (20:58 +0100)]
fixed using custom sized game graphics also for global animations

When using image files for game graphics with custom tile size, then
configuring the same image files also for global animations, global
animations had broken (standard-sized) graphics before.

This change (together with the previous commit) fixes this bug.

3 years agoadded support for accessing (scaled) original size of loaded images
Holger Schemel [Thu, 4 Mar 2021 18:57:56 +0000 (19:57 +0100)]
added support for accessing (scaled) original size of loaded images

Before, loaded images were stored and accessed in "standard" size,
with an exception for game element graphics in non-standard size (like
using game element graphics with a tile size of 64x64 pixels).

This has the disadvantage that global animations using the same image
file are displayed incorrectly, because of not using the original size
of the image, but the (potentially down-scaled) "standard" image size
(as the original sized graphics are only used for game elements).

This change adds a bitmap pointer to easily access the original sized
bitmap (which can either be the normal, standard-sized bitmap, or the
custom sized bitmap used for in-game element graphics). In addition,
the original sized bitmap is also stored in cases where it would have
been discarded before (like image files with double-sized element
graphics used in graphics sets that only use standard sized element
graphics, which causes the original bitmap to be down-scaled and freed
again, only keeping the down-scaled bitmap, so the bitmap in original
size is not available anymore for global animations using the same
image file).

When talking about "original sized bitmaps" here, this is the size of
the image _after_ applying a possible option "scale_up_factor", which
is always applied first.

Correctly using the "original sized bitmaps" for global animations
will be fixed with the next commit.

3 years agochanged name of preprocessor constant to improve readability
Holger Schemel [Thu, 4 Mar 2021 18:43:58 +0000 (19:43 +0100)]
changed name of preprocessor constant to improve readability

3 years agofixed graphics config option to support elements on non-black background
Holger Schemel [Wed, 3 Mar 2021 18:46:19 +0000 (19:46 +0100)]
fixed graphics config option to support elements on non-black background

This change fixes graphical bugs for moving and falling elements when
using non-black background by using option "game.use_masked_elements".

This is a fix for commit bbf7eaa0.

3 years agoversion number set to 4.2.3.2
Holger Schemel [Sun, 28 Feb 2021 17:36:28 +0000 (18:36 +0100)]
version number set to 4.2.3.2

3 years agoadded deployment targets in Makefile 4.2.3.1
Holger Schemel [Wed, 24 Feb 2021 15:37:22 +0000 (16:37 +0100)]
added deployment targets in Makefile

3 years agore-enabled storing selection from "last played level set" menu
Holger Schemel [Sat, 27 Feb 2021 19:22:37 +0000 (20:22 +0100)]
re-enabled storing selection from "last played level set" menu

3 years agoremoved code which has no effect
Holger Schemel [Fri, 26 Feb 2021 09:22:41 +0000 (10:22 +0100)]
removed code which has no effect

3 years agochanged function to get tree node from identifier to be more generic
Holger Schemel [Fri, 26 Feb 2021 09:19:31 +0000 (10:19 +0100)]
changed function to get tree node from identifier to be more generic

3 years agofixed problems with current level set node being a tree node copy
Holger Schemel [Thu, 25 Feb 2021 18:55:50 +0000 (19:55 +0100)]
fixed problems with current level set node being a tree node copy

When selecting the current level set from the "last played level sets"
sub-menu, using the corresponding tree node from this sub-tree instead
of the "original" tree node of that level set may cause a number of
problems:

When using a level template stored in the parent level set directory,
it will not be detected as there is no corresponding parent tree node
if a tree node from the "last played level sets" sub-tree is used.

When toggling between the "original" tree node and the node copy from
the "last played level sets" sub-tree, custom artwork will always be
reloaded, as the level set tree node is treated as "has changed".

This change fixes these problems by always making sure that the
"original" tree node is used after selecting a new level set, but
causes the level set selection menu to always start with the
"original" tree node, even if the last level set selection was made
from the "last played level sets" menu.

3 years agoadded marking nodes in "last played level sets" sub-tree as copy
Holger Schemel [Thu, 25 Feb 2021 18:36:56 +0000 (19:36 +0100)]
added marking nodes in "last played level sets" sub-tree as copy

3 years agoadded safety check (should never happen style)
Holger Schemel [Thu, 25 Feb 2021 11:43:49 +0000 (12:43 +0100)]
added safety check (should never happen style)

3 years agofixed horrible crash bug caused by dereferencing pointer just freed before
Holger Schemel [Thu, 25 Feb 2021 11:31:05 +0000 (12:31 +0100)]
fixed horrible crash bug caused by dereferencing pointer just freed before

3 years agoversion number set to 4.2.3.1
Holger Schemel [Wed, 24 Feb 2021 15:37:08 +0000 (16:37 +0100)]
version number set to 4.2.3.1

3 years agoversion number set to 4.2.3.0 4.2.3.0
Holger Schemel [Tue, 23 Feb 2021 20:18:11 +0000 (21:18 +0100)]
version number set to 4.2.3.0

3 years agoadded support for using LLDB instead of GDB when debugging on Mac
Holger Schemel [Fri, 19 Feb 2021 17:10:02 +0000 (18:10 +0100)]
added support for using LLDB instead of GDB when debugging on Mac

3 years agoadded setup options to disable asking on quit game and on quit program
Holger Schemel [Fri, 19 Feb 2021 01:49:37 +0000 (02:49 +0100)]
added setup options to disable asking on quit game and on quit program

3 years agochanged function parameter handling (with same functionality)
Holger Schemel [Fri, 19 Feb 2021 01:37:59 +0000 (02:37 +0100)]
changed function parameter handling (with same functionality)

3 years agofixed crash bug caused by freeing string buffer twice
Holger Schemel [Thu, 18 Feb 2021 23:24:23 +0000 (00:24 +0100)]
fixed crash bug caused by freeing string buffer twice

When loading a snapshot, a string pointer in the tape structure was
also restored from the snapshot, overwriting a potentially already
changed string pointer, therefore causing the next free() to crash.

3 years agofixed updating list of last played level sets after switching user
Holger Schemel [Thu, 18 Feb 2021 12:54:39 +0000 (13:54 +0100)]
fixed updating list of last played level sets after switching user

3 years agofixed sort priorities of special tree nodes to prevent bad sort results
Holger Schemel [Wed, 17 Feb 2021 22:50:17 +0000 (23:50 +0100)]
fixed sort priorities of special tree nodes to prevent bad sort results

3 years agofixed crash bug caused by accessing undefined sorting name
Holger Schemel [Wed, 17 Feb 2021 12:41:06 +0000 (13:41 +0100)]
fixed crash bug caused by accessing undefined sorting name

3 years agoadded functions to case-insensitively compare strings that might be NULL
Holger Schemel [Wed, 17 Feb 2021 11:49:10 +0000 (12:49 +0100)]
added functions to case-insensitively compare strings that might be NULL

3 years agoadded support for left, middle or right mouse button for CE change events
Holger Schemel [Tue, 16 Feb 2021 22:14:07 +0000 (23:14 +0100)]
added support for left, middle or right mouse button for CE change events