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); }