From a119382330bc08333b6cf1f95fbe8c4ab7d25b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=82=B0?= Date: Mon, 1 Sep 2025 09:40:23 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B8=ED=84=B0=EB=A0=89=EC=85=98=20?= =?UTF-8?q?=EC=B6=A9=EB=8F=8C=20=EB=A8=B8=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Event/RestaurantInteractionEvents.cs | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Assets/_DDD/_Scripts/Restaurant/Event/RestaurantInteractionEvents.cs b/Assets/_DDD/_Scripts/Restaurant/Event/RestaurantInteractionEvents.cs index cdcb66636..f33d3189c 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Event/RestaurantInteractionEvents.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Event/RestaurantInteractionEvents.cs @@ -24,30 +24,30 @@ public class RestaurantInteractionEvent : RestaurantEventBase protected override bool EventSolve(GameObject causer, GameObject target, InteractionType interactionType, ScriptableObject payload) { - if (!RestaurantInteractionEventSolvers.TypeToSolver.TryGetValue(interactionType, out var solverType)) - { - return false; - } - - Component solverComponent = causer.GetComponent(solverType); - IInteractionSolver solver = solverComponent as IInteractionSolver; IInteractor interactor = causer.GetComponent(); - IInteractable interactable = target.GetComponent(); - - // Cast solverComponent to IInteractable - if (solver is not null && interactor is not null) + if (interactor != null && interactor.CanSolveInteractionType(interactionType)) { - bool canExecute = solver.CanExecuteInteraction(interactor, interactable, payload); - if (canExecute) + if (interactor.FetchSolverTypeForInteraction(interactionType, out var solverType)) { - return solver.ExecuteInteraction(interactor, interactable, payload); + // Solve event directly. 이벤트 처리는 여기서 하고, 이벤트 호출로는 이런 이벤트가 호출되었고 결과가 어떻다는 거 전파하는 식으로. + if (solverType != null) + { + IInteractionSolver solver = causer.GetComponent(solverType) as IInteractionSolver; + IInteractable interactable = target.GetComponent(); + if (solver is not null) + { + bool canExecute = solver.CanExecuteInteraction(interactor, interactable, payload); + return canExecute && solver.ExecuteInteraction(interactor, interactable, payload); + } + else + { + // Should not reach here! + Debug.Assert(false, "Solver Component or Interactor is null"); + } + } } - - return false; } - - // Should not reach here! - Debug.Assert(false, "Solver Component or Interactor is null"); + return false; } }