Skip to main content

Class: State<V>

Type parameters

NameType
Vextends Record<string, unknown> = Record<string, unknown>

Hierarchy

  • Entity<Record<string, unknown>>

  • Mixin

    State

Constructors

constructor

new State<V>()

Type parameters

NameType
Vextends Record<string, unknown> = Record<string, unknown>

Overrides

Entity.constructor

LabelTrait Properties

name

name: string


Other Properties

childAdded

childAdded: ChildAddedHandler


childRemoved

childRemoved: ChildRemovedHandler


clients

clients: ArraySchema<GameClient>

Data of clients who are connected to the room. A "client" is someone who just stopped by in this room and not necessarily someone who is playing the game.

Bots will also be reflected here, but not as direct references to them.

Read-only. Writing to it may break things.


currentPlayerIdx

currentPlayerIdx: number = 0


id

Readonly id: number


isGameOver

isGameOver: boolean = false


isGameStarted

isGameStarted: boolean = false


playerViewPosition

playerViewPosition: PlayerViewPosition

A construct describing how should player's "focused" items be positioned in their view. Containers of other players will not follow these rules. Default is: center/bottom.


players

players: ArraySchema<Player>

List of players - game participants, after the game starts.

TODO: Make players have idx if you ever need them to change order mid-game


round

round: number = 0

Current round number. Increased using NextRound command.


tableHeight

tableHeight: number = 60


tableWidth

tableWidth: number = 60


turnBased

turnBased: boolean = true

Games are turn-based by default. Each player takes their turns one by one. Set this to false to allow simultaneous play. Don't rely on currentPlayer value for non turn-based games.


type

type: string = "state"


ui

ui: MapSchema<string, string>

Describes which client-side UI component to reveal to which player. KEY = uiElement, VALUE = clientID

NOTE: It's a very simple example, for more advanced use (eg. UI element visible for multiple certain players) feel free to create your own ui handler in your State


variantData

variantData: V

Current game's variant data.


ParentTrait Properties

childrenPointers

childrenPointers: Map<ChildTrait, string>

ChildTrait object -> its constructor's name Also good spot to count all children


collectionBehaviour

collectionBehaviour: "map" | "array"

How children and their indexes behave when added into or removed from this parent.

  • array: there can be no empty spots, children will always move to fill in the gaps
  • map: no automatic movement is performed, adding to first empty spot, otherwise you need to ensure given spot isn't occupied

Default

"array"

hijacksInteractionTarget

hijacksInteractionTarget: boolean

Used by ChildTrait.isInteractive.

If set to true, will prevent its direct children from getting interaction events.


maxChildren

maxChildren: number

Default

Infinity

Accessors

currentPlayer

get currentPlayer(): Player

Returns

Player

Methods

addChild

addChild(entity): void

Adds new item.

Parameters

NameType
entityChildTrait

Returns

void

addChild(entity, prepend): void

Adds new item.

Parameters

NameType
entityChildTrait
prependboolean

Returns

void

addChild(entity, atIndex): void

Adds new item.

Parameters

NameTypeDescription
entityChildTrait
atIndexnumbersqueeze into desired spot, moving other children away.

Returns

void

addChild(entity, arg1): void

Adds new item.

Parameters

NameType
entityChildTrait
arg1number | boolean

Returns

void


addChildren

addChildren(entities): void

Parameters

NameType
entitiesChildTrait[]

Returns

void


countChildren

countChildren(): number

Number of child elements

Returns

number


create

create(state, options?): void

Parameters

NameType
stateState<Record<string, unknown>>
optionsPartial<Record<string, unknown>>

Returns

void

Inherited from

Entity.create


getBottom

getBottom<T>(): T

Get the element with the lowest 'idx' value

Type parameters

NameType
Textends ChildTrait<T>

Returns

T


getChild

getChild<T>(idx): T

Get one direct child of parent by its idx

Type parameters

NameType
Textends ChildTrait<T>

Parameters

NameType
idxnumber

Returns

T


getChildren

getChildren<T>(): T[]

Gets all direct children in array form, "sorted" by idx

Type parameters

NameType
Textends ChildTrait<T>

Returns

T[]


getClosestEmptySpot

getClosestEmptySpot(index): number

unused?

Parameters

NameType
indexnumber

Returns

number


getFirstEmptySpot

getFirstEmptySpot(): number

For map behaviour, seeks out first available spot, starting from index 0. Arrays don't have gaps, so first "available" spot is always after last child.

Returns

number

index of first vacant spot, or -1 if no spot is available


getLastEmptySpot

getLastEmptySpot(): number

unused?

Returns

number


getTop

getTop<T>(): T

Get the element with highest 'idx' value

Type parameters

NameType
Textends ChildTrait<T>

Returns

T


indexFits

indexFits(index): boolean

Does index fit in range of this container. Doesn't check if index is occupied. Considering maxChildren and if index is negative or otherwise invalid.

Parameters

NameType
indexnumber

Returns

boolean


move

Protected move(where, start, end?): IndexUpdate[]

Takes care of manipulating indexes, and updating every internal things related to children spot movements

Parameters

NameTypeDescription
wherenumberdirection and range. (+1) - one up, (-2) - two in direction of array start
startnumberleft-most child to manipulate
end?numberrightmost child, omit to have only one child moved

Returns

IndexUpdate[]


moveChildTo

moveChildTo(from, to): void

In array, moves child to target idx, rearranging everything between from and to. In map, swaps children at from and to (for now...)

Parameters

NameTypeDescription
fromnumberindex of child to move
tonumberdesired target position

Returns

void


populateVariantData

populateVariantData(variantDefaults, variantData): void

Parameters

NameType
variantDefaultsRequired<V>
variantDataV

Returns

void


query

query<T>(props): T

Find one item matching props.

Type parameters

NameType
Textends ChildTrait<T>

Parameters

NameType
propsQuerableProps

Returns

T


queryAll

queryAll<T>(props): T[]

Looks for every matching entity here and deeper

Type parameters

NameType
Textends ChildTrait<T>

Parameters

NameType
propsQuerableProps

Returns

T[]


removeChild

removeChild(child): boolean

Parameters

NameType
childChildTrait

Returns

boolean


removeChildAt

removeChildAt(idx): boolean

Parameters

NameType
idxnumber

Returns

boolean