public static List <ZhanDuiZhengBaNtfPkResultData> ZhengBaPkResult(int gameId, int winner1) { List <ZhanDuiZhengBaNtfPkResultData> result; lock (ZhanDuiZhengBa_K.Mutex) { LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},winner1={1}", gameId, winner1), null, true); ZhanDuiZhengBaPkLogData log = null; if (!ZhanDuiZhengBa_K.ThisLoopPkLogs.TryGetValue(gameId, out log)) { result = null; } else if (winner1 != log.ZhanDuiID1 && winner1 != log.ZhanDuiID2) { result = null; } else { ZhanDuiZhengBaMatchConfig matchConfig = ZhanDuiZhengBa_K._Config.MatchConfigList.Find((ZhanDuiZhengBaMatchConfig _m) => _m.ID == log.ID); ZhanDuiZhengBa_K.JoinRolePkData winJoinRole = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == winner1 && _r.CurrGameID == gameId); ZhanDuiZhengBa_K.JoinRolePkData faildJoinRole = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID != winner1 && _r.CurrGameID == gameId); if (faildJoinRole != null && winJoinRole != null && faildJoinRole.ZhanDuiID != winJoinRole.ZhanDuiID) { ZhanDuiZhengBaZhanDuiData roleData = ZhanDuiZhengBa_K.SyncData.ZhanDuiList.Find((ZhanDuiZhengBaZhanDuiData _r) => _r.ZhanDuiID == faildJoinRole.ZhanDuiID); if (roleData != null) { int newState = 2; LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},zhanduiid={1},newstate={2}", gameId, roleData.ZhanDuiID, newState), null, true); if (ZhanDuiZhengBa_K.Persistence.UpdateRole(ZhanDuiZhengBa_K.SyncData.Month, roleData.ZhanDuiID, roleData.Grade, newState)) { roleData.State = newState; ZhanDuiZhengBa_K.SyncData.RoleModTime = TimeUtil.NowDateTime(); } } ZhanDuiZhengBa_K.TodayJoinRoleDatas.RemoveAll((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == faildJoinRole.ZhanDuiID); } if (winJoinRole != null) { bool bSaveUpdate = false; ZhanDuiZhengBaZhanDuiData roleData = ZhanDuiZhengBa_K.SyncData.ZhanDuiList.Find((ZhanDuiZhengBaZhanDuiData _r) => _r.ZhanDuiID == winJoinRole.ZhanDuiID); if (roleData != null) { int newGrade = (int)matchConfig.WillUpGrade; int newState = 1; LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},zhanduiid={1},newstate={2}", gameId, roleData.ZhanDuiID, newState), null, true); if (ZhanDuiZhengBa_K.Persistence.UpdateRole(ZhanDuiZhengBa_K.SyncData.Month, roleData.ZhanDuiID, newGrade, newState)) { roleData.Grade = newGrade; roleData.State = newState; ZhanDuiZhengBa_K.SyncData.RoleModTime = TimeUtil.NowDateTime(); bSaveUpdate = true; } } if (bSaveUpdate) { log.UpGrade = true; ZhanDuiZhengBa_K.TodayJoinRoleDatas.RemoveAll((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == winJoinRole.ZhanDuiID); } } log.EndTime = TimeUtil.NowDateTime(); if (winner1 > 0 && winner1 == log.ZhanDuiID1) { log.PkResult = 1; } else if (winner1 > 0 && winner1 == log.ZhanDuiID2) { log.PkResult = 2; } else { log.PkResult = 0; } ZhanDuiZhengBa_K.SyncData.PKLogList.Add(log); TimeUtil.AgeByDateTime(ref ZhanDuiZhengBa_K.SyncData.PKLogModTime); ZhanDuiZhengBa_K.Persistence.SavePkLog(log); ZhanDuiZhengBa_K.ThisLoopPkLogs.Remove(gameId); result = null; } } return(result); }