summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/MapTaskOverlay.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/MapTaskOverlay.cs')
-rw-r--r--Client/Assembly-CSharp/MapTaskOverlay.cs101
1 files changed, 101 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/MapTaskOverlay.cs b/Client/Assembly-CSharp/MapTaskOverlay.cs
new file mode 100644
index 0000000..cc70292
--- /dev/null
+++ b/Client/Assembly-CSharp/MapTaskOverlay.cs
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class MapTaskOverlay : MonoBehaviour
+{
+ public ObjectPoolBehavior icons;
+
+ private Dictionary<PlayerTask, PooledMapIcon> data = new Dictionary<PlayerTask, PooledMapIcon>();
+
+ public void Show()
+ {
+ base.gameObject.SetActive(true);
+ if (PlayerTask.PlayerHasHudTask(PlayerControl.LocalPlayer))
+ {
+ return;
+ }
+ for (int i = 0; i < PlayerControl.LocalPlayer.myTasks.Count; i++)
+ {
+ PlayerTask playerTask = PlayerControl.LocalPlayer.myTasks[i];
+ if (playerTask.HasLocation && !playerTask.IsComplete)
+ {
+ PooledMapIcon pooledMapIcon = this.icons.Get<PooledMapIcon>();
+ pooledMapIcon.transform.localScale = new Vector3(pooledMapIcon.NormalSize, pooledMapIcon.NormalSize, pooledMapIcon.NormalSize);
+ if (PlayerTask.TaskIsEmergency(playerTask))
+ {
+ pooledMapIcon.rend.color = Color.red;
+ pooledMapIcon.alphaPulse.enabled = true;
+ pooledMapIcon.rend.material.SetFloat("_Outline", 1f);
+ }
+ else
+ {
+ pooledMapIcon.rend.color = Color.yellow;
+ }
+ MapTaskOverlay.SetIconLocation(playerTask, pooledMapIcon);
+ this.data.Add(playerTask, pooledMapIcon);
+ }
+ }
+ }
+
+ public void Update()
+ {
+ if (PlayerTask.PlayerHasHudTask(PlayerControl.LocalPlayer))
+ {
+ return;
+ }
+ for (int i = 0; i < PlayerControl.LocalPlayer.myTasks.Count; i++)
+ {
+ PlayerTask playerTask = PlayerControl.LocalPlayer.myTasks[i];
+ if (playerTask.HasLocation && !playerTask.IsComplete && playerTask.LocationDirty)
+ {
+ PooledMapIcon pooledMapIcon;
+ if (!this.data.TryGetValue(playerTask, out pooledMapIcon))
+ {
+ pooledMapIcon = this.icons.Get<PooledMapIcon>();
+ pooledMapIcon.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
+ if (PlayerTask.TaskIsEmergency(playerTask))
+ {
+ pooledMapIcon.rend.color = Color.red;
+ pooledMapIcon.alphaPulse.enabled = true;
+ pooledMapIcon.rend.material.SetFloat("_Outline", 1f);
+ }
+ else
+ {
+ pooledMapIcon.rend.color = Color.yellow;
+ }
+ this.data.Add(playerTask, pooledMapIcon);
+ }
+ MapTaskOverlay.SetIconLocation(playerTask, pooledMapIcon);
+ }
+ }
+ }
+
+ private static void SetIconLocation(PlayerTask task, PooledMapIcon mapIcon)
+ {
+ if (mapIcon.lastMapTaskStep != task.TaskStep)
+ {
+ mapIcon.lastMapTaskStep = task.TaskStep;
+ Vector3 vector = task.Location;
+ vector /= ShipStatus.Instance.MapScale;
+ vector.z = -1f;
+ mapIcon.name = task.name;
+ mapIcon.transform.localPosition = vector;
+ if (task.TaskStep > 0)
+ {
+ mapIcon.alphaPulse.enabled = true;
+ mapIcon.rend.material.SetFloat("_Outline", 1f);
+ }
+ }
+ }
+
+ public void Hide()
+ {
+ foreach (KeyValuePair<PlayerTask, PooledMapIcon> keyValuePair in this.data)
+ {
+ keyValuePair.Value.OwnerPool.Reclaim(keyValuePair.Value);
+ }
+ this.data.Clear();
+ base.gameObject.SetActive(false);
+ }
+}