diff --git a/gamerule/fortunedragon/constants.go b/gamerule/fortunedragon/constants.go index 9407967..4b8b104 100644 --- a/gamerule/fortunedragon/constants.go +++ b/gamerule/fortunedragon/constants.go @@ -18,3 +18,5 @@ const ( FortuneDragonPlayerOpSwitch ) const NowByte int64 = 10000 + +const GameDataKey = "FortuneData" diff --git a/gamesrv/fortunedragon/scenepolicy_fortunedragon.go b/gamesrv/fortunedragon/scenepolicy_fortunedragon.go index 4d371e1..0a1922d 100644 --- a/gamesrv/fortunedragon/scenepolicy_fortunedragon.go +++ b/gamesrv/fortunedragon/scenepolicy_fortunedragon.go @@ -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, + } + } + } + } } // 玩家掉线