Add a drop command
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).
This commit is contained in:
		
							parent
							
								
									bf7d139c1a
								
							
						
					
					
						commit
						052bc8455a
					
				
					 10 changed files with 197 additions and 27 deletions
				
			
		|  | @ -3,6 +3,7 @@ | |||
| module Xanthous.Data.EntityMapSpec where | ||||
| -------------------------------------------------------------------------------- | ||||
| import           Test.Prelude | ||||
| import           Control.Lens.Properties | ||||
| -------------------------------------------------------------------------------- | ||||
| import qualified Data.Aeson as JSON | ||||
| -------------------------------------------------------------------------------- | ||||
|  | @ -45,4 +46,8 @@ test = localOption (QuickCheckTests 20) | |||
|         let Just em' = JSON.decode $ JSON.encode em | ||||
|         in toEIDsAndPositioned em' === toEIDsAndPositioned em | ||||
|     ] | ||||
| 
 | ||||
|   , testGroup "atPosition" | ||||
|     [ testProperty "lens laws" $ \pos -> isLens $ atPosition @Int pos | ||||
|     ] | ||||
|   ] | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue