rocksndiamonds.git
14 months agoversion number set to 4.3.5.0 4.3.5.0
Holger Schemel [Tue, 14 Feb 2023 20:24:05 +0000 (21:24 +0100)]
version number set to 4.3.5.0

14 months agoswapped active/pressed logic for level set info button graphics
Holger Schemel [Tue, 14 Feb 2023 20:19:37 +0000 (21:19 +0100)]
swapped active/pressed logic for level set info button graphics

14 months agoupdated title text and border graphic to show current year
Holger Schemel [Mon, 13 Feb 2023 22:55:49 +0000 (23:55 +0100)]
updated title text and border graphic to show current year

14 months agoadded setup file options for debug mode
Holger Schemel [Sat, 11 Feb 2023 11:32:57 +0000 (12:32 +0100)]
added setup file options for debug mode

14 months agoadded preprocessor constant for undefined string parameter
Holger Schemel [Sat, 11 Feb 2023 11:15:34 +0000 (12:15 +0100)]
added preprocessor constant for undefined string parameter

14 months agomoved code to different function where it belongs to
Holger Schemel [Wed, 8 Feb 2023 22:19:09 +0000 (23:19 +0100)]
moved code to different function where it belongs to

14 months agoadded support for stacked global animations
Holger Schemel [Wed, 8 Feb 2023 21:49:12 +0000 (22:49 +0100)]
added support for stacked global animations

This extension of global animations adds "stacked animations" that are
created by "stacking" the same global animation multiple times, either
horizontally, vertically, or both, with additional options to use some
empty space between two adjacent stacked animations, as follows:

global.anim_X.stacked_xfactor: <x-factor>
global.anim_X.stacked_yfactor: <y-factor>
global.anim_X.stacked_xoffset: <x-offset>
global.anim_X.stacked_yoffset: <y-offset>

This would stack global animation X <x-factor> times horizontally and
<y-factor> times vertically, while adding empty space between stacked
animations of <x-offset> pixels horizontally and <y-offset> vertically.

14 months agomoved code to separate function
Holger Schemel [Wed, 8 Feb 2023 19:53:07 +0000 (20:53 +0100)]
moved code to separate function

14 months agorenamed program log file to use program basename
Holger Schemel [Wed, 8 Feb 2023 12:47:15 +0000 (13:47 +0100)]
renamed program log file to use program basename

14 months agochanged logging to write to one single log file
Holger Schemel [Wed, 8 Feb 2023 12:27:30 +0000 (13:27 +0100)]
changed logging to write to one single log file

14 months agorenamed variable
Holger Schemel [Wed, 8 Feb 2023 12:06:38 +0000 (13:06 +0100)]
renamed variable

14 months agoadded internal variable for program basename
Holger Schemel [Wed, 8 Feb 2023 12:04:58 +0000 (13:04 +0100)]
added internal variable for program basename

14 months agoremoved unused variable
Holger Schemel [Wed, 8 Feb 2023 12:00:22 +0000 (13:00 +0100)]
removed unused variable

14 months agorenamed variable
Holger Schemel [Wed, 8 Feb 2023 11:55:23 +0000 (12:55 +0100)]
renamed variable

14 months agoremoved deriving Unix user data directory from program config file
Holger Schemel [Wed, 8 Feb 2023 11:54:28 +0000 (12:54 +0100)]
removed deriving Unix user data directory from program config file

14 months agoadded graphic definition for activated state for level set info button
Holger Schemel [Tue, 7 Feb 2023 23:52:27 +0000 (00:52 +0100)]
added graphic definition for activated state for level set info button

14 months agoadded support for new check button for screen menu buttons
Holger Schemel [Tue, 7 Feb 2023 23:45:27 +0000 (00:45 +0100)]
added support for new check button for screen menu buttons

14 months agoadded check button gadget that toggles only after releasing
Holger Schemel [Tue, 7 Feb 2023 23:37:19 +0000 (00:37 +0100)]
added check button gadget that toggles only after releasing

14 months agoadded debug output showing which font token is used for which screen text
Holger Schemel [Tue, 7 Feb 2023 14:07:35 +0000 (15:07 +0100)]
added debug output showing which font token is used for which screen text

14 months agoadded looking for game music directory by checking directory files
Holger Schemel [Sun, 5 Feb 2023 17:55:51 +0000 (18:55 +0100)]
added looking for game music directory by checking directory files

Before, the first matching music directory was used -- regardless of
its contents. This means that it may indeed contain game music files
(that are not configured for any other purpose), or that it is a level
specific music directory that only contains some additional music
configured for a certain purpose, but no game music files, in which
case no game music files were found and used at all (as the general
custom music directory with all the game music would not be used in
this case).

This change adds looking for the first matching music directory that
really contains game music (not configured for other purposes).

14 months agofixed bug with not scaling images despite using option ".scale_up_factor"
Holger Schemel [Sun, 5 Feb 2023 10:58:31 +0000 (11:58 +0100)]
fixed bug with not scaling images despite using option ".scale_up_factor"

14 months agoadded description file for envelope elements for MM engine
Holger Schemel [Wed, 1 Feb 2023 21:56:00 +0000 (22:56 +0100)]
added description file for envelope elements for MM engine

14 months agoadded support for x/y/width/height parameters for border/background images
Holger Schemel [Tue, 31 Jan 2023 23:42:10 +0000 (00:42 +0100)]
added support for x/y/width/height parameters for border/background images

14 months agoadded support for ".draw_masked" when using title screen with background
Holger Schemel [Tue, 31 Jan 2023 19:06:32 +0000 (20:06 +0100)]
added support for ".draw_masked" when using title screen with background

14 months agoadded support for text envelope elements to the MM engine
Holger Schemel [Sun, 29 Jan 2023 13:55:18 +0000 (14:55 +0100)]
added support for text envelope elements to the MM engine

14 months agofixed overloading laser due to duplicated tiles in damage list in MM engine
Holger Schemel [Sat, 28 Jan 2023 13:29:08 +0000 (14:29 +0100)]
fixed overloading laser due to duplicated tiles in damage list in MM engine

Repeatedly adding tiles to the damage list that have already been
added before for the same laser edge can cause filling up the list
very quickly, causing the laser to overload as a result.

14 months agofixed bugs with missing re-initializations of delay counters in MM engine
Holger Schemel [Sat, 28 Jan 2023 13:19:07 +0000 (14:19 +0100)]
fixed bugs with missing re-initializations of delay counters in MM engine

14 months agoadded pausing tape after replaying not only for warp mode (again)
Holger Schemel [Sat, 28 Jan 2023 12:41:35 +0000 (13:41 +0100)]
added pausing tape after replaying not only for warp mode (again)

This adds the previously reverted change of commit 31df2f98 again,
but should fix the problems that it caused when unpausing the tape
after replaying until the end of the tape and entering pause mode.

14 months agofixed pausing tape after replaying
Holger Schemel [Sat, 28 Jan 2023 12:23:49 +0000 (13:23 +0100)]
fixed pausing tape after replaying

This fixes a problem with automatically pausing tape at the end of a
tape without "auto-record after replay" being activated, which leads
to a pause mode that cannot be left besides pressing "stop tape".

This change reverts commit 31df2f98.

15 months agoremoved workaround for playing some older tapes for MM engine
Holger Schemel [Sat, 28 Jan 2023 10:27:01 +0000 (11:27 +0100)]
removed workaround for playing some older tapes for MM engine

This removes a workaround that added compatibility code for replaying
old tapes which used the game engine's random number generator for
drawing game elements, which generally should not happen.

This affects the tapes for levels 033 and 048 of "classic_mindbender",
which have been re-recorded with the above change.

This change reverts commit 8b514628.

15 months agofixed regression bug with growing steel wall turning into normal wall
Holger Schemel [Mon, 23 Jan 2023 22:39:09 +0000 (23:39 +0100)]
fixed regression bug with growing steel wall turning into normal wall

This fixes a very nasty bug in commit 4b754efd that caused growing
steel wall turning into normal wall instead of steel wall (which is
not immediately visible as growing wall animations use steel wall).

15 months agofixed bug with re-scanning laser when rotating teleporter in MM engine
Holger Schemel [Sun, 22 Jan 2023 23:27:36 +0000 (00:27 +0100)]
fixed bug with re-scanning laser when rotating teleporter in MM engine

