Made fight fightable

This commit is contained in:
jonathan
2025-09-30 16:23:05 +02:00
parent daabcdc5ee
commit 8055381478
43 changed files with 925 additions and 278 deletions
@@ -0,0 +1,35 @@
using System.Linq;
using Godot;
namespace Babushka.scripts.CSharp.Common.Fight.UI;
public partial class ActionSelectUiSetup : CanvasLayer
{
// shortcuts
private FightWorld.FightHappeningData HappeningData =>
FightWorld.Instance.fightHappeningData ?? throw new NoFightHappeningException();
private FightWorld.Fighter CurrentFighter => HappeningData.fighterStack.Current;
// references
[Export] private Button _attackActionButton = null!;
[Export] private Button _summonActionButton = null!;
[Export] private Button _talkActionButton = null!;
[Export] private Button _fleeActionButton = null!;
// gets called from a state reaction enter (InputActionSelect)
public void StateEntered()
{
var actions = CurrentFighter.availableActions;
_attackActionButton.Visible = actions.Any(a => a.BindToActionButton() == FighterAction.AllyActionButton.Attack);
_summonActionButton.Visible = actions.Any(a => a.BindToActionButton() == FighterAction.AllyActionButton.Summon);
_talkActionButton.Visible = actions.Any(a => a.BindToActionButton() == FighterAction.AllyActionButton.Talk);
_fleeActionButton.Visible = actions.Any(a => a.BindToActionButton() == FighterAction.AllyActionButton.Flee);
}
public void SelectAction(FighterAction.AllyActionButton actionButton)
{
var action = CurrentFighter.availableActions.First(a => a.BindToActionButton() == actionButton);
FightHappening.Instance.ActionSelect(action);
}
}
@@ -0,0 +1 @@
uid://byf2ywov34g0x
@@ -0,0 +1,16 @@
using Godot;
using System;
public partial class TargetSelectionClick : Area2D
{
[Signal]
public delegate void TargetSelectedEventHandler();
public override void _InputEvent(Viewport viewport, InputEvent @event, int shapeIdx)
{
if (@event is InputEventMouseButton { Pressed: true, ButtonIndex: MouseButton.Left })
{
EmitSignalTargetSelected();
}
}
}
@@ -0,0 +1 @@
uid://boprnfciqgixf