using Sog; using ProtoCSStruct; using LitJson; using System; namespace Battle { public static class BattleMatchHandler { private static ProtoCSStruct.BattleInfoAll lastBattleInfoAll; private static bool OnCheckArenaBattle(long uid, ref BattleInfoAll battleInfo, ref BattleBriefStatistics briefStatistic, ref BattleStatistics battleStats) { TraceLog.Debug("BattleMatchHandler.OnCheckArenaBattle mainland {0} battle {1} uid {2}" , battleInfo.MainlandId, battleInfo.BattleId, uid); //ProtoCSClass.BattleInfoAll battleInfoCls = ProtoHelper.BattleInfoAllToClass(ref battleInfo); //ref var battleInput = ref GetAutoFightInput(); //Stopwatch sw = new Stopwatch(); //sw.Start(); //int runRet = RunBattle(battleInfoCls, uid, battleInfo.BattleId, battleInfo.MainlandId, // ref battleInput, out AIScriptBattle scriptBattle); //sw.Stop(); //if (runRet == 0 && scriptBattle != null) //{ // //填充统计 // ProtoHelper.BattleStatisticsToStruct(scriptBattle._battle.battleStats, ref battleStats); // ProtoHelper.BattleBriefStatisticsToStruct(scriptBattle._battle.briefStatistics, ref briefStatistic); // int logicTimeMs = battleStats.TotalFrame * GameTime.LogicTimeOneFrameMs; // BattleCheckStatSucc(battleInfo.MainlandId, logicTimeMs, (int)sw.ElapsedMilliseconds, 1); //} //else //{ // TraceLog.Error("BattleMatchHandler.OnCheckArenaBattle mainland {0} battle {1} uid {2} run ret error", // battleInfo.MainlandId, battleInfo.BattleId, uid); // return false; //} //TraceLog.Debug("BattleMatchHandler.OnCheckArenaBattle mainland {0} battle {1} uid {2} BattleResult {3} usedTimeMs {4}" // , battleInfo.MainlandId, battleInfo.BattleId, uid, briefStatistic.Result, sw.ElapsedMilliseconds); return true; } private static void BattleCheckStatSucc(int mainlandId, int logicTimeMs, int checkTimeMs, int isArena) { var checkStat = BattleServerUtils.GetBattleServerData().battleCheckStat; checkStat.battleNum++; checkStat.battleNum_total++; checkStat.checkSuccBattleNum++; checkStat.checkSuccBattleNum_total++; if (isArena == 1) { checkStat.arenaNum++; checkStat.arenaNum_total++; checkStat.checkSuccArenaNum++; checkStat.checkSuccArenaNum_total++; } if (checkTimeMs > checkStat.maxCheckTimeMs) { checkStat.maxCheckTimeMs = checkTimeMs; checkStat.maxMainlandId = mainlandId; checkStat.maxLogicTimeMs = logicTimeMs; } if (checkTimeMs > checkStat.maxCheckTimeMs_total) { checkStat.maxCheckTimeMs_total = checkTimeMs; checkStat.maxMainlandId_total = mainlandId; checkStat.maxLogicTimeMs_total = logicTimeMs; } checkStat.battleLogicTimeMs += logicTimeMs; checkStat.battleLogicTimeMs_total += logicTimeMs; checkStat.battleCheckTimeMs += checkTimeMs; checkStat.battleCheckTimeMs_total += checkTimeMs; } private static void BattleCheckStatFail(int errorCode, int isArena, long appVersion) { var checkStat = BattleServerUtils.GetBattleServerData().battleCheckStat; checkStat.battleNum++; checkStat.battleNum_total++; if (isArena == 1) { checkStat.arenaNum++; checkStat.arenaNum_total++; } if (! checkStat.errorCount.ContainsKey(errorCode)) { checkStat.errorCount[errorCode] = 1; } else { checkStat.errorCount[errorCode]++; } if (!checkStat.appVersionFailCount.ContainsKey(appVersion)) { checkStat.appVersionFailCount[appVersion] = 1; } else { checkStat.appVersionFailCount[appVersion]++; } } private static void BattleStatEnterArena(int arenaType) { var checkStat = BattleServerUtils.GetBattleServerData().battleCheckStat; if (checkStat.enterArenaNum.ContainsKey(arenaType)) { checkStat.enterArenaNum[arenaType]++; } else { checkStat.enterArenaNum.Add(arenaType, 1); } ++checkStat.totalArenaNum; } } }