private void GenerateMapVisuals() { for (int x = 0; x < mapSizeX; x++) { for (int y = 0; y < mapSizeY; y++) { TileType tt = tileTypes[tiles[x, y]]; GameObject go = Instantiate(tt.tileVisualPrefab, new Vector3(x, y, 0), Quaternion.identity, transform); SelectableTile st = go.GetComponent <SelectableTile>(); st.tileX = x; st.tileY = y; st.map = this; } } for (int x = 0; x < mapSizeX; x++) { for (int y = 0; y < mapSizeY; y++) { graph[x, y].redHighlight = Instantiate(redHighlight, new Vector2(x + 0.5f, y + 0.5f), Quaternion.identity, transform); graph[x, y].blueHighlight = Instantiate(blueHighlight, new Vector2(x + 0.5f, y + 0.5f), Quaternion.identity, transform); graph[x, y].redHighlight.SetActive(false); graph[x, y].blueHighlight.SetActive(false); } } }
void Start() { int index = 0; if (POIData.CurrentDirection == "") { int loopCount = 5; do { index = Random.Range(0, Tile.Neighbors.Count); loopCount--; if (loopCount <= 0) { break; } } while (Tile.Neighbors [index].PointOfInterest == POIkind.Current && Tile.Neighbors [index].GetComponentInChildren <Current> ().Target == this.Tile); } else { for (int i = 0; i < Tile.Neighbors.Count; i++) { if ((Tile.Neighbors [i].AbsBoardCoords.x > Tile.AbsBoardCoords.x && POIData.CurrentDirection == "right") || (Tile.Neighbors [i].AbsBoardCoords.x < Tile.AbsBoardCoords.x && POIData.CurrentDirection == "left") || (Tile.Neighbors [i].AbsBoardCoords.y > Tile.AbsBoardCoords.y && POIData.CurrentDirection == "up") || (Tile.Neighbors [i].AbsBoardCoords.y < Tile.AbsBoardCoords.y && POIData.CurrentDirection == "down")) { index = i; } } } Target = Tile.Neighbors [index]; RotateToTarget(Target); }
public void MoveToTile(SelectableTile tile, bool spendEnergy, bool teleport) { float arrowsDelay = teleport ? 0.0f : 1.5f; if (!spendEnergy) { if (teleport) { transform.position = tile.transform.position; } else { mover.MoveToPoint(tile.transform.position); } CurrentTile = tile; return; } origin = CurrentTile; // currently only happens on non-free movement if (teleport) { transform.position = tile.transform.position; } else { mover.MoveToPoint(tile.transform.position); } CurrentTile = tile; }
public List <SelectableTile> GetDiagonalTileNeighbors(SelectableTile tile) { List <SelectableTile> neighbors = new List <SelectableTile> (); if (tile.AbsBoardCoords.x + 1 < Tiles.GetLength(0)) { if (tile.AbsBoardCoords.y + 1 < Tiles.GetLength(0)) { neighbors.Add(Tiles [tile.AbsBoardCoords.x + 1, tile.AbsBoardCoords.y + 1]); } if (tile.AbsBoardCoords.y - 1 >= 0) { neighbors.Add(Tiles [tile.AbsBoardCoords.x + 1, tile.AbsBoardCoords.y - 1]); } } if (tile.AbsBoardCoords.x - 1 >= 0) { if (tile.AbsBoardCoords.y + 1 < Tiles.GetLength(0)) { neighbors.Add(Tiles [tile.AbsBoardCoords.x - 1, tile.AbsBoardCoords.y + 1]); } if (tile.AbsBoardCoords.y - 1 >= 0) { neighbors.Add(Tiles [tile.AbsBoardCoords.x - 1, tile.AbsBoardCoords.y - 1]); } } return(neighbors); }
void GenerateMapVisual() { tileMap = new SelectableTile[mapSizeX, mapSizeY]; RectTransform rt = GetComponent <RectTransform>(); for (int x = 0; x < mapSizeX; x++) { for (int y = 0; y < mapSizeY; y++) { TileType tt = tileTypes[tiles[x, y]]; GameObject go = Instantiate(tt.tileVisualPrefab, new Vector2(x * 100, y * 100), Quaternion.identity) as GameObject;//, this.transform, false) as GameObject; go.transform.SetParent(MapParent.transform, false); SelectableTile st = go.GetComponent <SelectableTile>(); st.tileMap = this; st.xLoc = x; st.yLoc = y; tileMap[x, y] = st; if (x + 1 == mapSizeX) { rt.sizeDelta = new Vector2(x * 100 + 100, y * 100 + 100); } } } }
void SpawnPOI(SelectableTile tile) { GameObject prefabObject; switch (tile.PointOfInterest) { case POIkind.Altar: prefabObject = AltarIslandPrefab; break; case POIkind.Portal: prefabObject = PortalIslandPrefab; break; case POIkind.Mission: prefabObject = MissionPrefab; break; case POIkind.Chest: prefabObject = ChestPrefab; break; case POIkind.Current: prefabObject = CurrentPrefab; break; case POIkind.Obstacle: prefabObject = ObstaclePrefab; break; case POIkind.Observatory: prefabObject = ObservatoryPrefab; break; default: prefabObject = null; break; } if (prefabObject != null) { GameObject poiOBject = Instantiate(prefabObject) as GameObject; poiOBject.transform.SetParent(tile.transform); poiOBject.transform.position = new Vector3(tile.transform.position.x, tile.transform.position.y, 0); if (!Player.Instance.POIDataByTiles.ContainsKey(tile.BoardCoordsAsString)) { POIData poiData = poiOBject.GetComponentInChildren <PointOfInterest> ().POIData; Player.Instance.POIDataByTiles.Add(tile.BoardCoordsAsString, poiData); Player.Instance.POIDatas.Add(poiData); } else { poiOBject.GetComponentInChildren <PointOfInterest> ().POIData = Player.Instance.POIDataByTiles [tile.BoardCoordsAsString]; if (poiOBject.GetComponentInChildren <PointOfInterest> ().POIData.POIkind == POIkind.Chest && poiOBject.GetComponentInChildren <PointOfInterest> ().POIData.Interacted) { poiOBject.SetActive(false); } } } }
void BattleShip_OnDamageTaken(BattleShip sender, BodyPart bodyPart, bool block, int amount) { // ShowFlyingText ("-" + amount + " HP", Color.red); if (sender.HP <= 0) { SelectableTile portalTile = Board.Instance.FindTileWithPOIKind(POIkind.Portal); MoveToTile(portalTile, false, true); ShowFlyingText(("-" + 3), Color.red); Player.Instance.Energy -= 3; } }
void Start() { mover.EnergyPerDistance = EnergyPerDistance; Collider2D[] otherColliders = Physics2D.OverlapCircleAll(transform.position, 0.1f); foreach (var otherCollider in otherColliders) { if (otherCollider.gameObject.GetComponent <SelectableTile> () != null) { CurrentTile = otherCollider.gameObject.GetComponent <SelectableTile> (); } } InitialParticlesPosition = ShootParticles.gameObject.transform.position; BattleShip.ShipData = ShipData; BattleShip.MaxHP = ShipData.HP; BattleShip.HP = ShipData.HP; }
public void FindTiles() { Collider2D[] otherColliders = Physics2D.OverlapCircleAll(transform.position, 0.1f); foreach (var otherCollider in otherColliders) { if (otherCollider.gameObject.GetComponent <SelectableTile> () != null) { Tile = otherCollider.gameObject.GetComponent <SelectableTile> (); } } AdjacentTiles = new List <SelectableTile> (); otherColliders = Physics2D.OverlapCircleAll(transform.position, AdjacentRadius); foreach (var otherCollider in otherColliders) { if (otherCollider.gameObject.GetComponent <SelectableTile> () != null) { AdjacentTiles.Add(otherCollider.gameObject.GetComponent <SelectableTile> ()); } } }
public void MoveToTile(SelectableTile tile, bool spendEnergy, bool teleport) { float arrowsDelay = teleport ? 0.0f : 1.5f; if (!spendEnergy) { if (teleport) { mover.Stop(); transform.position = tile.transform.position; } else { mover.MoveToPoint(tile.transform.position); } CurrentTile = tile; HideArrows(); Invoke("ShowArrows", arrowsDelay); return; } if (player.Energy >= EnergyPerDistance * 1) { player.Energy -= EnergyPerDistance * 1; origin = CurrentTile; // currently only happens on non-free movement if (teleport) { transform.position = tile.transform.position; } else { mover.MoveToPoint(tile.transform.position); } CurrentTile = tile; HideArrows(); Invoke("ShowArrows", arrowsDelay); } else { UIOverlay.Instance.OpenEnergyPopup(); } }
void Start() { mover.EnergyPerDistance = EnergyPerDistance; Collider2D[] otherColliders = Physics2D.OverlapCircleAll(transform.position, 0.1f); foreach (var otherCollider in otherColliders) { if (otherCollider.gameObject.GetComponent <SelectableTile> () != null) { CurrentTile = otherCollider.gameObject.GetComponent <SelectableTile> (); } } if (Player.Instance.CurrentShipData.Special == "Diagonal") { foreach (var arrow in Arrows) { arrow.transform.RotateAround(transform.position, Vector3.forward, 45.0f); } } HideArrows(); ShowArrows(); CargoSlider.value = Player.Instance.RewardChests.Count; ShipSprite.sprite = Player.Instance.CurrentShipData.Sprite; if (Player.Instance.CurrentShipData.Special == "Cargo") { RewardChestsCapacity++; CargoSlider.maxValue = RewardChestsCapacity; } BattleShip.ShipData = Player.Instance.CurrentShipData; BattleShip.MaxHP = Player.Instance.CurrentShipData.HP; BattleShip.HP = Player.Instance.CurrentShipData.HP; BattleShip.Attack = Player.Instance.CurrentShipData.Attack; BattleShip.AttackSpeed = Player.Instance.CurrentShipData.AttackSpeed; BattleShip.AttacksCount = Player.Instance.CurrentShipData.AttacksCount; BattleShip.BlocksCount = Player.Instance.CurrentShipData.BlocksCount; }
void RotateToTarget(SelectableTile target) { if (target.AbsBoardCoords.x > Tile.AbsBoardCoords.x) { CurrentSprite.gameObject.transform.eulerAngles = new Vector3(0.0f, 0.0f, 0.0f); POIData.CurrentDirection = "right"; } if (target.AbsBoardCoords.x < Tile.AbsBoardCoords.x) { CurrentSprite.gameObject.transform.eulerAngles = new Vector3(0.0f, 0.0f, 180.0f); POIData.CurrentDirection = "left"; } if (target.AbsBoardCoords.y > Tile.AbsBoardCoords.y) { CurrentSprite.gameObject.transform.eulerAngles = new Vector3(0.0f, 0.0f, 90.0f); POIData.CurrentDirection = "up"; } if (target.AbsBoardCoords.y < Tile.AbsBoardCoords.y) { CurrentSprite.gameObject.transform.eulerAngles = new Vector3(0.0f, 0.0f, 270.0f); POIData.CurrentDirection = "down"; } }