gamedata空指针

This commit is contained in:
sk 2024-11-09 14:09:39 +08:00
parent 14f8211ea1
commit a9d67662b3
4 changed files with 24 additions and 9 deletions

View File

@ -1,6 +1,8 @@
package main
import (
"fmt"
"strings"
"time"
"mongo.games.com/goserver/core/logger"
@ -13,7 +15,7 @@ type SaveTaskHandler interface {
var SaverSliceNumber = 600
var DbSaver_Inst = &DbSaver{
var DbSaveInst = &DbSaver{
Tick: int32(SaverSliceNumber),
index: 0,
init: false,
@ -31,6 +33,18 @@ type DbSaver struct {
pool map[SaveTaskHandler]*SaverArray
}
func (this *DbSaver) String() string {
buf := strings.Builder{}
buf.WriteString("DbSaver:\n")
buf.WriteString(fmt.Sprintf("Tick: %v\n", this.Tick))
buf.WriteString(fmt.Sprintf("List: %v\n", len(this.list)))
buf.WriteString(fmt.Sprintf("Queue: %v\n", len(this.queue)))
for k, v := range this.queue {
buf.WriteString(fmt.Sprintf("q%v: %v\n", k, len(v.queue)))
}
return buf.String()
}
// pushBalanceSaverArray 向队列中添加SaveTaskHandler
func (this *DbSaver) pushBalanceSaverArray(sth SaveTaskHandler) {
if sth == nil {
@ -64,8 +78,8 @@ func (this *DbSaver) RegisterDbSaverTask(i interface{}) {
}
}
// UnregisteDbSaveTask 从队列中移除SaveTaskHandler
func (this *DbSaver) UnregisteDbSaveTask(i interface{}) {
// UnregisterDbSaveTask 从队列中移除SaveTaskHandler
func (this *DbSaver) UnregisterDbSaveTask(i interface{}) {
if sth, ok := i.(SaveTaskHandler); ok {
if arr, exist := this.pool[sth]; exist {
delete(this.pool, sth)
@ -144,5 +158,5 @@ func (this *DbSaver) Shutdown() {
// 注册模块
func init() {
module.RegisteModule(DbSaver_Inst, time.Second, 0)
module.RegisteModule(DbSaveInst, time.Second, 0)
}

View File

@ -1379,7 +1379,7 @@ func (this *Player) OnLogouted() {
// 更新数据库
logger.Logger.Tracef("###%v unmount from DBSaver[DelPlayer]", this.Name)
DbSaver_Inst.UnregisteDbSaveTask(this)
DbSaveInst.UnregisterDbSaveTask(this)
this.Save(true)
}
@ -1418,7 +1418,8 @@ func (this *Player) UnmarshalData(data []byte, scene *Scene) {
// PlayerInfo 同步
info := PlayerInfoMgrSingle.Players[this.SnId]
if info == nil {
PlayerInfoMgrSingle.Players[this.SnId] = &PlayerInfo{}
info = &PlayerInfo{}
PlayerInfoMgrSingle.Players[this.SnId] = info
}
info.GameData = pd.GameData

View File

@ -207,7 +207,7 @@ func (c *PlayerCacheMgr) Update() {
c.DbSaver.Update()
for _, p := range c.playerWaitClr {
delete(c.playerMap, p.SnId)
c.UnregisteDbSaveTask(p)
c.UnregisterDbSaveTask(p)
// 释放玩家数据
if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil {

View File

@ -144,9 +144,9 @@ func (this *PlayerMgr) AddPlayer(sid int64, playerInfo *model.PlayerData, s *net
logger.Logger.Tracef("###%v mount to DBSaver[AddPlayer]", player.Name)
if oldp != nil { //删除旧的玩家
DbSaver_Inst.UnregisteDbSaveTask(oldp)
DbSaveInst.UnregisterDbSaveTask(oldp)
}
DbSaver_Inst.RegisterDbSaverTask(player)
DbSaveInst.RegisterDbSaverTask(player)
niceIdMgr.NiceIdCheck(player.SnId)
} else {
player.NiceId = niceIdMgr.PopNiceId(player.SnId)