Exemple #1
0
        public void ToggleAgent(TileModel tileModel)
        {
            if (tileModel.IsDoomsday || tileModel.TileType == TileType.CIABuilding)
            { // Toggle CIA Agent
                var existingAgentTile = _gameState.Game.Tiles.Where(tile => tile.IsAgentCIA).FirstOrDefault();
                if (existingAgentTile != null)
                {     // Agent is currently on a tile
                    if (tileModel.Equals(existingAgentTile))
                    { // The Agent is on this tile, so remove it.
                        tileModel.IsAgentCIA = false;
                    }
                    else
                    { // Agent is not on this tile, so remove it from previous tile and add to this tile
                        existingAgentTile.IsAgentCIA = false;
                        tileModel.IsAgentCIA         = true;
                    }
                }
                else
                { // No tile contained the CIA Agent, so add it to this tile
                    tileModel.IsAgentCIA = true;
                }
            }
            else
            { // Toggle Interpol Agent
                var existingAgentTile = _gameState.Game.Tiles.Where(tile => tile.IsAgentInterpol).FirstOrDefault();
                if (existingAgentTile != null)
                {     // Agent is currently on a tile
                    if (tileModel.Equals(existingAgentTile))
                    { // The Agent is on this tile, so remove it.
                        tileModel.IsAgentInterpol = false;
                    }
                    else
                    { // Agent is not on this tile, so remove it from previous tile and add to this tile
                        existingAgentTile.IsAgentInterpol = false;
                        tileModel.IsAgentInterpol         = true;
                    }
                }
                else
                { // No tile contained the CIA Agent, so add it to this tile
                    tileModel.IsAgentInterpol = true;
                }
            }

            if (tileModel.IsActive)
            {
                _activeTilesUpdate.OnNext(_activeTiles);
            }

            _allTilesUpdate.OnNext(_allTiles);
        }