diff options
Diffstat (limited to 'Client/Assembly-CSharp/DivertPowerMinigame.cs')
-rw-r--r-- | Client/Assembly-CSharp/DivertPowerMinigame.cs | 91 |
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); + } + } +} |