Example #1
0
    void Update()
    {
        towerAttached = FindObjectOfType <GameManagerScript>().HasTowerAttached();
        mousePosition = Input.mousePosition;

        canBePlaceOnWater = FindObjectOfType <Tower>().IsAbleToPlaceOnWater();

        if (mousePosition != lastMousePosition && !isPlaced)
        {
            Vector3 mousePositionWorld = Camera.main.ScreenToWorldPoint(mousePosition);

            target             = GetClosedGridPosition(mousePositionWorld);
            transform.position = new Vector3(target.position.x, target.position.y, -4);

            GridAlignScript.TileGenre currentTileGenre = gridAlignScript.GetTile(target)._genre;

            if (currentTileGenre == GridAlignScript.TileGenre.Blocked || currentTileGenre == GridAlignScript.TileGenre.Path)
            {
                if (currentTileGenre == GridAlignScript.TileGenre.Water && !canBePlaceOnWater)
                {
                    overlay.color = new Color(255, 0, 0, 0.3f);
                    canBePlaced   = false;
                }
                overlay.color = new Color(255, 0, 0, 0.3f);
                canBePlaced   = false;
            }
            else if (currentTileGenre == GridAlignScript.TileGenre.Valid && !canBePlaceOnWater)
            {
                overlay.color = new Color(0, 255, 0, 0.3f);
                canBePlaced   = true;
            }
            else if (currentTileGenre == GridAlignScript.TileGenre.Water && canBePlaceOnWater)
            {
                overlay.color = new Color(0, 255, 0, 0.3f);
                canBePlaced   = true;
            }
        }

        if (isPlaced)
        {
            overlay.color = new Color(0, 0, 0, 0);
        }

        if (Input.GetKeyDown(KeyCode.A))
        {
            UnPlace();
        }

        lastMousePosition = mousePosition;
    }
 public Tile(GameObject obj, GridAlignScript.TileGenre genre)
 {
     _obj   = obj;
     _genre = genre;
 }