rocksndiamonds.git
3 years agoadded command to upload existing tapes to server
Holger Schemel [Sat, 3 Jul 2021 11:45:20 +0000 (13:45 +0200)]
added command to upload existing tapes to server

3 years agoimproved handling of command parameters when auto-processing tapes
Holger Schemel [Sat, 3 Jul 2021 11:40:12 +0000 (13:40 +0200)]
improved handling of command parameters when auto-processing tapes

3 years agoadded support for saving specified score tape file to server
Holger Schemel [Sat, 3 Jul 2021 11:37:00 +0000 (13:37 +0200)]
added support for saving specified score tape file to server

3 years agoadded check if loading tape file fails when auto-processing tapes
Holger Schemel [Sat, 3 Jul 2021 11:31:08 +0000 (13:31 +0200)]
added check if loading tape file fails when auto-processing tapes

3 years agofixed misleading comment
Holger Schemel [Sat, 3 Jul 2021 11:24:49 +0000 (13:24 +0200)]
fixed misleading comment

3 years agofixed potential crash bug when processing manipulated tape files
Holger Schemel [Tue, 29 Jun 2021 11:29:02 +0000 (13:29 +0200)]
fixed potential crash bug when processing manipulated tape files

3 years agoadded option to write tape log file (for high score server)
Holger Schemel [Tue, 29 Jun 2021 10:20:21 +0000 (12:20 +0200)]
added option to write tape log file (for high score server)

3 years agoadded command to play tape and upload resulting score to server
Holger Schemel [Mon, 28 Jun 2021 14:41:38 +0000 (16:41 +0200)]
added command to play tape and upload resulting score to server

3 years agoadded support for optional password for score server access
Holger Schemel [Thu, 24 Jun 2021 10:09:34 +0000 (12:09 +0200)]
added support for optional password for score server access

3 years agofixed bugs with thread functions not being re-entrant
Holger Schemel [Wed, 23 Jun 2021 11:11:57 +0000 (13:11 +0200)]
fixed bugs with thread functions not being re-entrant

This change fixes potential problems with thread functions being
called several times in parallel (which may happen if the network
operations performed by these functions really take long). In these
cases, the thread's data structure (see previous commit) will not be
used exclusively anymore.

To fix this, the thread's data structure will be allocated separately
for each invocation of the corresponding thread function.

3 years agofixed bugs with thread functions calling thread-unsave functions
Holger Schemel [Wed, 23 Jun 2021 08:48:52 +0000 (10:48 +0200)]
fixed bugs with thread functions calling thread-unsave functions

This change fixes potential problems with static values returned by
functions that are not thread-safe (filenames of score cache files
and score tape filenames, which change with each invocation of these
functions). Additionally, more problems can (and likely will) happen
with using global variables (score data of last added score entry),
which are changed in the main process while the thread function is
using them.

To fix this, all relevant data is copied to a structure which is then
exclusively used by the corresponding thread function.

3 years agofixed bug with potentially changing global variable in thread
Holger Schemel [Wed, 23 Jun 2021 07:52:38 +0000 (09:52 +0200)]
fixed bug with potentially changing global variable in thread

When automatically incrementing level after solved game, the global
variable to store the level number may be changed while the thread
to upload the score to the server is just using it, which may cause
the score to be submitted for the wrong level number.

To fix this, the (already existing) local variable with the level
number is used instead.

3 years agochanged thread functions to be more generic regarding passed data
Holger Schemel [Wed, 23 Jun 2021 07:50:45 +0000 (09:50 +0200)]
changed thread functions to be more generic regarding passed data

3 years agoadded level name/author and "rate time over score" flag when adding score
Holger Schemel [Tue, 22 Jun 2021 07:59:59 +0000 (09:59 +0200)]
added level name/author and "rate time over score" flag when adding score

3 years agoremoved "rate time over score" flag when downloading scores
Holger Schemel [Mon, 21 Jun 2021 15:45:15 +0000 (17:45 +0200)]
removed "rate time over score" flag when downloading scores

3 years agoremoved unneeded newline characters in error output
Holger Schemel [Mon, 21 Jun 2021 15:28:01 +0000 (17:28 +0200)]
removed unneeded newline characters in error output

3 years agoadded escaping special characters in JSON strings for HTTP requests
Holger Schemel [Mon, 21 Jun 2021 14:14:13 +0000 (16:14 +0200)]
added escaping special characters in JSON strings for HTTP requests

