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);
}
}
}
|