Degulleo3D/Assets/KSH/ValueByAction.cs

61 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 각 액션이 스탯에 미치는 영향을 담는 간단한 구조체
public struct ActionEffect
{
public float timeChange;
public float healthChange;
public float reputationChange;
public ActionEffect(float time, float health, float reputation)
{
timeChange = time;
healthChange = health;
reputationChange = reputation;
}
}
public class ValueByAction
{
private GameConstants _gameConstants;
private Dictionary<ActionType, ActionEffect> actionEffects;
public void Initialize()
{
_gameConstants = new GameConstants();
InitializeActionEffects();
}
private void InitializeActionEffects()
{
actionEffects = new Dictionary<ActionType, ActionEffect>
{
// 기본 액션들, 효과(시간, 체력, 평판 순)
{ ActionType.Sleep, new ActionEffect(_gameConstants.forcedValue, 0, 0) }, // 8시 강제 기상
{ ActionType.OverSlept, new ActionEffect(_gameConstants.forcedValue, 0, 0) }, // 결근 (오후 3~6시 기상)
{ ActionType.ForcedSleep, new ActionEffect(_gameConstants.forcedValue, 4, 0) }, // 탈진
{ ActionType.Eat, new ActionEffect(+1.0f, +1.0f, 0) },
{ ActionType.Work, new ActionEffect(+10.0f, -3.0f, +0.2f) }, // 8to6: 10시간
{ ActionType.Dungeon, new ActionEffect(+3.0f, -3.0f, 0) },
{ ActionType.Housework, new ActionEffect(+1.0f, -1.0f, +0.2f) },
{ ActionType.OvertimeWork, new ActionEffect(+4.0f, -5.0f, +1.0f) },
{ ActionType.TeamDinner, new ActionEffect(_gameConstants.forcedValue, +8.0f, 0) }, // 수면 강제(8시 기상) 후 최대 체력
{ ActionType.Absence, new ActionEffect(0, 0, -3.0f) }
};
}
// 액션에 따른 효과(스탯 가감)
public ActionEffect GetActionEffect(ActionType actionType)
{
if (actionEffects.TryGetValue(actionType, out ActionEffect effect))
{
return effect;
}
// 없으면 기본값 반환
return new ActionEffect(0, 0, 0);
}
}