rocksndiamonds.git
4 years agorenamed duplicate definition of global variable
Holger Schemel [Fri, 31 Jan 2020 16:13:43 +0000 (17:13 +0100)]
renamed duplicate definition of global variable

This would cause a compilation error with GCC 10, where "-fno-common"
is set by default.

4 years agoremoved duplicate definition of global variable
Holger Schemel [Fri, 31 Jan 2020 16:10:33 +0000 (17:10 +0100)]
removed duplicate definition of global variable

This would cause a compilation error with GCC 10, where "-fno-common"
is set by default.

4 years agoremoved declarations for unused objects
Holger Schemel [Fri, 31 Jan 2020 16:08:29 +0000 (17:08 +0100)]
removed declarations for unused objects

4 years agoversion number set to 4.1.4.2
Holger Schemel [Fri, 31 Jan 2020 15:26:39 +0000 (16:26 +0100)]
version number set to 4.1.4.2

4 years agocleanup of unused MM engine declarations
Holger Schemel [Sun, 19 Jan 2020 00:16:06 +0000 (01:16 +0100)]
cleanup of unused MM engine declarations

4 years agocleanup of unused SP engine declarations
Holger Schemel [Sun, 19 Jan 2020 00:13:53 +0000 (01:13 +0100)]
cleanup of unused SP engine declarations

4 years agoadded workaround for a bug in SDL 2.0.12 which prevents transparency
Holger Schemel [Tue, 19 May 2020 16:03:12 +0000 (18:03 +0200)]
added workaround for a bug in SDL 2.0.12 which prevents transparency

Unfortunately, the current stable release version 2.0.12 of the SDL
library used by R'n'D has a critical bug that causes all transparent
images in R'n'D to be opaque, which hurts the game graphics at various
places.

The cause of this bug is in SDL_ConvertSurface(), which does not copy
the color key anymore.

The bug is documented in the SDL bug tracking system as follows:
https://bugzilla.libsdl.org/show_bug.cgi?id=2979

The bug will be fixed in the next stable release of the SDL library.

This workaround checks if a converted surface should have a color key,
and explicitly sets it if it is missing in the newly created surface.

4 years agoversion number set to 4.1.4.1 4.1.4.1
Holger Schemel [Thu, 16 Jan 2020 18:54:46 +0000 (19:54 +0100)]
version number set to 4.1.4.1

4 years agofixed bug in editor with GEs using graphic of other element
Holger Schemel [Tue, 14 Jan 2020 18:38:49 +0000 (19:38 +0100)]
fixed bug in editor with GEs using graphic of other element

This bug appeared when using "use graphic of element" and then
changing some other GE settings (like counters etc.), which caused
the custom graphics to be reset to the GEs default graphics.

This is the same bug as the one fixed in commit 77c74cbf, but for
group elements instead of custom elements.

4 years agoversion number set to 4.1.4.0 4.1.4.0
Holger Schemel [Fri, 3 Jan 2020 15:51:09 +0000 (16:51 +0100)]
version number set to 4.1.4.0

4 years agochanged Android project to API level 23 to support Android 10
Holger Schemel [Fri, 3 Jan 2020 01:46:45 +0000 (02:46 +0100)]
changed Android project to API level 23 to support Android 10

Android 10 requires at least API level 23, or a warning is displayed
at the first start of the app.

4 years agofixed crash bug in Android project when rotating device
Holger Schemel [Fri, 3 Jan 2020 01:36:47 +0000 (02:36 +0100)]
fixed crash bug in Android project when rotating device

When changing API level from 12 to 17, "screenSize" events must be
handled, or newer Android versions will terminate the app when the
device is rotated.

4 years agochanged Android project to API level 17 to support Android 9
Holger Schemel [Fri, 3 Jan 2020 01:32:56 +0000 (02:32 +0100)]
changed Android project to API level 17 to support Android 9

Android 9 requires at least API level 17, or a warning is displayed
at the first start of the app.

