summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/Controller.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/Controller.cs')
-rw-r--r--Client/Assembly-CSharp/Controller.cs157
1 files changed, 157 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/Controller.cs b/Client/Assembly-CSharp/Controller.cs
new file mode 100644
index 0000000..fd84caa
--- /dev/null
+++ b/Client/Assembly-CSharp/Controller.cs
@@ -0,0 +1,157 @@
+using System;
+using UnityEngine;
+
+public class Controller
+{
+ public bool AnyTouch
+ {
+ get
+ {
+ return this.Touches[0].IsDown || this.Touches[1].IsDown;
+ }
+ }
+
+ public bool AnyTouchDown
+ {
+ get
+ {
+ return this.Touches[0].TouchStart || this.Touches[1].TouchStart;
+ }
+ }
+
+ public bool AnyTouchUp
+ {
+ get
+ {
+ return this.Touches[0].TouchEnd || this.Touches[1].TouchEnd;
+ }
+ }
+
+ public bool FirstDown
+ {
+ get
+ {
+ return this.Touches[0].TouchStart;
+ }
+ }
+
+ public Vector2 DragPosition
+ {
+ get
+ {
+ return this.Touches[this.touchId].Position;
+ }
+ }
+
+ public Vector2 DragStartPosition
+ {
+ get
+ {
+ return this.Touches[this.touchId].DownAt;
+ }
+ }
+
+ public readonly Controller.TouchState[] Touches = new Controller.TouchState[2];
+
+ private Collider2D amTouching;
+
+ private int touchId = -1;
+
+ public class TouchState
+ {
+ public Vector2 DownAt;
+
+ public Vector2 Position;
+
+ public bool WasDown;
+
+ public bool IsDown;
+
+ public bool TouchStart;
+
+ public bool TouchEnd;
+ }
+
+ public Controller()
+ {
+ for (int i = 0; i < this.Touches.Length; i++)
+ {
+ this.Touches[i] = new Controller.TouchState();
+ }
+ }
+
+ public DragState CheckDrag(Collider2D coll, bool firstOnly = false)
+ {
+ if (!coll)
+ {
+ return DragState.NoTouch;
+ }
+ if (this.touchId <= -1)
+ {
+ if (firstOnly)
+ {
+ Controller.TouchState touchState = this.Touches[0];
+ if (touchState.TouchStart && coll.OverlapPoint(touchState.Position))
+ {
+ this.amTouching = coll;
+ this.touchId = 0;
+ return DragState.TouchStart;
+ }
+ }
+ else
+ {
+ for (int i = 0; i < this.Touches.Length; i++)
+ {
+ Controller.TouchState touchState2 = this.Touches[i];
+ if (touchState2.TouchStart && coll.OverlapPoint(touchState2.Position))
+ {
+ this.amTouching = coll;
+ this.touchId = i;
+ return DragState.TouchStart;
+ }
+ }
+ }
+ return DragState.NoTouch;
+ }
+ if (coll != this.amTouching)
+ {
+ return DragState.NoTouch;
+ }
+ if (this.Touches[this.touchId].IsDown)
+ {
+ return DragState.Dragging;
+ }
+ this.amTouching = null;
+ this.touchId = -1;
+ return DragState.Released;
+ }
+
+ public void Update()
+ {
+ Controller.TouchState touchState = this.Touches[0];
+ bool mouseButton = Input.GetMouseButton(0);
+ touchState.Position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
+ touchState.TouchStart = (!touchState.IsDown && mouseButton);
+ if (touchState.TouchStart)
+ {
+ touchState.DownAt = touchState.Position;
+ }
+ touchState.TouchEnd = (touchState.IsDown && !mouseButton);
+ touchState.IsDown = mouseButton;
+ }
+
+ public void Reset()
+ {
+ for (int i = 0; i < this.Touches.Length; i++)
+ {
+ this.Touches[i] = new Controller.TouchState();
+ }
+ this.touchId = -1;
+ this.amTouching = null;
+ }
+
+ public Controller.TouchState GetTouch(int i)
+ {
+ return this.Touches[i];
+ }
+}