The "fix" in commit 1b2237c9 fixed some old problems with handling
teleporter elements, but caused new problems with overheating which
should not happen.

This change seems to fix both cases.

15 months agofixed playing older tapes for MM engine
Holger Schemel [Sun, 22 Jan 2023 10:40:28 +0000 (11:40 +0100)]
fixed playing older tapes for MM engine

15 months agoimproved performance of game actions loop in MM engine
Holger Schemel [Sat, 21 Jan 2023 12:32:29 +0000 (13:32 +0100)]
improved performance of game actions loop in MM engine

15 months agofixed crash bug when running in headless mode
Holger Schemel [Thu, 19 Jan 2023 08:08:22 +0000 (09:08 +0100)]
fixed crash bug when running in headless mode

15 months agofixed bug with leaving steel grid after passing it in an irregular way
Holger Schemel [Wed, 18 Jan 2023 18:00:33 +0000 (19:00 +0100)]
fixed bug with leaving steel grid after passing it in an irregular way

When using DF style reflecting steel walls together with MM style
fixed steel grid, it is possible to point the laser towards the grid
in a non 90° angle and still passing through it (with the laser beam
being reflected inside the grid until it leaves the grid on the other
side). However, this did not work when passing the steel grid from
bottom to top (upwards) into an "empty space" element.

This change fixes handling this special case.

15 months agofixed bug with cutting through laser emitter in special cases in MM engine
Holger Schemel [Wed, 18 Jan 2023 17:51:54 +0000 (18:51 +0100)]
fixed bug with cutting through laser emitter in special cases in MM engine

While the laser beam can be pointed at the middle of the laser emitter
element, and also can slightly touch it at its very edges, it should
not be possible to cut through it nearer to the middle, but without
really hitting the middle of the laser emitter.

15 months agofixed bug with laser not passing alongside DF steel walls in MM engine
Holger Schemel [Wed, 18 Jan 2023 17:43:26 +0000 (18:43 +0100)]
fixed bug with laser not passing alongside DF steel walls in MM engine

This bug only happened in certain special cases where the laser beam
had already touched a tile with DF style steel walls (from a side or
an angle where it cannot pass) and later touching the same tile again
from a different side or angle where it can pass (but without having
touched another DF steel wall on any other tile in between).

15 months agofixed using custom laser color defined in DF style laser for MM engine
Holger Schemel [Tue, 17 Jan 2023 23:09:55 +0000 (00:09 +0100)]
fixed using custom laser color defined in DF style laser for MM engine

15 months agofixed bug with undefined element graphic when pushing into explosion
Holger Schemel [Thu, 12 Jan 2023 17:17:59 +0000 (18:17 +0100)]
fixed bug with undefined element graphic when pushing into explosion

15 months agoremoved duplicated code
Holger Schemel [Thu, 12 Jan 2023 17:14:20 +0000 (18:14 +0100)]
removed duplicated code

15 months agomoved code for drawing background of push target field to correct location
Holger Schemel [Thu, 12 Jan 2023 17:08:17 +0000 (18:08 +0100)]
moved code for drawing background of push target field to correct location

15 months agoadded not drawing or scanning laser if fuse is off in MM engine
Holger Schemel [Thu, 12 Jan 2023 08:54:39 +0000 (09:54 +0100)]
added not drawing or scanning laser if fuse is off in MM engine

15 months agoadded deactivating laser target element when disabling laser in MM engine
Holger Schemel [Thu, 12 Jan 2023 08:48:44 +0000 (09:48 +0100)]
added deactivating laser target element when disabling laser in MM engine

15 months agomoved code to deactivate target element to separate function in MM engine
Holger Schemel [Thu, 12 Jan 2023 08:46:12 +0000 (09:46 +0100)]
moved code to deactivate target element to separate function in MM engine

15 months agoimproved handling of opening gray ball when turning laser away
Holger Schemel [Tue, 10 Jan 2023 22:35:25 +0000 (23:35 +0100)]
improved handling of opening gray ball when turning laser away

15 months agoadded customizability of gray ball content for MM engine
Holger Schemel [Sun, 8 Jan 2023 20:10:53 +0000 (21:10 +0100)]
added customizability of gray ball content for MM engine