4 years agoadded Android project files
Holger Schemel [Fri, 3 Jan 2020 00:34:36 +0000 (01:34 +0100)]
added Android project files

To build Rocks'n'Diamonds for Android, the SDL library source files
and the assets directory must be added to the project.

See file "build-projects/android/README.txt" for details.

4 years agofixed bug in editor with CEs using graphic of other element
Holger Schemel [Fri, 27 Dec 2019 15:55:32 +0000 (16:55 +0100)]
fixed bug in editor with CEs using graphic of other element

This bug appeared when using "use graphic of element" and then
changing some other CE settings (like counters etc.), which caused
the custom graphics to be reset to the CEs default graphics.

4 years agoimproved error messages when IMG_Load() fails loading an image
Holger Schemel [Tue, 10 Dec 2019 22:52:33 +0000 (23:52 +0100)]
improved error messages when IMG_Load() fails loading an image

If loading an image using "IMG_Load()" fails, the name of the file is
now also displayed with the error message.

This already worked in the past, but was broken since commit a2698b3b.

5 years agoadded showing overlay touch buttons only if touch screen is really used
Holger Schemel [Wed, 2 Oct 2019 19:43:19 +0000 (21:43 +0200)]
added showing overlay touch buttons only if touch screen is really used

5 years agoadded overlay touch buttons for virtual buttons configuration
Holger Schemel [Thu, 19 Sep 2019 18:32:23 +0000 (20:32 +0200)]
added overlay touch buttons for virtual buttons configuration

5 years agoadded overlay touch buttons for in-game "stop" and "pause" buttons
Holger Schemel [Thu, 19 Sep 2019 18:16:31 +0000 (20:16 +0200)]
added overlay touch buttons for in-game "stop" and "pause" buttons

5 years agoadded overlay touch buttons for door request dialog
Holger Schemel [Thu, 19 Sep 2019 17:58:38 +0000 (19:58 +0200)]
added overlay touch buttons for door request dialog

5 years agoadded code for overlay touch buttons (currently not used)
Holger Schemel [Thu, 19 Sep 2019 17:19:37 +0000 (19:19 +0200)]
added code for overlay touch buttons (currently not used)

This adds support for overlay touch buttons to be used with the
Android port, to address the following problems:

* Especially when playing on smartphones, the display may be too small
  to use the most essential buttons, like the "yes" and "no" buttons
  of the door request dialog, or the "stop" and "pause" buttons on the
  game panel.

* Additionally, the most important game panel buttons (again, mainly
  the "stop" and "pause" buttons) may not be accessible at all because
  of being covered by virtual buttons.

* When configuring virtual buttons using recent Android versions,
  navigating to the next page is not possible anymore, because there
  is no "menu" button anymore. This was a hardware button opposite
  to the "back" button, so the "menu" and "back" buttons could be used
  to navigate to the next or previous page when configuring virtual
  buttons.

* When thinking about a potential iOS port of the game, there is not
  even a "back" button (like on Android devices), so it is even more
  difficult to stop playing a game (as the "stop" button has to be
  touched instead of just hitting the "back" button, which simply does
  not exist on iOS devices).

The next steps will be to use overlay touch buttons to solve some or
all of the above problems.

5 years agoimproved highlighting currently configured virtual button
Holger Schemel [Wed, 18 Sep 2019 22:21:42 +0000 (00:21 +0200)]
improved highlighting currently configured virtual button

5 years agofixed updating multiple pause button gadgets when toggling pause mode
Holger Schemel [Wed, 18 Sep 2019 22:04:25 +0000 (00:04 +0200)]
fixed updating multiple pause button gadgets when toggling pause mode

5 years agocleaned up configuring virtual buttons
Holger Schemel [Wed, 18 Sep 2019 21:41:51 +0000 (23:41 +0200)]
cleaned up configuring virtual buttons

5 years agofixed some function declarations
Holger Schemel [Wed, 18 Sep 2019 21:31:53 +0000 (23:31 +0200)]
fixed some function declarations

