Инкапсулированы методы появления и ухода персонажа Инкапсулирована работа с аниматором Работа с репликами вынесена в ScriptableObject Логика MessageBox вынесена в отдельный класс Переработан event bus персонажей Сложность и призовой модуль вынесены в отдельные классы Character.cs приведён к Single Responsibility Principle.
54 lines
1.1 KiB
C#
54 lines
1.1 KiB
C#
using PrizeSystem;
|
|
using UnityEngine;
|
|
|
|
namespace CharacterSystem
|
|
{
|
|
public class PrizeModule : MonoBehaviour
|
|
{
|
|
private Prize _prize;
|
|
public bool HasPrize { get; private set; }
|
|
|
|
public void SetPrize(Prize prize)
|
|
{
|
|
_prize = prize;
|
|
}
|
|
|
|
public void ResetModule()
|
|
{
|
|
HasPrize = true;
|
|
}
|
|
|
|
public Prize CheckPrize()
|
|
=> _prize;
|
|
|
|
public bool TryFetchPrize(out Prize prize)
|
|
{
|
|
if (HasPrize)
|
|
{
|
|
prize = _prize;
|
|
HasPrize = false;
|
|
return true;
|
|
}
|
|
|
|
prize = null;
|
|
return false;
|
|
}
|
|
|
|
public bool TryFetchIfTypeMatch<T>(out T castedPrize) where T : Prize
|
|
{
|
|
castedPrize = null;
|
|
|
|
if (HasPrize == false)
|
|
return false;
|
|
|
|
if (_prize is T casted)
|
|
{
|
|
castedPrize = casted;
|
|
HasPrize = false;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
} |