rocksndiamonds.git
12 months agoadded pausing global animations on doors if game engine is paused 4.3.7.1
Holger Schemel [Sun, 12 Nov 2023 10:25:16 +0000 (11:25 +0100)]
added pausing global animations on doors if game engine is paused

12 months agoadded using trigger element position for CE triggered global animations
Holger Schemel [Fri, 10 Nov 2023 19:44:27 +0000 (20:44 +0100)]
added using trigger element position for CE triggered global animations

When using global animations that are triggered by custom elements,
using ".position: ce_trigger" instead of ".position: ce" will use
the position of the CE trigger element instead of the CE itself.

12 months agoversion number set to 4.3.7.1
Holger Schemel [Thu, 2 Nov 2023 19:12:46 +0000 (20:12 +0100)]
version number set to 4.3.7.1

12 months agofixed bug with using wrong global border when restarting the game 4.3.7.0
Holger Schemel [Thu, 26 Oct 2023 08:45:13 +0000 (10:45 +0200)]
fixed bug with using wrong global border when restarting the game

12 months agofixed bug with global animation at wrong playfield position for one frame
Holger Schemel [Thu, 26 Oct 2023 08:18:20 +0000 (10:18 +0200)]
fixed bug with global animation at wrong playfield position for one frame

This fixes a bug that should have been fixed with commit 03202ac7.

While the above commit fixes the problem for some cases, it still does
not work correctly if a global animation with ".position: ce" has two
"ce_change" events defined with ".init_event" and ".anim_event". While
the first one starts the animation (and should therefore place the
animation at the CE position), the second one stops the animation (and
starts the next part of the animation, if existing), so it should not
change the position to the second CE (which would only be used for one
single game frame and then changed to the animation position defined
by the next part of the animation).

13 months agofixed half-tile shifting when teleporting between playfield borders
Holger Schemel [Sun, 15 Oct 2023 00:10:30 +0000 (02:10 +0200)]
fixed half-tile shifting when teleporting between playfield borders

When relocating the player without centering the screen and without
scrolling ("teleporting" to a different playfield area, but keeping
the screen position), shifting the visible part of the playfield by
half a tile may happen if the screen width or height is even.

This is especially true when teleporting from and to an area that is
directly aligned with the border of the playfield (regardless of the
tiles at the playfield border being only half or fully visible, which
only happens with even sized screen width or height, depending on the
current player scroll position).

This change makes sure that both the source and destination area of
the playfield are displayed either aligned by half a tile or a full
tile when doing a "teleporting" player relocation in such a case.

13 months agoadded options "game.forced_scroll_x" and "game.forced_scroll_y"
Holger Schemel [Sat, 14 Oct 2023 18:33:14 +0000 (20:33 +0200)]
added options "game.forced_scroll_x" and "game.forced_scroll_y"

This adds the above two "graphicsinfo.conf" options to override the
automatically calculated playfield scroll values when starting a game.

The purpose of these options is to force an initial scroll position
(which is used for all levels), which means that the visible part of
the playfield when the game is started is not determined by the player
position, but by the values defined using the above options.

This may be useful in combination with a large value for the option
"game.forced_scroll_delay_value" to limit the visible part of the
playfield to a smaller, screen-sized area, while the remaining part of
the playfield contains some control elements. It may also be useful
for levels using teleportation from one area to another area while
still controlling which parts of the playfield entered by the player
are visible. It can also be used to force a certain initial visible
part of the playfield, regardless of the exact position of the player
within that area. And it is currently the only way to force showing
levels with an even width or even height with the player near the
border of the playfield with half-tile border elements, which would
also be needed for teleporting the player to a different part of the
playfield without scrolling the playfield relative to the player's
screen position.

Therefore, this feature should probably be considered experimental.

13 months agofixed bug with limiting forced scroll delay value to lower default value
Holger Schemel [Sat, 14 Oct 2023 09:46:08 +0000 (11:46 +0200)]
fixed bug with limiting forced scroll delay value to lower default value

