private Building ConstructBuilding(Transform root, BuildingConfig buildingConfig, bool isBuildingIn) { var floorScheme = BuildingsDatabase.GetRandomFloorScheme(); var segmentSize = new SegmentSize() { Width = floorScheme.segmentWidth, Height = floorScheme.segmentHeight, Depth = floorScheme.segmentDepth }; var building = new Building(ItemsSpawner, segmentSize, buildingConfig) { root = root, isBuildingIn = isBuildingIn }; Vector3 position = root.position; Quaternion rotation = root.rotation; GenerateFloor(ref building, floorScheme, root, position, root.rotation, 0, FloorType.GroundFloor); int index = 1; for (; index <= buildingConfig.buildingFloorsCount; index++) { position += new Vector3(0f, floorScheme.segmentHeight, 0f); GenerateFloor(ref building, floorScheme, root, position, root.rotation, index, FloorType.MiddleFloor); } position += new Vector3(0f, floorScheme.segmentHeight, 0f); var roofScheme = BuildingsDatabase.GetRandomRoofScheme(); GenerateFloor(ref building, roofScheme, root, position, root.rotation, index, FloorType.Roof); return(building); }
/// <summary> /// Metoda inicjalizuje panel Standardowych budowli - wypełnia go przyciskami /// </summary> public void EditMode_InitializePrestigeBuildingsButtons() { GameObject[] prestigeBuildings = BuildingsDatabase.GetBuildingsByType(BuildingType.Prestige); Dictionary <GameObject, Building> temp = new Dictionary <GameObject, Building>(); // Pobieranie listy budynków foreach (GameObject building in prestigeBuildings) { Building buildingScript = building.GetComponent <Building>(); if (buildingScript != null) { temp.Add(building, buildingScript); } } // Inicjalizowanie budynków foreach (KeyValuePair <GameObject, Building> building in temp.OrderBy(x => x.Value.iBaseCost)) { // Tworznie obiektu przycisku i wrzucanie go do kontenera GameObject buildingInfoPanel = GameObject.Instantiate(EditMode_BuildingPanelPrefab); buildingInfoPanel.transform.SetParent(EditMode_PrestigeBuildingsContent.transform, false); EditMode_BuildingInfoPanelScript infoPanelScript = buildingInfoPanel.GetComponent <EditMode_BuildingInfoPanelScript>(); if (infoPanelScript != null) { infoPanelScript.Initialize(building.Value, building.Key); } } }
private void Awake() { if (Instance == null) { Instance = this; } else { Destroy(gameObject); return; } if (buildables == null || buildables.Length <= 0) { return; } /////GENERATE POOLS buildPools = new Queue <Buildable> [buildables.Length]; for (int i = 0; i < buildPools.Length; i++) { Queue <Buildable> buildQueue = new Queue <Buildable>(); for (int j = 0; j < buildables[i].amount; j++) { Buildable b = (Buildable)Instantiate(buildables[i].buildPrefab, transform.position, Quaternion.identity); buildQueue.Enqueue(b); b.gameObject.SetActive(false); } buildPools[i] = buildQueue; } }
void LoadBuildings() { // Jeżeli jakiekolwiek budowle są zapisane we właściwości if (Buildings != null) { foreach (SerializableBuilding serializableBuilding in Buildings) { // Pobieranie budynków z bazy danych GameObject[] dbBuildings = BuildingsDatabase.GetBuildingsByType(serializableBuilding.BuildingType); foreach (GameObject dbBuilding in dbBuildings) { // Wczytywanie skryptu danego budynku w celu znalezienia odpowiedniego budynku po nazwie Building dbBuildingScript = dbBuilding.GetComponent <Building>(); if (dbBuildingScript != null) { if (dbBuildingScript.Name == serializableBuilding.BuildingName) { // Znaleziono budynek - tworzenie obiektu budynku i przypisanie go do grupy Buildings GameObject objInst = GameObject.Instantiate(dbBuilding); objInst.transform.SetParent(Helper.GetBuildingsGroup().transform, true); Building instanceScript = objInst.GetComponent <Building>(); if (instanceScript != null) { Building.CopyValues(dbBuilding, objInst); instanceScript.LoadBuilding(serializableBuilding); } } } } } } }
void Start() { // Wczytywanie bazy danych budynków BuildingsDatabase.LoadDatabase(); TimeToCollectShit = 0f; if (SaveManager.LoadData()) { Helper.GetGUIManager().GameStats_SetCurrentMoneyInfo(GameStats.Instance.CurrentMoney); } // Skrypt 'zbierający' shit z budynków co 30 sekund InvokeRepeating("CollectMoney", 0f, 30f); }
private void Awake() { Instance = this; }