using System; using UnityEngine; public class ShieldMinigame : Minigame { public Color OnColor = Color.white; public Color OffColor = Color.red; public SpriteRenderer[] Shields; public SpriteRenderer Gauge; private byte shields; public AudioClip ShieldOnSound; public AudioClip ShieldOffSound; public override void Begin(PlayerTask task) { base.Begin(task); this.shields = this.MyNormTask.Data[0]; this.UpdateButtons(); } public void ToggleShield(int i) { if (!this.MyNormTask.IsComplete) { byte b = (byte)(1 << i); this.shields ^= b; this.MyNormTask.Data[0] = this.shields; if ((this.shields & b) != 0) { if (Constants.ShouldPlaySfx()) { SoundManager.Instance.PlaySound(this.ShieldOnSound, false, 1f); } } else if (Constants.ShouldPlaySfx()) { SoundManager.Instance.PlaySound(this.ShieldOffSound, false, 1f); } if (this.shields == 127) { this.MyNormTask.NextStep(); base.StartCoroutine(base.CoStartClose(0.75f)); if (!ShipStatus.Instance.ShieldsImages[0].IsPlaying(null)) { ShipStatus.Instance.StartShields(); PlayerControl.LocalPlayer.RpcPlayAnimation(1); } } } } public void FixedUpdate() { this.UpdateButtons(); } private void UpdateButtons() { int num = 0; for (int i = 0; i < this.Shields.Length; i++) { bool flag = ((int)this.shields & 1 << i) == 0; if (!flag) { num++; } this.Shields[i].color = (flag ? this.OffColor : this.OnColor); } if (this.shields == 127) { this.Gauge.transform.Rotate(0f, 0f, Time.fixedDeltaTime * 45f); this.Gauge.color = new Color(1f, 1f, 1f, 1f); return; } float num2 = Mathf.Lerp(0.1f, 0.5f, (float)num / 6f); this.Gauge.color = new Color(1f, num2, num2, 1f); } }