public string GetFamiliesList(int buildIndex) { ResilientInfoV1 ri = m_resilients[buildIndex]; string ret; if (ri.namesBuffer.Count > 0) { ret = Localization.trad.GetFamiliesHistory() + "\n"; for (int i = 0; i < ri.namesBuffer.Count; i++) { ret += ri.namesBuffer[i]; //remove placeholder in front if (i < ri.namesBuffer.Count - 1) { ret += Localization.trad.GetFamiliesSeparator(); } } } else { ret = Localization.trad.GetEmptyHouse(); } return(ret); }
//industrial goods export history public void UpdateGoodsExport(int buildIndex) { ResilientInfoV1 ri = m_resilients[buildIndex]; Building build = Singleton <BuildingManager> .instance.m_buildings.m_buffer[ri.buildingID]; int cbn1 = (int)build.m_customBuffer1; //resources in stock int cbn2 = (int)build.m_customBuffer2; //goods in stock if (cbn1 > ri.goodsBuffer1) //resources have been brought { ri.goodsBuffer2 -= ri.goodsBuffer1 - cbn1; //total resources imported } ri.goodsBuffer1 = cbn1; if (cbn2 < ri.goodsBuffer3) //goods have been picked up { ri.goodsBuffer4 += ri.goodsBuffer3 - cbn2; } //if (cbn2 > ri.goodsBuffer3) //goods have not been picked up (track production) //{ // ri.goodsBuffer4 += cbn2 - ri.goodsBuffer3; //} ri.goodsBuffer3 = cbn2; m_resilients[buildIndex] = ri; }
public void UnsuscribeBuilding(ushort buildingID) { int index = GetResilientBuildingIndex(buildingID); if (index != -1) { ResilientInfoV1 ri = m_resilients[index]; ri.unsuscribed = true; m_resilients[index] = ri; } }
public bool AddBuilding(ushort buildingID, bool resilient) { ResilientInfoV1 ri; int buildIndex = GetResilientBuildingIndex(buildingID); if (buildIndex != -1) { ri = m_resilients[buildIndex]; ri.unsuscribed = false; ri.unsuscribeTimer = 0; ri.resiliencyActivated = resilient; m_resilients[buildIndex] = ri; Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID].m_majorProblemTimer = 0; Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID].m_problems = Notification.RemoveProblems(Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID].m_problems, Notification.Problem.MajorProblem); return(false); } ri = new ResilientInfoV1(); ri.buildingID = buildingID; ri.activatedDate = Singleton <SimulationManager> .instance.m_currentGameTime; ri.description = ""; Building build = Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID]; ri.chosenLevel = build.Info.m_class.m_level; ri.namesBuffer = new List <string>(); ri.goodsBuffer1 = 0; ri.goodsBuffer2 = 0; ri.goodsBuffer3 = 0; //ri.goodsBuffer3 = build.m_customBuffer2; ri.goodsBuffer4 = 0; ri.totalIncome = 0L; //speed up abandonment // Singleton<BuildingManager>.instance.m_buildings.m_buffer[buildingID].m_electricityProblemTimer = 60; // Singleton<BuildingManager>.instance.m_buildings.m_buffer[buildingID].m_majorProblemTimer = 60; m_resilients.Add(ri); UpdateResidentFamilies(m_resilients.Count - 1); return(true); }
//industrial extractor export history public void UpdatePrimaryResourceExport(int buildIndex) { ResilientInfoV1 ri = m_resilients[buildIndex]; Building build = Singleton <BuildingManager> .instance.m_buildings.m_buffer[ri.buildingID]; int cbn1 = (int)build.m_customBuffer1; if (cbn1 < ri.goodsBuffer1) //material has been picked up { ri.goodsBuffer2 += ri.goodsBuffer1 - cbn1; } else //material has been extracted { ri.goodsBuffer3 -= ri.goodsBuffer1 - cbn1; } ri.goodsBuffer1 = cbn1; m_resilients[buildIndex] = ri; }
//commercial building history updates public void UpdateVisitsCount(int buildIndex) { ResilientInfoV1 ri = m_resilients[buildIndex]; CitizenManager instance = Singleton <CitizenManager> .instance; Citizen.BehaviourData behaviour = new Citizen.BehaviourData(); int aliveCount = 0; int totalCount = 0; uint num = Singleton <BuildingManager> .instance.m_buildings.m_buffer[ri.buildingID].m_citizenUnits; int num2 = 0; while (num != 0u) { if ((ushort)(instance.m_units.m_buffer[(int)((UIntPtr)num)].m_flags & CitizenUnit.Flags.Visit) != 0) { instance.m_units.m_buffer[(int)((UIntPtr)num)].GetCitizenVisitBehaviour(ref behaviour, ref aliveCount, ref totalCount); } num = instance.m_units.m_buffer[(int)((UIntPtr)num)].m_nextUnit; if (++num2 > 524288) { CODebugBase <LogChannel> .Error(LogChannel.Core, "Invalid list detected!\n" + Environment.StackTrace); break; } } if (totalCount < ri.currentVisits) //assume some visitors have left { ri.totalVisits += ri.currentVisits - totalCount; } ri.currentVisits = totalCount; m_resilients[buildIndex] = ri; }
public string GetWorkersHistoryList(int buildIndex) { ResilientInfoV1 ri = m_resilients[buildIndex]; string ret; if (ri.namesBuffer.Count > 0) { ret = Localization.trad.GetWorkersHistory(ri.namesBuffer.Count); //+"\n"; // for(int i = 0; i < ri.namesBuffer.Count; i++) // { // ret += ri.namesBuffer[i]; // if(i < ri.namesBuffer.Count-1) // ret += Localization.trad.GetFamiliesSeparator(); // } } else { ret = Localization.trad.GetEmptyFacility(); } return(ret); }