Files
Cielonos/Assets/Scripts/MainGame/Managers/BattleManager/AttackAreaSubmodule.cs
2025-12-24 16:58:51 -05:00

90 lines
3.0 KiB
C#

using System.Collections.Generic;
using Cielonos.MainGame.Characters;
using UnityEngine;
namespace Cielonos.MainGame
{
public partial class BattleManager
{
public class AttackAreaSubmodule : SubmoduleBase<BattleManager>
{
public AttackAreaCollection playerAttackAreas;
public AttackAreaCollection enemyAttackAreas;
public AttackAreaSubmodule(BattleManager owner) : base(owner)
{
playerAttackAreas = new AttackAreaCollection();
enemyAttackAreas = new AttackAreaCollection();
}
public void Register(AttackAreaBase attackArea)
{
if (attackArea.creator.fraction == Fraction.Player)
{
Debug.Log($"Registered AttackArea: {attackArea.areaName}");
playerAttackAreas.Add(attackArea);
}
else if (attackArea.creator.fraction == Fraction.Enemy)
{
enemyAttackAreas.Add(attackArea);
}
}
public void Unregister(AttackAreaBase attackArea)
{
if (attackArea.creator.fraction == Fraction.Player)
{
Debug.Log($"Unregistered AttackArea: {attackArea.areaName}");
playerAttackAreas.Remove(attackArea);
}
else if (attackArea.creator.fraction == Fraction.Enemy)
{
enemyAttackAreas.Remove(attackArea);
}
}
}
public class AttackAreaCollection
{
public List<AttackAreaBase> activeAttackAreas;
public List<NormalArea> activeNormalAreas;
public List<Projectile> activeProjectiles;
public AttackAreaCollection()
{
activeAttackAreas = new List<AttackAreaBase>();
activeNormalAreas = new List<NormalArea>();
activeProjectiles = new List<Projectile>();
}
public void Add(AttackAreaBase attackArea)
{
activeAttackAreas.Add(attackArea);
if (attackArea is NormalArea normalArea)
{
activeNormalAreas.Add(normalArea);
}
else if (attackArea is Projectile projectile)
{
activeProjectiles.Add(projectile);
}
}
public void Remove(AttackAreaBase attackArea)
{
activeAttackAreas.Remove(attackArea);
if (attackArea is NormalArea normalArea)
{
activeNormalAreas.Remove(normalArea);
}
else if (attackArea is Projectile projectile)
{
activeProjectiles.Remove(projectile);
}
}
}
}
}