rocksndiamonds.git
5 years agocleanup of handling setup options
Holger Schemel [Sat, 9 Feb 2019 00:23:59 +0000 (01:23 +0100)]
cleanup of handling setup options

5 years agofixed bug when snapping envelope (introduced by commit 931d95b5)
Holger Schemel [Thu, 7 Feb 2019 22:40:30 +0000 (23:40 +0100)]
fixed bug when snapping envelope (introduced by commit 931d95b5)

5 years agochanged drawing preview/network players if only level preview redefined
Holger Schemel [Thu, 7 Feb 2019 18:34:46 +0000 (19:34 +0100)]
changed drawing preview/network players if only level preview redefined

Problem: Drawing preview players (for team mode levels) and network
players (when connected to network server) in the main menu was added
at a time where already quite some custom artwork was created, which
did not know of these artwork definitions, so redefining the level
preview area might conflict with those player graphics added later
(and therefore maybe not redefined by these custom artwork sets).

Solution: If the position of the level preview is redefined, but the
positions of the preview or network player graphics are not redefined,
just skip drawing these player graphics.

5 years agominor comments and whitespace changes
Holger Schemel [Tue, 5 Feb 2019 20:57:02 +0000 (21:57 +0100)]
minor comments and whitespace changes

5 years agoremoved unneeded screen redraw
Holger Schemel [Tue, 5 Feb 2019 20:54:29 +0000 (21:54 +0100)]
removed unneeded screen redraw

5 years agofixed bug with not redrawing level number in main menu changed by cursor
Holger Schemel [Tue, 5 Feb 2019 20:49:11 +0000 (21:49 +0100)]
fixed bug with not redrawing level number in main menu changed by cursor

5 years agoremoved code and image for using virtual buttons from image file
Holger Schemel [Tue, 5 Feb 2019 07:19:53 +0000 (08:19 +0100)]
removed code and image for using virtual buttons from image file

5 years agofixed potential crash bug for special versions without "classic" artwork
Holger Schemel [Mon, 4 Feb 2019 21:44:54 +0000 (22:44 +0100)]
fixed potential crash bug for special versions without "classic" artwork

This bug can happen when using the program binary within a special,
customized version of R'n'D like "R'n'D jue" that does not contain
the usual "classic" artwork (like the graphics set "gfx_classic").

The problem is solved by doing a fallback to the default artwork set
(as it can be defined using "default_graphics_set") if the "classic"
artwork set cannot be found.

5 years agoimproved some code with more compact variant of same functionality
Holger Schemel [Mon, 4 Feb 2019 21:11:51 +0000 (22:11 +0100)]
improved some code with more compact variant of same functionality

5 years agoadded options for alignment of selection lists on setup sub-screens
Holger Schemel [Mon, 4 Feb 2019 20:59:07 +0000 (21:59 +0100)]
added options for alignment of selection lists on setup sub-screens

This adds two new "graphicsinfo.conf" options that are a bit special:

- menu.list.SETUP[CHOOSE_OTHER].align
- menu.list.SETUP[CHOOSE_OTHER].valign

These new options can be used for horizontal and vertical alignment
of selection lists on setup sub-screens (which cannot be adjusted
individually like the other setup screens using "menu.draw_xoffset"
and "menu.draw_yoffset").

Values are as usual: "left", "center" and "right" for ".align" and
"top", "middle", "bottom" for ".valign" (with "left" and "top" being
the default values).

5 years agorenamed variable
Holger Schemel [Mon, 4 Feb 2019 08:26:00 +0000 (09:26 +0100)]
renamed variable

5 years agomoved some code outside loop that does not change in loop
Holger Schemel [Mon, 4 Feb 2019 08:25:14 +0000 (09:25 +0100)]
moved some code outside loop that does not change in loop

5 years agofixed bug with cutting text on setup screens without scrollbar
Holger Schemel [Mon, 4 Feb 2019 08:10:18 +0000 (09:10 +0100)]
fixed bug with cutting text on setup screens without scrollbar

