game_sync/worldsrv/transact_matchscenechange.go

92 lines
2.9 KiB
Go

package main
import (
"time"
"mongo.games.com/game/common"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/transact"
"mongo.games.com/goserver/srvlib"
)
var MatchSceneChangeTimeOut = time.Second * 10
var MatchSceneChangeTransactParam int
type MatchSceneChangeCtx struct {
snid int32
sceneId int32
matchId int32
processIdx int
}
type MatchSceneChangeTransactHandler struct {
}
func (this *MatchSceneChangeTransactHandler) OnExcute(tNode *transact.TransNode, ud interface{}) transact.TransExeResult {
logger.Logger.Trace("MatchSceneChangeTransactHandler.OnExcute")
if ctx, ok := ud.(*MatchSceneChangeCtx); ok {
player := PlayerMgrSington.GetPlayerBySnId(ctx.snid)
if player != nil && player.scene != nil {
tnp := &transact.TransNodeParam{
Tt: common.TransTypeMatchSceneChange,
Ot: transact.TransOwnerType(srvlib.GameServerType),
Oid: int(player.scene.gameSess.GetSrvId()),
AreaID: common.GetSelfAreaId(),
Tct: transact.TransactCommitPolicy_SelfDecide,
}
pack := &common.WGCoinSceneChange{
SnId: ctx.snid,
SceneId: ctx.sceneId,
}
tNode.TransEnv.SetField(MatchSceneChangeTransactParam, ud)
tNode.StartChildTrans(tnp, pack, MatchSceneChangeTimeOut)
}
}
return transact.TransExeResult_Success
}
func (this *MatchSceneChangeTransactHandler) OnCommit(tNode *transact.TransNode) transact.TransExeResult {
logger.Logger.Trace("MatchSceneChangeTransactHandler.OnCommit")
ud := tNode.TransEnv.GetField(MatchSceneChangeTransactParam)
if ctx, ok := ud.(*MatchSceneChangeCtx); ok {
player := PlayerMgrSington.GetPlayerBySnId(ctx.snid)
if player != nil {
//m := MatchMgrSington.GetCopyMatch(ctx.matchId)
//if m != nil {
// if m.process != nil && m.process.idx == ctx.processIdx {
// m.process.TryEnterMatch(player.matchCtx)
// }
//}
}
}
return transact.TransExeResult_Success
}
func (this *MatchSceneChangeTransactHandler) OnRollBack(tNode *transact.TransNode) transact.TransExeResult {
logger.Logger.Trace("MatchSceneChangeTransactHandler.OnRollBack")
ud := tNode.TransEnv.GetField(MatchSceneChangeTransactParam)
if ctx, ok := ud.(*MatchSceneChangeCtx); ok {
player := PlayerMgrSington.GetPlayerBySnId(ctx.snid)
if player != nil {
//m := MatchMgrSington.GetCopyMatch(ctx.matchId)
//if m != nil {
// if m.process != nil && m.process.idx == ctx.processIdx {
// m.process.waitPlayer = append(m.process.waitPlayer, player.matchCtx)
// }
//}
}
}
return transact.TransExeResult_Success
}
func (this *MatchSceneChangeTransactHandler) OnChildTransRep(tNode *transact.TransNode, hChild transact.TransNodeID,
retCode int, ud interface{}) transact.TransExeResult {
logger.Logger.Trace("MatchSceneChangeTransactHandler.OnChildTransRep")
return transact.TransExeResult_Success
}
func init() {
transact.RegisteHandler(common.TransTypeMatchSceneChange, &MatchSceneChangeTransactHandler{})
}