抽象 Goal

master
lightyears 2 years ago
parent 8f8b1b7da1
commit f4e4d78758
Signed by: lightyears
GPG Key ID: 98D80DDF26D4F2F9

@ -1,20 +1,55 @@
using System.Collections.Generic;
namespace CMSGame namespace CMSGame
{ {
public class Goal public class Goal<TContext>
{ {
public string Name = string.Empty; public string Name = string.Empty;
public bool IsValid;
public int BasePriority; public int BasePriority;
public List<GoalValidityModifier<TContext>> ValidityModifiers = new();
public List<GoalPriorityModifier<TContext>> PriorityModifiers = new();
public bool IsValid()
{
return ValidityModifiers.All(modifier => modifier.Execute());
}
public int Priority()
{
return BasePriority + PriorityModifiers.Sum(modifier => modifier.Execute());
}
} }
public class BattleGoal : Goal public abstract class GoalModifier<TContext>
{ {
public string Name = string.Empty;
public TContext Context;
protected GoalModifier(TContext context)
{
Context = context;
}
}
public abstract class GoalValidityModifier<TContext> : GoalModifier<TContext>
{
protected GoalValidityModifier(TContext context) : base(context)
{
}
public abstract bool Execute();
} }
public class GoalModifier public abstract class GoalPriorityModifier<TContext> : GoalModifier<TContext>
{ {
protected GoalPriorityModifier(TContext context) : base(context)
{
}
public abstract int Execute();
} }
} }

@ -41,7 +41,7 @@ namespace CMSGame
public void UpdateUI() public void UpdateUI()
{ {
StatusLabel!.Text = $"HP {120}\nAP {ActionPoint}"; StatusLabel!.Text = $"HP {Character!.HealthPoint}/{Character.MaxHealthPoint}\nAP {ActionPoint}";
} }
public override void _InputEvent(Camera3D camera, InputEvent @event, Vector3 position, Vector3 normal, int shapeIdx) public override void _InputEvent(Camera3D camera, InputEvent @event, Vector3 position, Vector3 normal, int shapeIdx)

Loading…
Cancel
Save