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