예제 #1
0
    void Update()
    {
        time = Time.time;
        // DIFFICULTY SCAFFOLDING
        switch (difficulty)
        {
        // Light Change: Cascade Slow(1.0) Random(.6)
        // Color Change: None
        case 0:
            if (strand.IsLightChangeDone())
            {
                float speed = 1.0f;
                float delay = 0.0f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed * i + Random.Range(0.0f, 0.6f),
                            time + speed * i + delay * i + Random.Range(0.6f, 1.2f),
                            Random.Range(0.0f, 0.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed * i + Random.Range(0.0f, 0.6f),
                            time + speed * i + delay * i + Random.Range(0.6f, 1.2f),
                            Random.Range(100.0f, 100.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                }
            }
            break;

        // Light Change: Cascade Medium(.75) Random(.4)
        // Color Change: None
        case 1:
            if (strand.IsLightChangeDone())
            {
                float speed = 1.0f;
                float delay = 0.0f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed * i + Random.Range(0.0f, 0.4f),
                            time + speed * i + delay * i + Random.Range(0.4f, 0.8f),
                            Random.Range(0.0f, 0.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed * i + Random.Range(0.0f, 0.4f),
                            time + speed * i + delay * i + Random.Range(0.4f, 0.8f),
                            Random.Range(100.0f, 100.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                }
            }
            break;

        // Light Change: Cascade Fast(.35) Random(.3)
        // Color Change: None
        case 2:
            if (strand.IsLightChangeDone())
            {
                float speed = 0.35f;
                float delay = 0.0f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed * i + Random.Range(0.0f, 0.3f),
                            time + speed * i + delay * i + Random.Range(0.3f, 0.6f),
                            Random.Range(0.0f, 0.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed * i + Random.Range(0.0f, 0.3f),
                            time + speed * i + delay * i + Random.Range(0.3f, 0.6f),
                            Random.Range(100.0f, 100.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                }
            }
            break;

        // Light Change: Alternate Medium(.25) Random(.3)
        // Color Change: None
        case 3:
            if (strand.IsLightChangeDone())
            {
                float speed = 0.25f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        if (i % 2 == 0)
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(0.0f, 0.0f)
                            };
                        }
                        else
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(100.0f, 100.0f)
                            };
                        }
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        if (i % 2 == 0)
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(100.0f, 100.0f)
                            };
                        }
                        else
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(0.0f, 0.0f)
                            };
                        }
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                }
            }
            break;

        // Light Change: Alternate Fast(.05) Random(.3)
        // Color Change: None
        case 4:
            if (strand.IsLightChangeDone())
            {
                float speed = 0.05f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        if (i % 2 == 0)
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(0.0f, 0.0f)
                            };
                        }
                        else
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(100.0f, 100.0f)
                            };
                        }
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        if (i % 2 == 0)
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(100.0f, 100.0f)
                            };
                        }
                        else
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.3f),
                                time + speed + Random.Range(0.3f, 0.6f),
                                Random.Range(0.0f, 0.0f)
                            };
                        }
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                }
            }
            break;

        // Light Change: None
        // Color Change: On/Off Medium(.75) Random(.2)
        case 5:
            if (strand.IsColorChangeDone())
            {
                float     speed   = 0.75f;
                float[][] pattern = new float[strand.GetNumLightBulbs()][];
                for (int i = 0; i < pattern.Length; i++)
                {
                    pattern[i] = new float[] {
                        time + speed + Random.Range(0.0f, 0.2f),
                    };
                }
                strand.ColorChangeAll(pattern);
            }
            break;

        // Light Change: None
        // Color Change: On/Off Fast(.55) Random(.2)
        case 6:
            if (strand.IsColorChangeDone())
            {
                float     speed   = 0.55f;
                float[][] pattern = new float[strand.GetNumLightBulbs()][];
                for (int i = 0; i < pattern.Length; i++)
                {
                    pattern[i] = new float[] {
                        time + speed + Random.Range(0.0f, 0.2f),
                    };
                }
                strand.ColorChangeAll(pattern);
            }
            break;

        // Light Change: None
        // Color Change: On/Off Fast(.55) Timing(1+34) Random(.2)
        case 7:
            if (strand.IsColorChangeDone())
            {
                float speed = 0.55f;
                if (!colorChangePatternRan || !timingPatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed + Random.Range(0.0f, 0.2f),
                        };
                    }
                    strand.ColorChangeAll(pattern);
                    if (!colorChangePatternRan && !timingPatternRan)
                    {
                        colorChangePatternRan = true;
                    }
                    else if (colorChangePatternRan)
                    {
                        timingPatternRan = true;
                    }
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + speed / 3 + Random.Range(0.0f, 0.2f),
                        };
                    }
                    strand.ColorChangeAll(pattern);
                    colorChangePatternRan = false;
                    timingPatternRan      = false;
                }
            }
            break;

        // Light Change: None
        // Color Change: Alternate Medium(.55) Random(.2)
        case 8:
            if (strand.IsColorChangeDone())
            {
                float speed = 0.55f;
                if (!colorChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        if (i % 2 == 0)
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.2f)
                            };
                        }
                        else
                        {
                            pattern[i] = new float[] { -1.0f };
                        }
                    }
                    strand.ColorChangeAll(pattern);
                    colorChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        if (i % 2 == 0)
                        {
                            pattern[i] = new float[] { -1.0f };
                        }
                        else
                        {
                            pattern[i] = new float[] {
                                time + speed + Random.Range(0.0f, 0.2f)
                            };
                        }
                    }
                    strand.ColorChangeAll(pattern);
                    colorChangePatternRan = false;
                }
            }
            break;

        // Light Change: On/Off Slower(.95) Random(.2)
        // Color Change: On/Off Slow(.75) Random(.2)
        case 9:
            if (strand.IsLightChangeDone() && strand.IsColorChangeDone())
            {
                float lightSpeed = 0.95f;
                float colorSpeed = 0.75f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(100.0f, 100.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else if (!colorChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + colorSpeed + Random.Range(0.0f, 0.2f)
                        };
                    }
                    strand.ColorChangeAll(pattern);
                    colorChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(0.0f, 0.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                    colorChangePatternRan = false;
                }
            }
            break;

        // Light Change: On/Off Slow(.75) Random(.2)
        // Color Change: On/Off Medium(.55) Random(.2)
        case 10:
            if (strand.IsLightChangeDone() && strand.IsColorChangeDone())
            {
                float lightSpeed = 0.75f;
                float colorSpeed = 0.55f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(100.0f, 100.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else if (!colorChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + colorSpeed + Random.Range(0.0f, 0.2f)
                        };
                    }
                    strand.ColorChangeAll(pattern);
                    colorChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(0.0f, 0.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                    colorChangePatternRan = false;
                }
            }
            break;

        // Light Change: On/Off Medium(.55) Random(.2)
        // Color Change: On/Off Fast(.35) Random(.2)
        case 11:
            if (strand.IsLightChangeDone() && strand.IsColorChangeDone())
            {
                float lightSpeed = 0.55f;
                float colorSpeed = 0.35f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(100.0f, 100.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else if (!colorChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + colorSpeed + Random.Range(0.0f, 0.2f)
                        };
                    }
                    strand.ColorChangeAll(pattern);
                    colorChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(0.0f, 0.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                    colorChangePatternRan = false;
                }
            }
            break;

        // Light Change: On/Off Fast(.35) Random(.2)
        // Color Change: On/Off Faster(.25) Random(.2)
        case 12:
            if (strand.IsLightChangeDone() && strand.IsColorChangeDone())
            {
                float lightSpeed = 0.35f;
                float colorSpeed = 0.25f;
                if (!lightChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(100.0f, 100.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = true;
                }
                else if (!colorChangePatternRan)
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + colorSpeed + Random.Range(0.0f, 0.2f)
                        };
                    }
                    strand.ColorChangeAll(pattern);
                    colorChangePatternRan = true;
                }
                else
                {
                    float[][] pattern = new float[strand.GetNumLightBulbs()][];
                    for (int i = 0; i < pattern.Length; i++)
                    {
                        pattern[i] = new float[] {
                            time + lightSpeed + Random.Range(0.0f, 0.2f),
                            time + lightSpeed + Random.Range(0.2f, 0.4f),
                            Random.Range(0.0f, 0.0f)
                        };
                    }
                    strand.LightChangeAll(pattern);
                    lightChangePatternRan = false;
                    colorChangePatternRan = false;
                }
            }
            break;

        default:
            break;
        }
    }