namespace Zennysoft.Ma.Adapter; using Chickensoft.Collections; using Godot; public class PlayerStats { public PlayerStats(AutoProp currentHP, AutoProp maximumHP, AutoProp currentVT, AutoProp maximumVT, AutoProp currentAttack, AutoProp maxAttack, AutoProp bonusAttack, AutoProp currentDefense, AutoProp maxDefense, AutoProp bonusDefense, AutoProp currentExp, AutoProp expToNextLevel, AutoProp currentLevel, AutoProp luck) { CurrentHP = currentHP; MaximumHP = maximumHP; CurrentVT = currentVT; MaximumVT = maximumVT; CurrentAttack = currentAttack; MaxAttack = maxAttack; BonusAttack = bonusAttack; CurrentDefense = currentDefense; MaxDefense = maxDefense; BonusDefense = bonusDefense; CurrentExp = currentExp; ExpToNextLevel = expToNextLevel; CurrentLevel = currentLevel; Luck = luck; } public AutoProp CurrentHP { get; init; } public AutoProp MaximumHP { get; init; } public AutoProp CurrentVT { get; init; } public AutoProp MaximumVT { get; init; } public AutoProp CurrentAttack { get; init; } public AutoProp MaxAttack { get; init; } public AutoProp BonusAttack { get; init; } public AutoProp CurrentDefense { get; init; } public AutoProp MaxDefense { get; init; } public AutoProp BonusDefense { get; init; } public AutoProp CurrentExp { get; init; } public AutoProp ExpToNextLevel { get; init; } public AutoProp CurrentLevel { get; init; } public AutoProp Luck { get; init; } public void SetCurrentHP(int newValue) { var clampedValue = Mathf.Clamp(newValue, 0, MaximumHP.Value); CurrentHP.OnNext(clampedValue); } public void SetMaximumHP(int newValue) { MaximumHP.OnNext(newValue); } public void SetCurrentVT(int newValue) { var clampedValue = Mathf.Clamp(newValue, 0, MaximumVT.Value); CurrentVT.OnNext(clampedValue); } public void SetMaximumVT(int newValue) { MaximumVT.OnNext(newValue); } public void SetCurrentExp(double newValue) { CurrentExp.OnNext(newValue); } public void SetCurrentLevel(int newValue) { CurrentLevel.OnNext(newValue); } public void SetCurrentAttack(int newValue) { var clampedValue = Mathf.Clamp(newValue, 0, MaxAttack.Value); CurrentAttack.OnNext(clampedValue); } public void SetBonusAttack(int newValue) { BonusAttack.OnNext(newValue); } public void SetMaxAttack(int newValue) { MaxAttack.OnNext(newValue); } public void SetCurrentDefense(int newValue) { var clampedValue = Mathf.Clamp(newValue, 0, MaxDefense.Value); CurrentDefense.OnNext(clampedValue); } public void SetBonusDefense(int newValue) { BonusDefense.OnNext(newValue); } public void SetMaxDefense(int newValue) { MaxDefense.OnNext(newValue); } public void SetExpToNextLevel(int newValue) { ExpToNextLevel.OnNext(newValue); } public void SetLuck(double newValue) { var clampedValue = Mathf.Clamp(newValue, 0, 1.0); Luck.OnNext(clampedValue); } }