3 years agoadded converting HTTP request to server encoding when downloading scores
Holger Schemel [Mon, 21 Jun 2021 14:09:00 +0000 (16:09 +0200)]
added converting HTTP request to server encoding when downloading scores

3 years agoadded functions for JSON handling
Holger Schemel [Mon, 21 Jun 2021 13:57:36 +0000 (15:57 +0200)]
added functions for JSON handling

3 years agoadded updating game panel values immediately after solving game
Holger Schemel [Mon, 14 Jun 2021 16:04:03 +0000 (18:04 +0200)]
added updating game panel values immediately after solving game

3 years agomoved updating game panel values after solving game to separate function
Holger Schemel [Mon, 14 Jun 2021 16:01:57 +0000 (18:01 +0200)]
moved updating game panel values after solving game to separate function

3 years agoadded some comments
Holger Schemel [Mon, 14 Jun 2021 15:57:45 +0000 (17:57 +0200)]
added some comments

3 years agofixed displaying invalid panel values when finishing a game
Holger Schemel [Mon, 14 Jun 2021 14:50:00 +0000 (16:50 +0200)]
fixed displaying invalid panel values when finishing a game

This change fixes a graphical bug that occurs when the player solves a
game by entering the exit. During that last movement, the level time
in the game panel is displayed incorrectly as zero, because the final
game values for time, score etc. are calculated not before the player
has completed the last step (while the panel values are displayed from
different variables in the last stage after winning a game).

This is a fix for commit ef1162b3.

3 years agomoved setting level settings for Sokoban levels to separate function
Holger Schemel [Mon, 14 Jun 2021 08:05:28 +0000 (10:05 +0200)]
moved setting level settings for Sokoban levels to separate function

3 years agoadded adjusting score settings for Sokoban levels
Holger Schemel [Mon, 14 Jun 2021 07:56:06 +0000 (09:56 +0200)]
added adjusting score settings for Sokoban levels

3 years agomoved setting auto-exit for Sokoban-style levels from runtime to level
Holger Schemel [Sun, 13 Jun 2021 21:37:58 +0000 (23:37 +0200)]
moved setting auto-exit for Sokoban-style levels from runtime to level

3 years agoadded adjusting level settings for (non-native) Sokoban-style levels
Holger Schemel [Sun, 13 Jun 2021 15:07:30 +0000 (17:07 +0200)]
added adjusting level settings for (non-native) Sokoban-style levels

3 years agoadded adjusting some level settings after loading level (not used yet)
Holger Schemel [Sun, 13 Jun 2021 14:52:17 +0000 (16:52 +0200)]
added adjusting some level settings after loading level (not used yet)

3 years agoadded support for toggling team mode in main menu using cursor keys
Holger Schemel [Sun, 13 Jun 2021 10:14:28 +0000 (12:14 +0200)]
added support for toggling team mode in main menu using cursor keys

3 years agocode cleanup (by using function to reset delay counter)
Holger Schemel [Sun, 13 Jun 2021 09:57:37 +0000 (11:57 +0200)]
code cleanup (by using function to reset delay counter)

3 years agochanged name of preprocessor macro
Holger Schemel [Fri, 11 Jun 2021 15:25:41 +0000 (17:25 +0200)]
changed name of preprocessor macro

3 years agochanged how custom elements change to player if they are walkable
Holger Schemel [Fri, 11 Jun 2021 15:01:50 +0000 (17:01 +0200)]
changed how custom elements change to player if they are walkable

Before this change, if a walkable CE changes to the player, the player
is placed on the CE, which will be kept under the player (so it does
not really change to the player, but just adds the player). This is
probably not the expected behaviour when changing a CE to the player
(but may make sense when using the "extended change target", placing
the player on one of the surrounding elements if they are walkable).

This change fixes this behaviour, so by default a CE that "changes to
the player" is replaced by the player, and not just adds the player.
However, a config option was added to the player element to explicitly
request the previous behaviour (which is used by the "Zelda II" level
set, for example).

3 years agoadded waiting for finished snapping when snapping envelope
Holger Schemel [Tue, 8 Jun 2021 21:54:00 +0000 (23:54 +0200)]
added waiting for finished snapping when snapping envelope

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

3 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

3 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

3 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".

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

3 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

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

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

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

3 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

3 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

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

3 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

3 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

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

3 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

3 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

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

3 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

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

3 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

3 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.

3 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.

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

3 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

3 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

3 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

3 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)

3 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

3 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