15 months agoadded active animation for bomb and mine in MM engine
Holger Schemel [Sat, 7 Jan 2023 17:04:41 +0000 (18:04 +0100)]
added active animation for bomb and mine in MM engine

15 months agofixed rotation graphics of DF style mirrors for MM engine
Holger Schemel [Sat, 7 Jan 2023 12:42:18 +0000 (13:42 +0100)]
fixed rotation graphics of DF style mirrors for MM engine

15 months agofixed broken graphics of opening gray ball in MM engine
Holger Schemel [Fri, 6 Jan 2023 23:31:50 +0000 (00:31 +0100)]
fixed broken graphics of opening gray ball in MM engine

15 months agoadded level editor graphics for the MM style gray ball
Holger Schemel [Fri, 6 Jan 2023 22:48:05 +0000 (23:48 +0100)]
added level editor graphics for the MM style gray ball

15 months agoadded using GIC flags "request.button.player_X.draw_player"
Holger Schemel [Fri, 6 Jan 2023 22:16:38 +0000 (23:16 +0100)]
added using GIC flags "request.button.player_X.draw_player"

This "graphicsinfo.conf" flag was completely ignored until now. It can
be used to control if player graphics should be drawn on top of the
four request buttons to select the network player in the setup menu,
or if only the buttons (without additional player graphics) should be
used (which only makes sense if custom player request buttons are used
with individual player graphics). The default value is "true".

15 months agoimproved MM graphics engine to support custom explosions of elements
Holger Schemel [Thu, 5 Jan 2023 01:50:25 +0000 (02:50 +0100)]
improved MM graphics engine to support custom explosions of elements

15 months agoremoved unneeded mask element and graphic definitions from MM engine
Holger Schemel [Thu, 5 Jan 2023 00:28:04 +0000 (01:28 +0100)]
removed unneeded mask element and graphic definitions from MM engine

Instead, the already existing element mask array (which was added
earlier to prevent reading pixels from bitmaps) is accessed now by
directly using the mask array positions (instead of using dummy mask
element and graphics definitions only for mapping to the mask array
positions).

15 months agochanged MM engine to use explosion phase array from main engine
Holger Schemel [Wed, 4 Jan 2023 23:00:13 +0000 (00:00 +0100)]
changed MM engine to use explosion phase array from main engine

15 months agominor code formatting change
Holger Schemel [Wed, 4 Jan 2023 22:42:10 +0000 (23:42 +0100)]
minor code formatting change

15 months agofixed bugs when re-charging laser with fuel element in MM engine
Holger Schemel [Tue, 3 Jan 2023 23:52:58 +0000 (00:52 +0100)]
fixed bugs when re-charging laser with fuel element in MM engine

15 months agofixed bug that prevents playing levels without time limit in MM engine
Holger Schemel [Mon, 2 Jan 2023 11:45:35 +0000 (12:45 +0100)]
fixed bug that prevents playing levels without time limit in MM engine

15 months agofixed bug with reduced initial time limit in MM engine
Holger Schemel [Mon, 2 Jan 2023 11:27:30 +0000 (12:27 +0100)]
fixed bug with reduced initial time limit in MM engine

15 months agocleanup of function for fading laser in MM engine
Holger Schemel [Mon, 2 Jan 2023 10:56:53 +0000 (11:56 +0100)]
cleanup of function for fading laser in MM engine

15 months agomoved code to set laser color to separate function in MM engine
Holger Schemel [Mon, 2 Jan 2023 10:53:01 +0000 (11:53 +0100)]
moved code to set laser color to separate function in MM engine

15 months agofixed drawing overloaded laser when rotating McDuffin in MM engine
Holger Schemel [Mon, 2 Jan 2023 09:52:48 +0000 (10:52 +0100)]
fixed drawing overloaded laser when rotating McDuffin in MM engine

16 months agofixed bugs with request dialog on game over in MM engine
Holger Schemel [Thu, 29 Dec 2022 01:35:10 +0000 (02:35 +0100)]
fixed bugs with request dialog on game over in MM engine

16 months agoadded skipping certain game actions on game over in MM engine
Holger Schemel [Thu, 29 Dec 2022 00:31:32 +0000 (01:31 +0100)]
added skipping certain game actions on game over in MM engine

