Example #1
0
 public void SetGameObjectPrefab(UnityObject selectedPrefab)
 {
     unityObject   = selectedPrefab;
     map.zoneSizeX = (int)unityObject.SizeInTiles().x;
     map.zoneSizeY = (int)unityObject.SizeInTiles().z;
     SetObjectPlacementMode();
     map.zoneBrightness = Constants.INACTIVE_TILE;
 }
Example #2
0
        public bool PlaceGameObjectOnSelectedTile(BaseTile selectedTile, UnityObject _unityObject)
        {
            if (CheckRestrictions(selectedTile, _unityObject) && IsTileAvailable(selectedTile, _unityObject))
            {
                UnityObject clone = Instantiate(_unityObject, selectedTile.transform);
                selectedTile.unityObject = clone;

                //deactivate surrounding Tiles regarding Objects size
                Vector3 sizeInTiles = _unityObject.SizeInTiles();
                zoneSizeX = (int)sizeInTiles.x;
                zoneSizeY = (int)sizeInTiles.z;
                if (adminAccess)
                {
                    this.UpdateZoneOfTiles(selectedTile.Coordinate, State.Available, State.Off);
                }
                else
                {
                    this.UpdateZoneOfTiles(selectedTile.Coordinate, State.Available, State.Unavailable);
                }

                return(true);
            }

            return(false);
        }
Example #3
0
        private bool IsTileAvailable(BaseTile selectedTile, UnityObject unityObject)
        {
            Vector2Int coordinateInt = new Vector2Int((int)selectedTile.Coordinate.x, (int)selectedTile.Coordinate.y);
            int        halfZoneSizeX = (int)(unityObject.SizeInTiles().x / 2.0); //round down
            int        halfZoneSizeY = (int)(unityObject.SizeInTiles().z / 2.0); //round down
            //makes an uneven Zone symmetric
            int symmetricOffsetX = -1;

            if (unityObject.SizeInTiles().x % 2 == 0)
            {
                symmetricOffsetX = 0;
            }
            int symmetricOffsetY = -1;

            if (unityObject.SizeInTiles().z % 2 == 0)
            {
                symmetricOffsetY = 0;
            }
            for (int x = coordinateInt.x - halfZoneSizeX; x < coordinateInt.x + halfZoneSizeX - symmetricOffsetX; x++)
            {
                for (int y = coordinateInt.y - halfZoneSizeY; y < coordinateInt.y + halfZoneSizeY - symmetricOffsetY; y++)
                {
                    if (!OutsideGrid(x, y))
                    {
                        BaseTile tile = GetTileByCoordinates(x, y);
                        if (tile.State == State.Unavailable || tile.State == State.Off)
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }