summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/MapCountOverlay.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/MapCountOverlay.cs')
-rw-r--r--Client/Assembly-CSharp/MapCountOverlay.cs90
1 files changed, 90 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/MapCountOverlay.cs b/Client/Assembly-CSharp/MapCountOverlay.cs
new file mode 100644
index 0000000..571b676
--- /dev/null
+++ b/Client/Assembly-CSharp/MapCountOverlay.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Linq;
+using UnityEngine;
+
+public class MapCountOverlay : MonoBehaviour
+{
+ public AlphaPulse BackgroundColor;
+
+ public TextRenderer SabotageText;
+
+ public CounterArea[] CountAreas;
+
+ private Collider2D[] buffer = new Collider2D[20];
+
+ private ContactFilter2D filter;
+
+ private float timer;
+
+ private bool isSab;
+
+ public void Awake()
+ {
+ this.filter.useLayerMask = true;
+ this.filter.layerMask = Constants.PlayersOnlyMask;
+ this.filter.useTriggers = true;
+ }
+
+ public void OnEnable()
+ {
+ this.BackgroundColor.SetColor(PlayerTask.PlayerHasHudTask(PlayerControl.LocalPlayer) ? Palette.DisabledGrey : Color.green);
+ this.timer = 1f;
+ }
+
+ public void OnDisable()
+ {
+ for (int i = 0; i < this.CountAreas.Length; i++)
+ {
+ this.CountAreas[i].UpdateCount(0);
+ }
+ }
+
+ public void Update()
+ {
+ this.timer += Time.deltaTime;
+ if (this.timer < 0.1f)
+ {
+ return;
+ }
+ this.timer = 0f;
+ if (!this.isSab && PlayerTask.PlayerHasHudTask(PlayerControl.LocalPlayer))
+ {
+ this.isSab = true;
+ this.BackgroundColor.SetColor(Palette.DisabledGrey);
+ this.SabotageText.gameObject.SetActive(true);
+ return;
+ }
+ if (this.isSab && !PlayerTask.PlayerHasHudTask(PlayerControl.LocalPlayer))
+ {
+ this.isSab = false;
+ this.BackgroundColor.SetColor(Color.green);
+ this.SabotageText.gameObject.SetActive(false);
+ }
+ for (int i = 0; i < this.CountAreas.Length; i++)
+ {
+ CounterArea area = this.CountAreas[i];
+ if (!PlayerTask.PlayerHasHudTask(PlayerControl.LocalPlayer))
+ {
+ int num = ShipStatus.Instance.AllRooms.First((ShipRoom r) => r.RoomId == area.RoomType).roomArea.OverlapCollider(this.filter, this.buffer);
+ int num2 = num;
+ for (int j = 0; j < num; j++)
+ {
+ Collider2D collider2D = this.buffer[j];
+ if (!(collider2D.tag == "DeadBody"))
+ {
+ PlayerControl component = collider2D.GetComponent<PlayerControl>();
+ if (!component || component.Data == null || component.Data.Disconnected || component.Data.IsDead)
+ {
+ num2--;
+ }
+ }
+ }
+ area.UpdateCount(num2);
+ }
+ else
+ {
+ area.UpdateCount(0);
+ }
+ }
+ }
+}