示例#1
0
    public void ReqEndBattle(MsgPack packMsg)
    {
        RequestEndBattle data = packMsg._msg.reqEndBattle;

        NetMsg netMsg = new NetMsg
        {
            cmd = (int)MsgCommand.Cmd_RspEndBattle,
        };

        //校验是否合法
        if (data.bWin)
        {
            if (data.costTime > 20 && data.leftHp > 0)
            {
                MapCfg     mapCfg     = cfgSvc.GetMapCfgData(data.chapterID);
                PlayerData playerData = cacheSvc.GetPlayerDataBySession(packMsg._session);

                if (playerData != null && mapCfg != null)
                {
                    TaskRewardSys.Instance.CalcTaskProgress(playerData, Constants.cTask_Copyer);
                    playerData.coin     += mapCfg.rewardCoin;
                    playerData.critical += mapCfg.rewardCrystal;
                    CommonTools.CalcExp(playerData, mapCfg.rewardExp);

                    if (playerData.curChapter == data.chapterID)
                    {
                        playerData.curChapter += 1;
                    }

                    if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
                    {
                        netMsg.err = (int)ErroCode.Error_UpdateDB;
                    }
                    else
                    {
                        ResponseEndBattle rspData = new ResponseEndBattle
                        {
                            bWin      = data.bWin,
                            chapterID = data.chapterID,
                            costTime  = data.costTime,
                            leftHp    = data.leftHp,
                            coin      = playerData.coin,
                            lv        = playerData.lv,
                            exp       = playerData.exp,
                            crystal   = playerData.crystal,
                            progress  = playerData.curChapter
                        };

                        netMsg.rspEndBattle = rspData;
                    }
                }
            }
        }
        else
        {
            netMsg.err = (int)ErroCode.Error_ClientData;
        }

        packMsg._session.SendMsg(netMsg);
    }
示例#2
0
 public void UpdatePlayerDataOfBattleResult(ResponseEndBattle data)
 {
     PlayerData.coin       = data.coin;
     PlayerData.lv         = data.lv;
     PlayerData.exp        = data.exp;
     PlayerData.crystal    = data.crystal;
     PlayerData.curChapter = data.progress;
 }