DEG-143[Fix] 병합 버그 수정

This commit is contained in:
99jamin 2025-05-13 14:00:41 +09:00
parent 979d191ca8
commit 90a58c832a
2 changed files with 63 additions and 1 deletions

View File

@ -29,6 +29,11 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
private IPlayerState _currentStateClass { get; set; }
private IPlayerAction _currentAction;
public IPlayerAction CurrentAction => _currentAction;
// 강화 관련
private float attackPowerLevel;
private float moveSpeedLevel;
private float dashCoolLevel;
// 상태 관련
private PlayerStateIdle _playerStateIdle;
@ -49,6 +54,13 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
public CharacterController CharacterController => _characterController;
public bool IsBattle => _isBattle;
public Transform DashEffectAnchor => dashEffectAnchor;
//대시 쿨타임 관련
[SerializeField] private float dashCooldownDuration = 1.5f;
private float dashCooldownTimer = 0f;
public bool IsDashOnCooldown => dashCooldownTimer > 0f;
public float DashCooldownRatio => dashCooldownTimer / dashCooldownDuration;
private void Awake()
{
@ -72,6 +84,15 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
hitEffectController = GetComponentInChildren<PlayerHitEffectController>();
PlayerInit();
//강화 수치 적용
attackPowerLevel = 1 + (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.AttackPower) / 2;
moveSpeedLevel = 1 + (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.MoveSpeed) / 2;
dashCoolLevel = (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.DashCoolDown)/4;
attackPower *= attackPowerLevel;
moveSpeed *= moveSpeedLevel;
dashCooldownDuration -= dashCoolLevel;
}
private void Update()
@ -81,6 +102,10 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
_playerStates[CurrentState].Update();
}
//대시 쿨타임 진행
if (dashCooldownTimer > 0f)
dashCooldownTimer -= Time.deltaTime;
// Hit 상태거나 게임 끝났을 땐 땐 입력 무시
if (CurrentState == PlayerState.Hit || CurrentState == PlayerState.Dead || CurrentState == PlayerState.Win)
return;
@ -231,6 +256,13 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
{
if (!_isBattle) return;
// 쿨타임 중이면 무시
if (IsDashOnCooldown)
{
Debug.Log("대시 쿨타임 중");
return;
}
// 만약 공격 중이면 강제로 공격 종료
if (_currentAction == _attackAction && _attackAction.IsActive)
{
@ -244,6 +276,9 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
_currentAction = _actionDash;
_actionDash.StartAction(this);
// 쿨타임 시작
dashCooldownTimer = dashCooldownDuration;
}
public void OnActionEnded(IPlayerAction action)

View File

@ -5,7 +5,7 @@ using UnityEngine;
using UnityEngine.SceneManagement;
using Random = UnityEngine.Random;
public class PlayerStats : MonoBehaviour
public class PlayerStats : MonoBehaviour, ISaveable
{
public class StatsChangeData // 변경된 스탯 데이터
{
@ -354,4 +354,31 @@ public class PlayerStats : MonoBehaviour
}
#endregion
public void ApplySaveData(Save save)
{
if (save?.homeSave != null)
{
TimeStat = save.homeSave.time;
HealthStat = save.homeSave.health;
ReputationStat = save.homeSave.reputation;
//mealCount = save.homeSave.mealCount;
//houseworkCount = save.homeSave.houseworkCount;
}
}
public Save ExtractSaveData()
{
return new Save
{
homeSave = new HomeSave
{
time = this.TimeStat,
health = this.HealthStat,
reputation = this.ReputationStat,
//mealCount = this.mealCount,
//houseworkCount = this.houseworkCount
}
};
}
}