added full compatibility for wrap-around levels in EM engine
authorHolger Schemel <info@artsoft.org>
Fri, 25 Sep 2020 00:08:46 +0000 (02:08 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 25 Sep 2020 00:25:50 +0000 (02:25 +0200)
commit5eec6f3a02cb8a6171a37a209aae3e3665aff514
tree8771ccc7be5f6f63ed40df2c52a6240cb59add5a
parent0674fef44ec688158f1501b51371d53983ac96bb
added full compatibility for wrap-around levels in EM engine

The previous support for wrap-around levels in the EM game engine was
some sort of "idealized" implementation that lets the player wrap
around by moving horizontally on the same vertical level position
forever (which results in truely infinite wrap-around levels).

This may be nice and perfect, but has the disadvantage that the
original Emerald Mine Club engine did not work that way, making
existing EMC levels unplayable and/or unsolvable. (Examples are
level 80 of "Ruppelmine 3" or level 34 of "The Exception 2".)

Instead, the original game engine caused the player to step one
vertical position up or down when leaving the playfield at the left
or right border, which is required by the mentioned example levels.

This correction adds a flag that is set by default to use the original
behaviour.
src/game_em/cave.c
src/game_em/cave.h
src/game_em/convert.c
src/game_em/emerald.h
src/game_em/graphics.c
src/game_em/logic.c