summaryrefslogtreecommitdiff
path: root/scripts/entities/actions/Action.cs
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/entities/actions/Action.cs')
-rw-r--r--scripts/entities/actions/Action.cs42
1 files changed, 42 insertions, 0 deletions
diff --git a/scripts/entities/actions/Action.cs b/scripts/entities/actions/Action.cs
new file mode 100644
index 0000000..f20e262
--- /dev/null
+++ b/scripts/entities/actions/Action.cs
@@ -0,0 +1,42 @@
+using Godot;
+
+
+/// <summary>
+/// <c>Action</c> representa uma ação no jogo efetuada por um ator.
+/// Ações são geradas pelo jogador e pela IA, elas regem os atores do jogo.
+/// </summary>
+public abstract partial class Action : RefCounted {
+ /// <summary>
+ /// O ator que realiza a ação.
+ /// </summary>
+ protected Actor actor;
+
+ // O custo da ação.
+ protected int cost;
+
+ public Action(Actor actor) {
+ this.actor = actor;
+ // Custo base, subclasses podem sobreescrever isto se quiserem.
+ cost = 10;
+ }
+
+ /// <summary>
+ /// Método que executa a ação. Subclasses da ação devem implementar este método.
+ /// <example>
+ /// Exemplo:
+ /// <code>
+ /// Action action = new Action(actor);
+ /// /* . . . */
+ /// action.Perform();
+ /// </code>
+ /// </example>
+ /// </summary>
+ public abstract void Perform();
+
+ /// <summary>
+ /// É conveniente ter acesso ao mapa dentro de uma ação.
+ /// </summary>
+ protected MapData Map_Data {
+ get => actor.Map_Data;
+ }
+}