initialize repo
This commit is contained in:
26
Lib/Civilization.Core/Actions/ActionQueue.cs
Normal file
26
Lib/Civilization.Core/Actions/ActionQueue.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using Civilization.Core.Interfaces;
|
||||
|
||||
namespace Civilization.Core.Actions;
|
||||
|
||||
public class ActionQueue
|
||||
{
|
||||
private readonly Queue<IGameAction> _pending = new();
|
||||
private readonly Stack<ExecutedAction> _history = new();
|
||||
|
||||
public void Enqueue(IGameAction action)
|
||||
{
|
||||
_pending.Enqueue(action);
|
||||
}
|
||||
|
||||
public void ExecuteAll(GameActionContext context)
|
||||
{
|
||||
while (_pending.Count > 0)
|
||||
{
|
||||
var action = _pending.Dequeue();
|
||||
if (!action.CanExecute(context)) continue;
|
||||
|
||||
action.Execute(context);
|
||||
_history.Push(new ExecutedAction(action, context));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user