fixed unexpected behaviour with solving levels with Sokoban elements
authorHolger Schemel <info@artsoft.org>
Sun, 28 Oct 2018 23:26:22 +0000 (00:26 +0100)
committerHolger Schemel <info@artsoft.org>
Sun, 28 Oct 2018 23:26:22 +0000 (00:26 +0100)
commit94437c1c17bca3eb27deba579ce376de0aa49a4f
tree7051da94d82aa0b680ae03fbd881b634b0edb78b
parentae55cab94c43d759ef6d9772e32322df930a760d
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
src/editor.c
src/game.c
src/game.h