public void DistributeCards() { Dictionary <string, List <int> > _shuffleAllCoinAndTreasurePositions = ResourceManager.m_Instance.ShuffleAllCoinAndTreasurePositions(); List <int> _playerInstantiationPositions = GetPlayerInstantiationPositions(); List <Card> _shufflePowerHourCards = CardManager.m_Instance.ShufflePowerOrHourCards(); List <TrapCard> _shuffleTrapCards = CardManager.m_Instance.ShuffleTrapCards(); Queue <Card> _queueOfPowerHourCards = new Queue <Card>(); Queue <TrapCard> _queueOfTrapCards = new Queue <TrapCard>(); _shufflePowerHourCards.ForEach((x) => _queueOfPowerHourCards.Enqueue(x)); _shuffleTrapCards.ForEach((x) => _queueOfTrapCards.Enqueue(x)); if (GameManager.m_Instance.m_GameType == GameType.Offline) { for (int i = 0; i < GameManager.m_Instance.m_JoinedPlayersInfo.Count; i++) { PawnInfo _pawnInfo = new PawnInfo(); _pawnInfo.m_InstantiationPosition = new Vector2Int(0, _playerInstantiationPositions[i]); _pawnInfo.m_PlayerInfo = GameManager.m_Instance.m_JoinedPlayersInfo[i]; _pawnInfo.m_NumberOfFuelCards = m_initialNumberOfFuelCards; m_allPawnInfos.Add(_pawnInfo); } foreach (var _pawnInfo in m_allPawnInfos) { _pawnInfo.m_PowerAndHourCards = new Card[r_numberOfPowerHourCardInHand]; _pawnInfo.m_TrapCards = new TrapCard[r_numberOfTrapCardInHand]; for (int i = 0; i < r_numberOfPowerHourCardInHand; i++) { _pawnInfo.m_PowerAndHourCards[i] = _queueOfPowerHourCards.Dequeue(); } for (int i = 0; i < r_numberOfTrapCardInHand; i++) { _pawnInfo.m_TrapCards[i] = _queueOfTrapCards.Dequeue(); } } CardManager.m_Instance.SetRemainingCards(_queueOfPowerHourCards.ToList(), _queueOfTrapCards.ToList()); ResourceManager.m_Instance.SetAllCoinAndTreasuresPositions(_shuffleAllCoinAndTreasurePositions[ResourceManager.r_CoinKey], _shuffleAllCoinAndTreasurePositions[ResourceManager.r_TreasureKey]); m_currentTimeOfGMT0 = Random.Range(1, r_TotalLongitude + 1); StartGameplay(); } else if (GameManager.m_Instance.m_GameType == GameType.Online) { Dictionary <string, Dictionary <string, string> > _playerUIDWithCards = new Dictionary <string, Dictionary <string, string> >(); foreach (var _joinedPlayer in GameManager.m_Instance.m_JoinedPlayersInfo) { Dictionary <string, string> _cards = new Dictionary <string, string>(); for (int i = 0; i < r_numberOfPowerHourCardInHand; i++) { Card _card = _queueOfPowerHourCards.Dequeue(); _cards.Add(_card.name, _card.GetType().ToString()); } for (int i = 0; i < r_numberOfTrapCardInHand; i++) { TrapCard _trapCard = _queueOfTrapCards.Dequeue(); _cards.Add(_trapCard.name, _trapCard.GetType().ToString()); } _playerUIDWithCards.Add(_joinedPlayer.m_PlayerUID, _cards); } Toast.m_Instance.ShowMessage("Adding game info to database..."); int _currentTimeOfGMT0 = Random.Range(1, r_TotalLongitude + 1); FirebaseRealtimeDatabase.m_Instance.AddGameInfoToDatabase(GameManager.m_Instance.m_GameInfo, _queueOfPowerHourCards.ToList(), _queueOfTrapCards.ToList(), _shuffleAllCoinAndTreasurePositions, _playerInstantiationPositions, _playerUIDWithCards, _currentTimeOfGMT0); } }