Traveller/scripts/spell/SpellPickAble.cs
2024-10-09 16:51:03 +08:00

71 lines
1.5 KiB
C#

using ColdMint.scripts.pickable;
using ColdMint.scripts.projectile;
using ColdMint.scripts.weapon;
using Godot;
namespace ColdMint.scripts.spell;
/// <summary>
/// <para>magic</para>
/// <para>法术</para>
/// </summary>
/// <remarks>
///<para>For projectile weapons</para>
///<para>用于抛射体武器</para>
/// </remarks>
public partial class SpellPickAble : PickAbleTemplate, ISpell
{
[Export]
private string? _projectilePath;
/// <summary>
/// <para>Spells do no collision damage</para>
/// <para>法术没有碰撞伤害</para>
/// </summary>
public override bool EnableContactInjury
{
get => false;
set { }
}
private PackedScene? _projectileScene;
public sealed override void _Ready()
{
base._Ready();
LoadResource();
}
public override int ItemType
{
get => Config.ItemType.Spell;
}
public PackedScene? GetProjectile()
{
return _projectileScene;
}
public virtual void LoadResource()
{
if (_projectileScene == null && !string.IsNullOrEmpty(_projectilePath))
{
_projectileScene = ResourceLoader.Load<PackedScene>(_projectilePath);
}
}
public virtual void ModifyWeapon(ProjectileWeapon projectileWeapon)
{
}
public virtual void RestoreWeapon(ProjectileWeapon projectileWeapon)
{
}
public virtual void ModifyProjectile(int index, Projectile projectile, ref Vector2 velocity)
{
}
}