Files
GameJamDungeon/Zennysoft.Game.Ma/src/items/weapons/Weapon.cs
2026-02-04 01:49:17 -08:00

58 lines
1.7 KiB
C#

using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Chickensoft.Serialization;
using Godot;
using Zennysoft.Ma.Adapter;
using Zennysoft.Ma.Adapter.Entity;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode)), Id("weapon")]
public partial class Weapon : EquipableItem
{
public override void _Notification(int what) => this.Notify(what);
[Node] private Sprite3D _sprite { get; set; }
public SoundEffect SoundEffect => Stats.SoundEffect;
public void OnReady()
{
_sprite.Texture = Stats.Texture;
}
public override string ItemName => Stats.Name;
public override string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
[Save("weapon_attack_speed")]
public double AttackSpeed => Stats.AttackSpeed;
[Save("weapon_tag")]
public WeaponTag WeaponTag => Stats.WeaponTag;
public override ItemTag ItemTag => Stats.ItemTag;
[Save("weapon_element")]
public ElementType WeaponElement => Stats.WeaponElement;
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance);
public void IncreaseWeaponAttack(int bonus) => _bonusDamage += bonus;
public override int BonusAttack { get => Stats.BonusAttack + _bonusDamage; }
[Save("weapon_bonus_damage")]
private int _bonusDamage { get; set; } = 0;
[Export]
[Save("weapon_stats")]
public WeaponStats Stats { get; set; } = new WeaponStats();
public override Texture2D GetTexture() => Stats.Texture;
}