重构:调整目录结构和文件所属目录
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
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 SelectRoleRawData ClearSelection()
|
||||
{
|
||||
SelectedRoleId = 0;
|
||||
return BuildModel(0);
|
||||
}
|
||||
|
||||
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;
|
||||
RoleItemRawData[] roleItems = new RoleItemRawData[count];
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
roleItems[i] = new RoleItemRawData
|
||||
{
|
||||
RoleId = roles[i].Id,
|
||||
IconName = roles[i].IconName
|
||||
};
|
||||
}
|
||||
|
||||
DRRole selectedRole = selectedRoleId > 0 ? _roleDataTable.GetDataRow(selectedRoleId) : null;
|
||||
RolePropertyAreaRawData selectedRoleData = selectedRole == null
|
||||
? null
|
||||
: new RolePropertyAreaRawData
|
||||
{
|
||||
RoleId = selectedRole.Id,
|
||||
RoleName = selectedRole.RoleName,
|
||||
InitialProperties = selectedRole.InitialProperties
|
||||
};
|
||||
|
||||
return new SelectRoleRawData
|
||||
{
|
||||
RoleItems = roleItems,
|
||||
SelectedRole = selectedRoleData
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user