Example #1
0
    void SetPlacement(Tile HitTile, Vector3 rotation)
    {
        if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject())
        {
            _ToBuild.GetComponent <Building>()._Built = false;
            _TileMap.UpdateTile(HitTile.X, HitTile.Y, _ToBuild);
            //HitTile.GetComponent<Building>()._Built = false;
            Destroy(TempInstance);
            _TileMap.ClearTempTile();

            Building building = _TileMap.GetTileAtPos(HitTile.X, HitTile.Y).GetComponent <Building>();
            building.rotated            = rotateTile;
            building.transform.rotation = Quaternion.Euler(rotation);

            WorldController.GetWorldController._oreCount -= building._BuildCost;
            WorldController.GetWorldController._levelStatsController.OreUsed(building._BuildCost);
            //WorldController.GetWorldController._buildings.Add(building);
            CreateTask(building);
            BuildMenuScript.instance.FinishBuild();
            MouseSelectionController.Get().SetMode(MouseSelectionController.CurrentSelectionMode.Select);
            if (!Input.GetKey(KeyCode.LeftShift) || _worldController._oreCount < building._BuildCost)
            {
                _ToBuild = null;
            }
        }
    }
Example #2
0
 public void CancelBuild()
 {
     _ToBuild = null;
     MouseSelectionController.Get().SetMode(MouseSelectionController.CurrentSelectionMode.Select);
     BuildMenuScript.instance.FinishBuild();
     Destroy(TempInstance);
     _TileMap.ClearTempTile();
 }
Example #3
0
    void PlaceBuilding()
    {
        MouseSelectionController.Get().SetMode(MouseSelectionController.CurrentSelectionMode.PlaceBuildings);
        Vector3    MouseWorldPos = new Vector3();
        Ray        _ray          = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        Tile       HitTile = null;

        if (Physics.Raycast(_ray, out hit))
        {
            MouseWorldPos = hit.point;
            Vector2 pos = _TileMap.WorldSpaceToGridSpace(MouseWorldPos);
            HitTile = _TileMap.GetTileAtPos((int)pos.x, (int)pos.y);
            //HitTile = hit.transform.GetComponent<Tile>();
            if (HitTile == null)
            {
                HitTile = hit.transform.GetComponentInParent <Tile>();
            }
            if (!HitTile)
            {
                //_worldController.UIScript.ShowNotification("Can't build here!");
                Destroy(TempInstance);
                _TileMap.ClearTempTile();
                return;
            }
            if (HitTile.GetID() != (int)Tile.TileTypeID.DefaultTile)
            {
                //_worldController.UIScript.ShowNotification("Can't build here!");
                Destroy(TempInstance);
                _TileMap.ClearTempTile();
                return;
            }


            Building toBuild = _ToBuild.GetComponent <Building>();

            if (toBuild)
            {
                if (toBuild._BuildingSize != null)
                {
                    for (int i = 0; i < toBuild._BuildingSize.Length; i++)
                    {
                        Tile tile = _TileMap.GetTileAtPos(HitTile.X + (int)toBuild._BuildingSize[i].x,
                                                          HitTile.Y + (int)toBuild._BuildingSize[i].y);
                        if (tile)
                        {
                            if (tile.GetID() != (int)Tile.TileTypeID.DefaultTile)
                            {
                                if (HitTile.gameObject != TempInstance)
                                {
                                    Destroy(TempInstance);
                                    _TileMap.ClearTempTile();
                                    return;
                                }
                            }
                        }
                    }
                }
            }
        }
        else
        {
            Destroy(TempInstance);
            _TileMap.ClearTempTile();
            return;
        }

        Vector3 rotation;

        if (rotateTile)
        {
            rotation = new Vector3(0, 90, 0);
        }
        else
        {
            rotation = Vector3.zero;
        }

        //if (TempInstance.GetComponent<Building>())
        //{
        //    if (TempInstance.GetComponent<Building>().GetID() == _ToBuild.GetComponent<Building>().GetID())
        //    {
        //        SetPlacement(HitTile, rotation);
        //        return;
        //    }
        //}

        _TileMap.UpdateTile_Temp(HitTile.X, HitTile.Y, _ToBuild, ref TempInstance, false);
        TempInstance.transform.rotation = Quaternion.Euler(rotation);
        //TempInstance.GetComponent<Building>()._BuildingObject.SetActive(false);
        //TempInstance.GetComponent<Building>()._PreviewObject.SetActive(true);
        //TempInstance.GetComponent<Building>()._Built = false;
        //TempInstance.transform.rotation = Quaternion.Euler(rotation);


        SetPlacement(HitTile, rotation);
    }