Store revealed positions on the level itself
This was a bit of an oversight initially - we should be storing the positions that the character has seen *on the level*, rather than on the entire game state, for obvious reasons. This introduces a GameLevel record, which has this field, the entities, and also the up staircase position, which we can *also* use to position the character after going down to a level we've already visited.
This commit is contained in:
		
							parent
							
								
									72edcff323
								
							
						
					
					
						commit
						7082a4088b
					
				
					 5 changed files with 61 additions and 19 deletions
				
			
		|  | @ -1,5 +1,6 @@ | |||
| {-# LANGUAGE ViewPatterns #-} | ||||
| {-# LANGUAGE ViewPatterns         #-} | ||||
| {-# LANGUAGE UndecidableInstances #-} | ||||
| {-# LANGUAGE RecordWildCards      #-} | ||||
| -------------------------------------------------------------------------------- | ||||
| module Xanthous.App (makeApp) where | ||||
| -------------------------------------------------------------------------------- | ||||
|  | @ -298,7 +299,7 @@ handleCommand GoDown = do | |||
|   then do | ||||
|     levs <- use levels | ||||
|     let newLevelNum = Levels.pos levs + 1 | ||||
|     levs' <- nextLevel (levelToEntityMap <$> genLevel newLevelNum) levs | ||||
|     levs' <- nextLevel (levelToGameLevel <$> genLevel newLevelNum) levs | ||||
|     cEID <- use characterEntityID | ||||
|     pCharacter <- entities . at cEID <<.= Nothing | ||||
|     levels .= levs' | ||||
|  | @ -600,3 +601,10 @@ genLevel _num = do | |||
|     Dungeon -> generateLevel SDungeon Dungeon.defaultParams dims | ||||
|   characterPosition .= level ^. levelCharacterPosition | ||||
|   pure $!! level | ||||
| 
 | ||||
| levelToGameLevel :: Level -> GameLevel | ||||
| levelToGameLevel level = | ||||
|   let _levelEntities = levelToEntityMap level | ||||
|       _upStaircasePosition = level ^. levelCharacterPosition | ||||
|       _levelRevealedPositions = mempty | ||||
|   in GameLevel {..} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue