rocksndiamonds.git
2 months agoadded optional button to restart game (door, panel and touch variants) master 4.3.8.2
Holger Schemel [Sun, 18 Feb 2024 13:34:28 +0000 (14:34 +0100)]
added optional button to restart game (door, panel and touch variants)

2 months agofixed drawing pause button on closed door when restarting paused game
Holger Schemel [Sun, 18 Feb 2024 13:29:23 +0000 (14:29 +0100)]
fixed drawing pause button on closed door when restarting paused game

3 months agoupdated title text and border graphic to show current year
Holger Schemel [Sun, 7 Jan 2024 23:16:39 +0000 (00:16 +0100)]
updated title text and border graphic to show current year

3 months agofixed truncating internal game element descriptions in level editor
Holger Schemel [Sun, 7 Jan 2024 22:29:00 +0000 (23:29 +0100)]
fixed truncating internal game element descriptions in level editor

3 months agore-added explicitly setting draw order for pointer-style animations
Holger Schemel [Thu, 4 Jan 2024 13:36:48 +0000 (14:36 +0100)]
re-added explicitly setting draw order for pointer-style animations

Even though pointer-style animations are handled specially when being
drawn (on top of all other global animations), they are not handled
specially when being checked for clicks. Therefore, forcing a high
draw order for pointer-style animations is still required (as the draw
order is not only used for drawing, but also for the order of checking
animations for mouse clicks).

This reverts commit d1a0dcb3.

3 months agoversion number set to 4.3.8.2
Holger Schemel [Fri, 29 Dec 2023 09:41:29 +0000 (10:41 +0100)]
version number set to 4.3.8.2

4 months agoadded "const" to some string function parameters 4.3.8.1
Holger Schemel [Mon, 18 Dec 2023 11:35:17 +0000 (12:35 +0100)]
added "const" to some string function parameters

4 months agofixed bug with closing doors when exiting from level editor
Holger Schemel [Mon, 18 Dec 2023 10:41:35 +0000 (11:41 +0100)]
fixed bug with closing doors when exiting from level editor

4 months agochanged setup option to disable global animations to only affect toons
Holger Schemel [Wed, 13 Dec 2023 16:56:35 +0000 (17:56 +0100)]
changed setup option to disable global animations to only affect toons

All global animations can still be disabled in the setup config file,
but this should probably only be used for testing purposes, as global
animations are an integral part of certain custom level sets now.

4 months agofixed always drawing pointer-style global animations above everything else
Holger Schemel [Wed, 13 Dec 2023 16:15:08 +0000 (17:15 +0100)]
fixed always drawing pointer-style global animations above everything else

4 months agoreverted setting (and maybe inheriting) draw order for global animations
Holger Schemel [Wed, 13 Dec 2023 16:06:03 +0000 (17:06 +0100)]
reverted setting (and maybe inheriting) draw order for global animations

Although this feature seems to be quite useful (setting draw order for
main animations once, and let animation parts inherit the draw order
from the main animation if it is not defined for the animation part),
it would have to be implemented for all other attributes, too (like X
and Y position of the main animation and animation parts, for example),
so it seems to be better to not make an exception for this specific
attribute.

This reverts commit 895d5cb3.

4 months agofixed correctly using defined draw order of global animations
Holger Schemel [Tue, 12 Dec 2023 14:01:10 +0000 (15:01 +0100)]
fixed correctly using defined draw order of global animations

Before this change, there was only limited support for the attribute
".draw_order" for global animations, which did not work correctly if
the global animations had different game modes defined (like ".MAIN"),
as global animations were drawn in numerical game mode order, so draw
order was ignored between game modes and also between main animations.

With this change, global animations will really be drawn with their
defined draw order.

4 months agofixed setting (and maybe inheriting) draw order for global animations
Holger Schemel [Tue, 12 Dec 2023 13:21:04 +0000 (14:21 +0100)]
fixed setting (and maybe inheriting) draw order for global animations

4 months agoremoved explicitly setting draw order for pointer-style animations
Holger Schemel [Tue, 12 Dec 2023 13:12:40 +0000 (14:12 +0100)]
removed explicitly setting draw order for pointer-style animations

As pointer-style animations are handled specially anyway (always drawn
on top of all other global animations), setting the draw order is not
required anymore.

4 months agofixed bug caused by support for only eight global animations in the past
Holger Schemel [Tue, 12 Dec 2023 11:20:53 +0000 (12:20 +0100)]
fixed bug caused by support for only eight global animations in the past

4 months agoreverted order of processing game modes for global animations clicks
Holger Schemel [Tue, 12 Dec 2023 11:03:28 +0000 (12:03 +0100)]
reverted order of processing game modes for global animations clicks

