78 lines
2.1 KiB
C#
78 lines
2.1 KiB
C#
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using Platformer.Mechanics;
|
|
|
|
namespace Platformer.UI
|
|
{
|
|
/// <summary>
|
|
/// Health.OnDeathEvent 수신 시 부활/재시작 팝업 표시.
|
|
/// PD 지시 2026-05-07:
|
|
/// - 예 → 제자리 부활 (Health.Resurrect, 부활 직후 2초 무적)
|
|
/// - 아니오 → 씬 재시작 (SceneManager.LoadScene)
|
|
/// 임시 OnGUI 영역 — 향후 uGUI Canvas 영역으로 미관 정정 별건.
|
|
/// </summary>
|
|
[RequireComponent(typeof(Health))]
|
|
public class ResurrectPromptUI : MonoBehaviour
|
|
{
|
|
Health health;
|
|
bool showPrompt;
|
|
|
|
void Awake()
|
|
{
|
|
health = GetComponent<Health>();
|
|
if (health != null)
|
|
{
|
|
health.OnDeathEvent += OnDeath;
|
|
health.OnResurrectEvent += OnResurrect;
|
|
}
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
if (health != null)
|
|
{
|
|
health.OnDeathEvent -= OnDeath;
|
|
health.OnResurrectEvent -= OnResurrect;
|
|
}
|
|
}
|
|
|
|
void OnDeath()
|
|
{
|
|
showPrompt = true;
|
|
Time.timeScale = 0f;
|
|
}
|
|
|
|
void OnResurrect()
|
|
{
|
|
showPrompt = false;
|
|
Time.timeScale = 1f;
|
|
}
|
|
|
|
void OnGUI()
|
|
{
|
|
if (!showPrompt) return;
|
|
|
|
float w = 360f, h = 200f;
|
|
float x = (Screen.width - w) * 0.5f;
|
|
float y = (Screen.height - h) * 0.5f;
|
|
|
|
GUI.Box(new Rect(x, y, w, h), "사망 — 부활하시겠습니까?");
|
|
|
|
if (GUI.Button(new Rect(x + 30f, y + 110f, 130f, 60f), "예 (제자리 부활)"))
|
|
{
|
|
if (health != null)
|
|
{
|
|
health.canResurrect = true;
|
|
health.Resurrect();
|
|
}
|
|
}
|
|
|
|
if (GUI.Button(new Rect(x + 200f, y + 110f, 130f, 60f), "아니오 (재시작)"))
|
|
{
|
|
Time.timeScale = 1f;
|
|
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
|
|
}
|
|
}
|
|
}
|
|
}
|