5 years agoadded additional check for handling gadgets from button events
Holger Schemel [Wed, 18 Sep 2019 21:28:08 +0000 (23:28 +0200)]
added additional check for handling gadgets from button events

5 years agofixed check for virtual buttons when handling gadgets
Holger Schemel [Wed, 18 Sep 2019 21:14:31 +0000 (23:14 +0200)]
fixed check for virtual buttons when handling gadgets

Before, when handling finger events, a flag was set to indicate if
any virtual button was pressed to prevent handling gadgets at the
same screen position. This check was broken, because button events
(including gadget checks) may be processed before the corresponding
finger events are handled, in which case this flag will be set too
late.

Now, checking if virtual buttons are pressed is done directly before
attempting to handle gadgets at the same screen position, so it does
not make a difference if button events or finger events are handled
first.

5 years agomoved code to separate function
Holger Schemel [Wed, 18 Sep 2019 20:50:27 +0000 (22:50 +0200)]
moved code to separate function

5 years agoremoved unused code
Holger Schemel [Wed, 18 Sep 2019 20:48:40 +0000 (22:48 +0200)]
removed unused code

5 years agocleaned up calculating screen positions for menu buttons
Holger Schemel [Tue, 17 Sep 2019 09:33:21 +0000 (11:33 +0200)]
cleaned up calculating screen positions for menu buttons

5 years agoadded options for player selection button positions in setup menu
Holger Schemel [Tue, 17 Sep 2019 09:20:41 +0000 (11:20 +0200)]
added options for player selection button positions in setup menu

5 years agoadded support for gadget buttons defined outside viewports
Holger Schemel [Fri, 6 Sep 2019 07:00:07 +0000 (09:00 +0200)]
added support for gadget buttons defined outside viewports

Commit 50a54138 (and the bugfix in the previous commit) prevent
drawing gadget buttons that are defined outside of viewports (like
playfield or door area), but are placed in the screen border area.

This was not supported in older versions of the redraw system (where
full-screen redraws where always done from a different back buffer).

Recent (SDL2 based) versions of the redraw system do support this, so
this limitation can be removed now to allow for gadget buttons placed
in the screen border area.

5 years agofixed redraw bug if gadget buttons are defined outside viewports
Holger Schemel [Fri, 6 Sep 2019 06:54:09 +0000 (08:54 +0200)]
fixed redraw bug if gadget buttons are defined outside viewports

This bug was introduced with a fix in commit 50a54138. The problem
with this fix was that it clears REDRAW_ALL from the redraw mask,
which may lead to no redraw at all for this game frame.

This bugfix makes sure that at least the playfield and doors area
will always be redrawn in this case.

5 years agoadded support for undo/redo using Ctrl-z/Ctrl-Shift-z in level editor
Holger Schemel [Thu, 20 Jun 2019 18:43:26 +0000 (20:43 +0200)]
added support for undo/redo using Ctrl-z/Ctrl-Shift-z in level editor

5 years agofixed crash bug caused by division by zero
Holger Schemel [Wed, 19 Jun 2019 17:47:22 +0000 (19:47 +0200)]
fixed crash bug caused by division by zero

This bug will crash the program when loading a graphics set which uses
toon animation step delay values of zero (instead of positive integers
as it should be).

This bug was introduced around version 4.0.0.0 when adding global
animations (treating toon animations as special global animations),
which could result in animation delay values of zero even though
this was checked and corrected when reading the graphics config file.

5 years agofixed sporadic problems when playing MP3 files on Windows
Holger Schemel [Mon, 3 Jun 2019 20:10:25 +0000 (22:10 +0200)]
fixed sporadic problems when playing MP3 files on Windows

This change (hopefully) fixes a problem that may sporadically occur
when playing MP3 files on Windows, in which case audio output is
either completely silent or music is stuttering instead of playing
normally.

The problem seems to be fixed by stopping the music channel before
playing the next track.

5 years agofixed mouse x/y position (for pointer class global animations)
Holger Schemel [Mon, 3 Jun 2019 19:09:56 +0000 (21:09 +0200)]
fixed mouse x/y position (for pointer class global animations)

