Example #1
0
    public void drawPath(HexCoordinates start, HexCoordinates goal, HexCell.CellState cellState)
    {
        AStarSearch    pathSearcher = new AStarSearch(this, start, goal);
        HexCoordinates node         = pathSearcher.cameFrom [goal] as HexCoordinates;

        do
        {
            HexCell cell = getCellByCubeCoordinates(node.X, node.Y);
            cell.changeState(cellState);
            node = pathSearcher.cameFrom[node] as HexCoordinates;
        } while (!node.Equals(start));
        getCellByCubeCoordinates(start.X, start.Y).changeState(cellState);
    }
Example #2
0
    //if can set unit return true else return false
    private bool canSetPosition(HexCoordinates coordinates)
    {
        if (coordinates.Equals(HexCoordinates.defaultCoordinate))
        {
            return(false);
        }

        if (!UnitBar.Instance.isPlay)
        {
            if (PhotonNetwork.isMasterClient)
            {
                if (!(coordinates.Y < HexGrid.mapDetail.area[0]))
                {
                    return(false);
                }
            }
            else
            {
                if (!(coordinates.Y > HexGrid.mapDetail.area[1]))
                {
                    return(false);
                }
            }
        }

        Vector3 position = HexCoordinates.cubeToOffset(coordinates);
        int     type     = UnitBar.Instance._hexGrid.cells[(int)(position.x + (position.z * UnitBar.Instance._hexGrid.width))].mapType;

        if (type == 1 || type == 2)
        {
            return(false);
        }

        for (int i = 0; i < UnitBar.Instance.Units.Count; i++)
        {
            if (this.Equals(UnitBar.Instance.Units[i]))
            {
                continue;
            }
            if (coordinates.Equals(UnitBar.Instance.Units[i].coordinate))
            {
                return(false);
            }
        }

        for (int i = 0; i < UnitBar.Instance.Towers.Count; i++)
        {
            if (coordinates.Equals(UnitBar.Instance.Towers[i].coordinate))
            {
                return(false);
            }
        }

        for (int i = 0; i < UnitBar.Instance.enemyUnits.Count; i++)
        {
            if (coordinates.Equals(UnitBar.Instance.enemyUnits[i].coordinate))
            {
                return(false);
            }
        }

        for (int i = 0; i < UnitBar.Instance.enemyTowers.Count; i++)
        {
            if (coordinates.Equals(UnitBar.Instance.enemyTowers[i].coordinate))
            {
                return(false);
            }
        }

        return(true);
    }