summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/Console.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/Console.cs')
-rw-r--r--Client/Assembly-CSharp/Console.cs97
1 files changed, 97 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/Console.cs b/Client/Assembly-CSharp/Console.cs
new file mode 100644
index 0000000..31f9aca
--- /dev/null
+++ b/Client/Assembly-CSharp/Console.cs
@@ -0,0 +1,97 @@
+using System;
+using Assets.CoreScripts;
+using UnityEngine;
+
+public class Console : MonoBehaviour, IUsable
+{
+ public float UsableDistance
+ {
+ get
+ {
+ return this.usableDistance;
+ }
+ }
+
+ public float PercentCool
+ {
+ get
+ {
+ return 0f;
+ }
+ }
+
+ public float usableDistance = 1f;
+
+ public int ConsoleId;
+
+ public bool onlyFromBelow;
+
+ public bool GhostsIgnored;
+
+ public SystemTypes Room;
+
+ public TaskTypes[] TaskTypes;
+
+ public TaskSet[] ValidTasks;
+
+ public SpriteRenderer Image;
+
+ public void SetOutline(bool on, bool mainTarget)
+ {
+ if (this.Image)
+ {
+ this.Image.material.SetFloat("_Outline", (float)(on ? 1 : 0));
+ this.Image.material.SetColor("_OutlineColor", Color.yellow);
+ this.Image.material.SetColor("_AddColor", mainTarget ? Color.yellow : Color.clear);
+ }
+ }
+
+ public float CanUse(GameData.PlayerInfo pc, out bool canUse, out bool couldUse)
+ {
+ float num = float.MaxValue;
+ PlayerControl @object = pc.Object;
+ couldUse = ((!pc.IsDead || (PlayerControl.GameOptions.GhostsDoTasks && !this.GhostsIgnored)) && @object.CanMove && !pc.IsImpostor && (!this.onlyFromBelow || @object.transform.position.y < base.transform.position.y) && this.FindTask(@object));
+ canUse = couldUse;
+ if (canUse)
+ {
+ num = Vector2.Distance(@object.GetTruePosition(), base.transform.position);
+ canUse &= (num <= this.UsableDistance);
+ }
+ return num;
+ }
+
+ private PlayerTask FindTask(PlayerControl pc)
+ {
+ for (int i = 0; i < pc.myTasks.Count; i++)
+ {
+ PlayerTask playerTask = pc.myTasks[i];
+ if (!playerTask.IsComplete && playerTask.ValidConsole(this))
+ {
+ return playerTask;
+ }
+ }
+ return null;
+ }
+
+ public void Use()
+ {
+ bool flag;
+ bool flag2;
+ this.CanUse(PlayerControl.LocalPlayer.Data, out flag, out flag2);
+ if (!flag)
+ {
+ return;
+ }
+ PlayerControl localPlayer = PlayerControl.LocalPlayer;
+ PlayerTask playerTask = this.FindTask(localPlayer);
+ if (playerTask.MinigamePrefab)
+ {
+ Minigame minigame = UnityEngine.Object.Instantiate<Minigame>(playerTask.MinigamePrefab);
+ minigame.transform.SetParent(Camera.main.transform, false);
+ minigame.transform.localPosition = new Vector3(0f, 0f, -50f);
+ minigame.Console = this;
+ minigame.Begin(playerTask);
+ DestroyableSingleton<Telemetry>.Instance.WriteUse(localPlayer.PlayerId, playerTask.TaskType, base.transform.position);
+ }
+ }
+}