// Token: 0x06000088 RID: 136 RVA: 0x00006CB4 File Offset: 0x00004EB4 public override void Tick() { base.Tick(); if (this.debug && Find.TickManager.TicksGame % 100 == 0) { string debugMsg = "At Tick: " + Find.TickManager.TicksGame; debugMsg = string.Concat(new string[] { debugMsg, " : (", (this.MixerThingDef != null) ? this.MixerThingDef.defName : "Null", ") : Prod: ", this.isProducing ? "True" : "false", " : Num: ", this.NumProd.ToString(), " : PWT: ", this.ProdWorkTicks.ToString() }); Log.Message(debugMsg, false); } if (this.IsWorking(this) && this.MixerThingDef != null && !Building_MSDrugMix.StockLimitReached(this, this.MixerThingDef, this.StockLimit, out _)) { if (this.ProdWorkTicks > 0 && this.isProducing) { this.ProdWorkTicks--; if (this.mixSustainer == null) { this.StartMixSustainer(); return; } if (this.mixSustainer.Ended) { this.StartMixSustainer(); return; } this.mixSustainer.Maintain(); return; } else if (this.isProducing && this.NumProd > 0 && this.MixerThingDef != null) { if (this.debug) { Log.Message("Production point: " + this.MixerThingDef.defName + " : " + this.ProdWorkTicks.ToString(), false); } if (this.ValidateOutput(this.MixerThingDef, out int hasSpace, out List <Building> candidatesOut) && hasSpace > 0) { if (hasSpace >= this.NumProd) { if (this.debug) { Log.Message("Ejecting: " + this.MixerThingDef.defName + " : " + this.NumProd.ToString(), false); } this.MixerEject(this, this.MixerThingDef, this.NumProd, candidatesOut, out int Surplus); this.NumProd = Surplus; } else { if (this.debug) { Log.Message("Ejecting: " + this.MixerThingDef.defName + " : " + hasSpace.ToString(), false); } this.MixerEject(this, this.MixerThingDef, hasSpace, candidatesOut, out int Surplus2); this.NumProd -= hasSpace - Surplus2; } } if (this.NumProd == 0) { this.TotalProdWorkTicks = 0; return; } } else if (this.isProducing && this.MixerThingDef != null && this.ValidateRecipe(this.MixerThingDef, out bool UseMax, out List <RCPItemCanUse> RecipeList, out int minProd, out int maxProd, out int ticks)) { if (this.debug) { Log.Message(string.Concat(new object[] { "StartProduction: ", this.MixerThingDef.defName, " : RCP Items: ", RecipeList.Count }), false); } if (RecipeList.Count > 0) { for (int i = 0; i < RecipeList.Count; i++) { ThingDef recipeThingDef = RecipeList[i].def; int num; if (UseMax) { num = RecipeList[i].Max; } else { num = RecipeList[i].Min; } if (this.debug) { Log.Message(string.Concat(new string[] { "Removing: ", UseMax ? "Max" : "Min", ": ", num.ToString(), " (", recipeThingDef.defName, ")" }), false); } this.RemoveRecipeItems(recipeThingDef, num); } this.NumProd = minProd; if (UseMax) { this.NumProd = maxProd; } this.ProdWorkTicks = (int)((float)ticks * this.effeciencyFactor * (float)this.NumProd); this.TotalProdWorkTicks = this.ProdWorkTicks; } } } }
// Token: 0x0600008E RID: 142 RVA: 0x00007A9C File Offset: 0x00005C9C private static void DoNotFoundGroupsOverlay(Building_MSDrugMix b, ThingDef def, int grp) { if (Find.CurrentMap == null || Find.CurrentMap != b.Map) { return; } var listRCP = MSDrugMixUtility.GetRCPList(def); var alerts = new List <ThingDef>(); if (listRCP.Count > 0) { foreach (var item in listRCP) { if (item.mixgrp == grp) { alerts.AddDistinct(item.def); } } } if (alerts.Count <= 0) { return; } var OutOfFuelMat = MaterialPool.MatFrom("UI/Overlays/OutOfFuel", ShaderDatabase.MetaOverlay); var i = 0; foreach (var alert in alerts) { if (!alert.defName.StartsWith("Chunk") || alert.defName.StartsWith("Chunk") && i < 1) { var mat = MaterialPool.MatFrom(alert.uiIcon, ShaderDatabase.MetaOverlay, Color.white); var BaseAlt = AltitudeLayer.WorldClipper.AltitudeFor(); if (mat != null) { var altInd = 21; var plane = MeshPool.plane08; var drawPos = b.TrueCenter(); drawPos.y = BaseAlt + (0.046875f * altInd); drawPos.x += i; drawPos.z += grp - 2; var num2 = ((float)Math.Sin( (Time.realtimeSinceStartup + (397f * (b.thingIDNumber % 571))) * 4f) + 1f) * 0.5f; num2 = 0.3f + (num2 * 0.7f); for (var j = 0; j < 2; j++) { var material = FadedMaterialPool.FadedVersionOf(j < 1 ? mat : OutOfFuelMat, num2); if (material != null) { Graphics.DrawMesh(plane, drawPos, Quaternion.identity, material, 0); } } } } i++; } }