DEG-166-NPC-대사-추가 #54

Merged
Sehyeon merged 4 commits from DEG-166-NPC-대사-추가 into main 2025-05-14 05:53:43 +00:00
6 changed files with 29 additions and 45 deletions
Showing only changes of commit 2dd70dff2b - Show all commits

View File

@ -15,10 +15,6 @@ public class DungeonLogic : MonoBehaviour
private PlayerController _player;
private EnemyController _enemy;
// 던전 결과 이벤트
public event Action OnDungeonSuccess;
public event Action OnDungeonFailure;
private void Awake()
{

View File

@ -50,6 +50,7 @@ public class PlayerStats : MonoBehaviour
private SpeechBubbleFollower _speechBubbleFollower;
private bool _isActiveBubble;
private bool _hasShownBubbleToday; // 하루에 말풍선 하나만 표시하기
private InteractionAnimationPanelController _interactionAnimation; // 상호작용 패널 Active 여부 확인
private int _mealCount;
public int MealCount => _mealCount;
@ -142,8 +143,7 @@ public class PlayerStats : MonoBehaviour
ShowBubble();
}
}
private InteractionAnimationPanelController _interactionAnimation;
public void SetInteractionPanelController(InteractionAnimationPanelController panelController)
{
_interactionAnimation = panelController;
@ -151,7 +151,7 @@ public class PlayerStats : MonoBehaviour
public void ShowBubble()
{
if (_interactionAnimation.IsPanelActive()) return;
if (_interactionAnimation != null && _interactionAnimation.IsPanelActive()) return;
if(_isActiveBubble)
_speechBubbleFollower.ShowMessage();

View File

@ -35,8 +35,9 @@ public enum GamePhase // 단계별로 출력되는 대화가 달라짐
{
Intro, // 인트로 설명문
Gameplay, // 게임 진행 팁? 등
End, // 엔딩 대화
ZeroEnd
End, // 회고 엔딩
ZeroEnd, // 평판 0 엔딩
FailEnd // 같은 스테이지 3회 실패 엔딩
}
public class ChatWindowController : MonoBehaviour, IPointerClickHandler

View File

@ -90,7 +90,11 @@ public class FairyDialogueManager
else if (phase == GamePhase.ZeroEnd)
{
StartPhaseDialogue("zero");
}
}
else if (phase == GamePhase.FailEnd)
{
StartPhaseDialogue("fail");
}
}
// 단계별 시작 대화 찾기 및 시작

View File

@ -13,6 +13,9 @@ public partial class GameManager : Singleton<GameManager>
private int stageLevel = 1; // 스테이지 정보
public int StageLevel => stageLevel;
private int tryStageCount = 0;
public int TryStageCount => tryStageCount;
// 날짜 변경 이벤트, 추후에 UI 상의 날짜를 변경할 때 사용
public event Action<int> OnDayChanged;
@ -79,6 +82,7 @@ public partial class GameManager : Singleton<GameManager>
public void ChangeToGameScene()
{
tryStageCount++; // 던전 시도 횟수 증가
SceneManager.LoadScene("ReDungeon"); // 던전 Scene
HandleSceneAudio("Dungeon");
}
@ -86,6 +90,12 @@ public partial class GameManager : Singleton<GameManager>
public void ChangeToHomeScene()
{
SceneManager.LoadScene("ReHousing"); // Home Scene
if (tryStageCount >= 3) // 엔딩
{
FailEnd();
}
HandleSceneAudio("Housing");
}

View File

@ -16,51 +16,24 @@ public partial class GameManager
public void ClearStage()
{
tryStageCount = 0; // 시도 횟수 초기화
stageLevel++;
}
private void ZeroReputationEnd()
private void ZeroReputationEnd() // 평판 0 엔딩
{
// npc와의 대화 출력, Phase = zero
StartNPCDialogue(GamePhase.ZeroEnd);
}
private void FailEnd() // 같은 스테이지 3회 도전 실패 엔딩
{
StartNPCDialogue(GamePhase.FailEnd);
}
// 엔딩 관련 메서드. 7일차에 실행
// 회고 엔딩. 7일차에 실행
private void TriggerTimeEnding()
{
// npc와의 마지막 대화 출력
StartNPCDialogue(GamePhase.End);
// 플레이어 상태에 따라 엔딩 판별
// EndingType endingType = DetermineEnding();
// 엔딩 타입에 따라 다른 씬이나 UI 표시
/*switch (endingType)
{
case EndingType.Normal:
Debug.Log("던전 공략 성공");
// TODO: 엔딩 관련 패널 띄우기
break;
case EndingType.Bad:
Debug.Log("던전 공략 실패");
break;
case EndingType.Happy:
Debug.Log("던전 공략 성공과 훌륭한 평판 작");
break;
}*/
}
// 던전 스테이지와 평판 수치로 엔딩 판별
private EndingType DetermineEnding()
{
if (stageLevel < GameConstants.maxStage) // 현재 스테이지 1 혹은 2
return EndingType.Bad;
if (PlayerStats.Instance.ReputationStat >= happyEndReputation) // 평판이 일정 수치 이상
return EndingType.Happy;
return EndingType.Normal;
}
}