From f33f6d8ffea9916cb491275dd36a1e61d286cf5a Mon Sep 17 00:00:00 2001 From: cojoedmo Date: Mon, 6 Jul 2026 02:34:37 -0400 Subject: [PATCH] processes turns in order of neutral->hostiler->friendly --- PegController.cs | 25 +++++++++++++++---------- Pegs/Actions/BasicMovement.cs | 1 + Pegs/PegAction.cs | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/PegController.cs b/PegController.cs index 955f1d5..c3c214c 100644 --- a/PegController.cs +++ b/PegController.cs @@ -109,24 +109,25 @@ public partial class PegController : TurnController } } - public void HandlePegTurn() + public void HandlePegTurn(MapCellOccupant.Disposition DISPOSITION) { - _tweenStages.Clear(); - + List dispositionPegs = [.. _pegs.Where(p => p._disposition == DISPOSITION)]; + GD.Print(dispositionPegs.Count); int loop = 0; bool anyPegsActed = true; while (anyPegsActed) { anyPegsActed = false; - for (int i = 0; i < _pegs.Count; i++) + for (int i = 0; i < dispositionPegs.Count; i++) { - Peg peg = _pegs[i]; + Peg peg = dispositionPegs[i]; PegAction action = peg.SelectAction(); if (action != null) { action.DoImmediately(peg); - string key = action._priority + ":" + loop; + string key = (int)peg._disposition + ":" + action._priority + ":" + loop; + GD.Print(key); if (!_tweenStages.ContainsKey(key)) { @@ -142,7 +143,6 @@ public partial class PegController : TurnController } loop++; } - ProcessTween(); } public void HandlePegClick(Node CLICKED_NODE, int CLICK_TYPE) @@ -212,8 +212,8 @@ public partial class PegController : TurnController public void ProcessTween() { - _tweenStages = _tweenStages.OrderBy(s => int.Parse(s.Key.Split(":")[0])).ThenBy(s => int.Parse(s.Key.Split(":")[1])).ToDictionary(); - + _tweenStages = _tweenStages.OrderBy(s => int.Parse(s.Key.Split(":")[0])).ThenBy(s => int.Parse(s.Key.Split(":")[1])).ThenBy(s => int.Parse(s.Key.Split(":")[2])).ToDictionary(); + GD.Print(string.Join(", ",_tweenStages.Keys)); if (_tweenStages.Count <= 0) { EndTurn(); @@ -246,6 +246,7 @@ public partial class PegController : TurnController public override void StartTurn() { + _tweenStages.Clear(); AddHostilePegs(4); for (int i = 0; i < _pegs.Count; i++) @@ -254,7 +255,11 @@ public partial class PegController : TurnController } HandlePegSort(); - HandlePegTurn(); + HandlePegTurn(MapCellOccupant.Disposition.NEUTRAL); + HandlePegTurn(MapCellOccupant.Disposition.HOSTILE); + HandlePegTurn(MapCellOccupant.Disposition.FRIENDLY); + + ProcessTween(); _playArea.HighlightCells(); } diff --git a/Pegs/Actions/BasicMovement.cs b/Pegs/Actions/BasicMovement.cs index ac68eb2..e2e8291 100644 --- a/Pegs/Actions/BasicMovement.cs +++ b/Pegs/Actions/BasicMovement.cs @@ -43,6 +43,7 @@ public partial class BasicMovement : PegAction map.SetCellPeg(cell, PEG); PEG._path.Add(cell); + base.DoImmediately(PEG); } public override bool MeetsCriteria(Peg PEG) diff --git a/Pegs/PegAction.cs b/Pegs/PegAction.cs index aae2789..784c5f0 100644 --- a/Pegs/PegAction.cs +++ b/Pegs/PegAction.cs @@ -20,7 +20,7 @@ public partial class PegAction : Node2D public virtual void DoImmediately(Peg PEG) { - + _usesRemaining--; } public virtual bool MeetsCriteria(Peg PEG)