[Refact] 돌발 이벤트 발생 방식 수정
This commit is contained in:
parent
09f1882ce1
commit
ed02ca4c27
@ -44,86 +44,51 @@ public class InteractionController : MonoBehaviour
|
||||
// ActionType 별로 화면에 상호작용 내용 표시, 상호작용 버튼에 이벤트 작성
|
||||
private void PopActionOnScreen(ActionType interactionType)
|
||||
{
|
||||
switch (interactionType)
|
||||
HousingConstants.interactions.TryGetValue(interactionType, out var interactionTexts);
|
||||
|
||||
housingCanvasController.ShowInteractionButton(interactionTexts.ActionText,interactionTexts.DescriptionText,()=>
|
||||
{
|
||||
case ActionType.Sleep:
|
||||
housingCanvasController.ShowInteractionButton("침대에서 잘까?","숙면으로 시간 당 체력 1을 회복한다.", () =>
|
||||
if (playerStats.CanPerformByHealth(interactionType))
|
||||
{
|
||||
playerStats.PerformAction(interactionType);
|
||||
// 출근에 해당하는 돌발 이벤트 호출
|
||||
if (interactionType != ActionType.Work) return;
|
||||
playerStats.OnWorked += SuddenAfterWorkEventHappen();
|
||||
}
|
||||
else
|
||||
{
|
||||
housingCanvasController.SetActionText(interactionTexts.LackOfHealth);
|
||||
housingCanvasController.SetDescriptionText();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Action SuddenEventHappen()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public Action SuddenAfterWorkEventHappen()
|
||||
{
|
||||
AfterWorkEvent afterWorkEvent = _suddenEventController.SuddenEventCalculator();
|
||||
if (afterWorkEvent == AfterWorkEvent.None)
|
||||
return null;
|
||||
switch (afterWorkEvent)
|
||||
{
|
||||
case AfterWorkEvent.OvertimeWork:
|
||||
housingCanvasController.ShowSuddenEventPanel("부장님이 퇴근을 안하셔.. 야근할까?", () =>
|
||||
{
|
||||
playerStats.PerformAction(ActionType.Sleep);
|
||||
housingCanvasController.HideInteractionButton();
|
||||
//TODO: 화면 전환 효과와 UI 업데이트 작업
|
||||
//Todo: 컷씬과 스테이터스 변경
|
||||
housingCanvasController.HideSuddenEventPanel();
|
||||
});
|
||||
break;
|
||||
case ActionType.Housework:
|
||||
housingCanvasController.ShowInteractionButton("밀린 집안일을 처리할까?","체력 1을 사용하고 좋은일이 일어날지도 모른다", () =>
|
||||
case AfterWorkEvent.TeamGathering:
|
||||
housingCanvasController.ShowSuddenEventPanel("갑자기 팀 회식이 잡혔다. 참석 해야 겠지?", () =>
|
||||
{
|
||||
if (playerStats.CanPerformByHealth(ActionType.Housework))
|
||||
{
|
||||
playerStats.PerformAction(ActionType.Housework);
|
||||
housingCanvasController.HideInteractionButton();
|
||||
//TODO: 집안일 후 랜덤 강화 효과 적용
|
||||
}
|
||||
else
|
||||
{
|
||||
housingCanvasController.SetActionText("힘들어서 못해..");
|
||||
housingCanvasController.SetDescriptionText();
|
||||
}
|
||||
housingCanvasController.HideSuddenEventPanel();
|
||||
});
|
||||
break;
|
||||
case ActionType.Dungeon:
|
||||
housingCanvasController.ShowInteractionButton("던전에 입장할까?","체력 3을 사용하고 3시간이 흐른다.", () =>
|
||||
{
|
||||
if (playerStats.CanPerformByHealth(ActionType.Dungeon))
|
||||
{
|
||||
playerStats.PerformAction(ActionType.Dungeon);
|
||||
housingCanvasController.HideInteractionButton();
|
||||
}
|
||||
else
|
||||
{
|
||||
housingCanvasController.SetActionText("던전에 갈 체력이 되지 않아..");
|
||||
housingCanvasController.SetDescriptionText();
|
||||
}
|
||||
});
|
||||
break;
|
||||
case ActionType.Work:
|
||||
housingCanvasController.ShowInteractionButton("출근한다.","체력 3을 사용하고 저녁 6시에나 돌아오겠지..", () =>
|
||||
{
|
||||
if (playerStats.CanPerformByHealth(ActionType.Work))
|
||||
{
|
||||
playerStats.PerformAction(ActionType.Work);
|
||||
housingCanvasController.HideInteractionButton();
|
||||
// playerStats.OnWorked += SuddenEventHappen();
|
||||
|
||||
//돌발 이벤트 랜덤 발생
|
||||
AfterWorkEvent afterWorkEvent = _suddenEventController.SuddenEventCalculator();
|
||||
if (afterWorkEvent == AfterWorkEvent.None)
|
||||
return;
|
||||
switch (afterWorkEvent)
|
||||
{
|
||||
case AfterWorkEvent.OvertimeWork:
|
||||
housingCanvasController.ShowSuddenEventPanel("부장님이 퇴근을 안하셔.. 야근할까?", () =>
|
||||
{
|
||||
//Todo: 컷씬과 스테이터스 변경
|
||||
housingCanvasController.HideSuddenEventPanel();
|
||||
});
|
||||
break;
|
||||
case AfterWorkEvent.TeamGathering:
|
||||
housingCanvasController.ShowSuddenEventPanel("갑자기 팀 회식이 잡혔다. 참석 해야 겠지?", () =>
|
||||
{
|
||||
housingCanvasController.HideSuddenEventPanel();
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
housingCanvasController.SetActionText("도저히 출근할 체력이 안되는걸..?");
|
||||
housingCanvasController.SetDescriptionText();
|
||||
}
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
BIN
Assets/LIN/Housing Copy.unity
(Stored with Git LFS)
BIN
Assets/LIN/Housing Copy.unity
(Stored with Git LFS)
Binary file not shown.
@ -83,5 +83,6 @@ public class HousingCanvasController : MonoBehaviour
|
||||
public void OnClickInteractionButton()
|
||||
{
|
||||
OnInteractionButtonPressed?.Invoke();
|
||||
HideInteractionButton();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,7 @@
|
||||
//퇴근 후 발생할 수 있는 돌발 이벤트
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
public enum AfterWorkEvent
|
||||
{
|
||||
None,
|
||||
@ -13,9 +16,34 @@ public static class HousingConstants
|
||||
public static int AFTER_WORK_DENOMINATOR = 4;
|
||||
|
||||
|
||||
#region MyRegion
|
||||
#region 상호작용 멘트
|
||||
|
||||
public static readonly Dictionary<ActionType, InteractionTexts> interactions =
|
||||
new Dictionary<ActionType, InteractionTexts>
|
||||
{
|
||||
{ ActionType.Sleep, new InteractionTexts("침대에서 잘까?","숙면으로 시간 당 체력 1을 회복한다.", ".")},
|
||||
{ ActionType.Housework, new InteractionTexts("밀린 집안일을 처리할까?","체력 1을 사용하고 좋은일이 일어날지도 모른다","힘들어서 못해..")},
|
||||
{ ActionType.Dungeon, new InteractionTexts("던전에 입장할까?","체력 3을 사용하고 3시간이 흐른다.","던전에 갈 체력이 되지 않아..")},
|
||||
{ ActionType.Work, new InteractionTexts("출근한다.","체력 3을 사용하고 저녁 6시에나 돌아오겠지..", "도저히 출근할 체력이 안되는걸..?")}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
public struct InteractionTexts
|
||||
{
|
||||
public string ActionText { get; private set; }
|
||||
public string DescriptionText { get; private set; }
|
||||
public string LackOfHealth { get; private set; }
|
||||
|
||||
public InteractionTexts(string actionText, string descriptionText, string lackOfHealth)
|
||||
{
|
||||
ActionText = actionText;
|
||||
DescriptionText = descriptionText;
|
||||
LackOfHealth = lackOfHealth;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user