13 months agofixed broken player option "no centering when relocating"
Holger Schemel [Wed, 11 Oct 2023 09:45:15 +0000 (11:45 +0200)]
fixed broken player option "no centering when relocating"

13 months agofixed bug with global animation at top left playfield corner for one frame
Holger Schemel [Sun, 8 Oct 2023 22:16:53 +0000 (00:16 +0200)]
fixed bug with global animation at top left playfield corner for one frame

13 months agomoved code to set global animation to CE position to separate function
Holger Schemel [Sun, 8 Oct 2023 22:11:13 +0000 (00:11 +0200)]
moved code to set global animation to CE position to separate function

13 months agofixed bug with CE replacing exploding player, causing half-dead player
Holger Schemel [Sun, 8 Oct 2023 21:33:54 +0000 (23:33 +0200)]
fixed bug with CE replacing exploding player, causing half-dead player

This bug could happen when a player was just exploding (for whatever
reason) and an adjacent CE replaced the explosion's center element
with something else, leading to the player not being totally removed,
potentially causing some strange effects afterwards.

This change adds some cleanup required to prevent such cases.

13 months agofixed bug with causing explosion instead of killing player directly
Holger Schemel [Sun, 8 Oct 2023 12:01:10 +0000 (14:01 +0200)]
fixed bug with causing explosion instead of killing player directly

While the final effect is the same (player is killed), the player was
killed by an explosion before (causing a "double explosion" when the
player itself exploded when being killed by the explosion), while the
player is killed directly now, preventing the double explosion.

13 months agofixed bug with CE change setting the player to its current position
Holger Schemel [Sun, 8 Oct 2023 11:46:18 +0000 (13:46 +0200)]
fixed bug with CE change setting the player to its current position

This change fixes a bug where a CE change places the player at the
current player position, causing an explosion at that playfield
position, which should not happen.

In other words, such an event would normally relocate the player, but
to a playfield position which is identical to the current playfield
position of the player, which should therefore have no effect at all.

The bug occured because it was not checked if the new element to be
created is the player itself, but only checks if an element that is
not walkable by the player is created at the players current position.

13 months agoadded selecting element for group elements according to current level
Holger Schemel [Sun, 8 Oct 2023 11:35:15 +0000 (13:35 +0200)]
added selecting element for group elements according to current level

This change works similar to the previous commit, but not selecting an
animation frame according to the current level, but selecting a game
element from a number of elements in a group element (selecting the
first element for the first level, the second element for the second
level, and so on, again overwrapping if there are more levels than
game elements defined for the group element). That way, different game
elements can be used in different levels which all use the same group
elements.

13 months agoadded new animation mode "level_nr" to select frame according to level
Holger Schemel [Sun, 8 Oct 2023 11:22:11 +0000 (13:22 +0200)]
added new animation mode "level_nr" to select frame according to level

This change adds a new animation mode "level_nr" which selects a
single animation frame from a number of frames that corresponds to the
current level. That is, the first frame is used for the first level,
the second frame is used for the second level and so on (overwrapping
frames if there are more levels than animation frames). This animation
mode can therefore only be used for non-animated game graphics, like
walls. So this animation mode can be used to have different graphics
in different levels for certain game elements, while still using the
same game elements in each level.

13 months agofixed bug with CE triggered global animations treated as "off-screen"
Holger Schemel [Mon, 2 Oct 2023 23:07:36 +0000 (01:07 +0200)]
fixed bug with CE triggered global animations treated as "off-screen"

13 months agoadded pausing global animations on playfield if game engine is paused
Holger Schemel [Mon, 2 Oct 2023 22:09:03 +0000 (00:09 +0200)]
added pausing global animations on playfield if game engine is paused

13 months agofixed drawing envelope request to be always on top of global animations
Holger Schemel [Mon, 2 Oct 2023 10:06:56 +0000 (12:06 +0200)]
fixed drawing envelope request to be always on top of global animations

