Added theme-based region colors

This commit is contained in:
jonathan
2025-10-03 20:02:25 +02:00
parent 7d35c991f3
commit 224863f891
4 changed files with 52 additions and 10 deletions
@@ -10,6 +10,18 @@ namespace Babushka.scripts.CSharp.Common.Minigame;
public partial class MinigameController : Node2D
{
public enum RegionTheme
{
Disabled,
VeryBad,
Bad,
Normal,
NormalAlt1,
NormalAlt2,
God,
VeryGood
}
public class Builder<T>
{
internal class Region
@@ -17,6 +29,7 @@ public partial class MinigameController : Node2D
public required T value;
public float proportion = 1f;
public string text = "";
public RegionTheme theme = RegionTheme.Normal;
}
public enum DoubleHitHandling
@@ -46,7 +59,7 @@ public partial class MinigameController : Node2D
regions.Last().proportion = proportion;
return this;
}
public Builder<T> RegionWithText(string text)
{
if (regions.Count == 0)
@@ -56,6 +69,15 @@ public partial class MinigameController : Node2D
return this;
}
public Builder<T> RegionWithTheme(RegionTheme theme)
{
if (regions.Count == 0)
throw new InvalidOperationException("No region to set theme for");
regions.Last().theme = theme;
return this;
}
// general settings
public Builder<T> WithDoubleHitHandling(DoubleHitHandling handling)
{
@@ -161,7 +183,7 @@ public partial class MinigameController : Node2D
var normalisedAngleEnd = (regionSum + region.proportion) / totalRegionProportion;
var normalAngles = new Vector2(normalisedAngleStart, normalisedAngleEnd);
regionVisual.Setup(normalAngles, _baseRegionColor.RandomHue(),region.text);
regionVisual.Setup(normalAngles, _baseRegionColor.RandomHue(), region.text, region.theme);
regionSum += region.proportion;