game_sync/gamesrv/sugarrush/scenedata_sugarrush.go

110 lines
3.1 KiB
Go

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)
}
}
}