Randomized who starts the fight #41

Merged
Jonathan merged 1 commits from randomise_fight_start into develop 2025-12-16 19:28:38 +01:00
2 changed files with 22 additions and 0 deletions
@@ -307,6 +307,11 @@ public partial class FightHappening : Node
HappeningData.enemyFighterFormation.SetFighterAtPosition(emptySlotIndex, fighter);
HappeningData.fighterTurn.AddAsLast(fighter);
}
if (GD.RandRange(0, 2) != 0) // 2/3 chance for vesna to start
Review

warum nicht 50/50?

warum nicht 50/50?
Review

Wirkt "fairer" für den Spieler

Wirkt "fairer" für den Spieler
{
HappeningData.fighterTurn.SpinBack();
}
}
private void ExecuteNextFighter()
@@ -99,6 +99,23 @@ public class FighterTurn : IEnumerable<FightWorld.Fighter>
return false;
}
/// <summary>
/// Sets the current one back
/// This is an expensive operation, because the entire data structure needs to be circled
Review

Danke für den Hinweis. Passiert das aktuell nur beim Kampfstart oder könnte das potenziell auch wann anders benutzt werden? Und wenn ja, ab wann würde das zu Problemen führen?

Danke für den Hinweis. Passiert das aktuell nur beim Kampfstart oder könnte das potenziell auch wann anders benutzt werden? Und wenn ja, ab wann würde das zu Problemen führen?
Review

Passiert aktuell nur beim Kampfstart.
Probleme sollte das nie machen. Dafür müssten Tausende oder sogar Millionen Kämpfer aktiv sein, bevor man das performancetechnisch merkt.

Passiert aktuell nur beim Kampfstart. Probleme sollte das nie machen. Dafür müssten Tausende oder sogar Millionen Kämpfer aktiv sein, bevor man das performancetechnisch merkt.
/// </summary>
public void SpinBack()
{
if (_currentNode == null) return;
var node = _currentNode;
while (node.next != _currentNode)
{
node = node.next;
}
_currentNode = node;
}
public IEnumerator<FightWorld.Fighter> GetEnumerator()
{
if (_currentNode == null) return Enumerable.Empty<FightWorld.Fighter>().GetEnumerator();