using ColdMint.scripts.damage;
using Godot;
namespace ColdMint.scripts.furniture;
///
/// FurnitureTemplate
/// 家具模板
///
public partial class Furniture : RigidBody2D
{
[Export] private int _initialDurability;
[Export] private int _maxDurability;
///
///
/// 家具的耐久度
///
private int _durability;
public override void _Ready()
{
if (_maxDurability <= 0)
{
_maxDurability = Config.DefaultMaxDurability;
}
if (_initialDurability <= 0 || _initialDurability > _maxDurability)
{
_initialDurability = _maxDurability;
}
_durability = _initialDurability;
SetCollisionLayerValue(Config.LayerNumber.Furniture, true);
SetCollisionMaskValue(Config.LayerNumber.Wall, true);
SetCollisionMaskValue(Config.LayerNumber.Platform, true);
SetCollisionMaskValue(Config.LayerNumber.Floor, true);
}
public override void _PhysicsProcess(double delta)
{
if (Input.IsActionJustReleased("push"))
{
SetCollisionMaskValue(Config.LayerNumber.Player, false);
}
if (Input.IsActionJustPressed("push"))
{
SetCollisionMaskValue(Config.LayerNumber.Player, true);
}
}
///
/// This method is called when furniture is damaged
/// 当家具损害时调用此方法
///
///
///
///Return whether the damage completely destroyed the furniture
///返回本次伤害是否彻底破坏了家具
///
public bool Damage(DamageTemplate damageTemplate)
{
_durability -= damageTemplate.Damage;
if (_durability <= 0)
{
QueueFree();
}
return true;
}
}