示例#1
0
        public static int GameState(int gameId, int state)
        {
            int result;

            lock (EscapeBattle_K.Mutex)
            {
                EscapeBattlePkLogData log = null;
                if (!EscapeBattle_K.ThisLoopPkLogs.TryGetValue(gameId, out log))
                {
                    result = -11003;
                }
                else
                {
                    log.State = state;
                    foreach (int zhanDuiID in log.ZhanDuiIDs)
                    {
                        EscapeBattle_K.JoinPkData pkData;
                        if (EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out pkData))
                        {
                            EscapeBattle_K.ZhanDuiChangeState(pkData, state);
                        }
                    }
                    result = 0;
                }
            }
            return(result);
        }
示例#2
0
        public static int GameResult(int gameId, List <int> zhanDuiScoreList)
        {
            int result;

            lock (EscapeBattle_K.Mutex)
            {
                EscapeBattlePkLogData log = null;
                LogManager.WriteLog(LogTypes.Trace, string.Format("EscapeBattle::GameResult,gameid={0},scoreList={1}", gameId, string.Join <int>("_", zhanDuiScoreList)), null, true);
                if (!EscapeBattle_K.ThisLoopPkLogs.TryGetValue(gameId, out log))
                {
                    result = 3;
                }
                else
                {
                    DateTime now = TimeUtil.NowDateTime();
                    for (int i = 0; i < zhanDuiScoreList.Count - 1; i += 2)
                    {
                        int zhanDuiID = zhanDuiScoreList[i];
                        int score     = zhanDuiScoreList[i + 1];
                        if (log.ZhanDuiIDs.Contains(zhanDuiID))
                        {
                            EscapeBattle_K.JoinPkData pkData;
                            if (EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out pkData))
                            {
                                if (pkData.InGame)
                                {
                                    pkData.InGame       = false;
                                    pkData.CurrGameID   = 0;
                                    pkData.DuanWeiJiFen = TianTi5v5Service.UpdateEscapeZhanDui(pkData.ZhanDuiID, score, now);
                                }
                            }
                            LogManager.WriteLog(LogTypes.Trace, string.Format("EscapeBattle::GameResult,gameid={0},zhanduiid={1},score={2}", gameId, zhanDuiID, score), null, true);
                            EscapeBattle_K.ZhanDuiChangeState(pkData, 5);
                        }
                    }
                    bool canRemove = true;
                    foreach (int zhanDuiID in log.ZhanDuiIDs)
                    {
                        EscapeBattle_K.JoinPkData pkData;
                        if (EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out pkData) && pkData.InGame)
                        {
                            canRemove = false;
                        }
                    }
                    if (canRemove)
                    {
                        EscapeBattle_K.ThisLoopPkLogs.Remove(gameId);
                        ClientAgentManager.Instance().RemoveKfFuben(EscapeBattle_K.GameType, log.ToServerID, (long)log.GameID);
                    }
                    result = 0;
                }
            }
            return(result);
        }