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);
            }
        }
    }
Example #2
0
    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);
    }
Example #3
0
    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;
    }
Example #4
0
    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);
    }
Example #5
0
    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);
                }
            }
        }
    }
Example #6
0
    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);
                }
            }
        }
    }
Example #7
0
    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;
        }
    }
Example #8
0
    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;
    }
Example #9
0
 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> ());
         }
     }
 }
Example #10
0
    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();
        }
    }
Example #11
0
    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;
    }
Example #12
0
 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";
     }
 }