about summary refs log tree commit diff
path: root/test/Xanthous/GameSpec.hs
AgeCommit message (Collapse)AuthorFilesLines
2019-11-30 Fix an injectivity issue with saving the gameGriffin Smith1-0/+2
Fix an injectivity issue with JSON-encoding the entity map that was causing the game saving to not properly round-trip. As part of this, there's a refactor to the internals of the entity map to use sets instead of vectors, which should also get us a nice perf boost.
2019-11-29 Use menus for combat and picking up itemsGriffin Smith1-1/+1
Refactor a bunch of stuff around to allow for polymorphically surfacing an EntityChar for all entities, and use this to write a generic `entityMenu` function, which generates a menu from the chars of a list of entities - and use that to fully implement (removing `undefined`) menus for both attacking and picking things up when there are multiple entities on the relevant tile.
2019-11-29 Implement saving+loading the gameGriffin Smith1-0/+6
Implement ToJSON and FromJSON for all of the various pieces of the game state, and add a pair of functions saveGame/loadGame implementing a prism to save the game as zlib-compressed JSON. To test this, there's now Arbitrary, CoArbitrary, and Function instances for all the parts of the game state - to get around circular imports with the concrete entities this unfortunately is happening via orphan instances, plus an hs-boot file to break a circular import that was just a little too hard to remove by moving things around. Ugh.
2019-10-12 Make the positionedCharacter test run more quicklyGriffin Smith1-3/+5
Dial down the quickcheck size and num tests on this
2019-10-05 Display multiple messages per turnGriffin Smith1-0/+12
When tracking message history, save messages associated with the turn they were displayed on, which allows us to have the notion of the "current turn's" messages (provided via a MonoComonad instance).
2019-09-20 Add the beginnings of a prompt systemGriffin Smith1-0/+3
Add the beginnings of a generic prompt system, with exclusive support atm for string prompts, and test it out by asking the character for their name at startup
2019-09-09 Convert generated levels to wallsGriffin Smith1-1/+1
Add support for converting generated levels to walls, and merge one into the entity map at the beginning of the game. There's nothing here that guarantees the character ends up *inside* the level though (they almost always don't) so that'll have to be slotted into the level generation process.
2019-09-02 Add a previous message commandGriffin Smith1-2/+2
Add a "previous message" command, triggered via ctrl+p. I attempted here to get the message area to still take up a row of space post-hiding the message, but failed - should revisit that at some point
2019-08-31 Add entities, and allow walking aroundGriffin Smith1-0/+30
Add support for entities via a port of the EntityMap type, and implement command support starting at basic hjkl.