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(); }
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; } } } }