This is required in rare cases where the mouse x/y position calculated
from raw values (to apply logical screen size scaling corrections)
does not match the final mouse event x/y position -- this may happen
because the SDL renderer's viewport position is internally represented
as float, but only accessible as integer, which may lead to rounding
errors.

Setting the mouse x/y position for pointer class global animations
from the final mouse event position fixes this problem.

5 years agofixed handling global animation click events (again)
Holger Schemel [Fri, 31 May 2019 14:10:24 +0000 (16:10 +0200)]
fixed handling global animation click events (again)

Before, only global animations exactly defined for the current game
mode were correctly handled. (Example: ".MAIN")

Now, also global animations defined for several game modes are
correctly handled. (Example: ".MENU")

5 years agofixed handling global animation click events (finally)
Holger Schemel [Fri, 31 May 2019 11:53:17 +0000 (13:53 +0200)]
fixed handling global animation click events (finally)

Also see commit 4be294f9, which did not fix the problem in all cases,
because the next part of a multi-part global animation (activated by
a click event) will not be active before the following game frame, so
a directly following release event would still just be ignored.

Stopping processing of all following events for one game frame after
handling a click event lets the animation successfully change to the
next part, which can then be triggered by the release event.

An example where this might happen is mentioned in the above commit.

5 years agore-added variable to check if any global animation was clicked
Holger Schemel [Thu, 30 May 2019 18:43:33 +0000 (20:43 +0200)]
re-added variable to check if any global animation was clicked

5 years agofixed bug with resetting variable which may already be set
Holger Schemel [Thu, 30 May 2019 18:38:04 +0000 (20:38 +0200)]
fixed bug with resetting variable which may already be set

5 years agorenamed variable (old name did not describe its use anymore)
Holger Schemel [Thu, 30 May 2019 18:06:44 +0000 (20:06 +0200)]
renamed variable (old name did not describe its use anymore)

5 years agofixed detecting running animations ('restart' bit may also be set)
Holger Schemel [Tue, 28 May 2019 17:42:54 +0000 (19:42 +0200)]
fixed detecting running animations ('restart' bit may also be set)

5 years agofixed initially displaying custom mouse cursor in upper left corner
Holger Schemel [Sat, 25 May 2019 12:39:03 +0000 (14:39 +0200)]
fixed initially displaying custom mouse cursor in upper left corner

5 years agoadded new option "create_user_levelset" (setup file only)
Holger Schemel [Sat, 25 May 2019 11:42:42 +0000 (13:42 +0200)]
added new option "create_user_levelset" (setup file only)

Setting this option to "false" (in a global program setup file)
prevents the creation of a new, empty user level set at the first
start of the program.

This option was specifically created for the R'n'D special edition
"R'n'D jue II", which comes with pre-defined user level sets.

5 years agoversion number set to 4.1.3.1
Holger Schemel [Sat, 25 May 2019 11:23:06 +0000 (13:23 +0200)]
version number set to 4.1.3.1

5 years agoadded using new screen fading option ".auto_delay_unit"
Holger Schemel [Sat, 25 May 2019 09:10:56 +0000 (11:10 +0200)]
added using new screen fading option ".auto_delay_unit"

5 years agoadded new screen fading option ".auto_delay_unit" (currently not used)
Holger Schemel [Fri, 24 May 2019 18:46:20 +0000 (20:46 +0200)]
added new screen fading option ".auto_delay_unit" (currently not used)

This new option will be used to be able to configure the existing
option ".auto_delay" (the time delay after which a title screen will
be automatically faded to the next screen) to use video frames instead
of milliseconds. This can be useful to synchronize global animations
on title screens with the automatic screen fade delay (which may be
inaccurate if using milliseconds for fading, while global animations
always use video frames for configuring animation delay).

5 years agoadded video frame counter (currently not used)
Holger Schemel [Fri, 24 May 2019 18:16:22 +0000 (20:16 +0200)]
added video frame counter (currently not used)

5 years agoversion number set to 4.1.3.0 4.1.3.0
Holger Schemel [Mon, 20 May 2019 16:43:24 +0000 (18:43 +0200)]
version number set to 4.1.3.0

5 years agofixed handling clickable global animations during request dialog
Holger Schemel [Sun, 28 Apr 2019 18:25:17 +0000 (20:25 +0200)]
fixed handling clickable global animations during request dialog

5 years agoadded handling global animations during delays in Mirror Magic game engine
Holger Schemel [Thu, 25 Apr 2019 17:46:06 +0000 (19:46 +0200)]
added handling global animations during delays in Mirror Magic game engine

5 years agoadded handling global animations when showing envelope during tape replay
Holger Schemel [Thu, 25 Apr 2019 17:37:00 +0000 (19:37 +0200)]
added handling global animations when showing envelope during tape replay

5 years agoadded handling clickable global animations during request dialog
Holger Schemel [Thu, 25 Apr 2019 17:25:19 +0000 (19:25 +0200)]
added handling clickable global animations during request dialog

5 years agofixed bug with restarting pointer-style global animations when moving mouse
Holger Schemel [Thu, 25 Apr 2019 17:06:11 +0000 (19:06 +0200)]
fixed bug with restarting pointer-style global animations when moving mouse

5 years agofixed (reversed) setting hot spot for pointer-style global animations
Holger Schemel [Thu, 25 Apr 2019 16:51:31 +0000 (18:51 +0200)]
fixed (reversed) setting hot spot for pointer-style global animations

5 years agoadded not using global animation mouse pointer when reloading artwork
Holger Schemel [Wed, 24 Apr 2019 18:11:18 +0000 (20:11 +0200)]
added not using global animation mouse pointer when reloading artwork

5 years agoadded setting draw order and style for pointer-style global animations
Holger Schemel [Wed, 24 Apr 2019 17:31:45 +0000 (19:31 +0200)]
added setting draw order and style for pointer-style global animations

To ensure pointer-like behavior for pointer-style global animations,
set draw order to high value (if draw order has default value) to be
on top of all other animations and set style to pass-through clicks
(if style has default value) to handle mouse clicks under the pointer
animation.

5 years agoadded forcing pointer-style global animations to stay inside window area
Holger Schemel [Mon, 22 Apr 2019 11:08:40 +0000 (13:08 +0200)]
added forcing pointer-style global animations to stay inside window area

5 years agoadded pumping events when waiting for screen redraw
Holger Schemel [Mon, 22 Apr 2019 10:47:58 +0000 (12:47 +0200)]
added pumping events when waiting for screen redraw

This is required for executing event filter to update mouse position
during actions without event handling (like fading screens).

5 years agofixed handling global animation click events
Holger Schemel [Mon, 22 Apr 2019 08:41:25 +0000 (10:41 +0200)]
fixed handling global animation click events

When handling global animation click events, it may happen that more
than one click event occurs within the same game frame (especially
when doing a click by tapping on a touch pad or screen, which may lead
to a "press" and "release" event within the same game frame).

Before, only the first click event was correctly handled (as the event
was not directly handled, but stored and processed later in the screen
redraw phase, when global animations are handled), while all following
events (that occurred within the same game frame) are usually lost if
they should be processed for the next part of the animation (which is
not active before the first event was processed).

Example: Global animation for a button that will be shown as "pressed"
after handling a "click" event and that will be shown as "unpressed"
again after handling a "release" event. If the "click" and "release"
events occur within the same game frame, the global animation still is
in the "unpressed" animation part when the "release" event is handled,
so it will be ignored and the button will stay in the "pressed" state.

To fix this buggy behavior, click (and release) events are now handled
immediately after they occur (instead of processing them in the screen
redraw phase), which results in changing the animation's active part
directly after the event occured, so the next event can be processed
by the next part of the animation.

5 years agofixed handling "Escape" key on high score screen
Holger Schemel [Sat, 20 Apr 2019 08:55:13 +0000 (10:55 +0200)]
fixed handling "Escape" key on high score screen

Before, pressing the "Escape" key on the high score screen after
solving a level when using the game setting "auto-play next level"
started playing the next level.

Now, only "positive" input actions (like pressing "Space" or "Enter"
or pressing a joystick button) start playing the next level, while a
"negative" input action like pressing the "Escape" key always returns
to the main menu even with this game setting activated.

5 years agofixed function to always return a string copy (and never a string constant)
Holger Schemel [Thu, 18 Apr 2019 23:04:35 +0000 (01:04 +0200)]
fixed function to always return a string copy (and never a string constant)

5 years agofixed some memory allocations to prevent valgrind warnings
Holger Schemel [Wed, 17 Apr 2019 20:18:23 +0000 (22:18 +0200)]
fixed some memory allocations to prevent valgrind warnings

5 years agofixed some memory allocations to prevent valgrind warnings
Holger Schemel [Wed, 17 Apr 2019 20:02:18 +0000 (22:02 +0200)]
fixed some memory allocations to prevent valgrind warnings

5 years agoadded function to update the mouse position when changing window size
Holger Schemel [Thu, 4 Apr 2019 22:00:53 +0000 (00:00 +0200)]
added function to update the mouse position when changing window size

5 years agoadded SDL event filter to track mouse position from mouse motion events
Holger Schemel [Thu, 4 Apr 2019 21:15:20 +0000 (23:15 +0200)]
added SDL event filter to track mouse position from mouse motion events

This (re-)adds a mouse motion event filter to update the current mouse
position for "pointer" class global animations, even if no events were
handled before, which improves smoothness of mouse pointer movement.

5 years agoimproved global animation class "pointer" for animation at mouse position
Holger Schemel [Wed, 3 Apr 2019 17:22:26 +0000 (19:22 +0200)]
improved global animation class "pointer" for animation at mouse position

When using this animation class, the "real" mouse pointer is made
invisible now.

5 years agoadded global animation actions executed after init/anim/post delay
Holger Schemel [Sat, 23 Mar 2019 21:58:54 +0000 (22:58 +0100)]
added global animation actions executed after init/anim/post delay

This change adds the following new options for global animations:

* .init_delay_action
* .anim_delay_action
* .post_delay_action

They can be set to the same values as ".init_event_action" and
".anim_event_action" (buttons, gadgets and key actions).

5 years agorenamed variable
Holger Schemel [Sat, 23 Mar 2019 21:18:10 +0000 (22:18 +0100)]
renamed variable

5 years agofixed bug with not recognizing ".init_event_action" for global animations
Holger Schemel [Sat, 23 Mar 2019 21:16:37 +0000 (22:16 +0100)]
fixed bug with not recognizing ".init_event_action" for global animations

5 years agofixed initializing post delay counter when starting global animation
Holger Schemel [Thu, 21 Mar 2019 23:30:15 +0000 (00:30 +0100)]
fixed initializing post delay counter when starting global animation

5 years agofixed inconsistent global animation state after event actions
Holger Schemel [Thu, 21 Mar 2019 23:05:57 +0000 (00:05 +0100)]
fixed inconsistent global animation state after event actions

When executing event actions for global animations, these actions may
cause a screen change, which itself may change the state of global
animations (especially stopping animations that were running on the
previous screen).

When executing event actions directly from the functions that handle
global animations, these functions may continue changing the state of
the global animation that caused the event action, even though this
animation was already stopped due to a screen change, which may cause
this animation to be set back to "active" ("running") state, so that
it continues being displayed on the new screen, even though it was
never defined for it.

This problem was fixed by executing all event actions independently
from the animation handling functions, by inserting new user events
into the program's standard event queue, to handle animation event
actions in a separate, independent step after all animations were
handled.

5 years agofixed handling global animation key event actions multiple times
Holger Schemel [Thu, 21 Mar 2019 22:36:36 +0000 (23:36 +0100)]
fixed handling global animation key event actions multiple times