16 months agomoved code for fading out laser to separate function in MM engine
Holger Schemel [Thu, 29 Dec 2022 00:26:28 +0000 (01:26 +0100)]
moved code for fading out laser to separate function in MM engine

16 months agofixed bug with re-scanning laser when rotating teleporter in MM engine
Holger Schemel [Wed, 28 Dec 2022 09:21:25 +0000 (10:21 +0100)]
fixed bug with re-scanning laser when rotating teleporter in MM engine

16 months agominor whitespace change
Holger Schemel [Thu, 22 Dec 2022 17:39:19 +0000 (18:39 +0100)]
minor whitespace change

16 months agoadded special compatibility handling for "R'n'D jue 2022" game editions
Holger Schemel [Thu, 22 Dec 2022 17:36:37 +0000 (18:36 +0100)]
added special compatibility handling for "R'n'D jue 2022" game editions

16 months agoversion number set to 4.3.4.1
Holger Schemel [Tue, 20 Dec 2022 23:26:04 +0000 (00:26 +0100)]
version number set to 4.3.4.1

16 months agoversion number set to 4.3.4.0 4.3.4.0
Holger Schemel [Sun, 18 Dec 2022 10:50:21 +0000 (11:50 +0100)]
version number set to 4.3.4.0

16 months agofixed text length calculation bug
Holger Schemel [Sun, 18 Dec 2022 10:47:56 +0000 (11:47 +0100)]
fixed text length calculation bug

16 months agoadded third tutorial level set "ncrtorial" by ncrecc
Holger Schemel [Sun, 18 Dec 2022 10:37:53 +0000 (11:37 +0100)]
added third tutorial level set "ncrtorial" by ncrecc

16 months agoadded support for separate sound and music for info sub-screens
Holger Schemel [Sat, 17 Dec 2022 12:47:59 +0000 (13:47 +0100)]
added support for separate sound and music for info sub-screens

16 months agoremoved unused code (list of score entries is never empty)
Holger Schemel [Sat, 17 Dec 2022 09:42:04 +0000 (10:42 +0100)]
removed unused code (list of score entries is never empty)

16 months agoremoved sub-headline on score info screen
Holger Schemel [Sat, 17 Dec 2022 09:08:00 +0000 (10:08 +0100)]
removed sub-headline on score info screen

16 months agoadded special screen position for button to show level set info for "jue0"
Holger Schemel [Fri, 16 Dec 2022 17:56:39 +0000 (18:56 +0100)]
added special screen position for button to show level set info for "jue0"

16 months agoadded limiting default number of game elements on info screen
Holger Schemel [Fri, 16 Dec 2022 17:55:12 +0000 (18:55 +0100)]
added limiting default number of game elements on info screen

16 months agochanged title on info screen again
Holger Schemel [Fri, 16 Dec 2022 12:05:32 +0000 (13:05 +0100)]
changed title on info screen again

16 months agoremoved unused constant
Holger Schemel [Fri, 16 Dec 2022 11:59:00 +0000 (12:59 +0100)]
removed unused constant

16 months agoremoved sub-headlines on info screens (text is now part of main headline)
Holger Schemel [Thu, 15 Dec 2022 07:42:42 +0000 (08:42 +0100)]
removed sub-headlines on info screens (text is now part of main headline)

16 months agoadded new, topic-related headlines for info screens
Holger Schemel [Thu, 15 Dec 2022 07:36:01 +0000 (08:36 +0100)]
added new, topic-related headlines for info screens

16 months agoadded string constants for info screen menu and title texts
Holger Schemel [Thu, 15 Dec 2022 06:58:41 +0000 (07:58 +0100)]
added string constants for info screen menu and title texts

16 months agochanged "README" file for Niko Böhm's Tutorial level set
Holger Schemel [Thu, 15 Dec 2022 06:45:43 +0000 (07:45 +0100)]
changed "README" file for Niko Böhm's Tutorial level set

This changes the old ISO-8859-1 encoding to UTF-8 and adds using text
in different fonts and colors. The original "README" file is stored as
"README.orig" for reference, and a new, alternative version is stored
as "README.txt", which is not used by the game, but shows alternative
formatting possibilities using Markdown-style line breaks (using two
spaces at the end of lines) and pure text content without font usage.

