diff options
Diffstat (limited to 'Client/Assembly-CSharp/KeypadGame.cs')
-rw-r--r-- | Client/Assembly-CSharp/KeypadGame.cs | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/KeypadGame.cs b/Client/Assembly-CSharp/KeypadGame.cs new file mode 100644 index 0000000..91d7a7a --- /dev/null +++ b/Client/Assembly-CSharp/KeypadGame.cs @@ -0,0 +1,135 @@ +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; + } +} |