Files
real-shooter/Assets/Scripts/Misc/FlagZone.cs

86 lines
2.4 KiB
C#
Executable File

using System;
using UnityEngine;
public class FlagZone : MonoBehaviour
{
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:
print(other.tag);
break;
}
}
private void OnTriggerExit(Collider other)
{
switch (other.tag)
{
case "Defender":
occupDefenders--;
break;
case "Attacker":
occupAttackers--;
break;
}
}
private void Update()
{
if (IsOccupBoth || IsNotOccup)
{
TimeStayAttackers = 0;
TimeStayDefenders = 0;
}
else if (occupAttackers > 0)
{
TimeStayAttackers += Time.deltaTime;
GameManager._attackersTeam.AddGroupReward(Time.deltaTime* 0.1f);
GameManager._defendersTeam.AddGroupReward(-Time.deltaTime* 0.1f);
if (TimeStayAttackers > timeForWin)
{
GlobalEventManager.SendCaptureFlag(Team.Attackers);
NullifyFlagCapture();
}
}
else if (occupDefenders > 0)
{
GameManager._defendersTeam.AddGroupReward(+Time.deltaTime* 0.1f);
TimeStayDefenders += Time.deltaTime;
if (TimeStayDefenders > timeForWin)
{
GlobalEventManager.SendCaptureFlag(Team.Defenders);
NullifyFlagCapture();
}
}
}
private void NullifyFlagCapture()
{
TimeStayAttackers = 0;
TimeStayDefenders = 0;
}
}