private void BuildP2(ViewTile tile) { var tileP2 = _world.P2Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y]; if (!_world.P2Action.CanUseAction(PlayerActionType.Build) || tileP2.TowerActive) { return; } switch (tileP2.TileType) { case TileType.Mine: tileP2.BuildTower(); audioSource.PlayOneShot(BuildSFX); _worldCreator.MakeTowerP2(tile); tile.ActivateTower(); _world.P2Resources.AddResource(tileP2.ResourceType, TileType.Mine); _world.P2Action.UseAction(PlayerActionType.Build); break; case TileType.Field: tileP2.BuildTower(); audioSource.PlayOneShot(BuildSFX); _worldCreator.MakeTowerP2(tile); tile.ActivateTower(); _world.P2Resources.AddResource(tileP2.ResourceType, TileType.Field); _world.P2Action.UseAction(PlayerActionType.Build); break; case TileType.Mountain: break; } RefreshUIP2(); }
public void UpdateView(int x, int y) { foreach (GameObject viewTile in viewTiles) { viewTile.transform.position += new Vector3(x, y, 0); ViewTile vt = viewTile.GetComponent <ViewTile>(); vt.UpdateViewTile(x, y); } }
protected void initMap() { MapData map = GameState.map; numRows = map.numRows; numCols = map.numCols; path = new List <ViewTile>(); grid = new ViewTile[numRows, numCols]; // Generate tiles float topEdge = (float)(spacing * (numRows / 2.0 - 0.5)); float leftEdge = (float)-(spacing * (numCols / 2.0 - 0.5)); for (int i = 0; i < numRows; ++i) { GameObject row = new GameObject("row"); row.transform.parent = gameObject.transform; row.transform.localPosition = new Vector3(0, topEdge - (spacing * i), 0); for (int j = 0; j < numCols; ++j) { ViewTile tile = Instantiate(tileScript); tile.transform.parent = row.transform; tile.transform.localPosition = new Vector3(leftEdge + (spacing * j), 0, 0); tile.transform.localScale = new Vector3(scaling, scaling, 0); tile.tileData.coord = new Coord(i, j); tile.mapScript = this; grid[i, j] = tile; } } // Set tile data for (int i = 0; i < numRows; ++i) { for (int j = 0; j < numCols; ++j) { grid[i, j].tileData = map.getTileData(i, j); } } // Set path TileData td; List <TileData> map_path = map.getPath(); td = map_path[0]; grid[td.coord.row, td.coord.col].setSprite(TSprites.startTile); path.Add(grid[td.coord.row, td.coord.col]); for (int i = 1; i < map_path.Count - 1; ++i) { td = map_path[i]; grid[td.coord.row, td.coord.col].setSprite(TSprites.decideSprite(td.startDirection, td.endDirection)); path.Add(grid[td.coord.row, td.coord.col]); } td = map_path[map_path.Count - 1]; grid[td.coord.row, td.coord.col].setSprite(TSprites.endTile); path.Add(grid[td.coord.row, td.coord.col]); }
private void DigP2(ViewTile tile) { if (!_world.P2Action.CanUseAction(PlayerActionType.Dig)) { return; } var tileP1 = _world.P1Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y]; var tileP2 = _world.P2Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y]; switch (tileP2.TileType) { case TileType.Mine: break; case TileType.Field: tileP2.Dig(); audioSource.PlayOneShot(DigSFX); tileP1.Raise(); _worldCreator.MakeMineP2(tile); _worldCreator.MakeMountainP1(tile); _world.P2Action.UseAction(PlayerActionType.Dig); if (tileP1.TowerActive) { tileP1.DestoryTower(); _world.P1Resources.RemoveResource(tileP1.ResourceType); } break; case TileType.Mountain: tileP2.Dig(); audioSource.PlayOneShot(DigSFX); _world.P2Action.UseAction(PlayerActionType.Dig); if (tileP1.TileType == TileType.Mine) { tileP1.Raise(); if (tileP1.TowerActive) { _world.P1Resources.RemoveResource(tileP1.ResourceType); } _worldCreator.MakePlainP1(tile); tile.RemoveHoleSprite(); _worldCreator.ViewTilesMultiArrayPlayerOne[(int)tile.worldPosition.x, (int)tile.worldPosition.y].RemoveHoleSprite(); } _worldCreator.MakePlainP2(tile); tile.RemoveMountain(); break; default: break; } }
// Start is called before the first frame update void Start() { viewTileScript = FindObjectOfType <ViewTile>(); buttonComponent.onClick.AddListener(OnClick); Text[] texts; texts = GetComponentsInChildren <Text>(); nameText = texts[0]; levelText = texts[1]; Hide(); }
void Start() { Player1Turn(); _worldCreator.GenerateWorld(_world); _p1PositionTile = _worldCreator.ViewTilesMultiArrayPlayerOne[0, 0]; _p2PositionTile = _worldCreator.ViewTilesMultiArrayPlayerTwo[5, 0]; Player1.transform.position = _p1PositionTile.transform.position; Player2.transform.position = _p2PositionTile.transform.position; }
private void CalculateView() { Camera camera = FindObjectOfType <Camera>(); CameraControler cameraControler = camera.GetComponent <CameraControler>(); float cameraSize = cameraControler.GetSize(); cameraSize = Mathf.Ceil(cameraSize); viewWidth = (int)cameraSize; viewHeight = (int)cameraSize * 2; int fullViewWidth = viewWidth + 2; int fullViewHeight = viewHeight + 2; int numberOfViewTiles = fullViewWidth * fullViewHeight; viewTiles = new GameObject[numberOfViewTiles]; float startX = camera.transform.position.x - (cameraSize / 2 + 1); float startY = camera.transform.position.y - (cameraSize + 1); // Limit view tiles to map limits startX = Mathf.Clamp(startX, 0, mapWidth - cameraControler.GetSize()); startY = Mathf.Clamp(startY, 0, mapHeight - cameraControler.GetSize()); startX = Mathf.Floor(startX); startY = Mathf.Floor(startY); float unitSize = 1.00f; // wi - width index // hi - height index for (int wi = 0; wi < fullViewWidth; wi++) { for (int hi = 0; hi < fullViewHeight; hi++) { Vector2 newPosition = new Vector2(startX + wi * unitSize, startY + hi * unitSize); GameObject newViewTile = Instantiate(viewTilePrefab, newPosition, Quaternion.identity) as GameObject; newViewTile.transform.parent = this.transform; newViewTile.name = "viewTile [" + wi + "][" + hi + "]"; ViewTile vt = newViewTile.GetComponent <ViewTile>(); vt.x = (int)startX + wi; vt.y = (int)startY + hi; viewTiles[wi * fullViewHeight + hi] = newViewTile; } } }
public void MakeTowerP2(ViewTile tile) { switch (World.P2Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y].ResourceType) { case ResourceType.Red: tile.TowerSpriteRenderer.sprite = TowerSpritesP2[0]; break; case ResourceType.Green: tile.TowerSpriteRenderer.sprite = TowerSpritesP2[1]; break; case ResourceType.Blue: tile.TowerSpriteRenderer.sprite = TowerSpritesP2[2]; break; } }
private void MoveP2(ViewTile tile) { if (!_world.P2Action.CanUseAction(PlayerActionType.Move)) { return; } var movesOverX = Math.Abs(_p2PositionTile.worldPosition.x - tile.worldPosition.x) == 1 && Math.Abs(_p2PositionTile.worldPosition.y - tile.worldPosition.y) == 0; var movesOverY = Math.Abs(_p2PositionTile.worldPosition.x - tile.worldPosition.x) == 0 && Math.Abs(_p2PositionTile.worldPosition.y - tile.worldPosition.y) == 1; if (movesOverX || movesOverY) { _world.P2Action.UseAction(PlayerActionType.Move); _p2PositionTile = tile; Player2.transform.position = tile.transform.position; audioSource.PlayOneShot(BuildSFX); } }
void OnClick() { ViewTile.ButtonClicked(); }
public void MakeMountainP2(ViewTile tile) { MakeMountainP2((int)tile.worldPosition.x, (int)tile.worldPosition.y); }
public void MakePlainP1(ViewTile tile) { MakePlainP1((int)tile.worldPosition.x, (int)tile.worldPosition.y); }