コード例 #1
0
 static bool Prefix(ref HistoryAutoRecorder __instance)
 {
     if (Find.TickManager.TicksGame % __instance.def.recordTicksFrequency > RefcellRespeedConfig.currentTimeMultiplier - 1 && __instance.records.Any <float>())
     {
         return(false);
     }
     __instance.records.Add(__instance.def.Worker.PullRecord());
     return(false);
 }
コード例 #2
0
            static void Postfix(HistoryAutoRecorder __instance)
            {
                if (Scribe.mode == LoadSaveMode.PostLoadInit)
                {
                    //StringBuilder sb = new StringBuilder("!!!! " + __instance.def + " !!!!\n");
                    List <float> records = __instance.records;
                    for (int i = 0; i < records.Count; ++i)
                    {
                        if (i > 0 && records[i] > 10000)
                        {
                            float max = records[i - 1] * 1.5f;

                            if (records[i] > max)
                            {
                                //sb.AppendLine("        i: " + i + ": records["+i+"] " + records[i] + " ---- records[" + (i - 1) + "] " + records[i - 1] + " ---- max: " + max);
                                int j = i + 1;
                                while (j < records.Count)
                                {
                                    //sb.AppendLine("        j: " + j + ": records[" + j + "] " + records[j] + " ---- records["+(i - 1)+"] " + records[i - 1] + " ---- max: " + max);
                                    if (records[j] < max)
                                    {
                                        break;
                                    }
                                    ++j;
                                }
                                float average;
                                if (j != records.Count)
                                {
                                    //sb.AppendLine("        --" + j + ": " + records[j]);
                                    average = (records[i - 1] + records[j]) * 0.5f;
                                }
                                else
                                {
                                    //sb.AppendLine("        --" + j + ": end of list");
                                    average = records[i];
                                }
                                while (i < j)
                                {
                                    //sb.AppendLine("        apply average of " + average + " to: " + i);
                                    records[i] = average;
                                    //sb.AppendLine("    i: " + i + ": " + records[i] + " (adj)");
                                    ++i;
                                }
                            }
                            //sb.AppendLine("    i: " + i + ": " + records[i]);
                        }
                    }
                    __instance.records = records;
                    //foreach (float f in __instance.records)
                    //{
                    //    sb.AppendLine("    " + f);
                    //}
                    //Log.Warning(sb.ToString());
                }
            }
コード例 #3
0
 public static void RecalculateGraph(HistoryAutoRecorderGroup recorderGroup)
 {
     GraphUtility.cachedGraphTick = Find.TickManager.TicksGame;
     GraphUtility.curves.Clear();
     GraphUtility.activeCurves.Clear();
     if (!activeLegends.TryGetValue(recorderGroup, out curActiveLegends))
     {
         curActiveLegends = new List <bool>();
         for (int i = 0; i < recorderGroup.recorders.Count; i++)
         {
             curActiveLegends.Add(true);
         }
         activeLegends.Add(recorderGroup, curActiveLegends);
     }
     for (int i = 0; i < recorderGroup.recorders.Count; i++)
     {
         HistoryAutoRecorder historyAutoRecorder = recorderGroup.recorders[i];
         SimpleCurveDrawInfo simpleCurveDrawInfo = new SimpleCurveDrawInfo();
         simpleCurveDrawInfo.color  = historyAutoRecorder.def.graphColor;
         simpleCurveDrawInfo.label  = historyAutoRecorder.def.LabelCap;
         simpleCurveDrawInfo.labelY = historyAutoRecorder.def.GraphLabelY;
         simpleCurveDrawInfo.curve  = new SimpleCurve();
         for (int j = 0; j < historyAutoRecorder.records.Count; j++)
         {
             simpleCurveDrawInfo.curve.Add(new CurvePoint((float)j * (float)historyAutoRecorder.def.recordTicksFrequency / 60000f, historyAutoRecorder.records[j]), false);
         }
         simpleCurveDrawInfo.curve.SortPoints();
         if (historyAutoRecorder.records.Count == 1)
         {
             simpleCurveDrawInfo.curve.Add(new CurvePoint(1.66666669E-05f, historyAutoRecorder.records[0]), true);
         }
         if (curActiveLegends[i])
         {
             GraphUtility.activeCurves.Add(simpleCurveDrawInfo);
         }
         GraphUtility.curves.Add(simpleCurveDrawInfo);
     }
 }