The assumptions that led to the change that is reverted here were
simply wrong: When drawing global animations in a certain order,
checking for mouse clicks must be done in reverse order, to ensure
that the click is processed for the topmost global animation. This
includes processing game modes in reverse order (which are handled
in normal order when drawing global animations).

Processing clicks for a global animation based custom mouse pointer
should be handled separately anyway, to process it independently
from the game mode it was defined for.

This reverts commit e3411dc9.

4 months agoversion number set to 4.3.8.1
Holger Schemel [Tue, 12 Dec 2023 11:01:43 +0000 (12:01 +0100)]
version number set to 4.3.8.1

4 months agoversion number set to 4.3.8.0 4.3.8.0
Holger Schemel [Sat, 9 Dec 2023 18:47:48 +0000 (19:47 +0100)]
version number set to 4.3.8.0

4 months agofixed sorting global animation parts by draw order (which was confusing)
Holger Schemel [Sat, 9 Dec 2023 18:23:08 +0000 (19:23 +0100)]
fixed sorting global animation parts by draw order (which was confusing)

4 months agofixed "level_nr" style global animations on level selection screen
Holger Schemel [Sat, 9 Dec 2023 17:35:59 +0000 (18:35 +0100)]
fixed "level_nr" style global animations on level selection screen

4 months agochanged order of processing game modes for global animations clicks
Holger Schemel [Sat, 9 Dec 2023 16:52:11 +0000 (17:52 +0100)]
changed order of processing game modes for global animations clicks

The previous (reversed) order suggested that this had something to do
with draw order, which was not the case. Using the normal (numerical)
order also has the advantage of processing global animations without
a special game mode assigned to them (like ".PLAYING" or ".MAIN") to
be processed first, which is especially important to process pointer
style global animations (which are probably defined to be used on all
game screens in most cases) before all other global animations, which
is required to display an alternative pointer when the mouse button
is pressed (which is defined using ".style: passthrough_clicks" for
such cases).

4 months agochanged only handling pointer-style animations clicks in request dialogs
Holger Schemel [Sat, 9 Dec 2023 16:44:11 +0000 (17:44 +0100)]
changed only handling pointer-style animations clicks in request dialogs

As request dialogs are displayed above all other screen elements,
including global animations (except pointer-style global animations),
global animations should not be clickable while request dialogs are
active, with the exception of clickable pointer-style animations,
which is generally used to display a different pointer while the
mouse button is pressed.

4 months agofixed handling clickable pointer-style global animations in request dialogs
Holger Schemel [Sat, 9 Dec 2023 16:38:15 +0000 (17:38 +0100)]
fixed handling clickable pointer-style global animations in request dialogs

4 months agofixed creating additional click events from global animation events
Holger Schemel [Sat, 9 Dec 2023 16:26:19 +0000 (17:26 +0100)]
fixed creating additional click events from global animation events

When handling global animation events that trigger user events handled
as either key, gadget or screen events, prevent creating additional
key or button events to be handled by global animations again, as this
can confuse further button event processing, which may cause buttons
or menu items to be selected by accident.

4 months agoadded support for setting alpha value for envelope style request dialogs
Holger Schemel [Wed, 6 Dec 2023 19:59:28 +0000 (20:59 +0100)]
added support for setting alpha value for envelope style request dialogs

4 months agofixed resetting alpha value when preparing envelope request
Holger Schemel [Wed, 6 Dec 2023 19:56:57 +0000 (20:56 +0100)]
fixed resetting alpha value when preparing envelope request

4 months agomoved code to separate function
Holger Schemel [Wed, 6 Dec 2023 19:54:59 +0000 (20:54 +0100)]
moved code to separate function

4 months agoadded forcing user to restart program after adding level collection
Holger Schemel [Tue, 5 Dec 2023 18:05:08 +0000 (19:05 +0100)]
added forcing user to restart program after adding level collection

When adding a level group or an artwork group by dropping a zip file
into the program window, show a request dialog that the program has to
be restarted to activate the new content.

Unfortunately, this is currently required to rebuild the internal
level and artwork set structures (and should be improved to be rebuild
them on-the-fly without a program restart).

Before, the program was just stopped with a user-unfriendly message
reporting a fatal error.

4 months agoadded fallback to narrow font on word length for envelope request dialogs
Holger Schemel [Tue, 5 Dec 2023 17:14:33 +0000 (18:14 +0100)]
added fallback to narrow font on word length for envelope request dialogs

4 months agomoved code to separate function
Holger Schemel [Tue, 5 Dec 2023 17:11:10 +0000 (18:11 +0100)]
moved code to separate function

4 months agoadded dynamically calculating text properties for door request dialogs
Holger Schemel [Mon, 4 Dec 2023 20:32:25 +0000 (21:32 +0100)]
added dynamically calculating text properties for door request dialogs