When checking key events for triggering global animations, all keys
that are not handled as "click" events for the "any" animation event
were effectively treated like a "released button" event, which did
not have an effect if no mouse button was pressed at the same time.

However, when clicking on "clickable" global animations (those that
have a "click" animation event defined) with key event actions (that
will cause a simulated key press and release event), any key press
event that is not recognized as a "click" event will again be treated
like a "released button" event, causing the "button is pressed" state
in "HandleGlobalAnimClicks()" to be changed to "not pressed anymore",
so the still pressed mouse button will cause another "press event" in
"HandleGlobalAnimClicks()" right away, which will result in multiple
key events instead of one single key event. This may cause unexpected
and unwanted behaviour when handling global animation events.

This problem is fixed by only handling those key events for global
animations that will be handled as "click" events.

5 years agoadded generic support for handling user events
Holger Schemel [Thu, 21 Mar 2019 08:17:57 +0000 (09:17 +0100)]
added generic support for handling user events

5 years agocleanup of obsolete client message event from SDL 1.2
Holger Schemel [Wed, 20 Mar 2019 21:00:34 +0000 (22:00 +0100)]
cleanup of obsolete client message event from SDL 1.2

This event is only used for the "quit" event in SDL 2.0 now.

5 years agoremoved obsolete window events from SDL 1.2
Holger Schemel [Wed, 20 Mar 2019 20:50:38 +0000 (21:50 +0100)]
removed obsolete window events from SDL 1.2

These obsolete window events were used for SDL 1.2 support (which was
removed some time ago) and are not needed anymore. All corresponding
window events are handled by SDL_WINDOWEVENT in SDL 2.0 now.

5 years agofixed handling global animation key actions when mouse button is pressed
Holger Schemel [Wed, 20 Mar 2019 18:18:54 +0000 (19:18 +0100)]
fixed handling global animation key actions when mouse button is pressed

When handling key actions for global animations (like pressing "Enter"
or "Escape") which are translated into global animation click events,
they were ignored if a "real" mouse button is already held pressed at
the same time. This can especially happen with animation event actions
that simulate key press events when clicking on global animations, so
the key actions were ignored if the mouse button was held down for too
long.

This change forces key actions of global animations to be handled even
if a mouse button was pressed at the same time.

5 years agoadded global animation class "pointer" for animation at mouse position
Holger Schemel [Mon, 18 Mar 2019 22:57:46 +0000 (23:57 +0100)]
added global animation class "pointer" for animation at mouse position

The animation's x and y position values are used to set the animation
position relative to the mouse pointer position when using this class.

5 years agoadded fields to graphics info structure to store current mouse position
Holger Schemel [Mon, 18 Mar 2019 22:53:08 +0000 (23:53 +0100)]
added fields to graphics info structure to store current mouse position

5 years agoadded global animation event 'unclick:any' to handle mouse release events
Holger Schemel [Sun, 17 Mar 2019 19:20:51 +0000 (20:20 +0100)]
added global animation event 'unclick:any' to handle mouse release events

5 years agofixed wrong position of global animations in 'door_2' in level editor
Holger Schemel [Sat, 16 Mar 2019 20:50:49 +0000 (21:50 +0100)]
fixed wrong position of global animations in 'door_2' in level editor

5 years agominor code formatting changes
Holger Schemel [Sat, 16 Mar 2019 10:05:05 +0000 (11:05 +0100)]
minor code formatting changes

5 years agofixed handling key event actions by global animations in level editor
Holger Schemel [Sat, 16 Mar 2019 10:01:19 +0000 (11:01 +0100)]
fixed handling key event actions by global animations in level editor

5 years agoadded some more debug output for triggered global animations
Holger Schemel [Thu, 14 Mar 2019 07:35:00 +0000 (08:35 +0100)]
added some more debug output for triggered global animations

5 years agoadded several new event types that can trigger global animations
Holger Schemel [Thu, 14 Mar 2019 01:15:36 +0000 (02:15 +0100)]
added several new event types that can trigger global animations

This change adds the following new global animations event types,
which can be used like the already existing "click:anim_X.part_Y":

