public unsafe static void CreateDiseaseTable() { //IL_0125: Incompatible stack types: I vs Ref Diseases diseases = Db.Get().Diseases; MemoryStream memoryStream = new MemoryStream(1024); BinaryWriter binaryWriter = new BinaryWriter(memoryStream); binaryWriter.Write(diseases.Count); List <Element> elements = ElementLoader.elements; binaryWriter.Write(elements.Count); for (int i = 0; i < diseases.Count; i++) { Disease disease = diseases[i]; binaryWriter.WriteKleiString(UI.StripLinkFormatting(disease.Name)); binaryWriter.Write(disease.id.GetHashCode()); binaryWriter.Write(disease.strength); disease.temperatureRange.Write(binaryWriter); disease.temperatureHalfLives.Write(binaryWriter); disease.pressureRange.Write(binaryWriter); disease.pressureHalfLives.Write(binaryWriter); for (int j = 0; j < elements.Count; j++) { ElemGrowthInfo elemGrowthInfo = disease.elemGrowthInfo[j]; elemGrowthInfo.Write(binaryWriter); } } byte[] buffer = memoryStream.GetBuffer(); fixed(byte *msg = &((buffer != null && buffer.Length != 0) ? ref buffer[0] : ref *(byte *)null)) { Sim.SIM_HandleMessage(825301935, (int)memoryStream.Length, msg); } }
protected void InitializeElemGrowthArray(ref ElemGrowthInfo[] infoArray, ElemGrowthInfo default_value) { List <Element> elements = ElementLoader.elements; infoArray = new ElemGrowthInfo[elements.Count]; for (int i = 0; i < elements.Count; i++) { infoArray[i] = default_value; } infoArray[ElementLoader.GetElementIndex(SimHashes.Polypropylene)] = new ElemGrowthInfo { underPopulationDeathRate = 2.66666675f, populationHalfLife = 10f, overPopulationHalfLife = 10f, minCountPerKG = 0f, maxCountPerKG = float.PositiveInfinity, minDiffusionCount = 2147483647, diffusionScale = 1f, minDiffusionInfestationTickCount = 255 }; infoArray[ElementLoader.GetElementIndex(SimHashes.Vacuum)] = new ElemGrowthInfo { underPopulationDeathRate = 0f, populationHalfLife = 0f, overPopulationHalfLife = 0f, minCountPerKG = 0f, maxCountPerKG = float.PositiveInfinity, diffusionScale = 0f, minDiffusionInfestationTickCount = 255 }; }
private void EvaluateGrowthConstants(DiseaseHeader header, ref DiseaseContainer container) { Disease disease = Db.Get().Diseases[header.diseaseIdx]; KPrefabID component = header.primaryElement.GetComponent <KPrefabID>(); ElemGrowthInfo elemGrowthInfo = disease.elemGrowthInfo[header.diseaseIdx]; container.overpopulationCount = (int)(elemGrowthInfo.maxCountPerKG * header.primaryElement.Mass); container.instanceGrowthRate = disease.GetGrowthRateForTags(component.Tags, header.diseaseCount > container.overpopulationCount); }
public Data(HandleVector <int> .Handle temperature_handle, byte elem_idx, float mass, byte disease_idx, int disease_count) { diseaseIdx = disease_idx; elemIdx = elem_idx; this.mass = mass; diseaseCount = disease_count; accumulatedError = 0f; temperatureHandle = temperature_handle; growthInfo = GetGrowthInfo(disease_idx, elem_idx); }
public static float CalculateDelta(int disease_count, int element_idx, float mass, int environment_cell, float temperature, float tags_multiplier_base, Disease disease, float dt) { float num = 0f; ElemGrowthInfo elemGrowthInfo = disease.elemGrowthInfo[element_idx]; num += elemGrowthInfo.CalculateDiseaseCountDelta(disease_count, mass, dt); float half_life_in_seconds = Disease.CalculateRangeHalfLife(temperature, ref disease.temperatureRange, ref disease.temperatureHalfLives); float num2 = Disease.HalfLifeToGrowthRate(half_life_in_seconds, dt); num += (float)disease_count * num2 - (float)disease_count; float num3 = Mathf.Pow(tags_multiplier_base, dt); num += (float)disease_count * num3 - (float)disease_count; if (Grid.IsValidCell(environment_cell)) { byte b = Grid.ElementIdx[environment_cell]; ElemExposureInfo elemExposureInfo = disease.elemExposureInfo[b]; num += elemExposureInfo.CalculateExposureDiseaseCountDelta(disease_count, dt); } return(num); }