about summary refs log tree commit diff
path: root/test/Xanthous/Data
AgeCommit message (Collapse)AuthorFilesLines
2019-12-23 Update the vision every time we step the gameGriffin Smith1-0/+47
Recalculate the character's lines of sight every time we step the game, rather than just every time the character *moves*. I had originally thought this was a non-contiguous lines-of-sight bug - which there's a test disproving - but it actually turned out to be that actions like eating or attacking would step the game forward (thus moving gormlaks) without re-calculating the positions visible to the character.
2019-12-23 Preserve entityIDs in atPosition's setterGriffin Smith1-3/+19
Make the setter for the atPosition lens preserve entityIDs for already-existing entities at the position, so that when we plop something in the same tile as the character the character's entity ID doesn't disappear.
2019-12-23 Add a drop commandGriffin Smith1-0/+5
Add a drop command, bound to 'd', which prompts the character for an item in their inventory, removes it from the inventory, and places it on the ground. Along the way I had to fix a bug in the `EntityMap.atPosition` lens, which was always appending to the existing entities at the position on set, without removing the entities that were already there - the rabbit hole of quickchecking the lens laws here also lead to replacing the target of this lens with a newtype called `VectorBag`, which ignores order (since the entitymap makes no guarantees about order of entities at a given position).
2019-11-30 Fix an injectivity issue with saving the gameGriffin Smith1-1/+9
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-0/+18
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-2/+9
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-09-20 Add the beginnings of a prompt systemGriffin Smith1-1/+4
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-15 Progressively reveal the map to the playerGriffin Smith1-1/+5
As the character walks around the map, progressively reveal the entities on the map to them, using an algorithm based on well known circle-rasterizing and line-rasterizing algorithms to calculate lines of sight that are potentially obscured by walls.
2019-08-31 Add entities, and allow walking aroundGriffin Smith1-0/+26
Add support for entities via a port of the EntityMap type, and implement command support starting at basic hjkl.