public static Color GetGrowthColor(GrowthPeriod period, int growthID, MatPairStruct mat) { if (period == GrowthPeriod.Fresh) { return(GetColor(mat)); } if (mat.mat_index >= DFConnection.Instance.NetPlantRawList.plant_raws.Count) { return(GetColor(mat)); } if (growthID >= DFConnection.Instance.NetPlantRawList.plant_raws[mat.mat_index].growths.Count) { return(GetColor(mat)); } var growth = DFConnection.Instance.NetPlantRawList.plant_raws[mat.mat_index].growths[growthID]; int currentTicks = TimeHolder.DisplayedTime.CurrentYearTicks; RemoteFortressReader.GrowthPrint freshPrints = null; RemoteFortressReader.GrowthPrint currentPrint = null; RemoteFortressReader.GrowthPrint stalePrint = null; int minTicks = int.MaxValue; int maxTicks = int.MinValue; foreach (var print in growth.prints) { if ((print.timing_start == -1 || print.timing_start <= currentTicks) && (print.timing_end == -1 || print.timing_end >= currentTicks)) { currentPrint = print; } if (print.timing_start == -1 || print.timing_start < minTicks) { minTicks = print.timing_start; freshPrints = print; } if (print.timing_end == -1 || print.timing_end > maxTicks) { maxTicks = print.timing_end; stalePrint = print; } } if (currentPrint == null) { currentPrint = stalePrint; } switch (period) { case GrowthPeriod.Current: return(DfColor.MorphColor(GetColor(mat), freshPrints.color, currentPrint.color)); case GrowthPeriod.Stale: return(DfColor.MorphColor(GetColor(mat), freshPrints.color, stalePrint.color)); } return(GetColor(mat)); }
public static void RGB() { for (int i = 0; i < 16; i++) { float h, s, v; var color = DfColor.GetColor(i); Color.RGBToHSV(color, out h, out s, out v); UnityEngine.Debug.Log(string.Format("RGB: {0}, {1}, {2}; HSV: {3}, {4}, {5}", color.r, color.g, color.b, h, s, v)); } UnityEngine.Debug.Log(Color.HSVToRGB(2, 1, 1)); UnityEngine.Debug.Log(Color.HSVToRGB(1, 2, 1)); UnityEngine.Debug.Log(Color.HSVToRGB(1, 1, 2)); }