|
|
|
|
@ -21,7 +21,7 @@ public partial class MinigameController : Node2D
|
|
|
|
|
God,
|
|
|
|
|
VeryGood
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class Builder<T>
|
|
|
|
|
{
|
|
|
|
|
internal class Region
|
|
|
|
|
@ -108,6 +108,8 @@ public partial class MinigameController : Node2D
|
|
|
|
|
|
|
|
|
|
[Signal] public delegate void ArmMovedEventHandler(float newPos);
|
|
|
|
|
|
|
|
|
|
[Signal] public delegate void RegionHitEventHandler(int regionIndex);
|
|
|
|
|
|
|
|
|
|
public override void _EnterTree()
|
|
|
|
|
{
|
|
|
|
|
HideMinigame();
|
|
|
|
|
@ -125,6 +127,7 @@ public partial class MinigameController : Node2D
|
|
|
|
|
ShowMinigame();
|
|
|
|
|
Setup(builder);
|
|
|
|
|
await _minigameComplete!.Task;
|
|
|
|
|
await ToSignal(GetTree().CreateTimer(.3), "timeout");
|
|
|
|
|
var returnValue = _hits!.Select(h => builder.regions[h].value).ToList();
|
|
|
|
|
Reset();
|
|
|
|
|
HideMinigame();
|
|
|
|
|
@ -145,6 +148,7 @@ public partial class MinigameController : Node2D
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_hits.Add(i);
|
|
|
|
|
EmitSignalRegionHit(i);
|
|
|
|
|
|
|
|
|
|
_armSpeed = -_armSpeed;
|
|
|
|
|
|
|
|
|
|
@ -174,16 +178,18 @@ public partial class MinigameController : Node2D
|
|
|
|
|
|
|
|
|
|
// spawn regions
|
|
|
|
|
var regionSum = 0f;
|
|
|
|
|
foreach (var region in builder.regions)
|
|
|
|
|
foreach (var (region, i) in builder.regions.Select((region, i) => (region, i)))
|
|
|
|
|
{
|
|
|
|
|
var regionVisual = _regionVisualPrefab.Instantiate<RegionVisual>();
|
|
|
|
|
_regionsParent.AddChild(regionVisual);
|
|
|
|
|
|
|
|
|
|
RegionHit += regionVisual.HitAnimation;
|
|
|
|
|
|
|
|
|
|
var normalisedAngleStart = regionSum / totalRegionProportion;
|
|
|
|
|
var normalisedAngleEnd = (regionSum + region.proportion) / totalRegionProportion;
|
|
|
|
|
var normalAngles = new Vector2(normalisedAngleStart, normalisedAngleEnd);
|
|
|
|
|
|
|
|
|
|
regionVisual.Setup(normalAngles, _baseRegionColor.RandomHue(), region.text, region.theme);
|
|
|
|
|
regionVisual.Setup(normalAngles, region.text, region.theme, i);
|
|
|
|
|
|
|
|
|
|
regionSum += region.proportion;
|
|
|
|
|
|
|
|
|
|
@ -207,6 +213,13 @@ public partial class MinigameController : Node2D
|
|
|
|
|
{
|
|
|
|
|
_minigameComplete = null;
|
|
|
|
|
_hits = null;
|
|
|
|
|
_regionsParent.GetChildren().ForEach(c => c.QueueFree());
|
|
|
|
|
_regionsParent.GetChildren().ForEach(c =>
|
|
|
|
|
{
|
|
|
|
|
if (c is RegionVisual rv)
|
|
|
|
|
{
|
|
|
|
|
RegionHit -= rv.HitAnimation;
|
|
|
|
|
}
|
|
|
|
|
c.QueueFree();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|