Added damage fly number #29
@@ -0,0 +1,18 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://l1hdihubffeg"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://b5i41b6502xam" path="res://scripts/CSharp/Common/Fight/FighterDamageIndicatorFlyingNumber.cs" id="1_m0ub6"]
|
||||||
|
|
||||||
|
[node name="DamageFlyingNuber" type="Node2D" node_paths=PackedStringArray("_label")]
|
||||||
|
script = ExtResource("1_m0ub6")
|
||||||
|
_label = NodePath("Label")
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="."]
|
||||||
|
custom_minimum_size = Vector2(200, 100)
|
||||||
|
offset_left = -100.0
|
||||||
|
offset_top = -50.0
|
||||||
|
offset_right = 100.0
|
||||||
|
offset_bottom = 50.0
|
||||||
|
theme_override_font_sizes/font_size = 56
|
||||||
|
text = "888"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
@@ -9,7 +9,7 @@ region = Rect2(1133.19, 93.65, 460.526, 347.391)
|
|||||||
|
|
||||||
[node name="BlobFighterVisual" instance=ExtResource("1_80xdf")]
|
[node name="BlobFighterVisual" instance=ExtResource("1_80xdf")]
|
||||||
|
|
||||||
[node name="Sprite2D" parent="Visuals" index="0"]
|
[node name="Sprite2D" parent="SquashParent/Visuals" index="0"]
|
||||||
position = Vector2(23, -96)
|
position = Vector2(23, -96)
|
||||||
scale = Vector2(0.547474, 0.547474)
|
scale = Vector2(0.547474, 0.547474)
|
||||||
texture = SubResource("AtlasTexture_ane0o")
|
texture = SubResource("AtlasTexture_ane0o")
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://7jsxokx67gpq"]
|
[gd_scene load_steps=11 format=3 uid="uid://7jsxokx67gpq"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://by88f32fou7lh" path="res://scripts/CSharp/Common/Fight/FighterVisual.cs" id="1_hai27"]
|
[ext_resource type="Script" uid="uid://by88f32fou7lh" path="res://scripts/CSharp/Common/Fight/FighterVisual.cs" id="1_hai27"]
|
||||||
[ext_resource type="Texture2D" uid="uid://f7htcxiwvuup" path="res://art/animation/vesna/Side/S01-Idle/0001.png" id="2_6l7g5"]
|
[ext_resource type="Texture2D" uid="uid://f7htcxiwvuup" path="res://art/animation/vesna/Side/S01-Idle/0001.png" id="2_6l7g5"]
|
||||||
[ext_resource type="Script" uid="uid://boprnfciqgixf" path="res://scripts/CSharp/Common/Fight/UI/TargetSelectionClick.cs" id="3_wil2y"]
|
[ext_resource type="Script" uid="uid://boprnfciqgixf" path="res://scripts/CSharp/Common/Fight/UI/TargetSelectionClick.cs" id="3_wil2y"]
|
||||||
[ext_resource type="Texture2D" uid="uid://qlfwuakhe57t" path="res://art/ui/UI/attack_select_wheel.png" id="4_8ldlc"]
|
[ext_resource type="Texture2D" uid="uid://qlfwuakhe57t" path="res://art/ui/UI/attack_select_wheel.png" id="4_8ldlc"]
|
||||||
[ext_resource type="Script" uid="uid://b2dx06p6i7pu0" path="res://scripts/CSharp/Common/Fight/UI/FighterHealthBarVisual.cs" id="5_xv37w"]
|
[ext_resource type="Script" uid="uid://b2dx06p6i7pu0" path="res://scripts/CSharp/Common/Fight/UI/FighterHealthBarVisual.cs" id="5_xv37w"]
|
||||||
|
[ext_resource type="Script" uid="uid://c250yp2mdq83e" path="res://scripts/CSharp/Common/Fight/FighterDamageIndicatorVisual.cs" id="6_0qs42"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://l1hdihubffeg" path="res://prefabs/fight/damage_flying_nuber.tscn" id="7_y6dyb"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wil2y"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_wil2y"]
|
||||||
atlas = ExtResource("2_6l7g5")
|
atlas = ExtResource("2_6l7g5")
|
||||||
@@ -17,25 +19,41 @@ size = Vector2(250, 401)
|
|||||||
radius = 173.0
|
radius = 173.0
|
||||||
height = 588.0
|
height = 588.0
|
||||||
|
|
||||||
[node name="VesnaFighterVisual" type="Node2D" node_paths=PackedStringArray("_visualParent", "_targetSelectionParent", "healthBarVisual")]
|
[node name="VesnaFighterVisual" type="Node2D" node_paths=PackedStringArray("_visualParent", "_targetSelectionParent", "_squashParent", "healthBarVisual", "_fighterDamageIndicatorVisual")]
|
||||||
script = ExtResource("1_hai27")
|
script = ExtResource("1_hai27")
|
||||||
_visualParent = NodePath("Visuals")
|
_visualParent = NodePath("SquashParent/Visuals")
|
||||||
_targetSelectionParent = NodePath("TargetSelection")
|
_targetSelectionParent = NodePath("TargetSelection")
|
||||||
healthBarVisual = NodePath("HealthBar")
|
_squashParent = NodePath("SquashParent")
|
||||||
|
healthBarVisual = NodePath("SquashParent/HealthBar")
|
||||||
|
_fighterDamageIndicatorVisual = NodePath("DamageIndicator")
|
||||||
|
|
||||||
[node name="Visuals" type="Node2D" parent="."]
|
[node name="SquashParent" type="Node2D" parent="."]
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="Visuals"]
|
[node name="Visuals" type="Node2D" parent="SquashParent"]
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="SquashParent/Visuals"]
|
||||||
position = Vector2(-31, -199)
|
position = Vector2(-31, -199)
|
||||||
scale = Vector2(0.451719, 0.451719)
|
scale = Vector2(0.451719, 0.451719)
|
||||||
texture = SubResource("AtlasTexture_wil2y")
|
texture = SubResource("AtlasTexture_wil2y")
|
||||||
|
|
||||||
[node name="ChacacterSizeIndicator" type="CollisionShape2D" parent="Visuals"]
|
[node name="ChacacterSizeIndicator" type="CollisionShape2D" parent="SquashParent/Visuals"]
|
||||||
editor_description = "This is a reference to the space, a normal sized humanoid character should occupy"
|
editor_description = "This is a reference to the space, a normal sized humanoid character should occupy"
|
||||||
visible = false
|
visible = false
|
||||||
position = Vector2(0, -200.5)
|
position = Vector2(0, -200.5)
|
||||||
shape = SubResource("RectangleShape2D_6l7g5")
|
shape = SubResource("RectangleShape2D_6l7g5")
|
||||||
|
|
||||||
|
[node name="HealthBar" type="Node2D" parent="SquashParent" node_paths=PackedStringArray("_tmpHealthLabel")]
|
||||||
|
script = ExtResource("5_xv37w")
|
||||||
|
_tmpHealthLabel = NodePath("tmpLabel")
|
||||||
|
|
||||||
|
[node name="tmpLabel" type="Label" parent="SquashParent/HealthBar"]
|
||||||
|
offset_left = -110.0
|
||||||
|
offset_top = -528.0
|
||||||
|
offset_right = 111.0
|
||||||
|
offset_bottom = -431.0
|
||||||
|
theme_override_font_sizes/font_size = 71
|
||||||
|
text = "xx / xx"
|
||||||
|
|
||||||
[node name="TargetSelection" type="Node2D" parent="."]
|
[node name="TargetSelection" type="Node2D" parent="."]
|
||||||
process_mode = 4
|
process_mode = 4
|
||||||
visible = false
|
visible = false
|
||||||
@@ -55,17 +73,10 @@ position = Vector2(-3, -227)
|
|||||||
scale = Vector2(1.65625, 1.65625)
|
scale = Vector2(1.65625, 1.65625)
|
||||||
texture = ExtResource("4_8ldlc")
|
texture = ExtResource("4_8ldlc")
|
||||||
|
|
||||||
[node name="HealthBar" type="Node2D" parent="." node_paths=PackedStringArray("_tmpHealthLabel")]
|
[node name="DamageIndicator" type="Node2D" parent="."]
|
||||||
script = ExtResource("5_xv37w")
|
position = Vector2(3, -190)
|
||||||
_tmpHealthLabel = NodePath("tmpLabel")
|
script = ExtResource("6_0qs42")
|
||||||
|
_flyingNumberPrefab = ExtResource("7_y6dyb")
|
||||||
[node name="tmpLabel" type="Label" parent="HealthBar"]
|
|
||||||
offset_left = -110.0
|
|
||||||
offset_top = -528.0
|
|
||||||
offset_right = 111.0
|
|
||||||
offset_bottom = -431.0
|
|
||||||
theme_override_font_sizes/font_size = 71
|
|
||||||
text = "xx / xx"
|
|
||||||
|
|
||||||
[connection signal="TargetSelected" from="TargetSelection/Click" to="." method="ClickedTarget"]
|
[connection signal="TargetSelected" from="TargetSelection/Click" to="." method="ClickedTarget"]
|
||||||
[connection signal="mouse_entered" from="TargetSelection/Click" to="TargetSelection/HoverIndicator" method="show"]
|
[connection signal="mouse_entered" from="TargetSelection/Click" to="TargetSelection/HoverIndicator" method="show"]
|
||||||
|
|||||||
@@ -60,6 +60,12 @@ public class AllyAttackAction : FighterAction
|
|||||||
|
|
||||||
await currentFighterVisual.AnimatePosToTarget(targetFighterVisual);
|
await currentFighterVisual.AnimatePosToTarget(targetFighterVisual);
|
||||||
_ = targetFighterVisual.AnimateHit();
|
_ = targetFighterVisual.AnimateHit();
|
||||||
|
|
||||||
|
foreach (var hit in minigameDetail.damageHits!)
|
||||||
|
{
|
||||||
|
targetFighterVisual.SpawnDamageIndicatorNumber(hit);
|
||||||
|
}
|
||||||
|
|
||||||
await currentFighterVisual.AnimatePosToBase();
|
await currentFighterVisual.AnimatePosToBase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,9 @@ namespace Babushka.scripts.CSharp.Common.Fight.Actions;
|
|||||||
|
|
||||||
public class BlobAttackAction : FighterAction
|
public class BlobAttackAction : FighterAction
|
||||||
{
|
{
|
||||||
|
// settings
|
||||||
|
private const int Damage = 3;
|
||||||
|
|
||||||
public override Variant<float, Func<bool>> GetAnimationEnd()
|
public override Variant<float, Func<bool>> GetAnimationEnd()
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
@@ -18,7 +21,7 @@ public class BlobAttackAction : FighterAction
|
|||||||
|
|
||||||
public override void ExecuteAction()
|
public override void ExecuteAction()
|
||||||
{
|
{
|
||||||
FightWorld.Instance.allyFighters.vesnaFighter.AddHealth(-3);
|
FightWorld.Instance.allyFighters.vesnaFighter.AddHealth(-Damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task AnimateAction(AllFightersVisual allFightersVisual)
|
public override async Task AnimateAction(AllFightersVisual allFightersVisual)
|
||||||
@@ -31,6 +34,7 @@ public class BlobAttackAction : FighterAction
|
|||||||
|
|
||||||
await currentFighterVisual.AnimatePosToTarget(targetFighterVisual);
|
await currentFighterVisual.AnimatePosToTarget(targetFighterVisual);
|
||||||
_ = targetFighterVisual.AnimateHit();
|
_ = targetFighterVisual.AnimateHit();
|
||||||
|
targetFighterVisual.SpawnDamageIndicatorNumber(Damage);
|
||||||
await currentFighterVisual.AnimatePosToBase();
|
await currentFighterVisual.AnimatePosToBase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||||
|
|
||||||
|
public partial class FighterDamageIndicatorFlyingNumber : Node2D
|
||||||
|
{
|
||||||
|
[Export] private Label _label;
|
||||||
|
|
||||||
|
public void Initialize(int number)
|
||||||
|
{
|
||||||
|
_label.Text = number.ToString();
|
||||||
|
|
||||||
|
var tween = CreateTween();
|
||||||
|
var xMovement = GD.RandRange(-150, 150);
|
||||||
|
var yMovement = GD.RandRange(-400, -250);
|
||||||
|
tween.Parallel().TweenProperty(this, "position:x", xMovement, .6);
|
||||||
|
tween.Parallel().TweenProperty(this, "position:y", yMovement, .6)
|
||||||
|
.SetEase(Tween.EaseType.Out).SetTrans(Tween.TransitionType.Quad);
|
||||||
|
tween.Chain().TweenCallback(Callable.From(QueueFree));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://b5i41b6502xam
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||||
|
|
||||||
|
public partial class FighterDamageIndicatorVisual : Node2D
|
||||||
|
{
|
||||||
|
[Export] private PackedScene _flyingNumberPrefab;
|
||||||
|
|
||||||
|
|
||||||
|
public void SpawnFlyingNumber(int number)
|
||||||
|
{
|
||||||
|
var flyingNumberInstance = _flyingNumberPrefab.Instantiate<FighterDamageIndicatorFlyingNumber>();
|
||||||
|
AddChild(flyingNumberInstance);
|
||||||
|
flyingNumberInstance.Initialize(number);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://c250yp2mdq83e
|
||||||
@@ -19,7 +19,11 @@ public partial class FighterVisual : Node2D
|
|||||||
[ExportCategory("References")]
|
[ExportCategory("References")]
|
||||||
[Export] private Node2D _visualParent = null!;
|
[Export] private Node2D _visualParent = null!;
|
||||||
[Export] private Node2D _targetSelectionParent = null!;
|
[Export] private Node2D _targetSelectionParent = null!;
|
||||||
|
[Export] private Node2D _squashParent = null!;
|
||||||
[Export] public FighterHealthBarVisual healthBarVisual = null!;
|
[Export] public FighterHealthBarVisual healthBarVisual = null!;
|
||||||
|
[Export] private FighterDamageIndicatorVisual _fighterDamageIndicatorVisual;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private FightWorld.Fighter _boundFighter;
|
private FightWorld.Fighter _boundFighter;
|
||||||
@@ -75,8 +79,8 @@ public partial class FighterVisual : Node2D
|
|||||||
public async Task AnimateHit()
|
public async Task AnimateHit()
|
||||||
{
|
{
|
||||||
var tween = GetTree().CreateTween();
|
var tween = GetTree().CreateTween();
|
||||||
tween.TweenProperty(this, "scale", new Vector2(1.4f, 0.6f), 0.15);
|
tween.TweenProperty(_squashParent, "scale", new Vector2(1.4f, 0.6f), 0.15);
|
||||||
tween.TweenProperty(this, "scale", new Vector2(1, 1), 0.4)
|
tween.TweenProperty(_squashParent, "scale", new Vector2(1, 1), 0.4)
|
||||||
.SetTrans(Tween.TransitionType.Cubic).SetEase(Tween.EaseType.Out);
|
.SetTrans(Tween.TransitionType.Cubic).SetEase(Tween.EaseType.Out);
|
||||||
await ToSignal(tween, "finished");
|
await ToSignal(tween, "finished");
|
||||||
}
|
}
|
||||||
@@ -90,4 +94,8 @@ public partial class FighterVisual : Node2D
|
|||||||
// tween.TweenProperty(this, "scale", new Vector2(1, 1), 0.4)
|
// tween.TweenProperty(this, "scale", new Vector2(1, 1), 0.4)
|
||||||
// .SetTrans(Tween.TransitionType.Cubic).SetEase(Tween.EaseType.Out);
|
// .SetTrans(Tween.TransitionType.Cubic).SetEase(Tween.EaseType.Out);
|
||||||
//}
|
//}
|
||||||
|
public void SpawnDamageIndicatorNumber(int number)
|
||||||
|
{
|
||||||
|
_fighterDamageIndicatorVisual.SpawnFlyingNumber(number);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user