16 months agosmall formatting change in program info
Holger Schemel [Wed, 14 Dec 2022 23:00:10 +0000 (00:00 +0100)]
small formatting change in program info

16 months agoadded forced line break support to auto-wrapped text output
Holger Schemel [Wed, 14 Dec 2022 22:53:21 +0000 (23:53 +0100)]
added forced line break support to auto-wrapped text output

To add a line break to auto-wrapped text output (like level set info
text files), use two spaces at the end of a line (like it is used in
Markdown formatted text).

16 months agofixed bug with incorrectly handled "click anywhere" style button events
Holger Schemel [Wed, 14 Dec 2022 11:27:33 +0000 (12:27 +0100)]
fixed bug with incorrectly handled "click anywhere" style button events

16 months agoadded special screen position for button to show level set info for "BD2K3"
Holger Schemel [Wed, 14 Dec 2022 11:19:39 +0000 (12:19 +0100)]
added special screen position for button to show level set info for "BD2K3"

16 months agoadded dynamic default screen position for button to show level set info
Holger Schemel [Wed, 14 Dec 2022 11:18:47 +0000 (12:18 +0100)]
added dynamic default screen position for button to show level set info

16 months agoadded optional main menu button to directly show level set info
Holger Schemel [Wed, 14 Dec 2022 10:54:37 +0000 (11:54 +0100)]
added optional main menu button to directly show level set info

This is a special button for the main menu that will only be displayed
if files with level set information exist (like a "README" file in the
current level set directory).

The button will currently only be displayed if a valid screen position
is defined for it in the currently active graphics configuration.

16 months agofixed several problems when displaying info sub-screens from main menu
Holger Schemel [Wed, 14 Dec 2022 10:43:55 +0000 (11:43 +0100)]
fixed several problems when displaying info sub-screens from main menu

16 months agofixed navigation text when displaying info sub-screens from main menu
Holger Schemel [Mon, 12 Dec 2022 19:40:46 +0000 (20:40 +0100)]
fixed navigation text when displaying info sub-screens from main menu

16 months agoadded constant text value
Holger Schemel [Mon, 12 Dec 2022 19:36:06 +0000 (20:36 +0100)]
added constant text value

16 months agominor code cleanup
Holger Schemel [Mon, 12 Dec 2022 19:33:43 +0000 (20:33 +0100)]
minor code cleanup

16 months agoadded returning directly to main menu from info sub-screens if needed
Holger Schemel [Mon, 12 Dec 2022 19:31:59 +0000 (20:31 +0100)]
added returning directly to main menu from info sub-screens if needed

16 months agoadded level info config option to invoke info screens from main menu
Holger Schemel [Sun, 11 Dec 2022 13:49:25 +0000 (14:49 +0100)]
added level info config option to invoke info screens from main menu

This is a special config option to allow level sets (like the Mirror
Magic level set "classic_mindbender") to directly invoke info screens
from the main menu (which is used for "classic_mindbender" to display
the included title story on the "level set info" screens by clicking
on a global animation that looks like a book that can be opened).

16 months agoimproved some editor graphics
Holger Schemel [Sun, 11 Dec 2022 01:14:42 +0000 (02:14 +0100)]
improved some editor graphics

16 months agoversion number set to 4.3.3.1
Holger Schemel [Sun, 11 Dec 2022 01:14:12 +0000 (02:14 +0100)]
version number set to 4.3.3.1

16 months agoversion number set to 4.3.3.0 4.3.3.0
Holger Schemel [Sat, 10 Dec 2022 12:13:35 +0000 (13:13 +0100)]
version number set to 4.3.3.0

16 months agofixed bug with advancing tape counter if no input events have been recorded
Holger Schemel [Wed, 7 Dec 2022 18:40:30 +0000 (19:40 +0100)]
fixed bug with advancing tape counter if no input events have been recorded

16 months agofixed bug with not marking tape as changed after adding action or delay
Holger Schemel [Mon, 5 Dec 2022 22:46:17 +0000 (23:46 +0100)]
fixed bug with not marking tape as changed after adding action or delay