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); } }
public void DecodeAllShuffleCardsAndPlayerInstantiationPositions( Dictionary <string, object> _remainingPowerHourCardsDict, Dictionary <string, object> _remaininTrapCardsDict, Dictionary <string, object> _shuffleAllCoinAndTreasurePositionsDict, Dictionary <string, object> _playerUIDWithInstantiationPositionAndCardsDict, object _currentGMTTimeAt0Object ) { List <Card> _remainigPowerHourCards = new List <Card>(); foreach (var _cardName in _remainingPowerHourCardsDict) { Card _card = CardManager.m_Instance.GetPowerOrHourCardByName(_cardName.Key); if (_card != null) { _remainigPowerHourCards.Add(_card); } } List <TrapCard> _remainingTrapCards = new List <TrapCard>(); foreach (var _cardName in _remaininTrapCardsDict) { TrapCard _trapCard = CardManager.m_Instance.GetTrapCardByName(_cardName.Key); if (_trapCard != null) { _remainingTrapCards.Add(_trapCard); } } Dictionary <string, List <int> > _shuffleAllCoinAndTreasurePositions = new Dictionary <string, List <int> >(); foreach (var _value in _shuffleAllCoinAndTreasurePositionsDict) { List <object> _objs = _value.Value as List <object>; List <int> _listOfInt = new List <int>(); foreach (var _position in _objs) { int i = 0; if (int.TryParse(_position.ToString(), out i)) { _listOfInt.Add(i); } } _shuffleAllCoinAndTreasurePositions.Add(_value.Key, _listOfInt); } CardManager.m_Instance.SetRemainingCards(_remainigPowerHourCards, _remainingTrapCards); ResourceManager.m_Instance.SetAllCoinAndTreasuresPositions(_shuffleAllCoinAndTreasurePositions[ResourceManager.r_CoinKey], _shuffleAllCoinAndTreasurePositions[ResourceManager.r_TreasureKey]); foreach (var _playerUID in _playerUIDWithInstantiationPositionAndCardsDict) { PlayerInfo _playerInfo = null; foreach (var _joinedPlayer in GameManager.m_Instance.m_JoinedPlayersInfo) { if (_playerUID.Key == _joinedPlayer.m_PlayerUID) { _playerInfo = _joinedPlayer; } } if (_playerInfo != null) { PawnInfo _pawnInfo = new PawnInfo(); _pawnInfo.m_PlayerInfo = _playerInfo; Dictionary <string, object> _dict = _playerUID.Value as Dictionary <string, object>; int result = 0; int.TryParse(_dict[FirebaseRealtimeDatabase.r_initialFuelCardNumber].ToString(), out result); _pawnInfo.m_NumberOfFuelCards = result; result = 0; int.TryParse(_dict[FirebaseRealtimeDatabase.r_playerInstantiationPosition].ToString(), out result); _pawnInfo.m_InstantiationPosition = new Vector2Int(0, result); _dict = _dict[FirebaseRealtimeDatabase.r_cards] as Dictionary <string, object>; int p = 0; int t = 0; _pawnInfo.m_PowerAndHourCards = new Card[r_numberOfPowerHourCardInHand]; _pawnInfo.m_TrapCards = new TrapCard[r_numberOfTrapCardInHand]; foreach (var _cardKeyValue in _dict) { if (_cardKeyValue.Value.ToString() == typeof(PowerCard).ToString() || _cardKeyValue.Value.ToString() == typeof(HourCard).ToString()) { Card _card = CardManager.m_Instance.GetPowerOrHourCardByName(_cardKeyValue.Key); if (_card != null) { if (p < r_numberOfPowerHourCardInHand) { _pawnInfo.m_PowerAndHourCards[p] = _card; p++; } } } else if (_cardKeyValue.Value.ToString() == typeof(TrapCard).ToString()) { TrapCard _trapCard = CardManager.m_Instance.GetTrapCardByName(_cardKeyValue.Key); if (_trapCard != null) { if (t < r_numberOfTrapCardInHand) { _pawnInfo.m_TrapCards[t] = _trapCard; t++; } } } } m_allPawnInfos.Add(_pawnInfo); } } int _result = 0; if (int.TryParse(_currentGMTTimeAt0Object.ToString(), out _result)) { m_currentTimeOfGMT0 = _result; } StartGameplay(); }
protected override void Update(GameTime gameTime) { Camera.Update(gameTime); /* * if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || * Keyboard.GetState().IsKeyDown(Keys.Escape)) * Exit(); */ // Mouse //ToDo 1 Fix mouse getting 'stuck' in fullscreen mode MouseCoordinates = Cursor.GetMouseCoordinates(); Cursor.GetMouseCoordinates(); Cursor.UpdateCursorRectangleLocation(); //Update Tree Foliage Transparency Trees.ChangeTreeFoliageTransparency(); if (Debug.Debug.IsDebugEnabled) { fps.Update(gameTime); } if (ResolutionChanged) { ResolutionHandler.SetResolution(); Graphics.ApplyChanges(); } Camera.Position = CameraPosition; #region User Interface if (BuildMenuPane.IsBuildMenuWindowVisible) { BuildMenuRollOverText.GenerateRollOverText(); BuildMenuPane.CloseBuildMenu(); } if (BuildingPlacementHandler.IsPlacingBuilding) { BuildingPlacementHandler.CheckIfGroundClear(Blueprint); BuildingPlacementHandler.PlaceAStructure(BuildingPlacementHandler.SetBuildingTexture()); } //Menu if (!Bulldozer.IsBulldozerActive) { BuildMenuInteraction.CheckCursorMenuInteraction(Cursor.CursorRectangle); } if (BuildMenuInteraction.IsBuildMenuOpen && !Bulldozer.IsBulldozerActive) { BuildMenuInteraction.CheckBuildIconInteraction(); } if (BuildMenuPane.IsBuildMenuWindowVisible && !Bulldozer.IsBulldozerActive) { BuildMenuPane.UpdateBuildMenuWindowLocation(); } // Details Pane DetailsPaneInteraction.CheckForDetailsPaneInteraction(); DetailsPaneMovement.UpdateDetailsPaneLocation(); // Selected Pawn if (SelectedPawn.SelectedHuman != null) { SelectedPawn.UpdateIndicator(SelectedPawn.SelectedHuman); ExtendIconChecks.CheckExtendHandClicked(); PawnInfo.UpdatePawnInfo(); } #endregion #region PawnInfoSB PawnCursorInteraction.CheckForCursorPawnInteraction(); if (PawnInfo.IsPawnInfoVisible) { PawnInfo.ClosePawnInfo(); } if (ExtendIconChecks.IsWeaponIconListVisible) { EquipWeapon.CheckWeaponIconInteraction(); CreateItemIcons.UpdateWeaponIconList(); } #endregion ZedDeath.CheckZedsHealth(); RuinedBuilding.CheckBuildingsHealth(); HumanDeath.CheckHumansHealth(); ZedController.IncreaseZeds(); //Building Removal if (Bulldozer.IsBulldozerActive) { Bulldozer.DemolishStructure(); } //Movement //HumanMovement.RunFromZeds(); PathFind.MovePawns(); CheckMouseStateChange.UpdateMouseState(); KeyBindings.CheckForKeyInput(); KeyBindings.CheckForMouseInput(); Resource.SetResourcesForGathering(); base.Update(gameTime); }