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