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{}, } }