110 lines
3.1 KiB
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)
|
|
}
|
|
}
|
|
}
|