game_sync/gamesrv/sugarrush/scenedata_sugarrush.go

124 lines
3.9 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
}
type CustomPay struct {
Pay int64
}
func (s *SugarRushSceneData) EnterResponseFixCoin(Response *cli.SlotsEnterResponse) {
Response.Coin /= sugarrush.NowByte
Response.NodeTree.BetCoin.Coin /= sugarrush.NowByte
for k := range Response.NodeTree.Nodes {
Response.NodeTree.Nodes[k].Win /= sugarrush.NowByte
Response.NodeTree.Nodes[k].TotalWin /= sugarrush.NowByte
Response.NodeTree.Nodes[k].ChildrenTotalWin /= sugarrush.NowByte
Response.NodeTree.Nodes[k].Bet /= sugarrush.NowByte
}
for k, feature := range Response.NodeTree.Features {
Response.NodeTree.Features[k].Win /= sugarrush.NowByte
if feature.Type == "sugarrush.CustomEliminate" {
var customEliminate CustomEliminate
json.Unmarshal([]byte(feature.Custom), &customEliminate)
for k, wincoin := range customEliminate.WinCoins {
customEliminate.WinCoins[k] /= wincoin
}
ce, _ := json.Marshal(customEliminate)
Response.NodeTree.Features[k].Custom = string(ce)
} else if feature.Type == "sugarrush.CustomPay" {
var customPay CustomPay
json.Unmarshal([]byte(feature.Custom), &customPay)
customPay.Pay /= sugarrush.NowByte
cp, _ := json.Marshal(customPay)
Response.NodeTree.Features[k].Custom = string(cp)
}
}
}
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 k := range Response.NodeTree.Nodes {
Response.NodeTree.Nodes[k].Win /= sugarrush.NowByte
Response.NodeTree.Nodes[k].TotalWin /= sugarrush.NowByte
Response.NodeTree.Nodes[k].ChildrenTotalWin /= sugarrush.NowByte
Response.NodeTree.Nodes[k].Bet /= sugarrush.NowByte
}
for k, feature := range Response.NodeTree.Features {
Response.NodeTree.Features[k].Win /= sugarrush.NowByte
if feature.Type == "sugarrush.CustomEliminate" {
var customEliminate CustomEliminate
json.Unmarshal([]byte(feature.Custom), &customEliminate)
for k1, wincoin := range customEliminate.WinCoins {
customEliminate.WinCoins[k1] /= wincoin
}
ce, _ := json.Marshal(customEliminate)
Response.NodeTree.Features[k].Custom = string(ce)
} else if feature.Type == "sugarrush.CustomPay" {
var customPay CustomPay
json.Unmarshal([]byte(feature.Custom), &customPay)
customPay.Pay /= sugarrush.NowByte
cp, _ := json.Marshal(customPay)
Response.NodeTree.Features[k].Custom = string(cp)
}
}
}