Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1531ffbf8d | |||
| 74096f2c71 | |||
| 1c5d776a3a | |||
| c814d7606d | |||
| e1a61fb1e2 | |||
| edbd4a182b | |||
| a9446ec770 | |||
| f51275ccc0 | |||
| 50b2c04cb4 | |||
| e864c62a3a |
@@ -5,6 +5,6 @@
|
||||
[node name="BabushkaSceneBootstrap" type="Node2D"]
|
||||
|
||||
[node name="BabushkaSceneStartMenu" parent="." instance=ExtResource("1_15ton")]
|
||||
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_fight_world_room.tscn")
|
||||
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_farm_outside_2d.tscn")
|
||||
|
||||
[node name="SceneParent" type="Node" parent="."]
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
[ext_resource type="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="35_64mdn"]
|
||||
[ext_resource type="Texture2D" uid="uid://65e44yde224q" path="res://art/farm/Babushka_house_01.png" id="36_e5b7x"]
|
||||
[ext_resource type="Resource" uid="uid://duq7tshxv6uhp" path="res://resources/items/beet_seed.tres" id="36_fv1t2"]
|
||||
[ext_resource type="Texture2D" uid="uid://b4krfobwq3r3h" path="res://art/test_tomatos.png" id="36_l7ekk"]
|
||||
[ext_resource type="Texture2D" uid="uid://cyyxqmphcrjj" path="res://art/farm/farming/farmobjekte/tomaten/tomaten_template.png" id="36_l7ekk"]
|
||||
[ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="37_8ey8m"]
|
||||
[ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="37_di1ed"]
|
||||
[ext_resource type="Shader" uid="uid://braevmqauoek7" path="res://shader/swaying_plant.gdshader" id="37_taxvr"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://ceaa2qj2bmw43"]
|
||||
[gd_scene load_steps=14 format=3 uid="uid://ceaa2qj2bmw43"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_c6eln"]
|
||||
[ext_resource type="Texture2D" uid="uid://cugtxcfuds31r" path="res://art/indoor/Babushka_bg_01.png" id="2_j25a2"]
|
||||
@@ -17,6 +17,10 @@ size = Vector2(3836, 1086)
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2spkc"]
|
||||
size = Vector2(238.25, 189.75)
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_phqdf"]
|
||||
resource_local_to_scene = true
|
||||
radius = 381.93
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_2spkc"]
|
||||
resource_local_to_scene = true
|
||||
radius = 509.071
|
||||
@@ -24,7 +28,7 @@ radius = 509.071
|
||||
[node name="VesnasRoom" type="Node2D"]
|
||||
y_sort_enabled = true
|
||||
script = ExtResource("1_c6eln")
|
||||
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_common_room.tscn", "res://scenes/Babushka_scene_forest_fight_1_2d.tscn")
|
||||
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_common_room.tscn", "res://scenes/Babushka_scene_fight_world_room.tscn")
|
||||
|
||||
[node name="Colliders" type="Node2D" parent="."]
|
||||
position = Vector2(1297, 5292)
|
||||
@@ -97,10 +101,13 @@ _followNode = NodePath("../Vesna/CharacterBody2D")
|
||||
[node name="CanvasLayer" parent="." instance=ExtResource("24_xwo8y")]
|
||||
|
||||
[node name="BedInteraction" parent="." instance=ExtResource("8_phqdf")]
|
||||
position = Vector2(-1429, 487)
|
||||
_useSprite = false
|
||||
position = Vector2(-1415, 489)
|
||||
_id = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="BedInteraction/Area2D" index="0"]
|
||||
position = Vector2(-382, 9)
|
||||
shape = SubResource("CircleShape2D_phqdf")
|
||||
|
||||
[node name="QuestCompleter" type="Node" parent="BedInteraction"]
|
||||
script = ExtResource("8_j25a2")
|
||||
questResource = ExtResource("9_heyef")
|
||||
@@ -108,7 +115,6 @@ toStatus = 2
|
||||
|
||||
[node name="DoorInteraction" parent="." instance=ExtResource("8_phqdf")]
|
||||
position = Vector2(777, 201)
|
||||
_useSprite = false
|
||||
_id = 0
|
||||
|
||||
[node name="CollisionShape3D" parent="DoorInteraction/Area2D" index="0"]
|
||||
@@ -119,4 +125,5 @@ shape = SubResource("CircleShape2D_2spkc")
|
||||
[connection signal="Interacted" from="DoorInteraction" to="." method="LoadScene"]
|
||||
|
||||
[editable path="Vesna"]
|
||||
[editable path="BedInteraction"]
|
||||
[editable path="DoorInteraction"]
|
||||
|
||||
@@ -13,7 +13,7 @@ public partial class InteractionArea2D : Node2D
|
||||
[Export] private bool _useOutline = true;
|
||||
[Export] private ShaderMaterial _outlineMaterial;
|
||||
[Export] private CanvasItem? _spriteToOutline; // keep to not break old usages. TODO: remove later
|
||||
[Export] private CanvasItem[] _spritesToOutline;
|
||||
[Export] private CanvasItem[] _spritesToOutline = [];
|
||||
[Export] private bool _showLabel = true;
|
||||
[Export] private int _id = -1; // TODO: remove
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ public partial class AllFightersVisual : Node
|
||||
|
||||
if (from == FightHappening.FightState.ActionAnim)
|
||||
{
|
||||
_fighterVisuals.Values.ForEach(fv => fv.UpdateHealthBar());
|
||||
_fighterVisuals.Values.ForEach(fv => fv.UpdateVisuals());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -192,6 +192,8 @@ public partial class FightHappening : Node
|
||||
HappeningData.actionStaging = null;
|
||||
HappeningData.fightersEnterStaging = null;
|
||||
|
||||
RemoveDeadFighters();
|
||||
|
||||
if (!FightWorld.Instance.allyFighters.IsAlive())
|
||||
{
|
||||
ChangeState(FightState.EnemyWin);
|
||||
@@ -345,6 +347,17 @@ public partial class FightHappening : Node
|
||||
vesnaFighter.health = vesnaFighter.maxHealth;
|
||||
GD.Print("Vesna has been revived. This is for the current prototype only");
|
||||
}
|
||||
|
||||
private void RemoveDeadFighters()
|
||||
{
|
||||
foreach (var f in HappeningData.fighterTurn)
|
||||
{
|
||||
if (f.IsDead())
|
||||
{
|
||||
HappeningData.fighterTurn.Remove(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion // Game Logic
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
public class FighterTurn
|
||||
public class FighterTurn : IEnumerable<FightWorld.Fighter>
|
||||
{
|
||||
private class Node
|
||||
{
|
||||
@@ -13,7 +16,8 @@ public class FighterTurn
|
||||
|
||||
private Node? _currentNode;
|
||||
|
||||
public FightWorld.Fighter Current => _currentNode?.fighter ?? throw new InvalidOperationException("No current fighter");
|
||||
public FightWorld.Fighter Current =>
|
||||
_currentNode?.fighter ?? throw new InvalidOperationException("No current fighter");
|
||||
|
||||
public void Next()
|
||||
{
|
||||
@@ -84,7 +88,7 @@ public class FighterTurn
|
||||
{
|
||||
// if removing current, keep current
|
||||
// it will be implicitly deleted by loss of reference on the next Next() call
|
||||
|
||||
|
||||
node.next = node.next.next;
|
||||
return true;
|
||||
}
|
||||
@@ -94,4 +98,26 @@ public class FighterTurn
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public IEnumerator<FightWorld.Fighter> GetEnumerator()
|
||||
{
|
||||
if (_currentNode == null) return Enumerable.Empty<FightWorld.Fighter>().GetEnumerator();
|
||||
|
||||
var list = new List<FightWorld.Fighter>();
|
||||
var n = _currentNode;
|
||||
while (true)
|
||||
{
|
||||
list.Add(n.fighter);
|
||||
if (n.next == _currentNode)
|
||||
break;
|
||||
n = n.next;
|
||||
}
|
||||
|
||||
return list.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,6 @@ using Godot.Collections;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
|
||||
public partial class FighterVisual : Node2D
|
||||
{
|
||||
#region Shortcuts
|
||||
@@ -28,21 +27,17 @@ public partial class FighterVisual : Node2D
|
||||
public void Initialize(FightWorld.Fighter fighter)
|
||||
{
|
||||
_boundFighter = fighter;
|
||||
UpdateMirrorState();
|
||||
UpdateHealthBar();
|
||||
UpdateVisuals();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// fighter visuals should always look to the right in the scene.
|
||||
/// This function flips the sprites horizontally, when the fighter is an enemy.
|
||||
/// </summary>
|
||||
private void UpdateMirrorState()
|
||||
public void UpdateVisuals()
|
||||
{
|
||||
_visualParent.Scale = new Vector2(_boundFighter.IsInFormation(HappeningData.enemyFighterFormation) ? -1 : 1, 1);
|
||||
}
|
||||
// fighter visuals should always look to the right in the scene.
|
||||
// This function flips the sprites horizontally, when the fighter is an enemy.
|
||||
_visualParent.Scale = new Vector2(
|
||||
_boundFighter.IsInFormation(HappeningData.enemyFighterFormation) ? -1 : 1,
|
||||
_boundFighter.IsDead() ? .3f : 1);
|
||||
|
||||
public void UpdateHealthBar()
|
||||
{
|
||||
healthBarVisual.UpdateHealth(_boundFighter.GetHealth(), _boundFighter.maxHealth);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user