引入 UISerializationRoot 和 Item

- 完成 MenuForm 和 SelectRoleForm 的迁移
This commit is contained in:
2026-09-13 22:18:29 +08:00
parent e2fdb660ab
commit 091a29db63
101 changed files with 5281 additions and 5753 deletions
@@ -0,0 +1,8 @@
namespace SepCore.UI
{
public class RoleItemRawData
{
public string RoleName;
public string IconName;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bd682bb88cf9b8c4fac0fe7002d3646b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
namespace SepCore.UI
{
public class SelectRoleRawData
{
public RoleItemRawData[] RoleItems;
public ShowAreaRawData SelectedRole;
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5c23c1db541a47b09b8c475018758f9e
timeCreated: 1771144321
@@ -0,0 +1,91 @@
using System.Collections.Generic;
using System.Linq;
using SepCore.Definition;
using SepCore.Procedure;
using UnityGameFramework.Runtime;
using Random = UnityEngine.Random;
namespace SepCore.UI
{
public class SelectRoleUseCase : IUIUseCase
{
private readonly IProcedureMenu _procedureMenu;
public string SelectedRoleName { get; private set; }
public SelectRoleUseCase(IProcedureMenu procedureMenu)
{
_procedureMenu = procedureMenu;
}
public SelectRoleRawData CreateModel()
{
return BuildModel(null);
}
public SelectRoleRawData SelectRole(string roleName)
{
SelectedRoleName = roleName;
return BuildModel(roleName);
}
public SelectRoleRawData ClearSelection()
{
SelectedRoleName = null;
return BuildModel(null);
}
public bool ConfirmSelectedRole()
{
var roles = GameEntry.Luban.GetTable<RoleConfig>();
if (string.IsNullOrEmpty(SelectedRoleName))
{
int randomIndex = Random.Range(0, roles.Count);
SelectedRoleName = roles[randomIndex].Name;
}
_procedureMenu.ConfirmSelectRole(SelectedRoleName);
return true;
}
private SelectRoleRawData BuildModel(string selectedRoleName)
{
IReadOnlyList<RoleConfig> roles = GameEntry.Luban.GetTable<RoleConfig>();
int count = roles.Count;
RoleItemRawData[] roleItems = new RoleItemRawData[count];
for (int i = 0; i < count; i++)
{
roleItems[i] = new RoleItemRawData
{
RoleName = roles[i].Name,
IconName = roles[i].Sprite
};
}
ShowAreaRawData selectedRoleData = null;
if (!string.IsNullOrEmpty(selectedRoleName))
{
RoleConfig selectedRole = roles.FirstOrDefault(r => r.Name == selectedRoleName);
if (selectedRole == null)
{
Log.Error("SelectRoleUseCase.BuildModel() role '{0}' is not found.", selectedRoleName);
}
else
{
selectedRoleData = new ShowAreaRawData
{
Name = selectedRole.Name,
InitialProperties = selectedRole.Modifiers
};
}
}
return new SelectRoleRawData
{
RoleItems = roleItems,
SelectedRole = selectedRoleData
};
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: aec2db2225cb4bb890eb347e73fc5890
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,11 @@
using System.Collections.Generic;
using SepCore.Definition;
namespace SepCore.UI
{
public class ShowAreaRawData
{
public string Name;
public List<modifier> InitialProperties;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3a582029cb4c5e5459ebe6d42335299f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: