Compare commits

..

5 Commits

Author SHA1 Message Date
sk 54c2b0735e Fortune游戏数据存储 2024-09-05 11:50:44 +08:00
sk b61b41313d 解决冲突 2024-09-05 11:28:40 +08:00
sk bcac7f06d3 update public 2024-09-05 11:26:52 +08:00
sk 1948560a03 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-09-05 11:25:13 +08:00
sk f056014c50 玩家游戏数据保存 2024-09-05 11:24:46 +08:00
8 changed files with 37 additions and 9 deletions

Binary file not shown.

Binary file not shown.

View File

@ -18,3 +18,5 @@ const (
FortuneDragonPlayerOpSwitch
)
const NowByte int64 = 10000
const GameDataKey = "FortuneData"

View File

@ -149,7 +149,7 @@ func NewPlayer(sid int64, data []byte, ws, gs *netlib.Session) *Player {
ShopLastLookTime: make(map[int32]int64),
IsFoolPlayer: make(map[string]bool),
},
GameData: make(map[int32]*model.PlayerGameData),
GameData: make(map[string]*model.PlayerGameData),
}
if p.init(data) {
@ -383,7 +383,7 @@ func (this *Player) MarshalData(gameid int) (d []byte, e error) {
if v.Platform == "" {
v.Platform = this.Platform
}
if v.Id == 0 {
if v.Id == "" {
v.Id = k
}
}

View File

@ -2,16 +2,17 @@ package fortunedragon
import (
"encoding/json"
"mongo.games.com/game/gamerule/fortunedragon"
"mongo.games.com/game/gamesrv/slotspkg/assemble"
"mongo.games.com/game/gamesrv/slotspkg/slots"
"time"
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/common"
"mongo.games.com/game/gamerule/fortunedragon"
"mongo.games.com/game/gamesrv/base"
"mongo.games.com/game/gamesrv/slotspkg/assemble"
"mongo.games.com/game/gamesrv/slotspkg/slots"
"mongo.games.com/game/model"
"mongo.games.com/game/proto"
protocol "mongo.games.com/game/protocol/fortunedragon"
)
@ -77,6 +78,14 @@ func (this *ScenePolicyFortuneDragon) OnPlayerEnter(s *base.Scene, p *base.Playe
logger.Logger.Trace("(this *ScenePolicyFortuneDragon) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.Name)
if sceneEx, ok := s.GetExtraData().(*FortuneDragonSceneData); ok {
playerEx := &FortuneDragonPlayerData{Player: p}
d := p.GameData[fortunedragon.GameDataKey]
if d != nil {
m := map[string]string{}
json.Unmarshal(d.Data.([]byte), &m)
playerEx.PullPlayer(m)
}
playerEx.init()
playerEx.Clear()
@ -99,6 +108,23 @@ func (this *ScenePolicyFortuneDragon) OnPlayerLeave(s *base.Scene, p *base.Playe
s.FirePlayerEvent(p, base.PlayerEventLeave, nil)
sceneEx.OnPlayerLeave(p, reason)
}
if playerEx, ok := p.ExtraData.(*FortuneDragonPlayerData); ok {
m := playerEx.PushPlayer()
if m != nil && len(m) > 0 {
b, err := json.Marshal(m)
if err != nil {
logger.Logger.Error("OnPlayerLeave, json.Marshal error:", err)
} else {
p.GameData[fortunedragon.GameDataKey] = &model.PlayerGameData{
Platform: p.Platform,
SnId: p.SnId,
Id: fortunedragon.GameDataKey,
Data: b,
}
}
}
}
}
// 玩家掉线

View File

@ -348,7 +348,7 @@ type MatchFreeSignupRec struct {
// 大厅玩家信息发送给游戏服
type WGPlayerInfo struct {
*PlayerData
GameData map[int32]*PlayerGameData // 游戏数据,只允许存储玩家对应某个游戏需要持久化的数据
GameData map[string]*PlayerGameData // 游戏数据,只允许存储玩家对应某个游戏需要持久化的数据
}
type PlayerData struct {

View File

@ -9,7 +9,7 @@ import (
type PlayerGameData struct {
Platform string `bson:"-"`
SnId int32
Id int32 // 游戏id或场次id
Id string // 游戏id或场次id
Data interface{} // 数据
}

View File

@ -30,7 +30,7 @@ type AllPlayerInfo struct {
// PlayerInfo 玩家信息
type PlayerInfo struct {
GameData map[int32]*model.PlayerGameData // 游戏数据
GameData map[string]*model.PlayerGameData // 游戏数据
}
type PlayerInfoMgr struct {
@ -69,7 +69,7 @@ func (p *PlayerInfoMgr) Callback(player any, ret *internal.PlayerLoadReplay) {
return
}
info := &PlayerInfo{
GameData: make(map[int32]*model.PlayerGameData),
GameData: make(map[string]*model.PlayerGameData),
}
// 游戏数据