game_sync/gamesrv/slotspkg/slots/entity/entity.go

63 lines
2.0 KiB
Go

package entity
import (
"mongo.games.com/game/gamesrv/base"
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/key"
"mongo.games.com/game/gamesrv/slotspkg/internal/module/player"
"mongo.games.com/game/gamesrv/slotspkg/internal/module/shared"
"mongo.games.com/game/gamesrv/slotspkg/internal/module/shell"
"mongo.games.com/game/gamesrv/slotspkg/slots/desc"
"mongo.games.com/game/gamesrv/slotspkg/slots/formation"
"mongo.games.com/game/gamesrv/slotspkg/slots/intf"
)
// Entity holds a machine for player
type Entity struct {
Theme string
Shell *shell.Shell
MachineDesc *desc.MachineDesc
NodeDesc *desc.NodeDesc
NextNodeDesc *desc.NodeDesc
NodeTree *shared.NodeTree
OriginFormations []*formation.Formation // for storing origin formation.Formation
Session *base.SlotsSession
Player *player.Player
Customs map[int64]interface{}
Callback intf.Callback
Data map[string]interface{} // machine data store
RandState *RandState
IsFree bool
}
// NewEntity creates a new entity
func NewEntity(s *base.SlotsSession, theme string, callback intf.Callback, shell *shell.Shell, isFree bool) *Entity {
return &Entity{
Theme: theme,
Shell: shell,
MachineDesc: desc.NewMachineDesc(theme, key.Base, shell),
NodeDesc: nil,
NextNodeDesc: nil,
NodeTree: NewNodeTree(),
OriginFormations: make([]*formation.Formation, 0),
Session: s,
Player: player.Get(s),
Customs: make(map[int64]interface{}),
Callback: callback,
Data: make(map[string]interface{}),
RandState: NewRandState(),
IsFree: isFree,
}
}
func NewNodeTree() *shared.NodeTree {
return &shared.NodeTree{
RandVector: &shared.RandVector{},
UserData: &shared.UserData{},
Nodes: make([]*shared.Node, 0),
Closing: make([]int64, 0),
Act: &shared.Act{},
BetCoin: &shared.Coin{},
WinCoin: &shared.Coin{},
}
}