When drawing selection lists on setup sub-screens, text was always cut
on the right side to prevent drawing text over a potential scrollbar,
even if the selection list is short enough that there is no scrollbar.

Now it is checked if the setup sub-screens has a scrollbar or not, and
the right edge where text has to be cut is calculated accordingly.

5 years agoremoved file that was committed into the repository by error
Holger Schemel [Sat, 2 Feb 2019 17:15:48 +0000 (18:15 +0100)]
removed file that was committed into the repository by error

5 years agofixed bug when using Shift+click (IntelliDraw) in editor using empty space
Holger Schemel [Sat, 2 Feb 2019 17:07:21 +0000 (18:07 +0100)]
fixed bug when using Shift+click (IntelliDraw) in editor using empty space

Using "empty space" as the drawing element in the level editor caused
"high resolution" (half tile size) drawing even if the element under
the cursor is not a "high resolution" (Mirror Magic style) element,
causing buggy drawing when using "IntelliDraw" (Shift+click) drawing.

5 years agofixed output of debug key actions
Holger Schemel [Sat, 2 Feb 2019 10:47:20 +0000 (11:47 +0100)]
fixed output of debug key actions

5 years agoremoved drag-and-drop support if compiled with SDL version older than 2.0.5
Holger Schemel [Sat, 2 Feb 2019 10:29:29 +0000 (11:29 +0100)]
removed drag-and-drop support if compiled with SDL version older than 2.0.5

5 years agofixed incorrect drawing of players which are moving next to each others
Holger Schemel [Sat, 26 Jan 2019 12:19:24 +0000 (13:19 +0100)]
fixed incorrect drawing of players which are moving next to each others

Before, players which were moving next to each others without a free
tile between them were drawn incorrectly (with (usually black)
background tile graphics partially drawn over one of the players).

This problem is now fixed by drawing all player tiles layer by layer
(first drawing the background tiles for all players, then drawing the
players, then drawing elements in front of the players etc.).

5 years agoremoved unused variable
Holger Schemel [Thu, 24 Jan 2019 18:30:35 +0000 (19:30 +0100)]
removed unused variable

5 years agofixed bug with player moving when releasing one of several pressed snap keys
Holger Schemel [Thu, 24 Jan 2019 18:26:01 +0000 (19:26 +0100)]
fixed bug with player moving when releasing one of several pressed snap keys

When using TAS snap keys, pressing more than one snap key at the same
time and then releasing one of them caused the player to move.

5 years agoimproved handling and displaying dropped level set zip files into window
Holger Schemel [Thu, 24 Jan 2019 00:11:17 +0000 (01:11 +0100)]
improved handling and displaying dropped level set zip files into window

This change added the possibility to drop and extract zip files into
the currently displayed level set sub-directory on the "choose level
set" screen.

After dropping and extracting zip files on the "choose level set" or
"choose custom artwork" screens, the newly added level or artwork set
is displayed and pre-selected in the list of level or artwork sets,
so it can easily be loaded. (When dropping and extracting zip files
with level sets on the main menu screen, the last added level set will
be automatically selected and loaded.)

5 years agoimproved handling and confirming dropped level set zip files into window
Holger Schemel [Tue, 22 Jan 2019 19:52:51 +0000 (20:52 +0100)]
improved handling and confirming dropped level set zip files into window

5 years agoadded selecting new level set if dropped as zip file into window
Holger Schemel [Tue, 22 Jan 2019 00:18:52 +0000 (01:18 +0100)]
added selecting new level set if dropped as zip file into window

5 years agofixed bug with incorrectly initializing snapping in single-step mode
Holger Schemel [Mon, 21 Jan 2019 20:38:18 +0000 (21:38 +0100)]
fixed bug with incorrectly initializing snapping in single-step mode

When in single-step mode, snapping a tile (by using either TAS snap
keys or by using snap+direction keys) is followed by immediately
returning to pause mode. While this is fine, it was also followed by
initializing snapping (just as if the keys for snapping have been
released, which is usually indeed the case when in single-step mode,
but may be followed by pressing keys for snapping again, so the game
engine gets pressed snap keys in two subsequent frames without any
frame with "no snapping" action in between). When replaying a tape
with such snap actions (as recorded while playing), there is only one
single snap action (lasting two frames) when replaying, while there
were two snap actions (both lasting one frame) when recording, which
may result in different behaviour when replaying a recorded game.
(This can easily be tested by snapping several falling gems while in
single-step mode.)

