Exemple #1
0
    //void Search(BoardGenerator.Cell start, int range, TargetType type)
    //{
    //    int cx = (int)start.index.x, cy = (int)start.index.y; //get center xy

    //    for (int x = cx - range; x <= cx + range; x++) //from left to right
    //    {
    //        int val = cx - x;
    //        val = Mathf.Abs(val);
    //        val = range - val;  //closer to leftmost,rightmost, y range will be lowest
    //        for (int y = cy - val; y <= cy + val; y++)
    //        {
    //            BoardGenerator.Cell temp = GameManagerScript.getBoard().isValidCell(new Vector2(x, y));
    //            if (temp != null)
    //            {
    //                checking(temp, type);
    //            }
    //        }
    //    }
    //}

    //void checking(BoardGenerator.Cell cell, TargetType type)
    //{
    //    switch (type)
    //    {
    //        case TargetType.Empty:
    //            {
    //                if (!cell.occupiedObject)
    //                    availableCells.Add(cell);
    //                break;
    //            }
    //        case TargetType.Ally:
    //            {
    //                if (cell.occupiedObject)
    //                    if (cell.occupiedObject.tag == "Ally")
    //                        availableCells.Add(cell);
    //                break;
    //            }
    //        case TargetType.Enemy:
    //            {
    //                if (cell.occupiedObject)
    //                    if (cell.occupiedObject.tag == "Enemy")
    //                        availableCells.Add(cell);
    //                break;
    //            }
    //        default:
    //            break;
    //    }
    //}

    public void Clicked(ClickerTile tile)
    {
        if (tile.tileType != ClickerTile.TileType.Range)
        {
            _func(tile);
            CloseTiles();
        }
    }
Exemple #2
0
    protected int HolyCleave(ClickerTile tile)
    {
        GameObject target = tile.gmc.currentCell.occupiedObject;

        target.GetComponent <Stats>().hurt(stats.getDamage * 2, Stats.DamageType.True);
        numActions--;
        GameManagerScript.SubtractAction();
        return(0);
    }
Exemple #3
0
    protected int ClawSwipe(ClickerTile tile)
    {
        GameObject target = tile.gmc.currentCell.occupiedObject;

        target.GetComponent <Stats>().hurt(2 + stats.getNimBleness, Stats.DamageType.True);
        numActions--;
        GameManagerScript.SubtractAction();
        return(0);
    }
Exemple #4
0
    protected int Heal(ClickerTile tile)
    {
        int        amount = 10; // TODO change to stats;
        GameObject target = tile.gmc.currentCell.occupiedObject;

        target.GetComponent <Stats>().heal(amount);
        numActions--;
        GameManagerScript.SubtractAction();
        return(0);
    }
Exemple #5
0
    int Move(ClickerTile tile)
    {
        if (numMoves > 0)
        {
            GameManagerScript.getBoard().MoveToCell(tile.gmc.currentCell.index, gameObject, m_moveControl);
            numMoves--;
            GameManagerScript.SubtractAction();
        }

        else if (numActions > 0)
        {
            GameManagerScript.getBoard().MoveToCell(tile.gmc.currentCell.index, gameObject, m_moveControl);
            numActions--;
            GameManagerScript.SubtractAction();
        }
        return(0);
    }
