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