* init:anim_X.part_Y  - triggers when animation is initialized
* start:anim_X.part_Y - triggers when animation is started
* end:anim_X.part_Y   - triggers when animation ends
* post:anim_X.part_Y  - triggers when animation post delay ends

The second part ".part_Y" is optional; if missing, events for every
animation part will trigger the animation for which this event is
defined.

The "init" event will trigger even if the animation is not yet
displayed, but starts waiting for its "init_delay" or "init_event",
while the "start" event will trigger when the first frame of the
animation is displayed.

The "end" event will trigger when the last frame of the animation is
displayed (either because the animation has stopped due to a click
event, due to the "anim_delay" being finished or because the animation
has completely moved off the screen), while the "post" event will
trigger when the "post_delay" is completely finished.

5 years agoadded some debug output for triggered global animations (deactivated)
Holger Schemel [Thu, 14 Mar 2019 01:01:49 +0000 (02:01 +0100)]
added some debug output for triggered global animations (deactivated)

5 years agoadded support for more event types that can trigger global animations
Holger Schemel [Thu, 14 Mar 2019 00:55:36 +0000 (01:55 +0100)]
added support for more event types that can trigger global animations

5 years agomoved checking if click triggered other animations to separate function
Holger Schemel [Thu, 14 Mar 2019 00:38:49 +0000 (01:38 +0100)]
moved checking if click triggered other animations to separate function

5 years agoadded support for more event types for global animations (yet to be added)
Holger Schemel [Wed, 13 Mar 2019 19:25:02 +0000 (20:25 +0100)]
added support for more event types for global animations (yet to be added)

5 years agoadded support for handling multiple event definitions for global animations
Holger Schemel [Tue, 12 Mar 2019 22:08:53 +0000 (23:08 +0100)]
added support for handling multiple event definitions for global animations

5 years agocleanup of (boolean) animation event state handling
Holger Schemel [Tue, 12 Mar 2019 21:14:13 +0000 (22:14 +0100)]
cleanup of (boolean) animation event state handling

5 years agoadded support for storing multiple event definitions for global animations
Holger Schemel [Tue, 12 Mar 2019 20:22:02 +0000 (21:22 +0100)]
added support for storing multiple event definitions for global animations

5 years agomoved functions to parse GIC parameters from 'libgame' to main source tree
Holger Schemel [Tue, 12 Mar 2019 07:24:18 +0000 (08:24 +0100)]
moved functions to parse GIC parameters from 'libgame' to main source tree

5 years agofixed a few element token names (previously set to 'char_unused')
Holger Schemel [Thu, 7 Mar 2019 07:30:00 +0000 (08:30 +0100)]
fixed a few element token names (previously set to 'char_unused')

5 years agofixed editor graphic of element "steel_char_space" (now visually different)
Holger Schemel [Wed, 6 Mar 2019 19:22:34 +0000 (20:22 +0100)]
fixed editor graphic of element "steel_char_space" (now visually different)

5 years agochanged some level editor graphic definitions to use in-game graphics
Holger Schemel [Tue, 5 Mar 2019 23:12:21 +0000 (00:12 +0100)]
changed some level editor graphic definitions to use in-game graphics

The old definitions still came from a time where downscaled graphics
did not use interpolation and therefore did not look well with those
graphics also used in-game.

5 years agofixed creating level sketch images for DF/MM elements and for SQL statements
Holger Schemel [Tue, 5 Mar 2019 22:53:12 +0000 (23:53 +0100)]
fixed creating level sketch images for DF/MM elements and for SQL statements

5 years agoadded cycling through all zoom tilesizes in editor when using touch device
Holger Schemel [Sun, 3 Mar 2019 17:08:35 +0000 (18:08 +0100)]
added cycling through all zoom tilesizes in editor when using touch device

5 years agoadded detecting use of touch device for user input on current platform
Holger Schemel [Sun, 3 Mar 2019 17:06:40 +0000 (18:06 +0100)]
added detecting use of touch device for user input on current platform