Finish refactoring other than making sure bonuses appear on player stat side
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
using Chickensoft.Collections;
|
||||
using Chickensoft.GodotNodeInterfaces;
|
||||
using Chickensoft.Introspection;
|
||||
using Chickensoft.LogicBlocks;
|
||||
using Chickensoft.SaveFileBuilder;
|
||||
using Godot;
|
||||
|
||||
@@ -70,22 +71,21 @@ namespace GameJamDungeon
|
||||
StateMachine = PlayerLogic,
|
||||
Velocity = Velocity,
|
||||
Inventory = new Inventory(),
|
||||
CurrentHP = new AutoProp<int>(PlayerStatResource.CurrentHP),
|
||||
MaximumHP = new AutoProp<int>(PlayerStatResource.MaximumHP),
|
||||
CurrentVT = new AutoProp<int>(PlayerStatResource.CurrentVT),
|
||||
MaximumVT = new AutoProp<int>(PlayerStatResource.MaximumVT),
|
||||
CurrentAttack = new AutoProp<int>(PlayerStatResource.CurrentAttack),
|
||||
MaxAttack = new AutoProp<int>(PlayerStatResource.MaxAttack),
|
||||
CurrentDefense = new AutoProp<int>(PlayerStatResource.CurrentDefense),
|
||||
MaxDefense = new AutoProp<int>(PlayerStatResource.MaxDefense),
|
||||
CurrentExp = new AutoProp<int>(PlayerStatResource.CurrentExp),
|
||||
ExpToNextLevel = new AutoProp<int>(PlayerStatResource.ExpToNextLevel),
|
||||
CurrentLevel = new AutoProp<int>(PlayerStatResource.CurrentLevel),
|
||||
BonusAttack = new AutoProp<int>(PlayerStatResource.BonusAttack),
|
||||
BonusDefense = new AutoProp<int>(PlayerStatResource.BonusDefense),
|
||||
Luck = new AutoProp<double>(PlayerStatResource.Luck)
|
||||
};
|
||||
|
||||
PlayerData.SetCurrentHP(PlayerStatResource.CurrentHP);
|
||||
PlayerData.SetMaximumHP(PlayerStatResource.MaximumHP);
|
||||
PlayerData.SetCurrentVT(PlayerStatResource.CurrentVT);
|
||||
PlayerData.SetMaximumVT(PlayerStatResource.MaximumVT);
|
||||
PlayerData.SetCurrentAttack(PlayerStatResource.CurrentAttack);
|
||||
PlayerData.SetMaxAttack(PlayerStatResource.MaxAttack);
|
||||
PlayerData.SetCurrentDefense(PlayerStatResource.CurrentDefense);
|
||||
PlayerData.SetMaxDefense(PlayerStatResource.MaxDefense);
|
||||
PlayerData.SetCurrentExp(PlayerStatResource.CurrentExp);
|
||||
PlayerData.SetCurrentLevel(PlayerStatResource.CurrentLevel);
|
||||
PlayerData.SetExpToNextLevel(PlayerStatResource.ExpToNextLevel);
|
||||
PlayerData.SetLuck(PlayerStatResource.Luck);
|
||||
|
||||
PlayerLogic = new PlayerLogic();
|
||||
PlayerLogic.Set(this as IPlayer);
|
||||
PlayerLogic.Set(Settings);
|
||||
@@ -93,10 +93,7 @@ namespace GameJamDungeon
|
||||
PlayerLogic.Set(GameRepo);
|
||||
PlayerLogic.Set(PlayerData);
|
||||
|
||||
PlayerData.Inventory.EquippedWeapon.Sync += EquippedWeapon_Sync;
|
||||
PlayerData.Inventory.EquippedArmor.Sync += EquippedArmor_Sync;
|
||||
PlayerData.Inventory.EquippedAccessory.Sync += EquippedAccessory_Sync;
|
||||
|
||||
PlayerData.CurrentHP.Sync += CurrentHP_Sync;
|
||||
}
|
||||
|
||||
@@ -130,6 +127,13 @@ namespace GameJamDungeon
|
||||
CollisionDetector.AreaEntered += OnEnemyHitBoxEntered;
|
||||
}
|
||||
|
||||
private void Inventory_AccessoryUnequipped(Accessory unequippedAccessory)
|
||||
{
|
||||
PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value - unequippedAccessory.AccessoryInfo.MaxHPUp);
|
||||
PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value - unequippedAccessory.AccessoryInfo.MaxVTUp);
|
||||
PlayerData.SetLuck(PlayerData.Luck.Value - unequippedAccessory.AccessoryInfo.LUCKUp);
|
||||
}
|
||||
|
||||
public void OnReady()
|
||||
{
|
||||
SetPhysicsProcess(true);
|
||||
@@ -213,39 +217,16 @@ namespace GameJamDungeon
|
||||
private void OnHealthTimerTimeout()
|
||||
{
|
||||
if (PlayerData.CurrentVT.Value > 0)
|
||||
PlayerData.CurrentVT.OnNext(PlayerData.CurrentVT.Value - 1);
|
||||
PlayerData.SetCurrentVT(PlayerData.CurrentVT.Value - 1);
|
||||
else
|
||||
PlayerData.CurrentHP.OnNext(PlayerData.CurrentHP.Value - 1);
|
||||
PlayerData.SetCurrentHP(PlayerData.CurrentHP.Value - 1);
|
||||
}
|
||||
|
||||
private void EquippedAccessory_Sync(Accessory equippedItem)
|
||||
{
|
||||
PlayerData.BonusAttack.OnNext(PlayerData.BonusAttack.Value - PlayerData.Inventory.EquippedAccessory.Value.AccessoryInfo.ATKUp);
|
||||
PlayerData.BonusDefense.OnNext(PlayerData.BonusDefense.Value - PlayerData.Inventory.EquippedAccessory.Value.AccessoryInfo.DEFUp);
|
||||
PlayerData.MaximumHP.OnNext(PlayerData.MaximumHP.Value - PlayerData.Inventory.EquippedAccessory.Value.AccessoryInfo.MaxHPUp);
|
||||
PlayerData.MaximumVT.OnNext(PlayerData.MaximumVT.Value - PlayerData.Inventory.EquippedAccessory.Value.AccessoryInfo.MaxVTUp);
|
||||
PlayerData.Luck.OnNext(PlayerData.Luck.Value - PlayerData.Inventory.EquippedAccessory.Value.AccessoryInfo.LUCKUp);
|
||||
|
||||
PlayerData.BonusAttack.OnNext(PlayerData.BonusAttack.Value + equippedItem.AccessoryInfo.ATKUp);
|
||||
PlayerData.BonusDefense.OnNext(PlayerData.BonusDefense.Value + equippedItem.AccessoryInfo.DEFUp);
|
||||
PlayerData.MaximumHP.OnNext(PlayerData.MaximumHP.Value + equippedItem.AccessoryInfo.MaxHPUp);
|
||||
PlayerData.MaximumVT.OnNext(PlayerData.MaximumVT.Value + equippedItem.AccessoryInfo.MaxVTUp);
|
||||
PlayerData.Luck.OnNext(PlayerData.Luck.Value + equippedItem.AccessoryInfo.LUCKUp);
|
||||
PlayerData.Inventory.Equip(equippedItem);
|
||||
}
|
||||
|
||||
private void EquippedArmor_Sync(Armor equippedItem)
|
||||
{
|
||||
PlayerData.BonusDefense.OnNext(PlayerData.BonusDefense.Value - PlayerData.Inventory.EquippedArmor.Value.ArmorStats.Defense);
|
||||
PlayerData.BonusDefense.OnNext(PlayerData.BonusDefense.Value + equippedItem.ArmorStats.Defense);
|
||||
PlayerData.Inventory.Equip(equippedItem);
|
||||
}
|
||||
|
||||
private void EquippedWeapon_Sync(Weapon equippedItem)
|
||||
{
|
||||
PlayerData.BonusAttack.OnNext(PlayerData.BonusAttack.Value - PlayerData.Inventory.EquippedWeapon.Value.WeaponStats.Damage);
|
||||
PlayerData.BonusAttack.OnNext(PlayerData.BonusAttack.Value + equippedItem.WeaponStats.Damage);
|
||||
PlayerData.Inventory.Equip(equippedItem);
|
||||
PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value + equippedItem.AccessoryInfo.MaxHPUp);
|
||||
PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value + equippedItem.AccessoryInfo.MaxVTUp);
|
||||
PlayerData.SetLuck(PlayerData.Luck.Value + equippedItem.AccessoryInfo.LUCKUp);
|
||||
}
|
||||
|
||||
private void OnEnemyHitBoxEntered(Area3D area)
|
||||
@@ -259,8 +240,8 @@ namespace GameJamDungeon
|
||||
var roll = rng.Randf();
|
||||
if (roll <= enemy.EnemyStatResource.Luck)
|
||||
isCriticalHit = true;
|
||||
var damage = DamageCalculator.CalculateEnemyDamage(PlayerData.CurrentDefense.Value + PlayerData.BonusDefense.Value, enemy.EnemyStatResource, GameRepo.PlayerData.Inventory.EquippedArmor.Value.ArmorStats, isCriticalHit);
|
||||
PlayerData.CurrentHP.OnNext(PlayerData.CurrentHP.Value - Mathf.RoundToInt(damage));
|
||||
var damage = DamageCalculator.CalculateEnemyDamage(PlayerData.CurrentDefense.Value + PlayerData.BonusDefense, enemy.EnemyStatResource, GameRepo.PlayerData.Inventory.EquippedArmor.Value.ArmorStats, isCriticalHit);
|
||||
PlayerData.SetCurrentHP(PlayerData.CurrentHP.Value - Mathf.RoundToInt(damage));
|
||||
GD.Print($"Player hit for {damage} damage.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user