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 { /// /// Метод для получения урона объектом. /// /// Количество урона public void TakeDamage(float amount); /// /// Метод для восстановления здоровья объекта. /// /// Количество восстанавливаемого здоровья public void Heal(float amount); /// /// Метод для обработки смерти объекта. /// Вызывается когда здоровье достигает нуля или меньше. /// public void Die(); } /// /// Интерфейс для объектов, которые могут выполнять действие. /// Используется для интерактивных объектов в игре. /// public interface IActionable { /// /// Выполняет действие, связанное с объектом. /// Например, активация механизма, открытие двери и т.д. /// public void Activate(); } } 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); } }