Add doors and an open command
Add a Door entity and an Open command, which necessitated supporting the direction prompt. Currently nothing actually puts doors on the map, which puts a slight damper on actually testing this out.
This commit is contained in:
parent
7770ed0548
commit
4db3a68efe
13 changed files with 151 additions and 29 deletions
|
|
@ -1,30 +1,39 @@
|
|||
{-# LANGUAGE ViewPatterns #-}
|
||||
--------------------------------------------------------------------------------
|
||||
module Xanthous.Command where
|
||||
|
||||
import Graphics.Vty.Input (Key(..), Modifier(..))
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
import Xanthous.Prelude hiding (Left, Right, Down)
|
||||
--------------------------------------------------------------------------------
|
||||
import Graphics.Vty.Input (Key(..), Modifier(..))
|
||||
--------------------------------------------------------------------------------
|
||||
import Xanthous.Data (Direction(..))
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
data Command
|
||||
= Quit
|
||||
| Move Direction
|
||||
| PreviousMessage
|
||||
| PickUp
|
||||
| Open
|
||||
|
||||
commandFromKey :: Key -> [Modifier] -> Maybe Command
|
||||
commandFromKey (KChar 'q') [] = Just Quit
|
||||
|
||||
commandFromKey (KChar 'h') [] = Just $ Move Left
|
||||
commandFromKey (KChar 'j') [] = Just $ Move Down
|
||||
commandFromKey (KChar 'k') [] = Just $ Move Up
|
||||
commandFromKey (KChar 'l') [] = Just $ Move Right
|
||||
commandFromKey (KChar 'y') [] = Just $ Move UpLeft
|
||||
commandFromKey (KChar 'u') [] = Just $ Move UpRight
|
||||
commandFromKey (KChar 'b') [] = Just $ Move DownLeft
|
||||
commandFromKey (KChar 'n') [] = Just $ Move DownRight
|
||||
|
||||
commandFromKey (KChar (directionFromChar -> Just dir)) [] = Just $ Move dir
|
||||
commandFromKey (KChar 'p') [MCtrl] = Just PreviousMessage
|
||||
|
||||
commandFromKey (KChar ',') [] = Just PickUp
|
||||
|
||||
commandFromKey (KChar 'o') [] = Just Open
|
||||
commandFromKey _ _ = Nothing
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
directionFromChar :: Char -> Maybe Direction
|
||||
directionFromChar 'h' = Just Left
|
||||
directionFromChar 'j' = Just Down
|
||||
directionFromChar 'k' = Just Up
|
||||
directionFromChar 'l' = Just Right
|
||||
directionFromChar 'y' = Just UpLeft
|
||||
directionFromChar 'u' = Just UpRight
|
||||
directionFromChar 'b' = Just DownLeft
|
||||
directionFromChar 'n' = Just DownRight
|
||||
directionFromChar '.' = Just Here
|
||||
directionFromChar _ = Nothing
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue