Compare commits

..

2 Commits

Author SHA1 Message Date
Jonathan edc133749f Merge pull request 'Randomized who starts the fight' (#41) from randomise_fight_start into develop
Reviewed-on: #41
Reviewed-by: kziolkowski <katharina.ziolkowski@gmail.com>
2025-12-16 19:28:37 +01:00
jonathan a736adaafb Randomized who starts the fight 2025-12-09 15:07:50 +01:00
4 changed files with 22 additions and 7 deletions
@@ -14,9 +14,5 @@ position = Vector2(23, -96)
scale = Vector2(0.547474, 0.547474) scale = Vector2(0.547474, 0.547474)
texture = SubResource("AtlasTexture_ane0o") texture = SubResource("AtlasTexture_ane0o")
[node name="CollisionShape2D" parent="TargetSelection/Click" index="0"]
position = Vector2(-1.955, -98.545)
scale = Vector2(0.6400007, 0.68000054)
[node name="Sprite2D" parent="TargetSelection/HoverIndicator" index="0"] [node name="Sprite2D" parent="TargetSelection/HoverIndicator" index="0"]
position = Vector2(1, -126) position = Vector2(1, -126)
@@ -307,6 +307,11 @@ public partial class FightHappening : Node
HappeningData.enemyFighterFormation.SetFighterAtPosition(emptySlotIndex, fighter); HappeningData.enemyFighterFormation.SetFighterAtPosition(emptySlotIndex, fighter);
HappeningData.fighterTurn.AddAsLast(fighter); HappeningData.fighterTurn.AddAsLast(fighter);
} }
if (GD.RandRange(0, 2) != 0) // 2/3 chance for vesna to start
{
HappeningData.fighterTurn.SpinBack();
}
} }
private void ExecuteNextFighter() private void ExecuteNextFighter()
@@ -99,6 +99,23 @@ public class FighterTurn : IEnumerable<FightWorld.Fighter>
return false; return false;
} }
/// <summary>
/// Sets the current one back
/// This is an expensive operation, because the entire data structure needs to be circled
/// </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() public IEnumerator<FightWorld.Fighter> GetEnumerator()
{ {
if (_currentNode == null) return Enumerable.Empty<FightWorld.Fighter>().GetEnumerator(); if (_currentNode == null) return Enumerable.Empty<FightWorld.Fighter>().GetEnumerator();
@@ -137,9 +137,6 @@ public partial class MinigameController : Node2D
public void Hit() public void Hit()
{ {
if (_hits == null) return; if (_hits == null) return;
if(_hits.Count >= _maxHitCount) return;
int i; int i;
for (i = 0; i < _regions!.Count - 1; i++) for (i = 0; i < _regions!.Count - 1; i++)