public static BlockBuildingSite InstantiateNew(Vector3Int position, Block blockToBuild, Type itemRequired) { GameObject prefabObj = PrefabLoader.GetPrefab <GameObject>(prefabName); GameObject obj = Instantiate(prefabObj) as GameObject; if (!obj) { throw new System.Exception("Could not instantiate prefab " + prefabName); } GridActor actor = obj.GetComponent <GridActor>(); if (!actor) { throw new System.Exception("No GridActor on prefab " + prefabName); } actor.Move(position); BlockBuildingSite bbs = obj.GetComponent <BlockBuildingSite>(); if (!bbs) { throw new System.Exception("No BlockBuildingSite on prefab " + prefabName); } bbs.data.targetBlock = blockToBuild; bbs.data.itemRequired = itemRequired; return(bbs); }
public void CostPanel_Build() { switch (costPanelMode) { case CostPanelMode.SurfaceMaterialChanging: ResourceType rt = ResourceType.GetResourceTypeById(costPanel_selectedButton.y); if (colony.storage.CheckBuildPossibilityAndCollectIfPossible(new ResourceContainer[] { new ResourceContainer(rt, PlaneExtension.INNER_RESOLUTION * PlaneExtension.INNER_RESOLUTION) })) { observingSurface.ChangeMaterial(rt.ID, true); costPanel.transform.GetChild(0).GetChild(costPanel_selectedButton.x).GetComponent <Image>().overrideSprite = null; } else { GameLogUI.NotEnoughResourcesAnnounce(); } break; case CostPanelMode.ColumnBuilding: { if (colony.storage.CheckBuildPossibilityAndCollectIfPossible(ResourcesCost.GetCost(Structure.COLUMN_ID))) { // float supportPoints = observingSurface.myChunk.CalculateSupportPoints(observingSurface.pos.x, observingSurface.pos.y, observingSurface.pos.z); // if (supportPoints <= 1) // { Structure s = Structure.GetStructureByID(Structure.COLUMN_ID); s.SetBasement(observingSurface, new PixelPosByte(7, 7)); PoolMaster.current.BuildSplash(s.transform.position); SetCostPanelMode(CostPanelMode.Disabled); Plane p; if ((s as IPlanable).TryGetPlane(observingSurface.faceIndex, out p) && !p.isTerminate) { UIController.current.Select(p); } else { ReturnButton(); } // } // else // { // observingSurface.myChunk.ReplaceBlock(observingSurface.pos, BlockType.Cave, observingSurface.material_id, ResourceType.CONCRETE_ID, false); // } } else { GameLogUI.NotEnoughResourcesAnnounce(); } } break; case CostPanelMode.BlockBuilding: BlockBuildingSite bbs = new BlockBuildingSite(observingSurface, ResourceType.GetResourceTypeById(costPanel_selectedButton.y)); SetCostPanelMode(CostPanelMode.Disabled); UIController.current.ShowWorksite(bbs); break; } }
public void Load(ColonyControllerSerializer ccs) { if (storage == null) { storage = gameObject.AddComponent <Storage>(); } storage.Load(ccs.storageSerializer); gears_coefficient = ccs.gears_coefficient; labourEfficientcy_coefficient = ccs.labourEfficientcy_coefficient; happiness_coefficient = ccs.happiness_coefficient; health_coefficient = ccs.health_coefficient; birthrateCoefficient = ccs.birthrateCoefficient; energyStored = ccs.energyStored; energyCrystalsCount = ccs.energyCrystalsCount; if (ccs.worksites.Count > 0) { foreach (WorksiteSerializer ws in ccs.worksites) { Worksite w = null; switch (ws.type) { case WorksiteType.BlockBuildingSite: w = new BlockBuildingSite(); break; case WorksiteType.CleanSite: w = new CleanSite(); break; case WorksiteType.DigSite: w = new DigSite(); break; case WorksiteType.GatherSite: w = new GatherSite(); break; case WorksiteType.TunnelBuildingSite: w = new TunnelBuildingSite(); break; } w.Load(ws); } } freeWorkers = ccs.freeWorkers; citizenCount = ccs.citizenCount; deathCredit = ccs.deathCredit; peopleSurplus = ccs.peopleSurplus; housingTimer = ccs.housingTimer; starvationTimer = ccs.starvationTimer; starvationTime = ccs.starvationTime; realBirthrate = ccs.realBirthrate; birthrateCoefficient = ccs.birthrateCoefficient; }
public void CostPanel_Build() { switch (costPanelMode) { case CostPanelMode.SurfaceMaterialChanging: ResourceType rt = ResourceType.GetResourceTypeById(costPanel_selectedButton.y); if (GameMaster.colonyController.storage.CheckBuildPossibilityAndCollectIfPossible(new ResourceContainer[] { new ResourceContainer(rt, GameMaster.SURFACE_MATERIAL_REPLACE_COUNT) })) { observingSurface.ReplaceMaterial(rt.ID); costPanel.transform.GetChild(0).GetChild(costPanel_selectedButton.x).GetComponent <Image>().overrideSprite = null; } else { UIController.current.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.NotEnoughResources)); } break; case CostPanelMode.ColumnBuilding: { if (GameMaster.colonyController.storage.CheckBuildPossibilityAndCollectIfPossible(ResourcesCost.GetCost(Structure.COLUMN_ID))) { // float supportPoints = observingSurface.myChunk.CalculateSupportPoints(observingSurface.pos.x, observingSurface.pos.y, observingSurface.pos.z); // if (supportPoints <= 1) // { Structure s = Structure.GetStructureByID(Structure.COLUMN_ID); s.SetBasement(observingSurface, new PixelPosByte(7, 7)); PoolMaster.current.BuildSplash(observingSurface.transform.position); SetCostPanelMode(CostPanelMode.Disabled); // } // else // { // observingSurface.myChunk.ReplaceBlock(observingSurface.pos, BlockType.Cave, observingSurface.material_id, ResourceType.CONCRETE_ID, false); // } } else { UIController.current.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.NotEnoughResources)); } } break; case CostPanelMode.BlockBuilding: BlockBuildingSite bbs = observingSurface.gameObject.AddComponent <BlockBuildingSite>(); bbs.Set(observingSurface, ResourceType.GetResourceTypeById(costPanel_selectedButton.y)); SetCostPanelMode(CostPanelMode.Disabled); UIController.current.ShowWorksite(bbs); break; } }
public static void StaticLoad(System.IO.Stream fs, int count) { if (count < 0 | count > 1000) { Debug.Log("worksites loading error - incorrect count"); GameMaster.LoadingFail(); return; } if (count > 0) { Worksite w = null; Chunk chunk = GameMaster.realMaster.mainChunk; for (int i = 0; i < count; i++) { switch ((WorksiteType)fs.ReadByte()) { case WorksiteType.CleanSite: { w = CleanSite.Load(fs, chunk); break; } case WorksiteType.DigSite: { w = DigSite.Load(fs, chunk); break; } case WorksiteType.BlockBuildingSite: { w = BlockBuildingSite.Load(fs, chunk); break; } case WorksiteType.GatherSite: { w = GatherSite.Load(fs, chunk); break; } default: w = null; break; } } } }
public static BlockBuildingSite Load(System.IO.Stream fs, Chunk chunk) { var data = new byte[8]; fs.Read(data, 0, data.Length); Plane plane = null; if (chunk.GetBlock(data[0], data[1], data[2])?.TryGetPlane(data[3], out plane) == true) { int x = System.BitConverter.ToInt32(data, 4); var cs = new BlockBuildingSite(plane, ResourceType.GetResourceTypeById(x)); cs.LoadWorksiteData(fs); return(cs); } else { Debug.Log("block building site load error"); return(null); } }
public static void StaticLoad(WorksiteSerializer[] wdata) { worksitesList = new List <Worksite>(wdata.Length); Worksite w = null; for (int i = 0; i < worksitesList.Count; i++) { switch (wdata[i].type) { default: w = null;; break; case WorksiteType.BlockBuildingSite: w = new BlockBuildingSite(); break; case WorksiteType.CleanSite: w = new CleanSite(); break; case WorksiteType.DigSite: w = new DigSite(); break; case WorksiteType.GatherSite: w = new GatherSite(); break; case WorksiteType.TunnelBuildingSite: w = new TunnelBuildingSite(); break; } if (w != null) { w.Load(wdata[i]); worksitesList[i] = w; } } }