From e9ea621b93fbb58d9edfca8375918791637bbd52 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 30 Dec 2020 20:59:04 +0800 Subject: +init --- Client/Assembly-CSharp/MapCountOverlay.cs | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 Client/Assembly-CSharp/MapCountOverlay.cs (limited to 'Client/Assembly-CSharp/MapCountOverlay.cs') 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(); + if (!component || component.Data == null || component.Data.Disconnected || component.Data.IsDead) + { + num2--; + } + } + } + area.UpdateCount(num2); + } + else + { + area.UpdateCount(0); + } + } + } +} -- cgit v1.1-26-g67d0