Exemple #6
0
    public void setupClickBoard(BoardGenerator.Cell start, int range, TargetType type, bool Attack, System.Func <ClickerTile, int> func)
    {
        _func = func;
        foreach (var item in ClickTiles)
        {
            item.gameObject.SetActive(false);
        }

        int cx = (int)start.index.x, cy = (int)start.index.y; //get center xy

        switch (type)
        {
        case TargetType.Empty:
        {
            List <BoardGenerator.Cell> walkable = new List <BoardGenerator.Cell>();
            for (int x = cx - range; x <= cx + range; x++)         //from left to right
            {
                int val = cx - x;
                val = Mathf.Abs(val);
                val = range - val;          //closer to leftmost,rightmost, y range will be lowest
                for (int y = cy - val; y <= cy + val; y++)
                {
                    BoardGenerator.Cell temp = GameManagerScript.getBoard().isValidCell(new Vector2(x, y));
                    if (temp != null)
                    {
                        if (!temp.occupiedObject)
                        {
                            walkable.Add(temp);
                        }
                    }
                }
            }
            foreach (var cell in walkable)
            {
                ClickerTile temptile = null;
                //If have any available tile
                foreach (var tile in ClickTiles)
                {
                    if (!tile.used)
                    {
                        //get tile ref
                        temptile = tile;
                        break;
                    }
                }
                if (temptile == null)
                {
                    //else instantiate a new one
                    GameObject temp = Instantiate(dot, transform);
                    temptile = temp.GetComponent <ClickerTile>();
                    temptile.setClicker(this);
                    ClickTiles.Add(temptile);
                }
                //set position
                GridMovementController gmc = temptile.GetComponent <GridMovementController>();
                GameManagerScript.getBoard().MoveToCell(cell.index, temptile.gameObject, gmc);
                //set active
                temptile.TurnOn(ClickerTile.TileType.Walkable);
            }
            break;
        }

        case TargetType.Ally:
        case TargetType.Enemy:
        {
            List <BoardGenerator.Cell> withinRange = new List <BoardGenerator.Cell>();
            for (int x = cx - range; x <= cx + range; x++)         //from left to right
            {
                int val = cx - x;
                val = Mathf.Abs(val);
                val = range - val;          //closer to leftmost,rightmost, y range will be lowest
                for (int y = cy - val; y <= cy + val; y++)
                {
                    BoardGenerator.Cell temp = GameManagerScript.getBoard().isValidCell(new Vector2(x, y));
                    if (temp != null)
                    {
                        withinRange.Add(temp);
                    }
                }
            }
            foreach (var cell in withinRange)
            {
                ClickerTile temptile = null;
                //If have any available tile
                foreach (var tile in ClickTiles)
                {
                    if (!tile.used)
                    {
                        //get tile ref
                        temptile = tile;
                        break;
                    }
                }
                if (temptile == null)
                {
                    //else instantiate a new one
                    GameObject temp = Instantiate(dot, transform);
                    temptile = temp.GetComponent <ClickerTile>();
                    temptile.setClicker(this);
                    ClickTiles.Add(temptile);
                }
                //set position
                GridMovementController gmc = temptile.GetComponent <GridMovementController>();
                GameManagerScript.getBoard().MoveToCell(cell.index, temptile.gameObject, gmc);
                //set active
                if (!cell.occupiedObject)
                {
                    temptile.TurnOn(ClickerTile.TileType.Range);
                }
                else
                {
                    if (cell.occupiedObject.tag == "Ally")
                    {
                        if (type == TargetType.Ally)
                        {
                            if (Attack)
                            {
                                temptile.TurnOn(ClickerTile.TileType.Attackable);
                            }
                            else
                            {
                                temptile.TurnOn(ClickerTile.TileType.Healable);
                            }
                        }
                        else
                        {
                            temptile.TurnOn(ClickerTile.TileType.Range);
                        }
                    }
                    else if (cell.occupiedObject.tag == "Enemy")
                    {
                        if (type == TargetType.Enemy)
                        {
                            if (Attack)
                            {
                                temptile.TurnOn(ClickerTile.TileType.Attackable);
                            }
                            else
                            {
                                temptile.TurnOn(ClickerTile.TileType.Healable);
                            }
                        }
                        else
                        {
                            temptile.TurnOn(ClickerTile.TileType.Range);
                        }
                    }
                    else
                    {
                        temptile.TurnOn(ClickerTile.TileType.Range);
                    }
                }
            }
            break;
        }

        default:
            break;
        }
        //Search(start, range, type);

        //foreach (var item in availableCells)
        //{
        //    ClickerTile temptile = null;
        //    //If have any available tile
        //    foreach (var tile in ClickTiles)
        //    {
        //        if (!tile.used)
        //        {
        //            //get tile ref
        //            temptile = tile;
        //            break;
        //        }
        //    }
        //    if (temptile == null)
        //    {
        //        //else instantiate a new one
        //        GameObject temp = Instantiate(dot, transform);
        //        temptile = temp.GetComponent<ClickerTile>();
        //        temptile.setClicker(this);
        //        ClickTiles.Add(temptile);
        //    }
        //    //set position
        //    GridMovementController gmc = temptile.GetComponent<GridMovementController>();
        //    GameManagerScript.getBoard().MoveToCell(item.index, temptile.gameObject, gmc);
        //    //set active
        //    temptile.gameObject.SetActive(true);
        //    temptile.used = true;
        //}
    }