public static void OnGameMatchmakingResultMessageReceived(GameMatchmakingResultMessage message) { if (GameMatchmakingManager.m_queue.TryGetValue(message.SessionId, out MatchmakingEntry entry)) { GameSession session = entry.Session; if (message.EnemyId != null) { GameAvatar enemy = GameAvatarManager.Get(message.EnemyId); GameMatchmakingManager.Dequeue(session); entry.Session.GameAvatar.AddRecentlyMatchedEnemy(message.EnemyId); session.LoadGameState(new GameMatchedAttackState { Home = enemy.LogicClientHome, HomeOwnerAvatar = enemy.LogicClientAvatar, PlayerAvatar = session.GameAvatar.LogicClientAvatar, MaintenanceTime = enemy.MaintenanceTime, SaveTime = enemy.SaveTime, LiveReplayId = LiveReplayManager.Create(session, null, null) }); } else { AttackHomeFailedMessage attackHomeFailedMessage = new AttackHomeFailedMessage(); switch (ServerStatus.Status) { case ServerStatusType.SHUTDOWN_STARTED: case ServerStatusType.MAINTENANCE: attackHomeFailedMessage.SetReason(AttackHomeFailedMessage.Reason.SHUTDOWN_ATTACK_DISABLED); break; case ServerStatusType.COOLDOWN_AFTER_MAINTENANCE: attackHomeFailedMessage.SetReason(AttackHomeFailedMessage.Reason.COOLDOWN_AFTER_MAINTENANCE); break; default: entry.MatchConfirmation = false; return; } session.SendPiranhaMessage(attackHomeFailedMessage, 1); GameMatchmakingManager.Dequeue(session); } } }