Degulleo3D/Assets/LIN/DailyRoutine/DailyRoutineController.cs

82 lines
2.9 KiB
C#

using System;
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
{
[SerializeField] PlayerStats playerStats;
[SerializeField] LayerMask interactionLayerMask;
[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<DailyRoutine>().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;
}
}
}
private void OnCollisionExit(Collision other)
{
if (interactionLayerMask == (interactionLayerMask | (1 << other.gameObject.layer)))
{
housingCanvasManager.HideInteractionButton();
}
}
private void SetCanvas()
{
if (_canvas == null)
{
_canvas = GameObject.Find("Canvas").GetComponent<Canvas>();
}
}
}