public void NextColorRainbow()
 {
     curColor += variation;
     if (Props.cycleKind == CycleKind.circular)
     {
         if (curColor > RainbowColor.red)
         {
             curColor = RainbowColor.purple;
         }
         else if (curColor < RainbowColor.purple)
         {
             curColor = RainbowColor.red;
         }
     }
     else if (Props.cycleKind == CycleKind.bouncing)
     {
         if (curColor > RainbowColor.red)
         {
             variation = -1;
             curColor  = RainbowColor.orange;
         }
         else if (curColor < RainbowColor.purple)
         {
             variation = 1;
             curColor  = RainbowColor.blue;
         }
     }
     else if (Props.cycleKind == CycleKind.random)
     {
         curColor = (RainbowColor)Rand.Range(0, 6);
     }
 }
        public void Init(bool myDebug = false)
        {
            SetPawnAndMap();

            Tools.Warn(myPawn + "'s " + parent.def.defName + " Init", myDebug);

            // If we dont have full rainbow motes, we leave
            if (
                Props.motePurpleDef.NullOrEmpty() ||
                Props.moteBlueDef.NullOrEmpty() ||
                Props.moteGreenDef.NullOrEmpty() ||
                Props.moteYellowDef.NullOrEmpty() ||
                Props.moteOrangeDef.NullOrEmpty() ||
                Props.moteRedDef.NullOrEmpty())
            {
                blockAction     = true;
                parent.Severity = 0;
            }

            // Calculating pivot Color depending on props
            switch (Props.colorChoice)
            {
            case ColorChoice.pawnColor:
                Color pawnColor = GfxEffects.ClosestColor(myPawn, false, myDebug);
                pivotColor = curColor = ColorTranslation(pawnColor);
                break;

            case ColorChoice.complementary:
                Color complementary = GfxEffects.ClosestColor(myPawn, true, myDebug);
                pivotColor = curColor = ColorTranslation(complementary);
                break;

            case ColorChoice.random:
                pivotColor = curColor = (RainbowColor)Rand.Range(0, 6);
                break;
            }

            // Calculatin bottom and top colors
            bottomColor = pivotColor - 1;
            topColor    = pivotColor + 1;
            if (topColor > RainbowColor.red)
            {
                topColor = RainbowColor.purple;
            }
            if (bottomColor < RainbowColor.purple)
            {
                bottomColor = RainbowColor.red;
            }

            Tools.Warn(
                myPawn + "'s " + parent.def.defName +
                " bottom: " + bottomColor +
                " pivot: " + pivotColor +
                " top: " + topColor
                , myDebug);

            SetMoteDef();
        }
示例#3
0
        public static float GetColor(RainbowColor color)
        {
            var colorOffset = segment * (int)color;
            var x           = globalX + colorOffset;

            while (x >= period)
            {
                x -= period;
            }
            while (x < 0)
            {
                x += period;
            }
            return(F(x));
        }
 public void NextColorThreeColors()
 {
     curColor += variation;
     if (Props.cycleKind == CycleKind.circular)
     {
         if (curColor > topColor)
         {
             curColor = bottomColor;
         }
         else if (curColor < bottomColor)
         {
             curColor = topColor;
         }
     }
     else if (Props.cycleKind == CycleKind.bouncing)
     {
         if (curColor > topColor)
         {
             variation = -1;
             curColor  = pivotColor;
         }
         else if (curColor < RainbowColor.purple)
         {
             variation = 1;
             curColor  = pivotColor;
         }
     }
     else if (Props.cycleKind == CycleKind.random)
     {
         if (Rand.Chance(.33f))
         {
             curColor = pivotColor;
         }
         else
         {
             if (Rand.Chance(.5f))
             {
                 curColor = topColor;
             }
             else
             {
                 curColor = bottomColor;
             }
         }
     }
 }