package main // //import ( // "mongo.games.com/game/common" // "mongo.games.com/game/model" // "mongo.games.com/goserver/core/logger" // "mongo.games.com/goserver/core/netlib" // "mongo.games.com/goserver/core/transact" // "mongo.games.com/goserver/srvlib" // "time" //) // //const ( // TRANSACT_MINIGAMEADDCOIN_CTX = iota //) // //type MiniGameAddCoinTransactHandler struct { //} // //func (this *MiniGameAddCoinTransactHandler) OnExcute(tNode *transact.TransNode, ud interface{}) transact.TransExeResult { // logger.Logger.Trace("MiniGameAddCoinTransactHandler.OnExcute ") // ctx := &common.WGAddCoin{} // err := netlib.UnmarshalPacketNoPackId(ud.([]byte), ctx) // if err != nil { // logger.Logger.Trace("MiniGameAddCoinTransactHandler.OnExcute failed:", err) // return transact.TransExeResult_Failed // } // p := PlayerMgrSington.GetPlayerBySnId(ctx.SnId) // if p != nil { // //玩家可能正在换房间 // if ctx.Coin != 0 && p.scene != nil && !p.scene.IsTestScene() && p.scene.sceneMode != common.SceneMode_Thr { //游戏场中加币,需要同步到gamesrv上 // tnp := &transact.TransNodeParam{ // Tt: common.TransType_MiniGameAddCoin, // Ot: transact.TransOwnerType(srvlib.GameServerType), // Oid: int(p.scene.gameSess.GetSrvId()), // AreaID: common.GetSelfAreaId(), // Tct: transact.TransactCommitPolicy_SelfDecide, // } // tNode.StartChildTrans(tnp, ctx, time.Duration(tNode.MyTnp.ExpiresTs-time.Now().UnixNano())) // tNode.TransEnv.SetField(TRANSACT_MINIGAMEADDCOIN_CTX, ctx) // return transact.TransExeResult_Success // } // // //钱不够扣 // if ctx.Coin < 0 && -ctx.Coin > p.Coin { // return transact.TransExeResult_Failed // } // // logger.Logger.Tracef("MiniGameAddCoinTransactHandler.OnExcute 当前金币:%v 金币变化:%v 变化后金币:%v", p.Coin, ctx.Coin, p.Coin+ctx.Coin) // p.Coin += ctx.Coin // p.dirty = true // p.SendDiffData() // if !p.IsRob && ctx.WriteLog { // log := model.NewCoinLogEx(p.SnId, ctx.Coin, p.Coin, p.SafeBoxCoin, p.Ver, ctx.GainWay, 0, // ctx.Oper, ctx.Remark, p.Platform, p.Channel, p.BeUnderAgentCode, 0, p.PackageID, 0) // if log != nil { // mq.Write(log) // } // } // tNode.TransRep.RetFiels = p.Coin // return transact.TransExeResult_Success // } // // return transact.TransExeResult_Failed //} // //func (this *MiniGameAddCoinTransactHandler) OnCommit(tNode *transact.TransNode) transact.TransExeResult { // logger.Logger.Trace("MiniGameAddCoinTransactHandler.OnCommit ") // ud := tNode.TransEnv.GetField(TRANSACT_MINIGAMEADDCOIN_CTX) // if ctx, ok := ud.(*common.WGAddCoin); ok { // p := PlayerMgrSington.GetPlayerBySnId(ctx.SnId) //重新获得p // if p != nil { // p.Coin += ctx.Coin // p.dirty = true // } // } // return transact.TransExeResult_Success //} // //func (this *MiniGameAddCoinTransactHandler) OnRollBack(tNode *transact.TransNode) transact.TransExeResult { // logger.Logger.Trace("MiniGameAddCoinTransactHandler.OnRollBack ") // return transact.TransExeResult_Success //} // //func (this *MiniGameAddCoinTransactHandler) OnChildTransRep(tNode *transact.TransNode, hChild transact.TransNodeID, // retCode int, ud interface{}) transact.TransExeResult { // logger.Logger.Trace("MiniGameAddCoinTransactHandler.OnChildTransRep ") // if retCode == transact.TransResult_Success { // if data, ok := ud.([]byte); ok { // var coin int64 // if netlib.UnmarshalPacketNoPackId(data, &coin) == nil { // tNode.TransRep.RetFiels = coin // } // } // } // return transact.TransExeResult_Success //} // //func init() { // transact.RegisteHandler(common.TransType_MiniGameAddCoin, &MiniGameAddCoinTransactHandler{}) //}