Class: Hand
entities.Hand
Hand of cards.
Give it a special rendering on client side.
Hierarchy
Entity<HandOptions>Mixin↳
Hand
Constructors
constructor
• new Hand(state, options?)
Parameters
| Name | Type |
|---|---|
state | State<Record<string, unknown>> |
options | Partial<Partial<NonFunctionProperties<Mixin> & { autoSort: SortingFunction }>> |
Inherited from
ChildTrait Properties
idx
• idx: number
parent
• parent: ParentTrait
LabelTrait Properties
name
• name: string
type
• type: string
Type should be unique to schema object! If you're extending this schema and adding new fields - set the new type string!
LocationTrait Properties
angle
• angle: number
Rotation in degrees
x
• x: number
X offset relative to entity's parent
y
• y: number
Y offset relative to entity's parent
Other Properties
autoSort
• autoSort: SortingFunction
childAdded
• childAdded: (child: ChildTrait) => void = sortOnChildAdded
Type declaration
▸ (child): void
TODO: document
Parameters
| Name | Type |
|---|---|
child | ChildTrait |
Returns
void
childRemoved
• childRemoved: ChildRemovedHandler
id
• Readonly id: number
selectedChildren
• selectedChildren: ArraySchema<SelectedChildData>
OwnershipTrait Properties
ownerID
• ownerID: string
ID of the player owning this entity. Synced with client-side and automatically parsed after changing entity.owner from the server-side.
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
ChildTrait Accessors
idxPath
• get idxPath(): number[]
Returns
number[]
array of indexes for this entity access
OwnershipTrait Accessors
owner
• get owner(): Player
Get the real owner of this thing, by traversing this.parent chain.
Owner could be set on an element or container, meaning every element in
such container belongs to one owner.
Returns
Player or undefined if this container doesn't belong to anyone
• set owner(newOwner): void
Parameters
| Name | Type |
|---|---|
newOwner | Player |
Returns
void
ownersMainFocus
• get ownersMainFocus(): boolean
Is this entity/container to be the main focus for this player? To be used by client-side implementation.
Returns
boolean
• set ownersMainFocus(newValue): void
Parameters
| Name | Type |
|---|---|
newValue | boolean |
Returns
void
ChildTrait Methods
isInteractive
▸ isInteractive(): boolean
Points out if this element can be target of any interaction
Returns
boolean
Other Methods
_selectableEnsureIndex
▸ _selectableEnsureIndex(this, index): void
Parameters
| Name | Type |
|---|---|
this | ParentTrait & SelectableChildrenTrait |
index | number |
Returns
void
addChild
▸ addChild(entity): void
Adds new item.
Parameters
| Name | Type |
|---|---|
entity | ChildTrait |
Returns
void
▸ addChild(entity, prepend): void
Adds new item.
Parameters
| Name | Type |
|---|---|
entity | ChildTrait |
prepend | boolean |
Returns
void
▸ addChild(entity, atIndex): void
Adds new item.
Parameters
| Name | Type | Description |
|---|---|---|
entity | ChildTrait | |
atIndex | number | squeeze into desired spot, moving other children away. |
Returns
void
▸ addChild(entity, arg1): void
Adds new item.
Parameters
| Name | Type |
|---|---|
entity | ChildTrait |
arg1 | number | boolean |
Returns
void
addChildren
▸ addChildren(entities): void
Parameters
| Name | Type |
|---|---|
entities | ChildTrait[] |
Returns
void
countChildren
▸ countChildren(): number
Number of child elements
Returns
number
countSelectedChildren
▸ countSelectedChildren(): number
Number of selected child elements
Returns
number
countUnselectedChildren
▸ countUnselectedChildren(this): number
Number of not selected child elements
Parameters
| Name | Type |
|---|---|
this | ParentTrait & SelectableChildrenTrait |
Returns
number
create
▸ create(state, options?): void
Parameters
| Name | Type |
|---|---|
state | State<Record<string, unknown>> |
options | Partial<NonFunctionProperties<Mixin> & { autoSort: SortingFunction }> |
Returns
void
Overrides
deselectChildAt
▸ deselectChildAt(this, childIndex): void
Deselect child
Parameters
| Name | Type |
|---|---|
this | ParentTrait & SelectableChildrenTrait |
childIndex | number |
Returns
void
getBottom
▸ getBottom<T>(): T
Get the element with the lowest 'idx' value
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Returns
T
getChild
▸ getChild<T>(idx): T
Get one direct child of parent by its idx
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Parameters
| Name | Type |
|---|---|
idx | number |
Returns
T
getChildren
▸ getChildren<T>(): T[]
Gets all direct children in array form, "sorted" by idx
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Returns
T[]
getClosestEmptySpot
▸ getClosestEmptySpot(index): number
unused?
Parameters
| Name | Type |
|---|---|
index | number |
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
getSelectedChildren
▸ getSelectedChildren<T>(this): T[]
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Parameters
| Name | Type |
|---|---|
this | ParentTrait & SelectableChildrenTrait |
Returns
T[]
getSelectionIndex
▸ getSelectionIndex(childIndex): number
In which order was nth child selected. Returns undefined on index of UNselected child.
Parameters
| Name | Type | Description |
|---|---|---|
childIndex | number | index of child |
Returns
number
getTop
▸ getTop<T>(): T
Get the element with highest 'idx' value
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Returns
T
getUnselectedChildren
▸ getUnselectedChildren<T>(this): T[]
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Parameters
| Name | Type |
|---|---|
this | ParentTrait & SelectableChildrenTrait |
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
| Name | Type |
|---|---|
index | number |
Returns
boolean
isChildSelected
▸ isChildSelected(childIndex): boolean
Parameters
| Name | Type |
|---|---|
childIndex | number |
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
| Name | Type | Description |
|---|---|---|
where | number | direction and range. (+1) - one up, (-2) - two in direction of array start |
start | number | left-most child to manipulate |
end? | number | rightmost 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
| Name | Type | Description |
|---|---|---|
from | number | index of child to move |
to | number | desired target position |
Returns
void
query
▸ query<T>(props): T
Find one item matching props.
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Parameters
| Name | Type |
|---|---|
props | QuerableProps |
Returns
T
queryAll
▸ queryAll<T>(props): T[]
Looks for every matching entity here and deeper
Type parameters
| Name | Type |
|---|---|
T | extends ChildTrait<T> |
Parameters
| Name | Type |
|---|---|
props | QuerableProps |
Returns
T[]
removeChild
▸ removeChild(child): boolean
Parameters
| Name | Type |
|---|---|
child | ChildTrait |
Returns
boolean
removeChildAt
▸ removeChildAt(idx): boolean
Parameters
| Name | Type |
|---|---|
idx | number |
Returns
boolean
selectChildAt
▸ selectChildAt(this, childIndex): void
Select child
Parameters
| Name | Type |
|---|---|
this | ParentTrait & SelectableChildrenTrait |
childIndex | number |
Returns
void