diff --git a/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleClearEventArgs.cs b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleClearEventArgs.cs new file mode 100644 index 0000000..550f12e --- /dev/null +++ b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleClearEventArgs.cs @@ -0,0 +1,21 @@ +using GameFramework; +using GameFramework.Event; + +namespace SepCore.Event +{ + public class SelectRoleClearEventArgs : GameEventArgs + { + public static readonly int EventId = typeof(SelectRoleClearEventArgs).GetHashCode(); + + public override int Id => EventId; + + public static SelectRoleClearEventArgs Create() + { + return ReferencePool.Acquire(); + } + + public override void Clear() + { + } + } +} diff --git a/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleClearEventArgs.cs.meta b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleClearEventArgs.cs.meta new file mode 100644 index 0000000..90ae4fc --- /dev/null +++ b/Assets/GameMain/Scripts/Base/Event/SelectRoleForm/SelectRoleClearEventArgs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af5e47498caf28f4bad0b19945197767 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs b/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs index 4872c80..87a0ec9 100644 --- a/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs +++ b/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleController.cs @@ -23,6 +23,7 @@ namespace SepCore.UI { GameEntry.Event.Subscribe(SelectRoleReturnEventArgs.EventId, OnSelectRoleReturn); GameEntry.Event.Subscribe(SelectRoleHoverEventArgs.EventId, OnSelectRoleHover); + GameEntry.Event.Subscribe(SelectRoleClearEventArgs.EventId, OnSelectRoleClear); GameEntry.Event.Subscribe(SelectRoleConfirmEventArgs.EventId, OnSelectRoleConfirm); } @@ -30,6 +31,7 @@ namespace SepCore.UI { GameEntry.Event.Unsubscribe(SelectRoleReturnEventArgs.EventId, OnSelectRoleReturn); GameEntry.Event.Unsubscribe(SelectRoleHoverEventArgs.EventId, OnSelectRoleHover); + GameEntry.Event.Unsubscribe(SelectRoleClearEventArgs.EventId, OnSelectRoleClear); GameEntry.Event.Unsubscribe(SelectRoleConfirmEventArgs.EventId, OnSelectRoleConfirm); } @@ -170,6 +172,33 @@ namespace SepCore.UI await OpenUIAsync(rawData); } + private void OnSelectRoleClear(object sender, GameEventArgs e) + { + if (e is not SelectRoleClearEventArgs) + { + return; + } + + if (!IsCurrentFormEventSender(sender)) + { + return; + } + + OnSelectRoleClearAsync().Forget(); + } + + private async UniTaskVoid OnSelectRoleClearAsync() + { + if (_useCase == null) + { + Log.Error("SelectRoleController.OnSelectRoleClearAsync() useCase is null."); + return; + } + + SelectRoleRawData rawData = _useCase.ClearSelection(); + await OpenUIAsync(rawData); + } + private void OnSelectRoleConfirm(object sender, GameEventArgs e) { if (e is not SelectRoleConfirmEventArgs) diff --git a/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleForm.cs b/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleForm.cs index 3779f3f..8421c18 100644 --- a/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleForm.cs +++ b/Assets/GameMain/Scripts/Presentation/Menu/SelectRole/SelectRoleForm.cs @@ -98,5 +98,10 @@ namespace SepCore.UI { GameEntry.Event.Fire(this, SelectRoleConfirmEventArgs.Create()); } + + public void OnRandomHoverEnter() + { + GameEntry.Event.Fire(this, SelectRoleClearEventArgs.Create()); + } } } diff --git a/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs b/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs index cb11c56..c4bb6a7 100644 --- a/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs +++ b/Assets/GameMain/Scripts/Runtime/UIBase/Menu/SelectRoleForm/SelectRoleUseCase.cs @@ -30,6 +30,12 @@ namespace SepCore.UI return BuildModel(roleId); } + public SelectRoleRawData ClearSelection() + { + SelectedRoleId = 0; + return BuildModel(0); + } + public bool ConfirmSelectedRole() { DRRole[] roles = _roleDataTable != null ? _roleDataTable.GetAllDataRows() : null; diff --git a/Assets/GameMain/UI/UIForms/SelectRoleForm.prefab b/Assets/GameMain/UI/UIForms/SelectRoleForm.prefab index aeaae08..b3e3153 100644 --- a/Assets/GameMain/UI/UIForms/SelectRoleForm.prefab +++ b/Assets/GameMain/UI/UIForms/SelectRoleForm.prefab @@ -748,7 +748,7 @@ GameObject: - component: {fileID: 402127537566038992} - component: {fileID: 7266142669901275671} m_Layer: 5 - m_Name: RoleItem + m_Name: RandomRole m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -843,6 +843,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 7510942500789349387} + m_TargetAssemblyTypeName: SepCore.UI.SelectRoleForm, SepCore.Presentation + m_MethodName: OnRandomHoverEnter + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 _onClickAction: m_PersistentCalls: m_Calls: @@ -2729,7 +2741,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 4965267041341936459} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -2965,7 +2977,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 8836415805828564547} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -3201,7 +3213,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 7249589387663696490} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -3432,7 +3444,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 7108998779798040682} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -3932,7 +3944,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 1254353399428518429} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -4163,7 +4175,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 1271290373848557919} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -4394,7 +4406,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 319567477725180536} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -4625,7 +4637,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 4146823842836454614} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -4856,7 +4868,7 @@ PrefabInstance: type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 5201218836764882073} + objectReference: {fileID: 3893566779691405690} - target: {fileID: 3813327180119752992, guid: 78595a129d0438c44b2d52720e9c0edd, type: 3} propertyPath: _onPointerEnterAction.m_PersistentCalls.m_Calls.Array.data[1].m_CallState diff --git a/Assets/GameMain/UI/UIItems/RoleItem.prefab b/Assets/GameMain/UI/UIItems/RoleItem.prefab index 0ef5df7..0202549 100644 --- a/Assets/GameMain/UI/UIItems/RoleItem.prefab +++ b/Assets/GameMain/UI/UIItems/RoleItem.prefab @@ -261,10 +261,10 @@ MonoBehaviour: _onClickAction: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: UI.UGuiForm, Assembly-CSharp - m_MethodName: PlayUISound - m_Mode: 3 + - m_Target: {fileID: 6873972826773845199} + m_TargetAssemblyTypeName: SepCore.UI.RoleItem, SepCore.Presentation + m_MethodName: OnHoverEnter + m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine