diff options
author | Griffin Smith <root@gws.fyi> | 2019-09-29T14·54-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-09-29T14·54-0400 |
commit | 05da490185e970b2cfdf6c61f69932fa373993f6 (patch) | |
tree | 0fa9be2182e1359ce39d600089f6937bfdccd3aa /src/Xanthous/Entities/Character.hs | |
parent | ec39dc0a5bed58e0b0b48eeac98e0fd0ceaa65db (diff) |
Gormlaks attack back
When gormlaks see the character, they step towards them and attack dealing 1 damage when adjacent. Characters have hitpoints now, displayed at the bottom of the game screen, and when the game is over they die.
Diffstat (limited to 'src/Xanthous/Entities/Character.hs')
-rw-r--r-- | src/Xanthous/Entities/Character.hs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Xanthous/Entities/Character.hs b/src/Xanthous/Entities/Character.hs index 1c7d1bbe82a6..0bb5867ee5e1 100644 --- a/src/Xanthous/Entities/Character.hs +++ b/src/Xanthous/Entities/Character.hs @@ -4,8 +4,10 @@ module Xanthous.Entities.Character , characterName , inventory , characterDamage + , characterHitpoints , mkCharacter , pickUpItem + , isDead ) where -------------------------------------------------------------------------------- import Xanthous.Prelude @@ -24,6 +26,7 @@ data Character = Character { _inventory :: !(Vector Item) , _characterName :: !(Maybe Text) , _characterDamage :: !Word + , _characterHitpoints :: !Word } deriving stock (Show, Eq, Generic) deriving anyclass (CoArbitrary, Function) @@ -51,13 +54,20 @@ instance Entity Character where instance Arbitrary Character where arbitrary = genericArbitrary +initialHitpoints :: Word +initialHitpoints = 10 + mkCharacter :: Character mkCharacter = Character { _inventory = mempty , _characterName = Nothing , _characterDamage = 1 + , _characterHitpoints = initialHitpoints } +isDead :: Character -> Bool +isDead = (== 0) . view characterHitpoints + pickUpItem :: Item -> Character -> Character pickUpItem item = inventory %~ (item <|) |