LambdaHack-0.2.10: A roguelike game engine in early and active development

Safe HaskellNone

Game.LambdaHack.Client.Action.ActionClass

Description

Basic type classes for game actions. This module should not be imported anywhere except in Action and TypeAction.

Synopsis

Documentation

data SessionUI

The information that is constant across a client playing session, including many consecutive games in a single session, but is completely disregarded and reset when a new playing session starts. Auxiliary AI and computer player clients have no sfs nor sbinding.

Constructors

SessionUI 

Fields

sfconn :: !ConnFrontend

connection with the frontend

sbinding :: !Binding

binding of keys to commands

data ConnFrontend

Connection method between a client and a frontend.

Constructors

ConnFrontend 

Fields

readConnFrontend :: MonadClientUI m => m KM

read a keystroke received from the frontend

writeConnFrontend :: MonadClientUI m => FrontReq -> m ()

write a UI request to the frontend

class MonadActionRO m => MonadClient m where

Instances

(Monoid a, MonadClient m) => MonadClient (WriterT a m) 
MonadClient (ActionCli c d) 

class MonadClient m => MonadClientUI m where

Methods

getsSession :: (SessionUI -> a) -> m a

Instances

(Monoid a, MonadClientUI m) => MonadClientUI (WriterT a m) 
MonadClientUI (ActionCli c d) 

class MonadClient m => MonadClientReadServer c m | m -> c where

Methods

readServer :: m c

Instances

class MonadClient m => MonadClientWriteServer d m | m -> d where

Methods

writeServer :: d -> m ()

class MonadClient m => MonadClientAbort m where

The bottom of the action monads class semilattice.

Methods

tryWith :: (Msg -> m a) -> m a -> m a

abortWith :: Msg -> m a

Instances