This bug was fixed by removing the incorrect initialization of
snapping when returning to pause mode in single-step mode.

5 years agofixed memory leak
Holger Schemel [Tue, 15 Jan 2019 21:49:00 +0000 (22:49 +0100)]
fixed memory leak

5 years agore-added some removed (deactivated) code (to be evaluated again)
Holger Schemel [Tue, 15 Jan 2019 20:44:33 +0000 (21:44 +0100)]
re-added some removed (deactivated) code (to be evaluated again)

5 years agoremoved warning from "ar" on newer systems
Holger Schemel [Tue, 15 Jan 2019 20:09:17 +0000 (21:09 +0100)]
removed warning from "ar" on newer systems

5 years agoremoved obsolete special functions to add new level or artwork set to tree
Holger Schemel [Sun, 13 Jan 2019 12:17:55 +0000 (13:17 +0100)]
removed obsolete special functions to add new level or artwork set to tree

5 years agoadded generic function to add new level or artwork set to tree
Holger Schemel [Sun, 13 Jan 2019 12:10:50 +0000 (13:10 +0100)]
added generic function to add new level or artwork set to tree

5 years agoadded adding extracted level and artwork info from dropped zip files
Holger Schemel [Sat, 12 Jan 2019 20:17:55 +0000 (21:17 +0100)]
added adding extracted level and artwork info from dropped zip files

5 years agoadded extracting level and artwork sets from zip files dropped into window
Holger Schemel [Thu, 10 Jan 2019 23:07:45 +0000 (00:07 +0100)]
added extracting level and artwork sets from zip files dropped into window

5 years agoadded experimental (cross-platform) drag and drop test code
Holger Schemel [Thu, 10 Jan 2019 19:03:25 +0000 (20:03 +0100)]
added experimental (cross-platform) drag and drop test code

5 years agoremoved experimental (Windows specific) drag and drop test code
Holger Schemel [Thu, 10 Jan 2019 18:59:36 +0000 (19:59 +0100)]
removed experimental (Windows specific) drag and drop test code

5 years agoadded extracting level and artwork sets from zip files at program start
Holger Schemel [Wed, 9 Jan 2019 23:25:54 +0000 (00:25 +0100)]
added extracting level and artwork sets from zip files at program start

5 years agoadded generic support for listing and extracting zip files (using minizip)
Holger Schemel [Wed, 9 Jan 2019 23:05:48 +0000 (00:05 +0100)]
added generic support for listing and extracting zip files (using minizip)

5 years agoadded some more automatically generated files to be ignored by Git
Holger Schemel [Mon, 7 Jan 2019 19:10:04 +0000 (20:10 +0100)]
added some more automatically generated files to be ignored by Git

5 years agofixed potential crash bug (accessing invalid memory)
Holger Schemel [Mon, 7 Jan 2019 15:42:30 +0000 (16:42 +0100)]
fixed potential crash bug (accessing invalid memory)

This change fixes a bug that occured when invoking the changed
function with a "graphic" parameter indicating undefined graphic,
which is defined as "-1" and caused an "array out of bounds" access.

To fix this bug, the function parameter is checked before used.

5 years agofixed potential crash bug (accessing already destroyed SDL renderer)
Holger Schemel [Mon, 7 Jan 2019 15:20:39 +0000 (16:20 +0100)]
fixed potential crash bug (accessing already destroyed SDL renderer)

This bug was caused by destroying textures after reinitializing the
window, which causes the SDL renderer to be destroyed and created
for the new window. Unfortunately, to destroy the old textures (which
were created using the previous renderer), the old renderer is used,
causing access to already free()'d memory.

To fix this bug, all textures are destroyed before the renderer is
destroyed (and re-created).

This bug caused regular crashes of the Windows version of the game
when switching between level sets that redefine the window size
(while no such crashes were observed with the Linux or Mac version).

5 years agofixed bug with not fading menu music on title screen when changing level set
Holger Schemel [Mon, 7 Jan 2019 12:28:03 +0000 (13:28 +0100)]
fixed bug with not fading menu music on title screen when changing level set

5 years agofixed editor option to automatically count gems needed
Holger Schemel [Mon, 7 Jan 2019 10:00:16 +0000 (11:00 +0100)]
fixed editor option to automatically count gems needed

5 years agofixed network games playing empty level files that use level template
Holger Schemel [Sat, 5 Jan 2019 12:29:54 +0000 (13:29 +0100)]
fixed network games playing empty level files that use level template

5 years agoadded quickly toggling team mode by clicking on main menu "name/team" text
Holger Schemel [Fri, 4 Jan 2019 17:55:48 +0000 (18:55 +0100)]
added quickly toggling team mode by clicking on main menu "name/team" text

5 years agoadded using preferred network player also in single-player mode
Holger Schemel [Fri, 4 Jan 2019 17:03:14 +0000 (18:03 +0100)]
added using preferred network player also in single-player mode

5 years agoadded stopping text input when pressing joystick button
Holger Schemel [Sat, 29 Dec 2018 01:00:51 +0000 (02:00 +0100)]
added stopping text input when pressing joystick button

5 years agofixed bug with not updating game panel on maximum overload in MM engine
Holger Schemel [Fri, 28 Dec 2018 19:42:39 +0000 (20:42 +0100)]
fixed bug with not updating game panel on maximum overload in MM engine

5 years agofixed not closing doors simultaneously after solving a level
Holger Schemel [Fri, 28 Dec 2018 15:11:19 +0000 (16:11 +0100)]
fixed not closing doors simultaneously after solving a level

5 years agofixed playfield flashing black when game started from level editor
Holger Schemel [Fri, 28 Dec 2018 14:57:59 +0000 (15:57 +0100)]
fixed playfield flashing black when game started from level editor

5 years agofixed graphical bug with drawing tape controls over closed door
Holger Schemel [Fri, 28 Dec 2018 14:38:49 +0000 (15:38 +0100)]
fixed graphical bug with drawing tape controls over closed door

This bug happened in two cases where the game was started with the
tape door closed: When starting the game from the "hall of fame"
screen, and when starting the game from the level editor. In these
cases, tape controls were drawn over the closed tape door right
before the door was opened.

5 years agofixed main menu buttons for first level, last level and level number
Holger Schemel [Fri, 28 Dec 2018 00:14:18 +0000 (01:14 +0100)]
fixed main menu buttons for first level, last level and level number

These three buttons were handled as "main menu screen buttons"
(like the buttons and text labels for the main menu functions),
but should instead be handled as "real gadgets" (just like the
buttons to select previous or next level, but instead triggering
when mouse button is released).

This change was needed to show the button graphics for the active
state of these three buttons when mouse button was held clicked on
them.

5 years agoremoved lists of setup token names that were not really needed at all
Holger Schemel [Thu, 27 Dec 2018 14:04:12 +0000 (15:04 +0100)]
removed lists of setup token names that were not really needed at all

5 years agofixed bug with not saving editor cascade settings for two element groups
Holger Schemel [Thu, 27 Dec 2018 13:24:27 +0000 (14:24 +0100)]
fixed bug with not saving editor cascade settings for two element groups

This bug was caused by adding two new element groups to the level
editor palette area (for Mirror Magic and Deflektor elements), but not
adding them to the list of cascade settings to be saved.

The real problem was that two lists were kept in "src/files.c" for the
settings, and only one was updated when adding the new cascade groups.

To prevent similar bugs in the future, one of the two lists was
removed, as those definitions were not used anyway in this case.

5 years agofixed graphical bug when digging (crumbled) sand next to other player
Holger Schemel [Tue, 18 Dec 2018 23:09:50 +0000 (00:09 +0100)]
fixed graphical bug when digging (crumbled) sand next to other player

5 years agofixed bug in handling debug keys when compiled without symbol DEBUG defined
Holger Schemel [Mon, 17 Dec 2018 20:51:53 +0000 (21:51 +0100)]
fixed bug in handling debug keys when compiled without symbol DEBUG defined

5 years agofixed bug with CE actions "show envelope" and "exit player" when moving
Holger Schemel [Mon, 17 Dec 2018 08:14:05 +0000 (09:14 +0100)]
fixed bug with CE actions "show envelope" and "exit player" when moving

When using the CE actions "show envelope" or "exit player" with the
condition "after explosion of player", those actions are not performed
if the player was moving at the time of explosion, as they are both
waiting for the player to reach the next tile (which will never happen
in this case).

The best solution is to only check for a "non-moving" tile position of
the player if the player is still active, which will fix the problem.

However, as the check for a "non-moving" tile position is used very
frequently, setting the tile position to "non-moving" for inactive
players was added.

5 years agoadded using gadgets that do not overlap with virtual buttons on Android
Holger Schemel [Tue, 11 Dec 2018 23:18:45 +0000 (00:18 +0100)]
added using gadgets that do not overlap with virtual buttons on Android

5 years agoadded toggling virtual buttons using 'menu' button on Android
Holger Schemel [Tue, 11 Dec 2018 22:53:07 +0000 (23:53 +0100)]
added toggling virtual buttons using 'menu' button on Android

5 years agochanged request dialog to disable virtual buttons instead of hiding them
Holger Schemel [Tue, 11 Dec 2018 22:48:50 +0000 (23:48 +0100)]
changed request dialog to disable virtual buttons instead of hiding them

5 years agofixed short reactivation of overlay buttons while closing door after game
Holger Schemel [Tue, 11 Dec 2018 20:58:24 +0000 (21:58 +0100)]
fixed short reactivation of overlay buttons while closing door after game

5 years agofixed compiler warning due to missing function prototype
Holger Schemel [Tue, 11 Dec 2018 20:35:11 +0000 (21:35 +0100)]
fixed compiler warning due to missing function prototype

5 years agochanged fading complete screen only if all viewports have changed
Holger Schemel [Mon, 3 Dec 2018 23:23:54 +0000 (00:23 +0100)]
changed fading complete screen only if all viewports have changed

(... or if the global border has changed, of course)

This change partially reverses the behaviour caused by commit 5c6c42f1
("fixed fading complete screen if playfield viewport has changed"),
which prevented partially fading screens that only partially changed.

The main intention of this change is to make it possible that the tape
recorder viewport, if unchanged, keeps being visible while fading the
remaining parts of the screen (especially with artwork sets without
global border graphics).

However, if *all* viewports changed, the whole window will be faded.

5 years agorenamed function
Holger Schemel [Mon, 3 Dec 2018 22:34:54 +0000 (23:34 +0100)]
renamed function

5 years agofixed bug with comparing wrong viewport variables
Holger Schemel [Mon, 3 Dec 2018 21:49:26 +0000 (22:49 +0100)]
fixed bug with comparing wrong viewport variables

5 years agofixed bug with not clearing editor doors if no background image defined
Holger Schemel [Sun, 2 Dec 2018 01:59:39 +0000 (02:59 +0100)]
fixed bug with not clearing editor doors if no background image defined

5 years agoadded support for dynamic window and playfield size
Holger Schemel [Sat, 1 Dec 2018 11:30:29 +0000 (12:30 +0100)]
added support for dynamic window and playfield size

This change added a few new and extended directives for the graphics
configuration done in "graphicsinfo.conf" files in artwork and level
sets.

For the window and playfield definitions, there are new properties
".min_width" / ".min_height" and also ".max_width" / ".max_height"
to define minimum and maximum window and playfield sizes. This is
useful to dynamically support different screen sizes which have a
different screen aspect ratio (like tablets with 4:3 or 16:9 sized
screens), always using the full screen size without black borders
that cannot be used for the game.

