mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-19 01:03:48 +00:00
Health and shield extensions for player
This commit is contained in:
parent
62a77f5f78
commit
5dec57e711
6 changed files with 63 additions and 8 deletions
|
|
@ -110,7 +110,7 @@ debug_path_custom_color = Color(1, 0, 0, 1)
|
||||||
[node name="HealthProvider" type="Node2D" parent="."]
|
[node name="HealthProvider" type="Node2D" parent="."]
|
||||||
script = ExtResource("9_fyr27")
|
script = ExtResource("9_fyr27")
|
||||||
ResourceName = "Health"
|
ResourceName = "Health"
|
||||||
MaxResource = 6.0
|
_maxResource = 3.0
|
||||||
|
|
||||||
[node name="EnemyWeapon" parent="." instance=ExtResource("10_yktta")]
|
[node name="EnemyWeapon" parent="." instance=ExtResource("10_yktta")]
|
||||||
WeaponData = ExtResource("11_kuimj")
|
WeaponData = ExtResource("11_kuimj")
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ debug_path_custom_color = Color(1, 0, 0, 1)
|
||||||
[node name="HealthProvider" type="Node2D" parent="."]
|
[node name="HealthProvider" type="Node2D" parent="."]
|
||||||
script = ExtResource("9_4h871")
|
script = ExtResource("9_4h871")
|
||||||
ResourceName = "Health"
|
ResourceName = "Health"
|
||||||
MaxResource = 6.0
|
_maxResource = 2.0
|
||||||
|
|
||||||
[node name="EnemyWeapon" parent="." instance=ExtResource("10_nc74c")]
|
[node name="EnemyWeapon" parent="." instance=ExtResource("10_nc74c")]
|
||||||
WeaponData = ExtResource("11_y6dmo")
|
WeaponData = ExtResource("11_y6dmo")
|
||||||
|
|
|
||||||
|
|
@ -355,12 +355,12 @@ _shieldProvider = NodePath("ShieldProvider")
|
||||||
[node name="HealthProvider" type="Node2D" parent="DamageReceiver"]
|
[node name="HealthProvider" type="Node2D" parent="DamageReceiver"]
|
||||||
script = ExtResource("15_5qlss")
|
script = ExtResource("15_5qlss")
|
||||||
ResourceName = "Health"
|
ResourceName = "Health"
|
||||||
MaxResource = 32.0
|
_maxResource = 32.0
|
||||||
|
|
||||||
[node name="ShieldProvider" type="Node2D" parent="DamageReceiver"]
|
[node name="ShieldProvider" type="Node2D" parent="DamageReceiver"]
|
||||||
script = ExtResource("15_5qlss")
|
script = ExtResource("15_5qlss")
|
||||||
ResourceName = "Shield"
|
ResourceName = "Shield"
|
||||||
MaxResource = 32.0
|
_maxResource = 32.0
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageReceiver"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageReceiver"]
|
||||||
shape = SubResource("CircleShape2D_igu66")
|
shape = SubResource("CircleShape2D_igu66")
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
[sub_resource type="Resource" id="Resource_6wo78"]
|
[sub_resource type="Resource" id="Resource_6wo78"]
|
||||||
script = ExtResource("4_u1i8n")
|
script = ExtResource("4_u1i8n")
|
||||||
EggIndex = 0
|
EggIndex = 0
|
||||||
StartingEquipment = Array[ExtResource("5_u1i8n")]([])
|
StartingEquipment = []
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_rff8l"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_rff8l"]
|
||||||
size = Vector2(30, 52.5)
|
size = Vector2(30, 52.5)
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,33 @@ public partial class ActorResourceProvider : Node2D
|
||||||
[Export]
|
[Export]
|
||||||
public string ResourceName { get; private set; }
|
public string ResourceName { get; private set; }
|
||||||
|
|
||||||
[Export]
|
public float MaxResource
|
||||||
public float MaxResource { get; set; } = 10f;
|
{
|
||||||
|
get => _maxResource;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_maxResource == value) return;
|
||||||
|
|
||||||
|
if (value > _currentResource)
|
||||||
|
{
|
||||||
|
EmitSignal(SignalName.ResourceIncreased, _currentResource, _currentResource, value);
|
||||||
|
}
|
||||||
|
else if (value < _currentResource)
|
||||||
|
{
|
||||||
|
EmitSignal(SignalName.ResourceDecreased, _currentResource, _currentResource, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
_maxResource = value;
|
||||||
|
|
||||||
|
EmitSignal(SignalName.ResourceChanged, _currentResource, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private float _currentResource = 0f;
|
private float _currentResource = 0f;
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
private float _maxResource = 10f;
|
||||||
|
|
||||||
[Signal]
|
[Signal]
|
||||||
public delegate void ResourceChangedEventHandler(float newValue, float maxValue);
|
public delegate void ResourceChangedEventHandler(float newValue, float maxValue);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,23 @@ public partial class PlayerDamageReceiver : Area2D
|
||||||
public bool Invulnerable { get; private set; } = false;
|
public bool Invulnerable { get; private set; } = false;
|
||||||
[Export] public BulletOwner BulletGroup { get; set; } = BulletOwner.Player;
|
[Export] public BulletOwner BulletGroup { get; set; } = BulletOwner.Player;
|
||||||
|
|
||||||
|
[ExportCategory("Extensions")]
|
||||||
|
[Export] public StringName HealthExtendName { get; private set; } = "HEALTH_EXTEND";
|
||||||
|
[Export] public StringName ShieldExtendName { get; private set; } = "SHIELD_EXTEND";
|
||||||
|
|
||||||
|
[Export] public float BaseHealth { get; private set; } = 32f;
|
||||||
|
[Export] public float BaseShield { get; private set; } = 32f;
|
||||||
|
|
||||||
|
[Export] public float HealthExtendAmount { get; private set; } = 4f;
|
||||||
|
[Export] public float ShieldExtendAmount { get; private set; } = 4f;
|
||||||
|
|
||||||
|
[ExportCategory("Providers")]
|
||||||
[Export]
|
[Export]
|
||||||
private ActorResourceProvider _healthProvider;
|
private ActorResourceProvider _healthProvider;
|
||||||
[Export]
|
[Export]
|
||||||
private ActorResourceProvider _shieldProvider;
|
private ActorResourceProvider _shieldProvider;
|
||||||
|
|
||||||
|
[ExportCategory("Damage Types")]
|
||||||
[Export] public StringName AcidGroupName { get; private set; } = "Acid";
|
[Export] public StringName AcidGroupName { get; private set; } = "Acid";
|
||||||
|
|
||||||
[Signal]
|
[Signal]
|
||||||
|
|
@ -81,6 +93,27 @@ public partial class PlayerDamageReceiver : Area2D
|
||||||
//if (!Enabled) return;
|
//if (!Enabled) return;
|
||||||
EmitSignal(SignalName.Death);
|
EmitSignal(SignalName.Death);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Set max resources based on inventory
|
||||||
|
SetMaxResources();
|
||||||
|
|
||||||
|
InventoryManager.Instance.ItemAdded += (item, amount) =>
|
||||||
|
{
|
||||||
|
if (item.ItemKey != HealthExtendName && item.ItemKey != ShieldExtendName) return;
|
||||||
|
|
||||||
|
SetMaxResources();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetMaxResources()
|
||||||
|
{
|
||||||
|
var healthExtends = InventoryManager.Instance.GetItemCount(HealthExtendName);
|
||||||
|
|
||||||
|
var shieldExtends = InventoryManager.Instance.GetItemCount(ShieldExtendName);
|
||||||
|
|
||||||
|
_healthProvider.MaxResource = BaseHealth + (healthExtends * HealthExtendAmount);
|
||||||
|
|
||||||
|
_shieldProvider.MaxResource = BaseShield + (shieldExtends * ShieldExtendAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RefillHealth()
|
public void RefillHealth()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue