Example #1
0
        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);
        }