using System; using System.Collections; using UnityEngine; public class KeypadGame : Minigame { public TextRenderer TargetText; public TextRenderer NumberText; public int number; public string numString = string.Empty; private bool animating; public SpriteRenderer AcceptButton; private LifeSuppSystemType system; private NoOxyTask oxyTask; private bool done; public override void Begin(PlayerTask task) { base.Begin(task); this.oxyTask = (NoOxyTask)task; this.TargetText.Text = "today's code:\r\n" + this.oxyTask.targetNumber.ToString("D5"); this.NumberText.Text = string.Empty; this.system = (LifeSuppSystemType)ShipStatus.Instance.Systems[SystemTypes.LifeSupp]; this.done = this.system.GetConsoleComplete(base.ConsoleId); } public void ClickNumber(int i) { if (this.animating) { return; } if (this.done) { return; } if (this.NumberText.Text.Length >= 5) { base.StartCoroutine(this.BlinkAccept()); return; } this.numString += i; this.number = this.number * 10 + i; this.NumberText.Text = this.numString; } private IEnumerator BlinkAccept() { int num; for (int i = 0; i < 5; i = num) { this.AcceptButton.color = Color.gray; yield return null; yield return null; this.AcceptButton.color = Color.white; yield return null; yield return null; num = i + 1; } yield break; } public void ClearEntry() { if (this.animating) { return; } this.number = 0; this.numString = string.Empty; this.NumberText.Text = string.Empty; } public void Enter() { if (this.animating) { return; } base.StartCoroutine(this.Animate()); } private IEnumerator Animate() { this.animating = true; WaitForSeconds wait = new WaitForSeconds(0.1f); yield return wait; this.NumberText.Text = string.Empty; yield return wait; if (this.oxyTask.targetNumber == this.number) { this.done = true; byte amount = (byte)(base.ConsoleId | 64); ShipStatus.Instance.RpcRepairSystem(SystemTypes.LifeSupp, (int)amount); try { ((SabotageTask)this.MyTask).MarkContributed(); } catch { } this.NumberText.Text = "OK"; yield return wait; this.NumberText.Text = string.Empty; yield return wait; this.NumberText.Text = "OK"; yield return wait; this.NumberText.Text = string.Empty; yield return wait; this.NumberText.Text = "OK"; } else { this.NumberText.Text = "Bad"; yield return wait; this.NumberText.Text = string.Empty; yield return wait; this.NumberText.Text = "Bad"; yield return wait; this.numString = string.Empty; this.number = 0; this.NumberText.Text = this.numString; } this.animating = false; yield break; } }