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(); } } namespace RR.Game2D.Core.Managers.Interfaces { public interface ILauchable { /// /// Метод для запуска объекта как снаряд /// /// Направление запуска /// Скорость запуска /// Владелец public void Launch(Vector2 direction, float speed, GameObject thrower); } public interface IBouncy { /// /// Метод для просчета отскоков. /// /// Коллизия, с которой столкнулся объект /// bool - произошел ли отскок public bool TryBounce(Collision2D collision); } }