Ejemplo n.º 1
0
    private void SearchForTile()
    {
        Ray        ray = mainCam.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            if (hit.transform.tag.Equals("Tile"))
            {
                selectedTile       = hit.transform.gameObject;
                selectedTileScript = hit.transform.GetComponent <TileIndicator>();
                selectedTilePos    = hit.transform.position;
                if (selectedUnitIsWorker)
                {
                    if (selectedTileScript.isOccupied == false && hit.transform.GetComponent <Tile>().hasCrystals)
                    {
                        selectedTileScript.thisTileSelected = true;
                        isDropable = true;
                    }
                }
                else if (selectedTileScript.isOccupied == false)
                {
                    selectedTileScript.thisTileSelected = true;
                    isDropable = true;
                }
            }
        }
    }
    // Use this for initialization
    void Start()
    {
        for (int i = 0; i < Constant.mapX; i++)
        {
            for (int j = 0; j < Constant.mapY; j++)
            {
                GameObject tile = (GameObject)Instantiate(Resources.Load("TileIndicator")
                                                          , new Vector3((float)(i * Constant.tileSize + Constant.tileOffSetX)
                                                                        , (float)(j * Constant.tileSize + Constant.tileOffSetY), 0), Quaternion.identity);
                tile.transform.parent = gameObject.transform;
                TileIndicator tileIndicator = tile.GetComponent <TileIndicator>();
                tileIndicator.tileX = i;
                tileIndicator.tileY = j;
                map[i, j]           = tile;
            }
        }
        ///Add cat
        Instantiate(Resources.Load("Cat")
                    , new Vector3((float)(5 * Constant.tileSize + Constant.tileOffSetX)
                                  , (float)(4 * Constant.tileSize + Constant.tileOffSetY), 0), Quaternion.identity);

        Instantiate(Resources.Load("Cat")
                    , new Vector3((float)(3 * Constant.tileSize + Constant.tileOffSetX)
                                  , (float)(4 * Constant.tileSize + Constant.tileOffSetY), 0), Quaternion.identity);
    }
Ejemplo n.º 3
0
    //End #2

    private void OnMouseDown()
    {
        //#3 If there is a selected object need to move to new tile
        if (OnGoingProperties.selectedObject != null)
        {
            GameObject    srcTile       = OnGoingProperties.selectedObject;
            TileIndicator tileIndicator = srcTile.GetComponent <TileIndicator>();
            if (switchToMoveTile && gameObjectInMap == null)
            {
                ArrayList moveTiles = OnGoingProperties.selectedMoveTiles;
                if (moveTiles != null)
                {
                    StartCoroutine(yeahWait(srcTile, moveTiles));
                }
            }
            else
            {
                tileIndicator.gameObjectInMap.ChangeState(0);
            }
            showMovementTile(tileIndicator.gameObjectInMap.gameObjectStats.movement, tileIndicator.tileX, tileIndicator.tileY, false);
            clearPreviousPath();
            OnGoingProperties.selectedObject    = null;
            OnGoingProperties.selectedMoveTiles = null;
            return;
        }
        //#End #3
        if (gameObjectInMap != null)
        {
            gameObjectInMap.ChangeState(2);
            OnGoingProperties.selectedObject = gameObject;
            showMovementTile(gameObjectInMap.gameObjectStats.movement, tileX, tileY, true);
        }
    }
Ejemplo n.º 4
0
    //#1 Create path to the destination
    public void createPathToDestination(GameObject src, GameObject des, GameObject[,] map)
    {
        clearPreviousPath();
        movableTiles = null;
        TileIndicator srcTile      = src.GetComponent <TileIndicator>();
        TileIndicator desTile      = des.GetComponent <TileIndicator>();
        int           incrementalX = (desTile.tileX - srcTile.tileX > 0) ? 1 : -1;
        int           incrementalY = (desTile.tileY - srcTile.tileY > 0) ? 1 : -1;

        int moveX = Math.Abs(desTile.tileX - srcTile.tileX);
        int moveY = Math.Abs(desTile.tileY - srcTile.tileY);
        int move  = moveX + moveY;

        int curX = srcTile.tileX, curY = srcTile.tileY;

        while (move > 0)
        {
            bool blockX = false;
            bool blockY = false;
            while (!blockX && moveX > 0)
            {
                GameObject nextTile = map[curX + incrementalX, curY];
                ///check if tile is movable
                if (nextTile.GetComponent <TileIndicator>().isMoveAbleTile)
                {
                    addMovableTile(nextTile);
                    curX = curX + incrementalX;
                    moveX--;
                    move--;
                }
                else
                {
                    blockX = true;
                }
            }
            while (!blockY && moveY > 0)
            {
                GameObject nextTile = map[curX, curY + incrementalY];
                ///check if tile is movable
                if (nextTile.GetComponent <TileIndicator>().isMoveAbleTile)
                {
                    addMovableTile(nextTile);
                    curY = curY + incrementalY;
                    moveY--;
                    move--;
                }
                else
                {
                    blockY = true;
                }
            }
        }
        if (movableTiles != null)
        {
            OnGoingProperties.selectedMoveTiles = movableTiles;
        }
    }
Ejemplo n.º 5
0
    IEnumerator yeahWait(GameObject srcTile, ArrayList moveTiles)
    {
        foreach (GameObject tile in moveTiles)
        {
            StartCoroutine(moveObjectToNewPosition(srcTile, tile));
            yield return(new WaitUntil(() => !stillRunning));
        }
        TileIndicator tileIndicator = srcTile.GetComponent <TileIndicator>();

        gameObject.GetComponent <TileIndicator>().gameObjectInMap = tileIndicator.gameObjectInMap;
        tileIndicator.gameObjectInMap.ChangeState(0);
        tileIndicator.gameObjectInMap = null;
    }
 // Use this for initialization
 void Start()
 {
     animator          = GetComponent <Animator>();
     GameObject[,] map = AddingMovingIndicatorTile.map;
     for (int i = 0; i < map.GetLength(0); i++)
     {
         for (int j = 0; j < map.GetLength(1); j++)
         {
             if (map[i, j].transform.position == transform.position)
             {
                 TileIndicator tileIndicator = map[i, j].GetComponent <TileIndicator>();
                 tileIndicator.gameObjectInMap = this;
                 //Set up stats
                 gameObjectStats             = new GameObjectStats();
                 gameObjectStats.name        = "Cat";
                 gameObjectStats.movement    = 4;
                 gameObjectStats.attackRange = 1;
                 Debug.Log(map.GetLength(0));
                 break;
             }
         }
     }
 }
Ejemplo n.º 7
0
 void OnEnable()
 {
     nodeGraph     = target as NodeGraph;
     tileIndicator = FindObjectOfType <TileIndicator>();
 }