Cleaner implementation of tile switching that detects if the switch is
allowed
This commit is contained in:
parent
a61b3927df
commit
94ecf17f0a
|
@ -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 =
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue