From eb7d01e4f6373022a75e6bc483f0e49088f3c1c5 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Sat, 19 Apr 2025 23:20:45 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]=20=EC=8A=A4=ED=83=AF=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=EC=97=B0=EB=8F=99=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/KSH/PlayerStats.cs | 2 +- Assets/LIN/DailyRoutine/DailyRoutineBed.cs | 4 +- .../DailyRoutine/DailyRoutineController.cs | 110 ++++++++++-------- Assets/LIN/DailyRoutine/DailyRoutineFridge.cs | 4 +- Assets/LIN/DailyRoutine/DailyRoutineSink.cs | 4 +- Assets/LIN/DailyRoutine/DailyRoutineWork.cs | 4 +- Assets/LIN/DailyRoutine/IDailyRoutine.cs | 2 +- Assets/LIN/Housing Copy.unity | 4 +- Assets/LIN/HousingCanvasManager.cs | 9 +- 9 files changed, 80 insertions(+), 63 deletions(-) diff --git a/Assets/KSH/PlayerStats.cs b/Assets/KSH/PlayerStats.cs index 703c3a1f..56cec90a 100644 --- a/Assets/KSH/PlayerStats.cs +++ b/Assets/KSH/PlayerStats.cs @@ -36,7 +36,7 @@ public class PlayerStats : MonoBehaviour { ActionEffect effect = _valueByAction.GetActionEffect(actionType); - if (HealthStat >= effect.healthChange) + if (HealthStat >= (effect.healthChange*-1)) { return true; } diff --git a/Assets/LIN/DailyRoutine/DailyRoutineBed.cs b/Assets/LIN/DailyRoutine/DailyRoutineBed.cs index 4bff9c95..afcf78d5 100644 --- a/Assets/LIN/DailyRoutine/DailyRoutineBed.cs +++ b/Assets/LIN/DailyRoutine/DailyRoutineBed.cs @@ -4,9 +4,9 @@ using UnityEngine; public class DailyRoutineBed : DailyRoutine { - public override InteractionType RoutineEnter() + public override ActionType RoutineEnter() { - return InteractionType.Bed; + return ActionType.Sleep; } protected override void RoutineConfirm() diff --git a/Assets/LIN/DailyRoutine/DailyRoutineController.cs b/Assets/LIN/DailyRoutine/DailyRoutineController.cs index 507f4742..6958a1e8 100644 --- a/Assets/LIN/DailyRoutine/DailyRoutineController.cs +++ b/Assets/LIN/DailyRoutine/DailyRoutineController.cs @@ -3,7 +3,6 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Serialization; -public enum InteractionType {Bed,Sink,Fridge,Work} [RequireComponent(typeof(Rigidbody))] public class DailyRoutineController : MonoBehaviour @@ -13,53 +12,12 @@ public class DailyRoutineController : MonoBehaviour [Header("UI 연동")] [SerializeField] HousingCanvasManager housingCanvasManager; - private Canvas _canvas; - - - private void Start() - { - SetCanvas(); - } - private void OnCollisionEnter(Collision other) { if (interactionLayerMask == (interactionLayerMask | (1 << other.gameObject.layer))) { - InteractionType interactionType = other.gameObject.GetComponent().RoutineEnter(); - - switch (interactionType) - { - case InteractionType.Bed: - housingCanvasManager.ShowInteractionButton("침대에서 잘까?","숙면으로 시간 당 체력 1을 회복한다.", () => - { - //TODO: 숙면 할 때 할 일 작성 - Debug.Log("숙면 행동을 시작합니다"); - }); - break; - case InteractionType.Sink: - housingCanvasManager.ShowInteractionButton("밀린 집안일을 처리할까?","체력 1을 사용하고 좋은일이 일어날지도 모른다", () => - { - //TODO: 집안일수행, 랜덤 강화 작성 - Debug.Log("집안일을 시작합니다"); - Debug.Log( - playerStats.CanPerformByHealth(ActionType.Housework)); - }); - break; - case InteractionType.Fridge: - housingCanvasManager.ShowInteractionButton("던전에 입장할까?","체력 3을 사용하고 3시간이 흐른다.", () => - { - //TODO: 던전 입장 - Debug.Log("던전으로 이동 합니다.. 씬전환"); - }); - break; - case InteractionType.Work: - housingCanvasManager.ShowInteractionButton("출근한다.","체력 3을 사용하고 저녁 6시에나 돌아오겠지..", () => - { - //TODO: 던전 입장 - Debug.Log("출근 후 컷씬 연출"); - }); - break; - } + ActionType interactionType = other.gameObject.GetComponent().RoutineEnter(); + PopActionOnScreen(interactionType); } } @@ -70,12 +28,68 @@ public class DailyRoutineController : MonoBehaviour housingCanvasManager.HideInteractionButton(); } } - - private void SetCanvas() + private void PopActionOnScreen(ActionType interactionType) { - if (_canvas == null) + switch (interactionType) { - _canvas = GameObject.Find("Canvas").GetComponent(); + case ActionType.Sleep: + housingCanvasManager.ShowInteractionButton("침대에서 잘까?","숙면으로 시간 당 체력 1을 회복한다.", () => + { + if (playerStats.CanPerformByHealth(ActionType.Sleep)) + { + playerStats.PerformAction(ActionType.Sleep); + } + else + { + housingCanvasManager.SetActionText("지금 체력으로 잘 수 없다.."); + housingCanvasManager.SetDescriptionText(); + } + }); + break; + case ActionType.Housework: + housingCanvasManager.ShowInteractionButton("밀린 집안일을 처리할까?","체력 1을 사용하고 좋은일이 일어날지도 모른다", () => + { + if (playerStats.CanPerformByHealth(ActionType.Housework)) + { + playerStats.PerformAction(ActionType.Housework); + //TODO: 집안일 후 랜덤 강화 효과 적용 + } + else + { + housingCanvasManager.SetActionText("집안일 할 체력이 남아있지 않다.."); + housingCanvasManager.SetDescriptionText(); + } + }); + break; + case ActionType.Dungeon: + housingCanvasManager.ShowInteractionButton("던전에 입장할까?","체력 3을 사용하고 3시간이 흐른다.", () => + { + if (playerStats.CanPerformByHealth(ActionType.Dungeon)) + { + playerStats.PerformAction(ActionType.Dungeon); + } + else + { + housingCanvasManager.SetActionText("던전에 갈 체력이 되지 않아.."); + housingCanvasManager.SetDescriptionText(); + } + }); + break; + case ActionType.Work: + housingCanvasManager.ShowInteractionButton("출근한다.","체력 3을 사용하고 저녁 6시에나 돌아오겠지..", () => + { + if (playerStats.CanPerformByHealth(ActionType.Work)) + { + playerStats.PerformAction(ActionType.Work); + Debug.Log("출근"); + } + else + { + housingCanvasManager.SetActionText("도저히 출근할 체력이 안되는걸..?"); + housingCanvasManager.SetDescriptionText(); + } + }); + break; } } } diff --git a/Assets/LIN/DailyRoutine/DailyRoutineFridge.cs b/Assets/LIN/DailyRoutine/DailyRoutineFridge.cs index dd9fabc5..73d8b80b 100644 --- a/Assets/LIN/DailyRoutine/DailyRoutineFridge.cs +++ b/Assets/LIN/DailyRoutine/DailyRoutineFridge.cs @@ -4,9 +4,9 @@ using UnityEngine; public class DailyRoutineFridge : DailyRoutine { - public override InteractionType RoutineEnter() + public override ActionType RoutineEnter() { - return InteractionType.Fridge; + return ActionType.Dungeon; } protected override void RoutineConfirm() diff --git a/Assets/LIN/DailyRoutine/DailyRoutineSink.cs b/Assets/LIN/DailyRoutine/DailyRoutineSink.cs index eaa86b5e..7f620f6e 100644 --- a/Assets/LIN/DailyRoutine/DailyRoutineSink.cs +++ b/Assets/LIN/DailyRoutine/DailyRoutineSink.cs @@ -4,9 +4,9 @@ using UnityEngine; public class DailyRoutineSink : DailyRoutine { - public override InteractionType RoutineEnter() + public override ActionType RoutineEnter() { - return InteractionType.Sink; + return ActionType.Housework; } protected override void RoutineConfirm() diff --git a/Assets/LIN/DailyRoutine/DailyRoutineWork.cs b/Assets/LIN/DailyRoutine/DailyRoutineWork.cs index 70975acd..c038d563 100644 --- a/Assets/LIN/DailyRoutine/DailyRoutineWork.cs +++ b/Assets/LIN/DailyRoutine/DailyRoutineWork.cs @@ -4,9 +4,9 @@ using UnityEngine; public class DailyRoutineWork : DailyRoutine { - public override InteractionType RoutineEnter() + public override ActionType RoutineEnter() { - return InteractionType.Work; + return ActionType.Work; } protected override void RoutineConfirm() diff --git a/Assets/LIN/DailyRoutine/IDailyRoutine.cs b/Assets/LIN/DailyRoutine/IDailyRoutine.cs index 72fc8ef0..c7981a49 100644 --- a/Assets/LIN/DailyRoutine/IDailyRoutine.cs +++ b/Assets/LIN/DailyRoutine/IDailyRoutine.cs @@ -4,7 +4,7 @@ using UnityEngine; public abstract class DailyRoutine: MonoBehaviour { - public abstract InteractionType RoutineEnter(); + public abstract ActionType RoutineEnter(); protected abstract void RoutineConfirm(); diff --git a/Assets/LIN/Housing Copy.unity b/Assets/LIN/Housing Copy.unity index 1054e1ce..a72a6d8e 100644 --- a/Assets/LIN/Housing Copy.unity +++ b/Assets/LIN/Housing Copy.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30df39657ee6bab751462e96f95247f729411b3f1e648de61a0516474c15a960 -size 152818 +oid sha256:47a2d57784bdac302cdda1c54f435703f2c63a08a58b13c386a0f74d8f4372cd +size 149903 diff --git a/Assets/LIN/HousingCanvasManager.cs b/Assets/LIN/HousingCanvasManager.cs index c62e76c2..9c1fdaa9 100644 --- a/Assets/LIN/HousingCanvasManager.cs +++ b/Assets/LIN/HousingCanvasManager.cs @@ -19,12 +19,13 @@ public class HousingCanvasManager : MonoBehaviour SetDescriptionText(); interactionButton.SetActive(false); } -//사물 이름 세팅 + + //사물 이름 세팅 public void SetActionText(string text = "") { actionText.text = text; } -//사물 상호작용 내용 설명 + //사물 상호작용 내용 설명 public void SetDescriptionText(string text = "") { descriptionText.text = text; @@ -39,7 +40,8 @@ public class HousingCanvasManager : MonoBehaviour //각 행동 별로 실행되어야 할 이벤트 구독 OnInteractionButtonPressed = onInteractionButtonPressed; } - + + //범위에서 벗어나면 상호작용 버튼 off public void HideInteractionButton() { SetActionText(); @@ -50,6 +52,7 @@ public class HousingCanvasManager : MonoBehaviour OnInteractionButtonPressed = null; } + //상호작용 버튼 눌렀을 때 public void OnClickInteractionButton() { OnInteractionButtonPressed?.Invoke();