summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/DivertPowerMinigame.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/DivertPowerMinigame.cs')
-rw-r--r--Client/Assembly-CSharp/DivertPowerMinigame.cs91
1 files changed, 91 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/DivertPowerMinigame.cs b/Client/Assembly-CSharp/DivertPowerMinigame.cs
new file mode 100644
index 0000000..64aa786
--- /dev/null
+++ b/Client/Assembly-CSharp/DivertPowerMinigame.cs
@@ -0,0 +1,91 @@
+using System;
+using UnityEngine;
+
+public class DivertPowerMinigame : Minigame
+{
+ public SystemTypes[] SliderOrder = new SystemTypes[]
+ {
+ SystemTypes.LowerEngine,
+ SystemTypes.UpperEngine,
+ SystemTypes.Weapons,
+ SystemTypes.Shields,
+ SystemTypes.Nav,
+ SystemTypes.Comms,
+ SystemTypes.LifeSupp,
+ SystemTypes.Security
+ };
+
+ public Collider2D[] Sliders;
+
+ public LineRenderer[] Wires;
+
+ public VerticalGauge[] Gauges;
+
+ private int sliderId;
+
+ public FloatRange SliderY = new FloatRange(-1f, 1f);
+
+ private Controller myController = new Controller();
+
+ public override void Begin(PlayerTask task)
+ {
+ base.Begin(task);
+ DivertPowerTask powerTask = (DivertPowerTask)task;
+ this.sliderId = this.SliderOrder.IndexOf((SystemTypes t) => t == powerTask.TargetSystem);
+ for (int i = 0; i < this.Sliders.Length; i++)
+ {
+ if (i != this.sliderId)
+ {
+ this.Sliders[i].GetComponent<SpriteRenderer>().color = new Color(0.5f, 0.5f, 0.5f);
+ }
+ }
+ }
+
+ public void FixedUpdate()
+ {
+ this.myController.Update();
+ float num = 0f;
+ for (int i = 0; i < this.Sliders.Length; i++)
+ {
+ num += this.SliderY.ReverseLerp(this.Sliders[i].transform.localPosition.y) / (float)this.Sliders.Length;
+ }
+ for (int j = 0; j < this.Sliders.Length; j++)
+ {
+ float num2 = this.SliderY.ReverseLerp(this.Sliders[j].transform.localPosition.y);
+ float num3 = num2 / num / 1.6f;
+ this.Gauges[j].value = num3 + (Mathf.PerlinNoise((float)j, Time.time * 51f) - 0.5f) * 0.04f;
+ Color value = Color.Lerp(Color.gray, Color.yellow, num2 * num2);
+ value.a = (float)((num3 < 0.1f) ? 0 : 1);
+ Vector2 textureOffset = this.Wires[j].material.GetTextureOffset("_MainTex");
+ textureOffset.x -= Time.fixedDeltaTime * 3f * Mathf.Lerp(0.1f, 2f, num3);
+ this.Wires[j].material.SetTextureOffset("_MainTex", textureOffset);
+ this.Wires[j].material.SetColor("_Color", value);
+ }
+ if (this.sliderId < 0)
+ {
+ return;
+ }
+ Collider2D collider2D = this.Sliders[this.sliderId];
+ Vector2 vector = collider2D.transform.localPosition;
+ DragState dragState = this.myController.CheckDrag(collider2D, false);
+ if (dragState == DragState.Dragging)
+ {
+ Vector2 vector2 = this.myController.DragPosition - collider2D.transform.parent.position;
+ vector2.y = this.SliderY.Clamp(vector2.y);
+ vector.y = vector2.y;
+ collider2D.transform.localPosition = vector;
+ return;
+ }
+ if (dragState != DragState.Released)
+ {
+ return;
+ }
+ if (this.SliderY.max - vector.y < 0.05f)
+ {
+ this.MyNormTask.NextStep();
+ base.StartCoroutine(base.CoStartClose(0.75f));
+ this.sliderId = -1;
+ collider2D.GetComponent<SpriteRenderer>().color = new Color(0.5f, 0.5f, 0.5f);
+ }
+ }
+}