Пример #1
0
    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));
    }
Пример #2
0
 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));
 }