cirnogodot/Scripts/Resources/TimeModifier.cs

64 lines
1.2 KiB
C#
Raw Normal View History

2025-02-14 16:18:33 +01:00
using Cirno.Scripts.Actors;
using Godot;
2025-02-09 11:48:30 +01:00
namespace Cirno.Scripts.Resources;
[GlobalClass]
public partial class TimeModifier : Resource
{
[Export] public float TimeInSeconds = 1f;
[Export] public TimeModifierType ModifierType;
[Export] public float Value;
2025-02-14 13:27:30 +01:00
[Export] public bool Continuous = false;
2025-02-14 14:24:26 +01:00
public bool Applied { get; set; } = false;
2025-02-14 13:27:30 +01:00
public ModifierWrapper Wrap()
{
return new ModifierWrapper()
{
TimeModifier = this,
2025-03-04 14:07:51 +01:00
Applied = false,
Elapsed = 0.0,
2025-02-14 13:27:30 +01:00
};
}
2025-02-14 14:24:26 +01:00
public TimeModifier MakeClone()
{
return this.MemberwiseClone() as TimeModifier;
}
2025-02-14 16:18:33 +01:00
public virtual void Start(Bullet bullet)
{
}
2025-03-04 14:07:51 +01:00
public virtual void Update(Bullet bullet, double delta, double elapsed)
2025-02-14 16:18:33 +01:00
{
}
2025-02-13 18:25:55 +01:00
}
public class ModifierWrapper
{
public TimeModifier TimeModifier { get; set; }
public bool Applied { get; set; } = false;
2025-03-04 14:07:51 +01:00
public double Elapsed { get; set; } = 0f;
2025-02-14 13:27:30 +01:00
public virtual void Start()
{
}
public virtual void Process(double deltaTime)
{
}
2025-02-09 11:48:30 +01:00
}
public enum TimeModifierType
{
SpeedChange,
RotationChange,
2025-02-14 13:27:30 +01:00
FacePlayer,
Dynamic
2025-02-09 11:48:30 +01:00
}