AlertSpeaker.Building_AlertSpeaker.ComputeDrawingParameters C# (CSharp) Method

ComputeDrawingParameters() public method

Compute the global drawing parameters. o danger rate == None => small green light. o danger rate == Low => medium yellow light ramping up and down. o danger rate == High => big flashing red light.
public ComputeDrawingParameters ( ) : void
return void
        public void ComputeDrawingParameters()
        {
            const int lowDangerHalfPeriod = 60;
            const int highDangerHalfPeriod = 10;
            const int highDangerQuietPeriod = 40;
            const float noDangerGlowRadiusOffset = 2f;
            const float lowDangerGlowRadiusOffset = 1f;
            const float lowDangerGlowRadiusDynamic = 4f;
            const float highDangerGlowRadiusOffset = 1f;
            const float highDangerGlowRadiusDynamic = 6f;
            switch (currentDangerRate)
            {
                case StoryDanger.None:
                    glowRadius = noDangerGlowRadiusOffset;
                    glowColor.r = 0;
                    glowColor.g = 220;
                    glowColor.b = 0;
                    break;
                case StoryDanger.Low:
                    glowColor.r = 242;
                    glowColor.g = 185;
                    glowColor.b = 0;
                    if (lowDangerDrawingTick < lowDangerHalfPeriod)
                    {
                        glowRadius = lowDangerGlowRadiusOffset + lowDangerGlowRadiusDynamic * ((float)lowDangerDrawingTick / (float)lowDangerHalfPeriod);
                    }
                    else if (lowDangerDrawingTick < 2 * lowDangerHalfPeriod)
                    {
                        glowRadius = lowDangerGlowRadiusOffset + lowDangerGlowRadiusDynamic * (1f - ((float)(lowDangerDrawingTick - lowDangerHalfPeriod) / (float)lowDangerHalfPeriod));
                    }
                    else
                    {
                        lowDangerDrawingTick = 0;
                    }
                    lowDangerDrawingTick++;
                    break;
                case StoryDanger.High:
                    glowColor.r = 220;
                    glowColor.g = 0;
                    glowColor.b = 0;
                    if (highDangerDrawingTick < highDangerHalfPeriod)
                    {
                        glowRadius = highDangerGlowRadiusOffset + highDangerGlowRadiusDynamic * ((float)highDangerDrawingTick / (float)highDangerHalfPeriod);
                    }
                    else if (highDangerDrawingTick < 2 * highDangerHalfPeriod)
                    {
                        glowRadius = highDangerGlowRadiusOffset + highDangerGlowRadiusDynamic * (1 - ((float)(highDangerDrawingTick - highDangerHalfPeriod) / (float)highDangerHalfPeriod));
                    }
                    else if (highDangerDrawingTick < highDangerQuietPeriod)
                    {
                        glowRadius = 0;
                    }
                    else
                    {
                        highDangerDrawingTick = 0;
                    }
                    highDangerDrawingTick++;
                    break;
            }
        }