Randomized who starts the fight #41
@@ -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
|
||||
|
|
||||
{
|
||||
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
|
||||
|
kziolkowski
commented
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?
Jonathan
commented
Passiert aktuell nur beim Kampfstart. 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();
|
||||
|
||||
Reference in New Issue
Block a user
warum nicht 50/50?
Wirkt "fairer" für den Spieler