Cleaner implementation of tile switching that detects if the switch is

allowed
This commit is contained in:
Adam Blažek 2020-06-28 21:41:57 +02:00
parent a61b3927df
commit 94ecf17f0a
2 changed files with 7 additions and 8 deletions

View File

@ -1,5 +1,4 @@
import
sequtils,
strformat,
strutils,
sugar,
@ -45,19 +44,17 @@ proc init*(level: Level, number: Positive) =
for ch in line:
tilesByName[ch]
level.passable = @[AirTile, PlayerTile, SecretTileOpen, Button0TileUnpressed, Button0TilePressed, Door0TileOpen]
level.onlyReachableColliders = true
level.initCollider()
proc switchSecretTiles*(level: Level) =
level.map.apply((row: var seq[int]) => row.apply(tile => (
for row in level.map.mitems:
for tile in row.mitems:
case tile
of SecretTileClosed:
SecretTileOpen
tile = SecretTileOpen
of SecretTileOpen:
SecretTileClosed
else:
tile
)))
tile = SecretTileClosed
else: discard
level.initCollider
proc newLevel*(number: Positive): Level =

View File

@ -60,3 +60,5 @@ method update*(scene: MainScene, elapsed: float) =
scene.player.left(elapsed)
if ScanCodeSpace.pressed:
scene.level.switchSecretTiles
if scene.level.collider.collide(scene.player.collider):
scene.level.switchSecretTiles