13 months agofixed drawing envelope request to be always on top of tile cursor
Holger Schemel [Mon, 2 Oct 2023 09:58:01 +0000 (11:58 +0200)]
fixed drawing envelope request to be always on top of tile cursor

13 months agomoved code to draw envelope request over global animations
Holger Schemel [Mon, 2 Oct 2023 09:54:12 +0000 (11:54 +0200)]
moved code to draw envelope request over global animations

13 months agofixed bug with shifted global playfield animations during envelope requests
Holger Schemel [Sun, 1 Oct 2023 17:45:35 +0000 (19:45 +0200)]
fixed bug with shifted global playfield animations during envelope requests

13 months agofixed CE condition that checks touching the player at some side
Holger Schemel [Sat, 30 Sep 2023 09:24:32 +0000 (11:24 +0200)]
fixed CE condition that checks touching the player at some side

In the level editor on the "change" tab of a custom element, when
using the CE condition "[x] element changes ..." in combination with
"[x][touching] element [<element>]" with "at [<side>] side", there
was wrong behaviour in some cases when "<element>" was the player.

This was caused by not checking the side of the player (that was being
touched by the custom element), but by checking the side of the custom
element (touching the player), which is the exact opposite side here.

This change fixes the bug, now always checking the correct side as it
is configured in the level editor. (Regarding to the game engine test
suite, this functional game engine change did not break any tapes.)

14 months agofixed calculating position of global animations triggered by CE change
Holger Schemel [Wed, 13 Sep 2023 08:51:48 +0000 (10:51 +0200)]
fixed calculating position of global animations triggered by CE change

14 months agofixed bug with forced restart of global animations when restarting game
Holger Schemel [Sat, 9 Sep 2023 14:37:26 +0000 (16:37 +0200)]
fixed bug with forced restart of global animations when restarting game

This fixes a bug which occured if the game was restarted (by loading a
tape during the game, or by playing again after a game was lost) and
if a custom artwork set was active that used cross-fading for the game
screen. In this case, global animations displayed during the game were
stopped, but not restarted again,

14 months agoimproved forced restart of global animations when restarting game
Holger Schemel [Sat, 9 Sep 2023 13:55:44 +0000 (15:55 +0200)]
improved forced restart of global animations when restarting game

When forcing a restart of global animations when restarting the game,
a full screen redraw is neither required nor desired. Therefore, this
change only restarts global animations according to the game status
passed to function "RestartGlobalAnimsByStatus()", but does not redraw
the screen (including global animations, so nothing is drawn at all).

14 months agoremoved redundant code
Holger Schemel [Sun, 20 Aug 2023 21:22:10 +0000 (23:22 +0200)]
removed redundant code

14 months agofixed one-frame delay when global animations leave "init" state
Holger Schemel [Sun, 20 Aug 2023 14:36:36 +0000 (16:36 +0200)]
fixed one-frame delay when global animations leave "init" state

This fixes a bug for global animations which either have an initial
delay or an initial event defined, causing a delay of one screen frame
after the initial waiting state has ended and before the running state
(which displays the global animation) is started.

This can especially be visible if a changing CE is graphically replaced
with a global animation triggered by the CE change.

14 months agochanged global animations to handle only one CE change event per frame
Holger Schemel [Sun, 20 Aug 2023 13:21:06 +0000 (15:21 +0200)]
changed global animations to handle only one CE change event per frame

Before, several (same) CEs could change within the same game frame,
triggering the same global animation several times (each time with the
new/next CE, with different CE position for each change. for example).

This bugfix results in each global animation being triggered exactly
one time for each change of the same CE in the same frame (which is
especially important if there are several global animations being
triggered by the change of the same CE, to display several animations
for several same CEs changing in the same game frame).

14 months agoadded option to not trigger further animations if CE change event consumed
Holger Schemel [Sun, 20 Aug 2023 12:57:58 +0000 (14:57 +0200)]
added option to not trigger further animations if CE change event consumed

