75 lines
2.1 KiB
C#
Executable File
75 lines
2.1 KiB
C#
Executable File
using UnityEngine;
|
|
|
|
public class FlagZone : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
public float TimeStayAttackers { get; private set; }
|
|
public float TimeStayDefenders { get; private set; }
|
|
private int occupDefenders;
|
|
private int occupAttackers;
|
|
public bool IsOccupBoth => (occupDefenders > 0) && (occupAttackers > 0);
|
|
public bool IsNotOccup => (occupDefenders == 0) && (occupAttackers == 0);
|
|
private float timeForWin;
|
|
|
|
private void Start()
|
|
{
|
|
|
|
timeForWin = SettingsReader.Instance.GetSettings.TimeToWin;
|
|
TimeStayAttackers = 0;
|
|
TimeStayDefenders = 0;
|
|
occupAttackers = 0;
|
|
occupDefenders = 0;
|
|
}
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
switch (other.tag)
|
|
{
|
|
case "Defender":
|
|
occupDefenders++;
|
|
break;
|
|
case "Attacker":
|
|
occupAttackers++;
|
|
break;
|
|
default:
|
|
Debug.LogWarning("Entered non-team entity");
|
|
break;
|
|
}
|
|
}
|
|
private void OnTriggerExit(Collider other)
|
|
{
|
|
switch (other.tag)
|
|
{
|
|
case "Defender":
|
|
occupDefenders--;
|
|
break;
|
|
case "Attacker":
|
|
occupAttackers--;
|
|
break;
|
|
default:
|
|
Debug.LogWarning("Exited non-team entity");
|
|
break;
|
|
}
|
|
}
|
|
private void Update()
|
|
{
|
|
if (IsOccupBoth || IsNotOccup)
|
|
{
|
|
TimeStayAttackers = 0;
|
|
TimeStayDefenders = 0;
|
|
return;
|
|
}
|
|
else if (occupAttackers > 0)
|
|
{
|
|
TimeStayAttackers += Time.deltaTime;
|
|
if (TimeStayAttackers > timeForWin)
|
|
GlobalEventManager.SendCaptureFlag(Team.Attackers);
|
|
}
|
|
else
|
|
{
|
|
TimeStayDefenders += Time.deltaTime;
|
|
if (TimeStayDefenders > timeForWin)
|
|
GlobalEventManager.SendCaptureFlag(Team.Defenders);
|
|
}
|
|
}
|
|
}
|