package sugarrush import ( "encoding/json" "mongo.games.com/game/gamerule/sugarrush" "mongo.games.com/game/gamesrv/base" "mongo.games.com/game/gamesrv/slotspkg/slots/types/cli" ) type SugarRushSceneData struct { *base.Scene //场景 players map[int32]*SugarRushPlayerData //玩家信息 BetLevel []int64 `json:"bet_level"` //下注线数 } func NewSugarRushSceneData(s *base.Scene) *SugarRushSceneData { sceneEx := &SugarRushSceneData{ Scene: s, players: make(map[int32]*SugarRushPlayerData), } sceneEx.Init() return sceneEx } func (s *SugarRushSceneData) Init() { } func (s *SugarRushSceneData) Clear() { //应该是水池变一次就判断修改一次 //s.slotRateWeight = s.slotRateWeightTotal[0] } func (s *SugarRushSceneData) SceneDestroy(force bool) { //销毁房间 s.Scene.Destroy(force) } func (s *SugarRushSceneData) delPlayer(SnId int32) { if _, exist := s.players[SnId]; exist { delete(s.players, SnId) } } func (s *SugarRushSceneData) OnPlayerLeave(p *base.Player, reason int) { if /*playerEx*/ _, ok := p.ExtraData.(*SugarRushPlayerData); ok { } s.delPlayer(p.SnId) } type LinkPositions struct { // Indexes for Items that are linked Positions []int64 `json:"Positions,omitempty"` } type CustomEliminate struct { LinkPositions []*LinkPositions AppendSymbols [][]int64 FormattedSymbols [][]int64 LinePays []float64 LineMultis []int64 WinCoins []int64 MaxWin bool } func (s *SugarRushSceneData) EnterResponseFixCoin(Response *cli.SlotsEnterResponse) { Response.Coin /= sugarrush.NowByte Response.NodeTree.BetCoin.Coin /= sugarrush.NowByte for _, node := range Response.NodeTree.Nodes { node.Win /= sugarrush.NowByte node.TotalWin /= sugarrush.NowByte node.ChildrenTotalWin /= sugarrush.NowByte node.Bet /= sugarrush.NowByte } for _, feature := range Response.NodeTree.Features { feature.Win /= sugarrush.NowByte var customEliminate CustomEliminate json.Unmarshal([]byte(feature.Custom), &customEliminate) for k, wincoin := range customEliminate.WinCoins { customEliminate.WinCoins[k] /= wincoin } for k, lp := range customEliminate.LinePays { customEliminate.LinePays[k] /= lp } ce, _ := json.Marshal(customEliminate) feature.Custom = string(ce) } } func (s *SugarRushSceneData) PlayResponseFixCoin(Response *cli.SlotsPlayResponse) { Response.Coin /= sugarrush.NowByte Response.ActualBet /= sugarrush.NowByte Response.ActualWin /= sugarrush.NowByte Response.NodeTree.BetCoin.Coin /= sugarrush.NowByte for _, node := range Response.NodeTree.Nodes { node.Win /= sugarrush.NowByte node.TotalWin /= sugarrush.NowByte node.ChildrenTotalWin /= sugarrush.NowByte node.Bet /= sugarrush.NowByte } for _, feature := range Response.NodeTree.Features { if feature.Type == "sugarrush.CustomEliminate" { feature.Win /= sugarrush.NowByte var customEliminate CustomEliminate json.Unmarshal([]byte(feature.Custom), &customEliminate) for k, wincoin := range customEliminate.WinCoins { customEliminate.WinCoins[k] /= wincoin } ce, _ := json.Marshal(customEliminate) feature.Custom = string(ce) } } }