This adds the parameter "consume_ce_event" to the ".style" option of
global animations to prevent any further global animation to be
triggered by "ce_change" events (".init_event" or ".anim_event") if
the event was already recognized by any other global animation (which
therefore "consumes" this event).

Using this option, several similar global animations can be defined
that are triggered one after another by several custom element changes
to make it possible to show several similar global animations for
multiple CE changes at the same time.

14 months agoadded setting scroll offset to global animation position triggered by CE
Holger Schemel [Sun, 20 Aug 2023 12:17:40 +0000 (14:17 +0200)]
added setting scroll offset to global animation position triggered by CE

14 months agofixed bug when handling init and anim events for global animations
Holger Schemel [Sun, 20 Aug 2023 11:53:24 +0000 (13:53 +0200)]
fixed bug when handling init and anim events for global animations

Before, defining ".init_event" as "click:anim_X" and ".anim_event" as
"click" resulted in the global animation being started by clicking
global animation "anim_X" (which is correct), but resulted in stopping
it by clicking the animation itself (which is correct), but also by
clicking global animation "anim_X" (which is not correct).

14 months agofixed bugs when parsing global animation parameter values
Holger Schemel [Sun, 20 Aug 2023 11:38:15 +0000 (13:38 +0200)]
fixed bugs when parsing global animation parameter values

The previous code recognized the value "click" in the parameter string
"click,click:anim_X", but did not in string "click:anim_X,click".

14 months agoadded setting global animation position from CE triggering that animation
Holger Schemel [Sun, 20 Aug 2023 11:31:23 +0000 (13:31 +0200)]
added setting global animation position from CE triggering that animation

14 months agofixed setting global animation sync frame when started with ".init_event"
Holger Schemel [Wed, 16 Aug 2023 13:55:22 +0000 (15:55 +0200)]
fixed setting global animation sync frame when started with ".init_event"

The previous code only handled adjusting the initial animation sync
frame when starting the animation using an "init delay" configuration
(starting the animation after a delay), but did not handle starting
the animation using an "init event" configuration (like triggering by
a click event or by a custom element change), in which case the sync
frame should also be reset.

14 months agoadded support for CE change pages triggering global animations
Holger Schemel [Sun, 13 Aug 2023 11:57:49 +0000 (13:57 +0200)]
added support for CE change pages triggering global animations

This commit extends the previous commit to not only be able to trigger
global animations using "ce_change:custom_X" (by any CE change page),
but also by specifying change page using "ce_change:custom_X.page_Y".

14 months agoadded support for custom elements triggering global animations
Holger Schemel [Sat, 29 Jul 2023 23:50:39 +0000 (01:50 +0200)]
added support for custom elements triggering global animations

For the global animation options ".init_event" or "anim_event" in file
"graphicsinfo.conf", the new value "ce_change:custom_xxx" can be used
to trigger (initiate or continue) the corresponding global animation
whenever custom element "custom_xxx" changes.

14 months agofixed bug with re-initialized variables when reading multiple config files
Holger Schemel [Sun, 3 Sep 2023 20:57:17 +0000 (22:57 +0200)]
fixed bug with re-initialized variables when reading multiple config files

14 months agoadded wrapper functions to initialize and set variables
Holger Schemel [Sun, 3 Sep 2023 20:51:33 +0000 (22:51 +0200)]
added wrapper functions to initialize and set variables

14 months agomoved code to check redefined screen positions to separate function
Holger Schemel [Sun, 3 Sep 2023 20:42:52 +0000 (22:42 +0200)]
moved code to check redefined screen positions to separate function

15 months agofixed stopping music if global anim music differs from current music
Holger Schemel [Wed, 16 Aug 2023 15:16:50 +0000 (17:16 +0200)]
fixed stopping music if global anim music differs from current music

As there is only one single music channel, the following edge case
could happen before this commit: The current screen plays music from
a global animation, while the next screen plays background music as
defined for this screen (as it might happen with two title screens).
When going from one screen to the other screen, the global animation
music from the first screen is stopped and the background music for
the second screen is started.

