summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/DivertPowerMinigame.cs
blob: 64aa786eb76bf03221e586259766d29b3495a226 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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);
		}
	}
}