LambdaHack-0.9.5.0: A game engine library for tactical squad ASCII roguelike dungeon crawlers
Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Common.HighScore

Description

High score table operations.

Synopsis

Documentation

data ScoreTable Source #

The list of scores, in decreasing order.

Instances

Instances details
Eq ScoreTable Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Show ScoreTable Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Binary ScoreTable Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Methods

put :: ScoreTable -> Put

get :: Get ScoreTable

putList :: [ScoreTable] -> Put

type ScoreDict = EnumMap (ContentId ModeKind) ScoreTable Source #

A dictionary from game mode IDs to scores tables.

empty :: ScoreDict Source #

Empty score table

register Source #

Arguments

:: ScoreTable

old table

-> Int

the total value of faction items

-> Int

the total value of dungeon items

-> Time

game time spent

-> Status

reason of the game interruption

-> POSIXTime

current date

-> Challenge

challenge setup

-> Text

name of the faction's gplayer

-> EnumMap (ContentId ItemKind) Int

allies lost

-> EnumMap (ContentId ItemKind) Int

foes killed

-> HiCondPoly 
-> (Bool, (ScoreTable, Int)) 

Register a new score in a score table.

showScore :: TimeZone -> Int -> ScoreRecord -> [Text] Source #

Show a single high score, from the given ranking in the high score table.

showAward Source #

Arguments

:: Int

number of (3-line) scores to be shown

-> ScoreTable

current score table

-> Int

position of the current score in the table

-> Text

the name of the game mode

-> Text 

Internal operations

data ScoreRecord Source #

A single score record. Records are ordered in the highscore table, from the best to the worst, in lexicographic ordering wrt the fields below.

Instances

Instances details
Eq ScoreRecord Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Ord ScoreRecord Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Show ScoreRecord Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Generic ScoreRecord Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Associated Types

type Rep ScoreRecord :: Type -> Type

Methods

from :: ScoreRecord -> Rep ScoreRecord x

to :: Rep ScoreRecord x -> ScoreRecord

Binary ScoreRecord Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

Methods

put :: ScoreRecord -> Put

get :: Get ScoreRecord

putList :: [ScoreRecord] -> Put

type Rep ScoreRecord Source # 
Instance details

Defined in Game.LambdaHack.Common.HighScore

type Rep ScoreRecord = D1 ('MetaData "ScoreRecord" "Game.LambdaHack.Common.HighScore" "LambdaHack-0.9.5.0-IfKZ3m76YlCDhiCPrOePIo" 'False) (C1 ('MetaCons "ScoreRecord" 'PrefixI 'True) (((S1 ('MetaSel ('Just "points") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "negTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Time)) :*: (S1 ('MetaSel ('Just "date") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 POSIXTime) :*: S1 ('MetaSel ('Just "status") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Status))) :*: ((S1 ('MetaSel ('Just "challenge") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Challenge) :*: S1 ('MetaSel ('Just "gplayerName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "ourVictims") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (EnumMap (ContentId ItemKind) Int)) :*: S1 ('MetaSel ('Just "theirVictims") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (EnumMap (ContentId ItemKind) Int))))))

insertPos :: ScoreRecord -> ScoreTable -> (ScoreTable, Int) Source #

Insert a new score into the table, Return new table and the ranking. Make sure the table doesn't grow too large.