If there is a delay between both screens (typically by fading from one
screen to the next one), the first music is stopped and the second
music is started shortly after. Everything works as expected.

However, if there is no delay between both screens (if fading is
disabled by setup menu or by graphics configuration), stopping and
starting old and new music happens in the same screen frame. But as
global animations (including music) are applied *after* the screen is
prepared (also including music), the music for the new screen is
started and immediately stopped again by the global animation code,
which notices the screen change and stops the global animation for the
previous screen (including stopping music for it).

This is fixed now by only stoping the global animation's music if it
is still the same as the currently playing music (which would not be
the case in the edge case described above).

15 months agofixed playfield redraw bug when closing envelope after asking to play again
Holger Schemel [Wed, 16 Aug 2023 14:45:40 +0000 (16:45 +0200)]
fixed playfield redraw bug when closing envelope after asking to play again

This reverts commit 3df902ff.

For currently unknown reason, the above commit does not fix the
described bug, but introduces it. As long as this is not sorted out,
the commit will be reverted.

15 months agofixed bug with checking for mouse events used by custom elements
Holger Schemel [Sun, 13 Aug 2023 10:41:15 +0000 (12:41 +0200)]
fixed bug with checking for mouse events used by custom elements

15 months agofixed using full image size for initial images if not specified
Holger Schemel [Sat, 12 Aug 2023 13:59:43 +0000 (15:59 +0200)]
fixed using full image size for initial images if not specified

15 months agomoved code for getting size of initial images to corresponding function
Holger Schemel [Sat, 12 Aug 2023 13:58:14 +0000 (15:58 +0200)]
moved code for getting size of initial images to corresponding function

17 months agomoved code to handle mouse actions to separate function
Holger Schemel [Thu, 15 Jun 2023 21:05:50 +0000 (23:05 +0200)]
moved code to handle mouse actions to separate function

17 months agofixed sending key release events to animation event handling
Holger Schemel [Tue, 13 Jun 2023 21:24:52 +0000 (23:24 +0200)]
fixed sending key release events to animation event handling

17 months agofixed sending button press/release events to animation event handling
Holger Schemel [Tue, 13 Jun 2023 21:22:10 +0000 (23:22 +0200)]
fixed sending button press/release events to animation event handling

17 months agoadded variables to prevent repeating expression
Holger Schemel [Mon, 12 Jun 2023 18:31:05 +0000 (20:31 +0200)]
added variables to prevent repeating expression

17 months agochanged global animation events to use more practical bit range
Holger Schemel [Mon, 12 Jun 2023 17:53:52 +0000 (19:53 +0200)]
changed global animation events to use more practical bit range

17 months agoreordered some preprocessor definitions
Holger Schemel [Mon, 12 Jun 2023 16:59:42 +0000 (18:59 +0200)]
reordered some preprocessor definitions

17 months agofixed broken animation of CE that can not change, but has CE delay action
Holger Schemel [Sat, 10 Jun 2023 09:51:21 +0000 (11:51 +0200)]
fixed broken animation of CE that can not change, but has CE delay action

This fixes a bug that occurred if a custom element with an animation
has a CE action defined to be triggered after a delay, but without a
CE change, in which cause there was no animation displayed at all.

17 months agofixed bugs when using music sets without unconfigured game music
Holger Schemel [Thu, 8 Jun 2023 00:12:12 +0000 (02:12 +0200)]
fixed bugs when using music sets without unconfigured game music

Without this fix, playing a level set with an "empty" music set (that
has no in-game music, like it is the case for all Emerald Mine Club
level sets, for example) caused the game to fall back to the classic
(default) game music set, even though using an "empty" music set was
by intention in such cases.

17 months agofixed crash bug on info screen if music set has no unconfigured music
Holger Schemel [Thu, 8 Jun 2023 00:09:24 +0000 (02:09 +0200)]
fixed crash bug on info screen if music set has no unconfigured music

17 months agofixed drawing (maybe redefined) empty space around MM style level in editor
Holger Schemel [Tue, 6 Jun 2023 21:00:38 +0000 (23:00 +0200)]
fixed drawing (maybe redefined) empty space around MM style level in editor

17 months agoadded options "played_header" and "played" to music file info
Holger Schemel [Thu, 1 Jun 2023 21:22:37 +0000 (23:22 +0200)]
added options "played_header" and "played" to music file info

If option "played" is specified in the music file info, it overrides
a potentially detected level number to be displayed for this option.

The option "played_header" can be used to replace the text "played in"
with a different header text.

18 months agoadded highlighting single MM wall tiles in editor when pressing Alt key
Holger Schemel [Wed, 24 May 2023 15:04:06 +0000 (17:04 +0200)]
added highlighting single MM wall tiles in editor when pressing Alt key

18 months agoadded highlighting similar elements in editor when pressing Alt+Shift keys
Holger Schemel [Wed, 24 May 2023 14:25:24 +0000 (16:25 +0200)]
added highlighting similar elements in editor when pressing Alt+Shift keys

18 months agoversion number set to 4.3.7.0
Holger Schemel [Wed, 24 May 2023 14:24:05 +0000 (16:24 +0200)]
version number set to 4.3.7.0

18 months agoversion number set to 4.3.6.0 4.3.6.0
Holger Schemel [Sun, 21 May 2023 13:49:46 +0000 (15:49 +0200)]
version number set to 4.3.6.0

18 months agofixed bug with triggering "entered by player" event when pushing element
Holger Schemel [Sat, 20 May 2023 23:22:10 +0000 (01:22 +0200)]
fixed bug with triggering "entered by player" event when pushing element

18 months agoadded following diagonal side of a slope corner for MM engine
Holger Schemel [Fri, 19 May 2023 14:05:08 +0000 (16:05 +0200)]
added following diagonal side of a slope corner for MM engine

18 months agomoved variables to higher position in scope
Holger Schemel [Fri, 19 May 2023 13:45:19 +0000 (15:45 +0200)]
moved variables to higher position in scope

18 months agofixed bug with wrong laser position for slope element check in MM engine
Holger Schemel [Fri, 19 May 2023 13:43:17 +0000 (15:43 +0200)]
fixed bug with wrong laser position for slope element check in MM engine

18 months agofixed bug with wrong check offset for slope elements in MM engine
Holger Schemel [Fri, 19 May 2023 13:41:51 +0000 (15:41 +0200)]
fixed bug with wrong check offset for slope elements in MM engine

18 months agomoved checking element mask to separate function in MM engine
Holger Schemel [Fri, 19 May 2023 13:31:45 +0000 (15:31 +0200)]
moved checking element mask to separate function in MM engine

18 months agofixed bugs with wrong X/Y access in element mask in MM engine
Holger Schemel [Fri, 19 May 2023 13:27:29 +0000 (15:27 +0200)]
fixed bugs with wrong X/Y access in element mask in MM engine

18 months agomoved code for handling wall side of slope for MM engine
Holger Schemel [Fri, 19 May 2023 10:37:12 +0000 (12:37 +0200)]
moved code for handling wall side of slope for MM engine

18 months agoimproved reflecting laser by slope in corners in MM engine
Holger Schemel [Fri, 19 May 2023 10:19:01 +0000 (12:19 +0200)]
improved reflecting laser by slope in corners in MM engine

18 months agofixed small graphical bug with laser overloaded by slope in MM engine
Holger Schemel [Fri, 19 May 2023 10:16:37 +0000 (12:16 +0200)]
fixed small graphical bug with laser overloaded by slope in MM engine

18 months agofixed hitting some edge on the way to opposing diagonal side of slope
Holger Schemel [Wed, 17 May 2023 14:26:39 +0000 (16:26 +0200)]
fixed hitting some edge on the way to opposing diagonal side of slope

18 months agofixed advancing laser position on slopes from non-center position
Holger Schemel [Wed, 17 May 2023 14:13:40 +0000 (16:13 +0200)]
fixed advancing laser position on slopes from non-center position

18 months agofixed bug when checking if end of slope is blocked by other element
Holger Schemel [Wed, 17 May 2023 10:45:40 +0000 (12:45 +0200)]
fixed bug when checking if end of slope is blocked by other element

18 months agomoved code to count bits to separate function
Holger Schemel [Wed, 17 May 2023 10:29:18 +0000 (12:29 +0200)]
moved code to count bits to separate function

18 months agoadded stopping game startup actions on Escape key when using MM engine
Holger Schemel [Wed, 17 May 2023 09:25:43 +0000 (11:25 +0200)]
added stopping game startup actions on Escape key when using MM engine

18 months agofixed debug code for fast game startup when using MM engine
Holger Schemel [Wed, 17 May 2023 09:11:52 +0000 (11:11 +0200)]
fixed debug code for fast game startup when using MM engine

18 months agoadded new steel slope game element for MM game engine
Holger Schemel [Sat, 6 May 2023 12:34:58 +0000 (14:34 +0200)]
added new steel slope game element for MM game engine

18 months agofixed bug with macro for laser angle for MM engine
Holger Schemel [Sat, 22 Apr 2023 15:23:08 +0000 (17:23 +0200)]
fixed bug with macro for laser angle for MM engine

18 months agofixed getting level position after laser hits something in MM engine
Holger Schemel [Sat, 22 Apr 2023 13:25:32 +0000 (15:25 +0200)]
fixed getting level position after laser hits something in MM engine

18 months agoimproved flipping and rotating tiles in brushes in level editor
Holger Schemel [Tue, 16 May 2023 18:09:54 +0000 (20:09 +0200)]
improved flipping and rotating tiles in brushes in level editor

18 months agoadded flipping and rotating tiles in brushes in level editor
Holger Schemel [Sun, 14 May 2023 22:04:43 +0000 (00:04 +0200)]
added flipping and rotating tiles in brushes in level editor

18 months agofixed drawing mouse pointer global animation above MM engine tile cursor
Holger Schemel [Sun, 14 May 2023 15:42:20 +0000 (17:42 +0200)]
fixed drawing mouse pointer global animation above MM engine tile cursor

18 months agofixed preprocessor macros to detect MM and DF game elements
Holger Schemel [Fri, 12 May 2023 10:51:48 +0000 (12:51 +0200)]
fixed preprocessor macros to detect MM and DF game elements

18 months agoadded flipping and rotating brushes in level editor
Holger Schemel [Thu, 11 May 2023 19:08:51 +0000 (21:08 +0200)]
added flipping and rotating brushes in level editor

18 months agofixed centering text from files (like credits) using different font width
Holger Schemel [Sat, 6 May 2023 22:15:31 +0000 (00:15 +0200)]
fixed centering text from files (like credits) using different font width

19 months agoadded functions to get level position from laser position for MM engine
Holger Schemel [Sat, 22 Apr 2023 13:08:33 +0000 (15:08 +0200)]
added functions to get level position from laser position for MM engine

19 months agofixed editor element descriptions for fixed mirror elements of MM engine
Holger Schemel [Sat, 22 Apr 2023 12:25:20 +0000 (14:25 +0200)]
fixed editor element descriptions for fixed mirror elements of MM engine

19 months agoadded description for Deflektor style fixed mirror game elements
Holger Schemel [Fri, 21 Apr 2023 21:55:13 +0000 (23:55 +0200)]
added description for Deflektor style fixed mirror game elements

This should have been part of commit 7b347435.

19 months agofixed showing level music file info in correct level order
Holger Schemel [Wed, 12 Apr 2023 13:29:01 +0000 (15:29 +0200)]
fixed showing level music file info in correct level order

19 months agoadded reading unconfigured music files from already existing list
Holger Schemel [Wed, 12 Apr 2023 12:36:58 +0000 (14:36 +0200)]
added reading unconfigured music files from already existing list

Before, the list of unconfigured music files was read from the music
directory (in function "LoadMusicInfo()" in "src/files.c") instead
of using the already existing list from the sound sub-system (read
exactly the same way in function "LoadCustomMusic_NoConf()" in
"src/libgame/sound.c"). Now, the code just uses this existing list.

19 months agoadded playing the first unconfigured music file in the first level
Holger Schemel [Wed, 12 Apr 2023 12:01:48 +0000 (14:01 +0200)]
added playing the first unconfigured music file in the first level

Before, the (unconfigured) music file to be played in the first level
of a level set depended on the number of the first level (with the
result that the first music file was played in level 000, the second
music file was played in level 001 and so on, which probably was not
the intended behaviour when the level set started with level 001).

Now the first music file in the list of unconfigured music files is
played in the first level of a level set, regardless of the number of
that level (which is either 000 or 001 for most level sets).

19 months agoadded sorting unconfigured music files by filename
Holger Schemel [Wed, 12 Apr 2023 11:57:20 +0000 (13:57 +0200)]
added sorting unconfigured music files by filename

Before, unconfigured music files were played in the order they were
stored in the file system (that is, in unpredictable order). This
change adds sorting them by filename.

19 months agoadded showing configured level on music info screen
Holger Schemel [Wed, 12 Apr 2023 11:54:25 +0000 (13:54 +0200)]
added showing configured level on music info screen

19 months agofixed bug with checking music only for current instead of all levels
Holger Schemel [Wed, 12 Apr 2023 11:46:58 +0000 (13:46 +0200)]
fixed bug with checking music only for current instead of all levels

19 months agoadded Deflektor style fixed mirror game elements to MM engine
Holger Schemel [Tue, 11 Apr 2023 14:19:34 +0000 (16:19 +0200)]
added Deflektor style fixed mirror game elements to MM engine

19 months agoimproved scanning laser outside level, but inside visible playfield area
Holger Schemel [Mon, 10 Apr 2023 11:31:55 +0000 (13:31 +0200)]
improved scanning laser outside level, but inside visible playfield area

This change adds checking that not only the current, but also the next
step of the laser beam is still inside the visible playfield area.

This is a correction of commit dea6197b.

19 months agofixed regression bug with bad playfield offset
Holger Schemel [Mon, 10 Apr 2023 11:20:16 +0000 (13:20 +0200)]
fixed regression bug with bad playfield offset

This reverts commit a35cd127.

The bug introduced by the above commit was caused by a wrong comment
indicating that a certain offset was related to the playfield border,
which was wrong. In fact, this offset is related to the width of the
laser beam (to store the middle position of the tile the laser beam
touches, to be able to draw a variable-width laser beam later with a
size that is relative to the middle of the tile).

As the laser beam currently has a width of 4 pixels, this value has
to be set to 2 here.

19 months agoadded supporting reference elements for custom element explosion content
Holger Schemel [Sat, 8 Apr 2023 11:24:34 +0000 (13:24 +0200)]
added supporting reference elements for custom element explosion content

19 months agofixed bug with using already assigned byte position when saving level
Holger Schemel [Fri, 7 Apr 2023 18:07:18 +0000 (20:07 +0200)]
fixed bug with using already assigned byte position when saving level

19 months agofixed bug with laser passing between two diagonally placed DF polarizers
Holger Schemel [Fri, 7 Apr 2023 17:12:56 +0000 (19:12 +0200)]
fixed bug with laser passing between two diagonally placed DF polarizers

This reverts commit f00dbcf8.

The behaviour "fixed" in the above commit as being a bug is in fact
the correct and intended behaviour, as Deflektor style polarizors are
to be treated as solid, tile-filling blocks, not as tiles with a
little bit free space around them, as suggested by the graphics (and
as it is the case with the Mirror Magic variant of these tiles).