4 months agofixed tile cursor drawing position
Holger Schemel [Mon, 4 Dec 2023 07:13:32 +0000 (08:13 +0100)]
fixed tile cursor drawing position

4 months agominor code cleanup
Holger Schemel [Sun, 3 Dec 2023 17:38:25 +0000 (18:38 +0100)]
minor code cleanup

4 months agofixed function signature
Holger Schemel [Sun, 3 Dec 2023 17:29:25 +0000 (18:29 +0100)]
fixed function signature

4 months agomoved code to separate function
Holger Schemel [Sat, 2 Dec 2023 13:32:47 +0000 (14:32 +0100)]
moved code to separate function

4 months agominor code cleanup
Holger Schemel [Sat, 2 Dec 2023 13:19:55 +0000 (14:19 +0100)]
minor code cleanup

4 months agoremoved unused code
Holger Schemel [Sat, 2 Dec 2023 13:13:05 +0000 (14:13 +0100)]
removed unused code

4 months agoremoved code for condition that is always true
Holger Schemel [Sat, 2 Dec 2023 12:53:51 +0000 (13:53 +0100)]
removed code for condition that is always true

4 months agomoved function call (no functional change)
Holger Schemel [Sat, 2 Dec 2023 12:11:55 +0000 (13:11 +0100)]
moved function call (no functional change)

4 months agoremoved uncommented code
Holger Schemel [Sat, 2 Dec 2023 12:06:00 +0000 (13:06 +0100)]
removed uncommented code

4 months agomoved duplicate code to separate functions
Holger Schemel [Sat, 2 Dec 2023 12:03:07 +0000 (13:03 +0100)]
moved duplicate code to separate functions

4 months agomoved function call for getting door state to variable declaration
Holger Schemel [Sat, 2 Dec 2023 11:58:31 +0000 (12:58 +0100)]
moved function call for getting door state to variable declaration

4 months agorenamed variable
Holger Schemel [Sat, 2 Dec 2023 11:27:32 +0000 (12:27 +0100)]
renamed variable

4 months agoadded showing game actions after game end when request door opens/closes
Holger Schemel [Sat, 2 Dec 2023 11:20:26 +0000 (12:20 +0100)]
added showing game actions after game end when request door opens/closes

4 months agoadded showing game actions after game end when request envelope opens/closes
Holger Schemel [Sat, 2 Dec 2023 10:42:24 +0000 (11:42 +0100)]
added showing game actions after game end when request envelope opens/closes

4 months agoremoved duplicate variable to check if request dialog is active
Holger Schemel [Sat, 2 Dec 2023 10:32:22 +0000 (11:32 +0100)]
removed duplicate variable to check if request dialog is active

4 months agoswapped temporary bitmaps used for request dialog (no functional change)
Holger Schemel [Thu, 30 Nov 2023 23:50:20 +0000 (00:50 +0100)]
swapped temporary bitmaps used for request dialog (no functional change)

4 months agosignificant cleanup of envelope style request dialog handling
Holger Schemel [Thu, 30 Nov 2023 23:21:47 +0000 (00:21 +0100)]
significant cleanup of envelope style request dialog handling

After this change, the request dialog is not drawn to the back buffer
of the screen anymore, but to a temporary bitmap buffer (with the
request buttons directly being updated there after button events),
which is now only drawn during the final composition of the screen.

Therefore, the back buffer is not touched anymore when handling the
request dialog, and also does not have to be restored afterwards.

4 months agofixed invisible envelope request if request background is masked
Holger Schemel [Thu, 30 Nov 2023 22:26:52 +0000 (23:26 +0100)]
fixed invisible envelope request if request background is masked

When using "global.use_envelope_request: true" (to use envelope style
request dialogs instead of door style request dialogs) together with
"background.request.draw_masked: true" (to use a partially transparent
background image for the request dialog), no request dialog is drawn
at all (so the request dialog has to be answered blindly). This change
fixes this problem.

There are a few graphical bugs left (if the request dialog opens after
a game was lost, asking to play again) which still have to be fixed.

4 months agoadded wrapper function to copy SDL surfaces
Holger Schemel [Tue, 28 Nov 2023 15:30:41 +0000 (16:30 +0100)]
added wrapper function to copy SDL surfaces

4 months agoadded random push delay for rocks, nuts and bombs to EM game engine
Holger Schemel [Fri, 24 Nov 2023 16:25:50 +0000 (17:25 +0100)]
added random push delay for rocks, nuts and bombs to EM game engine

Just like in the original Emerald Mine game, there is now a random
delay when trying to push a rock, a nut or a bomb. While the chance
for rocks being successfully pushed at first attempt will be around
50 %, the chance for nuts will be a bit lower than that for rocks,
and the chance for bombs will be a bit lower than that for nuts,
with a roughly similar overall delay as in the original game.

