Added minigame to attack action

This commit is contained in:
jonathan
2025-10-02 15:49:24 +02:00
parent 8624e2aea8
commit 8bb1c22549
6 changed files with 92 additions and 6 deletions
@@ -0,0 +1,43 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Babushka.scripts.CSharp.Common.Fight;
using Babushka.scripts.CSharp.Common.Fight.ActionDetails;
using Babushka.scripts.CSharp.Common.Minigame;
public partial class FightMinigameHandler : Node
{
#region Shortcuts
private FightWorld.FightHappeningData HappeningData => FightWorld.Instance.fightHappeningData ?? throw new NoFightHappeningException();
#endregion
[Export] private MinigameController _minigameController;
public void OnStateEnter(FightHappening.FightState to)
{
if(to!=FightHappening.FightState.InputActionDetail) return;
var currentDetail = HappeningData.actionStaging!.CurrentDetail();
if(currentDetail is not MinigameActionDetail minigameDetail) return;
_minigameController.Run(new MinigameController.Builder<int>()
.AddRegion(4)
.AddRegion(0).RegionWithProportion(1.5f)
.AddRegion(8).RegionWithProportion(0.5f)
.AddRegion(0).RegionWithProportion(1.5f)
.AddRegion(3)
.AddRegion(5)
.WithHitCount(3)
).ContinueWith(task =>
{
minigameDetail.damageHits = task.Result;
//FightHappening.Instance.DetailFilled();
// Apparently ContinueWith spawn a new Thread, but methods on a node only want to be called from the main thread
FightHappening.Instance.CallDeferred("DetailFilled");
});
}
}