To be able to place the "doors" (game panel and tape recorder) also
dynamically aligned with the right or bottom screen border, margins
can be defined for the playfield to not use these areas, which can
then be used for the doors being aligned to the corresponding window
edges. That's what the new ".margin_left", ".margin_right",
".margin_top" and ".margin_bottom" directives are for, together with
".align" and ".valign" properties to align the playfield or the doors
horizontally ("left", "center" or "right") or vertically ("top",
"middle", or "bottom").

To make sure that the game playfield always uses complete tiles (or
half tiles, or any other size), there's also a new directive called
".align_size" to specify the alignment tile size for the playfield
(which is set to half a tile by default).

The last enhancement extends playfield border sizes to be defined
for each border individually, so instead of a unique ".border_size"
for all playfield borders, different border sizes can be specified
by using ".border_left", ".border_right", ".border_top" and
".border_bottom". If they are not set, they inherit their value from
".border_size" just like before. Using the value "-1" causes borders
to be calculated dynamically -- this only makes sense when using a
variable window size (by using ".min_width" and/or ".min_height") with
a fixed playfield size, so borders can also have variable size. This
is mainly useful for using a fixed (or limited, by ".max_width/height)
playfield size while still being able to display global animations on
the whole surrounding playfield border area.

5 years agoadded support for dynamically sized (and placed) editor palette
Holger Schemel [Sat, 1 Dec 2018 10:50:32 +0000 (11:50 +0100)]
added support for dynamically sized (and placed) editor palette

When using the value "-1" for columns or rows of the editor palette
(that is, values "editor.palette.cols" and "editor.palette.rows"),
these numbers are dynamically calculated according to the size of the
editor playfield area.

When setting "editor.palette.x" or "editor.palette.y" to "-1", also
the position of the editor palette is dynamically calculated (to be
centered within the playfield area).

(As these values for columns and rows are used at a very early stage
in the level editor to allocate memory for palette buttons, make sure
that no negative numbers are used here for memory calculations.)

5 years agofixed potential crash bug with empty (padding) element buttons in editor
Holger Schemel [Sat, 1 Dec 2018 10:41:54 +0000 (11:41 +0100)]
fixed potential crash bug with empty (padding) element buttons in editor

This fixes a bug that can cause a crash when accessing memory that was
already free()'ed again, because the variable that contains the amount
of allocated memory is not updated when memory allocation changes.

The bug is fixed by updating that variable when memory is allocated.

5 years agofixed nasty x/y typo bug
Holger Schemel [Mon, 26 Nov 2018 23:18:35 +0000 (00:18 +0100)]
fixed nasty x/y typo bug

5 years agoimproved loading menu graphics config settings (more generic solution)
Holger Schemel [Wed, 21 Nov 2018 22:57:54 +0000 (23:57 +0100)]
improved loading menu graphics config settings (more generic solution)

5 years agoreplaced preprocessor constants with enum values
Holger Schemel [Sat, 17 Nov 2018 01:16:33 +0000 (02:16 +0100)]
replaced preprocessor constants with enum values

5 years agoremoved some unused stuff from MM engine code
Holger Schemel [Sat, 17 Nov 2018 00:24:53 +0000 (01:24 +0100)]
removed some unused stuff from MM engine code

5 years agofixed handling debug keys to prevent handling keys twice
Holger Schemel [Fri, 16 Nov 2018 21:25:30 +0000 (22:25 +0100)]
fixed handling debug keys to prevent handling keys twice

This change has two effects:

- handle debug keys before handling all other defined keys
- if debug key was processed, do not handle this key again

5 years agoadded deactivating text (and selectbox) gadgets with "Escape" key
Holger Schemel [Fri, 16 Nov 2018 20:52:26 +0000 (21:52 +0100)]
added deactivating text (and selectbox) gadgets with "Escape" key

5 years agoremoved leaving screens with "Escape" key if gadgets are active
Holger Schemel [Fri, 16 Nov 2018 20:22:29 +0000 (21:22 +0100)]
removed leaving screens with "Escape" key if gadgets are active

5 years agoadded showing virtual keyboard for playfield text input in editor (Android)
Holger Schemel [Fri, 16 Nov 2018 07:53:57 +0000 (08:53 +0100)]
added showing virtual keyboard for playfield text input in editor (Android)

5 years agofixed bug with stopping editor text input before reaching the last line
Holger Schemel [Fri, 16 Nov 2018 07:50:26 +0000 (08:50 +0100)]
fixed bug with stopping editor text input before reaching the last line

5 years agofixed bug with asking to play again after game over when playing tape
Holger Schemel [Thu, 15 Nov 2018 00:41:09 +0000 (01:41 +0100)]
fixed bug with asking to play again after game over when playing tape

5 years agofixed some bugs with (not) displaying virtual buttons
Holger Schemel [Thu, 15 Nov 2018 00:12:08 +0000 (01:12 +0100)]
fixed some bugs with (not) displaying virtual buttons

This corrects the following situations regarding virtual buttons:

* Fixed displaying virtual buttons while tapes are played.
* Fixed displaying virtual buttons after all players were gone.
* Fixed *not* displaying virtual buttons when tape stopped playing and
  the user can continue playing the game.

5 years agoremoved support for SDL 1.2
Holger Schemel [Wed, 14 Nov 2018 22:30:20 +0000 (23:30 +0100)]
removed support for SDL 1.2

5 years agoadded support for level sketch copy/paste using Ctrl-c/v in level editor
Holger Schemel [Mon, 12 Nov 2018 23:31:34 +0000 (00:31 +0100)]
added support for level sketch copy/paste using Ctrl-c/v in level editor

This enhances the existing support for dumping brushes from the level
editor as level sketches (to STDOUT and/or "stdout.txt", which can
then be added to posts in the R'n'D web forum), as follows:

- Ctrl-c copies the current level (or brush) into the clipboard
- Ctrl-x copies the current level, but as small sized level sketch
- Ctrl-v pastes a level sketch from the clipboard into the current
  level (or brush, if active)

This makes it easy to copy level sketches from the level editor to the
R'n'D web forum, and also from the forum to the level editor (just
temporarily go to the "reply" form for a post containing a level
sketch, then copy the "source code" text of the level sketch to the
clipboard using Ctrl-c, then paste it into the level editor using
Ctrl-v).

This will also make it easy to copy a whole playfield from one level
file to another in the level editor (playfield size will automatically
be adjusted to the size of the pasted playfield).

5 years agomoved (and renamed) global variables to game structure (ZX/ZY)
Holger Schemel [Wed, 14 Nov 2018 20:10:38 +0000 (21:10 +0100)]
moved (and renamed) global variables to game structure (ZX/ZY)

5 years agomoved (and renamed) global variables to game structure (ExitX/ExitY)
Holger Schemel [Wed, 14 Nov 2018 19:59:13 +0000 (20:59 +0100)]
moved (and renamed) global variables to game structure (ExitX/ExitY)

5 years agomoved (and renamed) global variable to game structure (AllPlayersGone)
Holger Schemel [Fri, 9 Nov 2018 07:29:04 +0000 (08:29 +0100)]
moved (and renamed) global variable to game structure (AllPlayersGone)

5 years agoimproved internal handling of "game over" state
Holger Schemel [Thu, 8 Nov 2018 20:40:55 +0000 (21:40 +0100)]
improved internal handling of "game over" state

5 years agomoved game values for score and health from player to game structure
Holger Schemel [Mon, 5 Nov 2018 20:37:56 +0000 (21:37 +0100)]
moved game values for score and health from player to game structure

5 years agomoved flag for "game over" from player to game structure
Holger Schemel [Mon, 5 Nov 2018 20:35:53 +0000 (21:35 +0100)]
moved flag for "game over" from player to game structure

This also removes asymmetric behaviour depending on players being the
"local player" or any other player in team mode (which happened if one
player dies and the other enters the exit, for example -- in one case,
the game will be treated as "game over", in the other case the game
will continue running without asking to play again).

5 years agomoved game values for things still needed from player to game structure
Holger Schemel [Tue, 30 Oct 2018 21:09:29 +0000 (22:09 +0100)]
moved game values for things still needed from player to game structure

5 years agorenamed functions (after removing parameter in previous commit)
Holger Schemel [Tue, 30 Oct 2018 20:56:49 +0000 (21:56 +0100)]
renamed functions (after removing parameter in previous commit)

5 years agoremoved parameter from functions (which always had the same value)
Holger Schemel [Tue, 30 Oct 2018 20:55:52 +0000 (21:55 +0100)]
removed parameter from functions (which always had the same value)

5 years agorenamed function (after removing parameter in previous commit)
Holger Schemel [Tue, 30 Oct 2018 20:53:47 +0000 (21:53 +0100)]
renamed function (after removing parameter in previous commit)

5 years agoremoved parameter from function (which always had the same value)
Holger Schemel [Tue, 30 Oct 2018 20:40:56 +0000 (21:40 +0100)]
removed parameter from function (which always had the same value)

5 years agomoved flags and values for "level solved" from player to game structure
Holger Schemel [Tue, 30 Oct 2018 20:35:09 +0000 (21:35 +0100)]
moved flags and values for "level solved" from player to game structure

5 years agoadded flags for "level solved" and "game over" to EM engine
Holger Schemel [Tue, 30 Oct 2018 19:55:42 +0000 (20:55 +0100)]
added flags for "level solved" and "game over" to EM engine

5 years agochanged variable name
Holger Schemel [Tue, 30 Oct 2018 19:15:42 +0000 (20:15 +0100)]
changed variable name

5 years agoadded custom artwork mappings to fix warnings in level set 'rnd_alan_bond'
Holger Schemel [Mon, 29 Oct 2018 20:03:40 +0000 (21:03 +0100)]
added custom artwork mappings to fix warnings in level set 'rnd_alan_bond'

5 years agosmall code cleanup
Holger Schemel [Mon, 29 Oct 2018 19:51:22 +0000 (20:51 +0100)]
small code cleanup

5 years agoadded compatibility check if Sokoban objects need to be solved
Holger Schemel [Mon, 29 Oct 2018 19:49:41 +0000 (20:49 +0100)]
added compatibility check if Sokoban objects need to be solved

5 years agoadded editor settings if Sokoban fields and objects need to be solved
Holger Schemel [Mon, 29 Oct 2018 19:32:07 +0000 (20:32 +0100)]
added editor settings if Sokoban fields and objects need to be solved

5 years agofixed unexpected behaviour with solving levels with Sokoban elements
Holger Schemel [Sun, 28 Oct 2018 23:26:22 +0000 (00:26 +0100)]
fixed unexpected behaviour with solving levels with Sokoban elements

This patch fixes problems with levels using a different number of
Sokoban objects and Sokoban fields, causing unexpected behaviour.

Before, levels with Sokoban objects, but without Sokoban fields, could
be solved by just pushing any of the Sokoban objects (which triggers a
check if there are any empty Sokoban fields left in the level, which
is not the case in this scenario). In addition, pushing a Sokoban
object to a Sokoban field would also solve a level with two Sokoban
objects, but only one Sokoban field, but not a level with two Sokoban
fields, but only one Sokoban object, which seems confusing or at least
unexpected. (Things get even more complicated and confusing if Sokoban
fields or objects are created during the game, for example as content
of yam-yams.)

Now, Sokoban fields and objects in a level are tracked independently
and the level is only solved if there are no Sokoban fields or objects
left on the playfield.

Also see the following forum post for a description of the problem:
https://www.artsoft.org/forum/viewtopic.php?f=7&t=2654

5 years agofixed bug with Sokoban auto-exit option only working for local player
Holger Schemel [Sun, 28 Oct 2018 15:41:29 +0000 (16:41 +0100)]
fixed bug with Sokoban auto-exit option only working for local player

5 years agoadded special global animation mode 'NO_TITLE' for all but title screens
Holger Schemel [Sat, 27 Oct 2018 18:29:40 +0000 (20:29 +0200)]
added special global animation mode 'NO_TITLE' for all but title screens