public void DigButton() { if (observingSurface == null) { SelfShutOff(); return; } else { CleanSite cs = observingSurface.worksite as CleanSite; if (cs == null) { cs = observingSurface.gameObject.AddComponent <CleanSite>(); cs.Set(observingSurface, true); UIController.current.ShowWorksite(cs); } else { if (cs.diggingMission) { cs.StopWork(); } } StatusUpdate(); timer = STATUS_UPDATE_TIME; } }
void SetActionPanelStatus(bool working) { if (observingSurface == null) { SelfShutOff(); return; } buildButton.gameObject.SetActive(working); digButton.gameObject.SetActive(working); gatherButton.gameObject.SetActive(working); if (working) { CheckGatherButton(); if (observingSurface.host.IsStructure()) { digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Delete); } else { CleanSite cs = colony.GetWorksite(observingSurface) as CleanSite; if (cs != null && cs.diggingMission) { status_digOrdered = true; digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetPhrase(LocalizedPhrase.StopDig); } else { status_digOrdered = false; digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Dig); } } savedHqLevel = hq.level; blockCreateButton.gameObject.SetActive(IsBlockCreatingAvailable()); columnCreateButton.gameObject.SetActive(IsColumnAvailable() && !observingSurface.isTerminal); changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable()); mycanvas.closePanelButton.gameObject.SetActive(true); } else { if (changeMaterialButton.gameObject.activeSelf) { changeMaterialButton.gameObject.SetActive(false); } if (blockCreateButton.gameObject.activeSelf) { blockCreateButton.gameObject.SetActive(false); } if (columnCreateButton.gameObject.activeSelf) { columnCreateButton.gameObject.SetActive(false); } mycanvas.closePanelButton.gameObject.SetActive(false); if (costPanelMode != CostPanelMode.Disabled) { SetCostPanelMode(CostPanelMode.Disabled); } } }
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 DigButton() { if (observingSurface == null || observingSurface.destroyed) { SelfShutOff(); return; } else { if (observingSurface.host.IsStructure()) { //IPlanable ((observingSurface.host) as Structure).Annihilate(true, true, false); SelfShutOff(); return; } else { bool newCleanSite = false; if (observingSurface.isSurface) { newCleanSite = observingSurface.fulfillStatus != FullfillStatus.Empty; if (observingSurface.haveWorksite) { var w = colony.GetWorksite(observingSurface); if (w != null && w is CleanSite) { if ((w as CleanSite).diggingMission) { w.StopWork(true); newCleanSite = false; } } } } if (newCleanSite) { var cs = new CleanSite(observingSurface, true); UIController.current.ShowWorksite(cs); } else { var ds = new DigSite(observingSurface, true); UIController.current.ShowWorksite(ds); } StatusUpdate(); } } }
void SetActionPanelStatus(bool working) { buildButton.gameObject.SetActive(working); digButton.gameObject.SetActive(working); gatherButton.gameObject.SetActive(working); if (working) { CheckGatherButton(); CleanSite cs = observingSurface.worksite as CleanSite; if (cs != null && cs.diggingMission) { status_digOrdered = true; digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetPhrase(LocalizedPhrase.StopDig); } else { status_digOrdered = false; digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Dig); } savedHqLevel = hq.level; blockCreateButton.gameObject.SetActive(IsBlockCreatingAvailable()); columnCreateButton.gameObject.SetActive(IsColumnAvailable() && observingSurface.pos.y < Chunk.CHUNK_SIZE - 1); changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable()); UIController.current.closePanelButton.gameObject.SetActive(true); } else { if (changeMaterialButton.gameObject.activeSelf) { changeMaterialButton.gameObject.SetActive(false); } if (blockCreateButton.gameObject.activeSelf) { blockCreateButton.gameObject.SetActive(false); } if (columnCreateButton.gameObject.activeSelf) { columnCreateButton.gameObject.SetActive(false); } UIController.current.closePanelButton.gameObject.SetActive(false); if (costPanelMode != CostPanelMode.Disabled) { SetCostPanelMode(CostPanelMode.Disabled); } } }
public void Set(CubeBlock block, bool work_is_dig) { workObject = block; workObject.SetWorksite(this); dig = work_is_dig; if (dig) { Block b = GameMaster.mainChunk.GetBlock(block.pos.x, block.pos.y + 1, block.pos.z); if (b != null && (b.type == BlockType.Surface & b.worksite == null)) { CleanSite cs = b.gameObject.AddComponent <CleanSite>(); TransferWorkers(this, cs); cs.Set(b as SurfaceBlock, true); if (showOnGUI) { cs.ShowOnGUI(); showOnGUI = false; } StopWork(); return; } sign = Instantiate(Resources.Load <GameObject> ("Prefs/DigSign")).GetComponent <WorksiteSign>(); } else { sign = Instantiate(Resources.Load <GameObject>("Prefs/PourInSign")).GetComponent <WorksiteSign>(); } sign.worksite = this; sign.transform.position = workObject.transform.position + Vector3.up * Block.QUAD_SIZE; //FollowingCamera.main.cameraChangedEvent += SignCameraUpdate; mainResource = ResourceType.GetResourceTypeById(workObject.material_id); if (workersCount < START_WORKERS_COUNT) { GameMaster.colonyController.SendWorkers(START_WORKERS_COUNT, this); } if (!worksitesList.Contains(this)) { worksitesList.Add(this); } if (!subscribedToUpdate) { GameMaster.realMaster.labourUpdateEvent += WorkUpdate; subscribedToUpdate = true; } }
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 CleanSite Load(System.IO.FileStream fs, Chunk chunk) { var data = new byte[5]; fs.Read(data, 0, data.Length); Plane plane = null; if (chunk.GetBlock(data[0], data[1], data[2])?.TryGetPlane(data[3], out plane) == true) { var cs = new CleanSite(plane, data[4] == 1); cs.LoadWorksiteData(fs); return(cs); } else { Debug.Log("clean 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; } } }
public void DigCube() { if (chosenCube == null) { return; } else { if (faceIndex == 4) { SurfaceBlock sb = chosenCube.myChunk.GetBlock(chosenCube.pos.x, chosenCube.pos.y + 1, chosenCube.pos.z) as SurfaceBlock; if (sb == null) { DigSite ds = chosenCube.gameObject.AddComponent <DigSite>(); ds.Set(chosenCube, true); workingObserver = ds.ShowOnGUI(); // вообще они должны сами в конце цепочки устанавливать здесь workingObserver, не? } else { CleanSite cs = chosenCube.gameObject.AddComponent <CleanSite>(); cs.Set(sb, true); workingObserver = cs.ShowOnGUI(); } } else { if (faceIndex < 4) { TunnelBuildingSite tbs = chosenCube.gameObject.AddComponent <TunnelBuildingSite>(); tbs.Set(chosenCube); tbs.CreateSign(faceIndex); workingObserver = tbs.ShowOnGUI(); } } } }
protected override void StatusUpdate() { if (observingSurface == null) { SelfShutOff(); return; } switch (mode) { case SurfacePanelMode.SelectAction: { hq = GameMaster.colonyController.hq; CheckGatherButton(); CleanSite cs = observingSurface.worksite as CleanSite; bool check = (cs != null && cs.diggingMission); if (check != status_digOrdered) { status_digOrdered = check; digButton.transform.GetChild(0).GetComponent <Text>().text = status_digOrdered ? Localization.GetPhrase(LocalizedPhrase.StopDig) : Localization.GetWord(LocalizedWord.Dig); } if (savedHqLevel != hq.level) { savedHqLevel = hq.level; blockCreateButton.gameObject.SetActive(IsBlockCreatingAvailable()); columnCreateButton.gameObject.SetActive(IsColumnAvailable()); } changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable()); break; } case SurfacePanelMode.Build: { if (chosenStructure != null) { switch (buildingCreateMode) { case BuildingCreateInfoMode.Acceptable: Storage storage = GameMaster.colonyController.storage; if (lastStorageStatus != storage.operationsDone) { float[] onStorage = storage.standartResources; for (int i = 0; i < resourcesCostImage.Length; i++) { int rid = (int)showingResourcesCount[i].x; resourcesCostImage[i].transform.GetChild(0).GetComponent <Text>().color = (onStorage[rid] < showingResourcesCount[i].y) ? Color.red : Color.white; } lastStorageStatus = storage.operationsDone; } break; case BuildingCreateInfoMode.Unacceptable_Material: if ((chosenStructure as Building).requiredBasementMaterialId == observingSurface.material_id) { SelectBuildingForConstruction(chosenStructure, selectedBuildingButton); } break; } //rotating window } } break; } }