private void Activate()
    {
        var scalar = transform.lossyScale.x;

        foreach (var light in Lights)
        {
            light.range *= scalar;
        }
        if (_playedCount < 1)
        {
            StartCoroutine(StartSound());
            _playedCount++;
        }

        foreach (var cr in CableRenderers)
        {
            var cable = _cables.Find(x => x.Tag.Equals(cr.name, StringComparison.InvariantCultureIgnoreCase));
            cr.material = CableColorToMaterial(cable.Color);
        }

        foreach (var indicator in _solver.GetAllIndicators())
        {
            IndicatorsObject[indicator.GlobalIndex].SetActive(true);
            IndicatorsObject[indicator.GlobalIndex].GetComponent <MeshRenderer>().material = IndicatorColorToMaterial(indicator.Color);
            if (indicator.Color != Color.Orange)
            {
                Lights[indicator.GlobalIndex].intensity = 30;
            }
            Lights[indicator.GlobalIndex].color = LightColors[(int)indicator.Color];
        }

        for (var i = 0; i < 15; ++i)
        {
            var materials = ScreenRenderers[i].materials;
            materials[1] = ScreenColors[(int)_monitors[i].MonitorColor];
            materials[0] = DisplayColors[(int)_monitors[i].DisplayColor];
            ScreenRenderers[i].materials = materials;
            MonitorTexts[i].text         = _monitors[i].DisplayValue.ToString();
        }
        StartCoroutine(BlinkLights());
        for (int i = 0; i < MonitorButtons.Length; i++)
        {
            var j = i;
            MonitorButtons[j].OnInteract += delegate
            {
                MonitorButtons[j].AddInteractionPunch(.5f);
                Audio.PlaySoundAtTransform(ButtonSounds[rnd.Range(0, ButtonSounds.Length)].name, Module.transform);
                if (solveBeforeAnimation)
                {
                    return(false);
                }
                HandlePress(j);
                return(false);
            };
        }
    }
示例#2
0
        internal int GetRandomValue(int maxValue, List <int> usedValues)
        {
            var value = _rnd.Range(0, maxValue);

            while (usedValues.Contains(value))
            {
                value = _rnd.Range(0, maxValue);
            }

            usedValues.Add(value);
            return(value);
        }