using UnityEngine;
namespace RR.Common.Interfaces
{
///
/// Интерфейс для объектов, которые могут быть возвращены к владельцу.
/// Используется для реализации механики возврата брошенных объектов.
///
public interface IRecallable
{
///
/// Метод для возвращения объекта к владельцу.
/// Для возвращения желательно иметь на объекте
/// owner или аналогичный атрибут
///
public void Recall();
}
///
/// Интерфейс для объектов, которые могут быть подняты игроком.
/// Реализуется объектами, которые можно подбирать и/или держать.
///
public interface IPickable
{
///
/// Метод для подбора объекта игроком.
/// Привязывает снаряд к точке привязки на игроке.
///
/// Новый владелец объекта
/// Опциональная точка привязки. При передаче, объект будет привязан на нее
/// bool - получилось ли поднять объект
public bool TryPickup(GameObject newOwner, Transform optionalAttachPoint = null);
}
///
/// Интерфейс для объектов, которые могут получать и наносить урон.
/// Реализуется всеми сущностями, имеющими систему здоровья.
///
public interface IDamageable
{
///
/// Метод для получения урона объектом.
///
/// Количество урона
void TakeDamage(float amount);
///
/// Метод для восстановления здоровья объекта.
///
/// Количество восстанавливаемого здоровья
void Heal(float amount);
///
/// Метод для обработки смерти объекта.
/// Вызывается когда здоровье достигает нуля или меньше.
///
void Die();
}
///
/// Интерфейс для объектов, которые могут выполнять действие.
/// Используется для интерактивных объектов в игре.
///
public interface IActionable
{
///
/// Выполняет действие, связанное с объектом.
/// Например, активация механизма, открытие двери и т.д.
///
void PerformAction();
}
}
namespace RR.Game2D.Core.Managers.Interfaces
{
///
/// Интерфейс для объектов, которые могут быть запущены как снаряд.
/// Реализуется объектами, которые можно бросать в определенном направлении.
///
public interface ILaunchable
{
///
/// Метод для запуска объекта как снаряд
///
/// Направление запуска
/// Скорость запуска
/// Владелец
public void Launch(Vector2 direction, float speed, GameObject thrower);
}
///
/// Интерфейс для объектов, которые могут отскакивать от поверхностей.
/// Реализуется объектами с физикой отскока при столкновении.
///
public interface IBouncy
{
///
/// Метод для просчета отскоков.
///
/// Коллизия, с которой столкнулся объект
/// bool - произошел ли отскок
public bool TryBounce(Collision2D collision);
}
}