4 months agofixed bug with loading artwork if only one special artwork set exists
Holger Schemel [Thu, 23 Nov 2023 23:21:38 +0000 (00:21 +0100)]
fixed bug with loading artwork if only one special artwork set exists

R'n'D supports using additional special artwork, like "ECS" and "AGA"
graphics sets or "default" and "lowpass" sound sets, which can be
selected from the game engines setup menu. This works fine if both
artwork sets are defined (and also if no special artwork is defined).

However, it did not work correctly if only one special artwork set was
defined, in addition to the "standard" artwork set, like this:

graphics_set:                   gfx_bond_mine_01
graphics_set.aga:               gfx_bond_mine_01.aga

In this case, it was not possible to use the "standard" graphics set,
but only the "AGA" graphics set (because the "standard" graphics set
was internally overridden by the "AGA" graphics set when selecting to
use "AGA" graphics in the game engines setup menu, and selecting to
use "ECS" graphics later could not recover this). (This bug could be
seen in level set "emc_bond_mine_01" when starting the game with "AGA"
graphics preferred in the setup menu, which resulted in not being able
to select the "standard" graphics by setting graphics preference to
"ECS" in the game engines setup menu.)

This is fixed now (by internally setting the "ECS" artwork set, which
is not explicitly defined, to the "standard" artwork before internally
overriding it with either the "ECS" or "AGA" graphics set).

This bug was caused by commit 4bc6719c.

4 months agomoved code to separate function
Holger Schemel [Thu, 23 Nov 2023 23:16:48 +0000 (00:16 +0100)]
moved code to separate function

5 months agofixed warning when encountering obsolete graphics configuration option
Holger Schemel [Mon, 20 Nov 2023 12:58:58 +0000 (13:58 +0100)]
fixed warning when encountering obsolete graphics configuration option

5 months agoadded support for fading in and fading out global animations
Holger Schemel [Sun, 19 Nov 2023 13:23:27 +0000 (14:23 +0100)]
added support for fading in and fading out global animations

To fade global animations in or out, use the attribute ".fade_mode"
with value "fade_in" or "fade_out" and the attribute ".fade_delay"
with the number of video frames to use for fading in or out. (Note
that this attribute expects frames when used with global animations,
while it expects milliseconds when used with screens and menus.)

5 months agoadded support for setting alpha value for global animations
Holger Schemel [Sun, 19 Nov 2023 11:27:57 +0000 (12:27 +0100)]
added support for setting alpha value for global animations

To set alpha value for global animation graphics, just use the new
attribute ".alpha" for the global animation's graphics definition,
where the value "0" means transparent and "255" means "opaque".

5 months agofixed using masked elements when using element graphic for empty space
Holger Schemel [Sat, 18 Nov 2023 15:55:35 +0000 (16:55 +0100)]
fixed using masked elements when using element graphic for empty space

5 months agofixed state of global animation parts waiting for initial event
Holger Schemel [Tue, 14 Nov 2023 23:30:30 +0000 (00:30 +0100)]
fixed state of global animation parts waiting for initial event

5 months agofixed bug with triggering global animations in certain cases
Holger Schemel [Tue, 14 Nov 2023 22:51:53 +0000 (23:51 +0100)]
fixed bug with triggering global animations in certain cases

This fixes a bug that prevents global animations (that have defined
an initial (start) event using ".init_event") from being triggered by
other animation states or by custom element changes if they have
either no parts defined (like "global.anim_1"), or if they have parts
defined (like "global.anim_1.part_1"), but have the "main" animation
defined to play all parts at the same time (which means that there is
a definition "global.anim_1.anim_mode: all").

This bug was caused by the fact that animations waiting for an initial
event should be in state "waiting", which was not checked in case of
an event (as parts defined for global animations that are not defined
to be played all at the same time are in state "running" even if they
are waiting for an initial event, which should also be fixed).

5 months agofixed bug with events defined to start and stop global animations
Holger Schemel [Tue, 14 Nov 2023 22:32:23 +0000 (23:32 +0100)]
fixed bug with events defined to start and stop global animations

This fixes a bug where global animations could be started by an event
defined using ".anim_event" instead of ".init_event", as long as there
is some other ".init_event" definition (even if it never happens).

5 months agoversion number set to 4.3.7.2
Holger Schemel [Wed, 15 Nov 2023 10:39:16 +0000 (11:39 +0100)]
version number set to 4.3.7.2

5 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

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

5 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

5 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

5 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).

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

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

6 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

6 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"

6 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

6 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

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

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

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

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

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

6 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"

6 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

6 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

6 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

6 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

6 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

6 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.)

7 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

7 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,

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

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

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

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

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

7 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

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

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

7 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

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

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

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

7 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

7 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