Files
GameJamDungeon/Zennysoft.Game.Ma/src/items/accessory/Accessory.cs

90 lines
2.5 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("accessory")]
public partial class Accessory : Node3D, IAccessory
{
public override void _Notification(int what) => this.Notify(what);
[Node] private Sprite3D _sprite { get; set; } = default!;
public override void _Ready()
{
_sprite.Texture = Stats.Texture;
_bonusDamage = Stats.BonusAttack;
_bonusDefense = Stats.BonusDefense;
_bonusLuck = Stats.BonusLuck;
_bonusHp = Stats.BonusHP;
_bonusVt = Stats.BonusVT;
}
public string ItemName => Stats.Name;
public string StatDescription => Stats.StatDescription;
public string FlavorText => Stats.FlavorText;
public float SpawnRate => Stats.SpawnRate;
public int ThrowDamage => Stats.ThrowDamage;
public float ThrowSpeed => Stats.ThrowSpeed;
public int BonusAttack { get => _bonusDamage; }
public int BonusDefense { get => _bonusDefense; }
public int BonusLuck { get => _bonusLuck; }
public int BonusHP { get => _bonusHp; }
public int BonusVT { get => _bonusVt; }
public ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
[Save("accessory_tag")]
public AccessoryTag AccessoryTag => Stats.AccessoryTag;
public ItemTag ItemTag => Stats.ItemTag;
[Save("accessory_bonus_damage")]
private int _bonusDamage { get; set; } = 0;
[Save("accessory_bonus_damage")]
private int _bonusDefense { get; set; } = 0;
[Save("accessory_bonus_luck")]
private int _bonusLuck { get; set; } = 0;
[Save("accessory_bonus_hp")]
private int _bonusHp { get; set; } = 0;
[Save("accessory_bonus_vt")]
private int _bonusVt { get; set; } = 0;
public void IncreaseAttack(int bonus) => _bonusDamage += bonus;
public void SetAttack(int newBonus) => _bonusDamage = newBonus;
public void IncreaseDefense(int bonus) => _bonusDefense += bonus;
public void SetDefense(int newBonus) => _bonusDefense = newBonus;
public void IncreaseLuck(int bonus) => _bonusLuck += bonus;
public void SetLuck(int newBonus) => _bonusLuck = newBonus;
[Export]
[Save("accessory_stats")]
public AccessoryStats Stats { get; set; } = new AccessoryStats();
public Augment Augment { get; set; }
public bool Glued { get; set; }
public Texture2D GetTexture() => Stats.Texture;
}