80 lines
2.4 KiB
C#
80 lines
2.4 KiB
C#
using SepCore.DataTable;
|
|
using GameFramework.DataTable;
|
|
using SepCore.Procedure;
|
|
using Random = UnityEngine.Random;
|
|
|
|
namespace SepCore.UI
|
|
{
|
|
public class SelectRoleUseCase : IUIUseCase
|
|
{
|
|
private readonly IDataTable<DRRole> _roleDataTable;
|
|
|
|
private readonly IProcedureMenu _procedureMenu;
|
|
|
|
public int SelectedRoleId { get; private set; }
|
|
|
|
public SelectRoleUseCase(IProcedureMenu procedureMenu)
|
|
{
|
|
_procedureMenu = procedureMenu;
|
|
_roleDataTable = GameEntry.DataTable.GetDataTable<DRRole>();
|
|
}
|
|
|
|
public SelectRoleRawData CreateModel()
|
|
{
|
|
return BuildModel(0);
|
|
}
|
|
|
|
public SelectRoleRawData SelectRole(int roleId)
|
|
{
|
|
SelectedRoleId = roleId;
|
|
return BuildModel(roleId);
|
|
}
|
|
|
|
public bool ConfirmSelectedRole()
|
|
{
|
|
DRRole[] roles = _roleDataTable != null ? _roleDataTable.GetAllDataRows() : null;
|
|
if (roles == null || roles.Length == 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (SelectedRoleId < 0 || _roleDataTable.GetDataRow(SelectedRoleId) == null)
|
|
{
|
|
int randomIndex = Random.Range(0, roles.Length);
|
|
SelectedRoleId = roles[randomIndex].Id;
|
|
}
|
|
|
|
bool result = SelectedRoleId >= 0;
|
|
if (result)
|
|
{
|
|
_procedureMenu.ConfirmSelectRole(SelectedRoleId);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
private SelectRoleRawData BuildModel(int selectedRoleId)
|
|
{
|
|
DRRole[] roles = _roleDataTable.GetAllDataRows();
|
|
int count = _roleDataTable.Count;
|
|
int[] roleIds = new int[count];
|
|
string[] iconNames = new string[count];
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
roleIds[i] = roles[i].Id;
|
|
iconNames[i] = roles[i].IconName;
|
|
}
|
|
|
|
DRRole selectedRole = selectedRoleId > 0 ? _roleDataTable.GetDataRow(selectedRoleId) : null;
|
|
return new SelectRoleRawData
|
|
{
|
|
RoleIds = roleIds,
|
|
RoleIconNames = iconNames,
|
|
SelectedRoleId = selectedRole?.Id ?? -1,
|
|
SelectedRoleName = selectedRole?.RoleName,
|
|
SelectedRoleInitialProperties = selectedRole?.InitialProperties
|
|
};
|
|
}
|
|
}
|
|
}
|