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