diff --git a/scripts/game/managers/HudManager.cs b/scripts/game/managers/HudManager.cs index d6a8cf0..09e0267 100644 --- a/scripts/game/managers/HudManager.cs +++ b/scripts/game/managers/HudManager.cs @@ -1,17 +1,29 @@ using System.Collections.Generic; using Godot; +using Util; public partial class HudManager : Node { [Export] public Runner Runner; private List components = []; + private readonly List modifierIcons = []; + private Sprite3D modifierTemplate; public void Init() { Runner ??= GetParent(); components = findAllComponents(this); + modifierTemplate ??= GetNode("TemplateModifier"); + modifierTemplate.Visible = false; + + foreach (var icon in modifierIcons) + { + icon.QueueFree(); + } + modifierIcons.Clear(); + foreach (var component in components) { component.Runner = Runner; @@ -21,8 +33,22 @@ public void Init() public void DisplayModifier(Modifier mod) { - // TODO: display activated modifiers & clear on Init - GD.Print($"HUD: display {mod.Name}"); + Sprite3D icon = (Sprite3D)modifierTemplate.Duplicate(); + icon.Texture = Misc.GetModIcon(mod.Name); + icon.Visible = true; + modifierTemplate.GetParent().AddChild(icon); + modifierIcons.Add(icon); + positionModifiers(); + } + + private void positionModifiers() + { + for (int i = 0; i < modifierIcons.Count; i++) + { + Vector3 pos = modifierTemplate.Position; + pos.X = (i - (modifierIcons.Count - 1) / 2f) * 0.75f; + modifierIcons[i].Position = pos; + } } public override void _Process(double delta)