gamedata空指针
This commit is contained in:
parent
14f8211ea1
commit
a9d67662b3
|
@ -1,6 +1,8 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"mongo.games.com/goserver/core/logger"
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
@ -13,7 +15,7 @@ type SaveTaskHandler interface {
|
||||||
|
|
||||||
var SaverSliceNumber = 600
|
var SaverSliceNumber = 600
|
||||||
|
|
||||||
var DbSaver_Inst = &DbSaver{
|
var DbSaveInst = &DbSaver{
|
||||||
Tick: int32(SaverSliceNumber),
|
Tick: int32(SaverSliceNumber),
|
||||||
index: 0,
|
index: 0,
|
||||||
init: false,
|
init: false,
|
||||||
|
@ -31,6 +33,18 @@ type DbSaver struct {
|
||||||
pool map[SaveTaskHandler]*SaverArray
|
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
|
// pushBalanceSaverArray 向队列中添加SaveTaskHandler
|
||||||
func (this *DbSaver) pushBalanceSaverArray(sth SaveTaskHandler) {
|
func (this *DbSaver) pushBalanceSaverArray(sth SaveTaskHandler) {
|
||||||
if sth == nil {
|
if sth == nil {
|
||||||
|
@ -64,8 +78,8 @@ func (this *DbSaver) RegisterDbSaverTask(i interface{}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnregisteDbSaveTask 从队列中移除SaveTaskHandler
|
// UnregisterDbSaveTask 从队列中移除SaveTaskHandler
|
||||||
func (this *DbSaver) UnregisteDbSaveTask(i interface{}) {
|
func (this *DbSaver) UnregisterDbSaveTask(i interface{}) {
|
||||||
if sth, ok := i.(SaveTaskHandler); ok {
|
if sth, ok := i.(SaveTaskHandler); ok {
|
||||||
if arr, exist := this.pool[sth]; exist {
|
if arr, exist := this.pool[sth]; exist {
|
||||||
delete(this.pool, sth)
|
delete(this.pool, sth)
|
||||||
|
@ -144,5 +158,5 @@ func (this *DbSaver) Shutdown() {
|
||||||
|
|
||||||
// 注册模块
|
// 注册模块
|
||||||
func init() {
|
func init() {
|
||||||
module.RegisteModule(DbSaver_Inst, time.Second, 0)
|
module.RegisteModule(DbSaveInst, time.Second, 0)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1379,7 +1379,7 @@ func (this *Player) OnLogouted() {
|
||||||
|
|
||||||
// 更新数据库
|
// 更新数据库
|
||||||
logger.Logger.Tracef("###%v unmount from DBSaver[DelPlayer]", this.Name)
|
logger.Logger.Tracef("###%v unmount from DBSaver[DelPlayer]", this.Name)
|
||||||
DbSaver_Inst.UnregisteDbSaveTask(this)
|
DbSaveInst.UnregisterDbSaveTask(this)
|
||||||
this.Save(true)
|
this.Save(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1418,7 +1418,8 @@ func (this *Player) UnmarshalData(data []byte, scene *Scene) {
|
||||||
// PlayerInfo 同步
|
// PlayerInfo 同步
|
||||||
info := PlayerInfoMgrSingle.Players[this.SnId]
|
info := PlayerInfoMgrSingle.Players[this.SnId]
|
||||||
if info == nil {
|
if info == nil {
|
||||||
PlayerInfoMgrSingle.Players[this.SnId] = &PlayerInfo{}
|
info = &PlayerInfo{}
|
||||||
|
PlayerInfoMgrSingle.Players[this.SnId] = info
|
||||||
}
|
}
|
||||||
info.GameData = pd.GameData
|
info.GameData = pd.GameData
|
||||||
|
|
||||||
|
|
|
@ -207,7 +207,7 @@ func (c *PlayerCacheMgr) Update() {
|
||||||
c.DbSaver.Update()
|
c.DbSaver.Update()
|
||||||
for _, p := range c.playerWaitClr {
|
for _, p := range c.playerWaitClr {
|
||||||
delete(c.playerMap, p.SnId)
|
delete(c.playerMap, p.SnId)
|
||||||
c.UnregisteDbSaveTask(p)
|
c.UnregisterDbSaveTask(p)
|
||||||
|
|
||||||
// 释放玩家数据
|
// 释放玩家数据
|
||||||
if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil {
|
if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil {
|
||||||
|
|
|
@ -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)
|
logger.Logger.Tracef("###%v mount to DBSaver[AddPlayer]", player.Name)
|
||||||
if oldp != nil { //删除旧的玩家
|
if oldp != nil { //删除旧的玩家
|
||||||
DbSaver_Inst.UnregisteDbSaveTask(oldp)
|
DbSaveInst.UnregisterDbSaveTask(oldp)
|
||||||
}
|
}
|
||||||
DbSaver_Inst.RegisterDbSaverTask(player)
|
DbSaveInst.RegisterDbSaverTask(player)
|
||||||
niceIdMgr.NiceIdCheck(player.SnId)
|
niceIdMgr.NiceIdCheck(player.SnId)
|
||||||
} else {
|
} else {
|
||||||
player.NiceId = niceIdMgr.PopNiceId(player.SnId)
|
player.NiceId = niceIdMgr.PopNiceId(player.SnId)
|
||||||
|
|
Loading…
Reference in New Issue