Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0d985e5bf6 | |||
| e86b3e81dd | |||
| 14a73daa75 | |||
| aad6c44567 |
@@ -54,6 +54,7 @@ _minigameController = NodePath("Minigame")
|
|||||||
[node name="Minigame" parent="MinigameHandler" instance=ExtResource("8_2b3cf")]
|
[node name="Minigame" parent="MinigameHandler" instance=ExtResource("8_2b3cf")]
|
||||||
process_mode = 4
|
process_mode = 4
|
||||||
visible = false
|
visible = false
|
||||||
|
position = Vector2(23, -29)
|
||||||
|
|
||||||
[node name="SwitchSceneOnFightEnd" type="Node" parent="." node_paths=PackedStringArray("_fightSceneSwitcher")]
|
[node name="SwitchSceneOnFightEnd" type="Node" parent="." node_paths=PackedStringArray("_fightSceneSwitcher")]
|
||||||
script = ExtResource("10_qqd8u")
|
script = ExtResource("10_qqd8u")
|
||||||
|
|||||||
@@ -1760,7 +1760,6 @@ metadata/SaveID = "7a8210bf-479d-4b4c-9758-98d23e59d5d7"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 2
|
_state = 2
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 6
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1781,7 +1780,6 @@ metadata/SaveID = "a1d8a0a2-c51c-4410-83c3-0edb31cbf2de"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 2
|
_state = 2
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 6
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1802,7 +1800,6 @@ metadata/SaveID = "79a65532-cb2b-4268-8eb0-8c41a3935cbb"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 2
|
_state = 2
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 5
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1824,7 +1821,6 @@ metadata/SaveID = "13fa64a3-01dc-4fd8-822e-0839c0da3163"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 2
|
_state = 2
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 7
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1846,7 +1842,6 @@ metadata/SaveID = "414ecdb9-f3c4-4fb9-81bd-6ca575784f78"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField5/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField5/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 2
|
_state = 2
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 6
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1868,7 +1863,6 @@ metadata/SaveID = "b235febb-b231-4f8c-94e9-1f9d9f115b08"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField6/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField6/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 1
|
_state = 1
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 5
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1890,7 +1884,6 @@ metadata/SaveID = "9ccdba91-812a-4c13-9ee0-12472e174fc9"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField7/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField7/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 2
|
_state = 2
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 6
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1912,7 +1905,6 @@ metadata/SaveID = "da44e54a-0b76-4888-ad8b-782a9d146fa3"
|
|||||||
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField8/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField8/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
|
||||||
_state = 2
|
_state = 2
|
||||||
_field = NodePath("../..")
|
_field = NodePath("../..")
|
||||||
_daysWatered = 6
|
|
||||||
|
|
||||||
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="7"]
|
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="7"]
|
||||||
visible = false
|
visible = false
|
||||||
|
|||||||
@@ -244,9 +244,6 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
|
|||||||
|
|
||||||
Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
|
Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
|
||||||
|
|
||||||
// if we already have a plant, don't instantiate another one
|
|
||||||
int plantCount = PlantingPlaceholder.GetChildCount();
|
|
||||||
|
|
||||||
if (save.Count > 0)
|
if (save.Count > 0)
|
||||||
{
|
{
|
||||||
// get plant first because it's also relevant for the field state
|
// get plant first because it's also relevant for the field state
|
||||||
@@ -256,16 +253,12 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
|
|||||||
|
|
||||||
if (plantDataDict.TryGetValue("prefab_path", out Variant prefabPathVar))
|
if (plantDataDict.TryGetValue("prefab_path", out Variant prefabPathVar))
|
||||||
{
|
{
|
||||||
if(plantCount == 0)
|
|
||||||
InstantiatePlant(prefabPathVar.AsString());
|
InstantiatePlant(prefabPathVar.AsString());
|
||||||
else
|
|
||||||
_currentPlant = PlantingPlaceholder.GetChild(0) as PlantBehaviour2D;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plantDataDict.TryGetValue("plant_start_day", out Variant plantStartDay) && _currentPlant != null)
|
if (plantDataDict.TryGetValue("plant_start_day", out Variant plantStartDay) && _currentPlant != null)
|
||||||
{
|
{
|
||||||
_currentPlant.DayPlanted = plantStartDay.AsInt32();
|
_currentPlant.DayPlanted = plantStartDay.AsInt32();
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ public partial class PlantBehaviour2D : Node2D
|
|||||||
[ExportGroup("PlantConfig")]
|
[ExportGroup("PlantConfig")]
|
||||||
[Export] private string _prefabPath;
|
[Export] private string _prefabPath;
|
||||||
[Export] private VariableNode _lifecycle;
|
[Export] private VariableNode _lifecycle;
|
||||||
[Export] private int _daysWatered;
|
|
||||||
|
|
||||||
private string _magicWordDialogicEventName = "MagicWord";
|
private string _magicWordDialogicEventName = "MagicWord";
|
||||||
private Sprite2D? _currentPlantSprite = null;
|
private Sprite2D? _currentPlantSprite = null;
|
||||||
@@ -35,6 +34,7 @@ public partial class PlantBehaviour2D : Node2D
|
|||||||
private bool _calledOnReady = false;
|
private bool _calledOnReady = false;
|
||||||
private int _dayPlanted;
|
private int _dayPlanted;
|
||||||
private int _currentDay;
|
private int _currentDay;
|
||||||
|
private int _daysWatered;
|
||||||
|
|
||||||
public PlantState State
|
public PlantState State
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
using Godot;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
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.Fight.ActionDetails;
|
||||||
using Babushka.scripts.CSharp.Common.Minigame;
|
using Babushka.scripts.CSharp.Common.Minigame;
|
||||||
|
using Godot;
|
||||||
|
using static Babushka.scripts.CSharp.Common.Minigame.MinigameController.RegionTheme;
|
||||||
|
|
||||||
|
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||||
|
|
||||||
public partial class FightMinigameHandler : Node
|
public partial class FightMinigameHandler : Node
|
||||||
{
|
{
|
||||||
#region Shortcuts
|
#region Shortcuts
|
||||||
|
|
||||||
private FightWorld.FightHappeningData HappeningData => FightWorld.Instance.fightHappeningData ?? throw new NoFightHappeningException();
|
private FightWorld.FightHappeningData HappeningData =>
|
||||||
|
FightWorld.Instance.fightHappeningData ?? throw new NoFightHappeningException();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
[Export] private MinigameController _minigameController;
|
[Export] private MinigameController _minigameController = null!;
|
||||||
|
|
||||||
|
|
||||||
public void OnStateEnter(FightHappening.FightState to)
|
public void OnStateEnter(FightHappening.FightState to)
|
||||||
@@ -24,13 +25,20 @@ public partial class FightMinigameHandler : Node
|
|||||||
var currentDetail = HappeningData.actionStaging!.CurrentDetail();
|
var currentDetail = HappeningData.actionStaging!.CurrentDetail();
|
||||||
if (currentDetail is not MinigameActionDetail minigameDetail) return;
|
if (currentDetail is not MinigameActionDetail minigameDetail) return;
|
||||||
|
|
||||||
|
var region1 = R(2, 4);
|
||||||
|
var region2 = R([0, 1, 1, 2]);
|
||||||
|
var region3 = R([7, 8, 9, 9]);
|
||||||
|
var region4 = R([0, 1, 1, 2]);
|
||||||
|
var region5 = R(2, 4);
|
||||||
|
var region6 = R(4, 6);
|
||||||
|
|
||||||
_minigameController.Run(new MinigameController.Builder<int>()
|
_minigameController.Run(new MinigameController.Builder<int>()
|
||||||
.AddRegion(4).RegionWithText("4").RegionWithTheme(MinigameController.RegionTheme.Normal)
|
.AddRegion(region1).RegionWithProportion(R(0.7, 1.3)).RegionWithText(region1.ToString()).RegionWithTheme(Normal)
|
||||||
.AddRegion(0).RegionWithProportion(1.5f).RegionWithText("0").RegionWithTheme(MinigameController.RegionTheme.Bad)
|
.AddRegion(region2).RegionWithProportion(R(1, 1.8)).RegionWithText(region2.ToString()).RegionWithTheme(Bad)
|
||||||
.AddRegion(8).RegionWithProportion(0.5f).RegionWithText("8").RegionWithTheme(MinigameController.RegionTheme.VeryGood)
|
.AddRegion(region3).RegionWithProportion(R(0.3, 1)).RegionWithText(region3.ToString()).RegionWithTheme(VeryGood)
|
||||||
.AddRegion(0).RegionWithProportion(1.5f).RegionWithText("0").RegionWithTheme(MinigameController.RegionTheme.Bad)
|
.AddRegion(region4).RegionWithProportion(R(1, 1.8)).RegionWithText(region4.ToString()).RegionWithTheme(Bad)
|
||||||
.AddRegion(3).RegionWithText("3").RegionWithTheme(MinigameController.RegionTheme.NormalAlt1)
|
.AddRegion(region5).RegionWithProportion(R(0.7, 1.3)).RegionWithText(region5.ToString()).RegionWithTheme(NormalAlt1)
|
||||||
.AddRegion(5).RegionWithText("5").RegionWithTheme(MinigameController.RegionTheme.NormalAlt2)
|
.AddRegion(region6).RegionWithProportion(R(0.7, 1.3)).RegionWithText(region6.ToString()).RegionWithTheme(NormalAlt2)
|
||||||
.WithHitCount(3)
|
.WithHitCount(3)
|
||||||
).ContinueWith(task =>
|
).ContinueWith(task =>
|
||||||
{
|
{
|
||||||
@@ -40,4 +48,25 @@ public partial class FightMinigameHandler : Node
|
|||||||
FightHappening.Instance.CallDeferred("DetailFilled");
|
FightHappening.Instance.CallDeferred("DetailFilled");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region Utils
|
||||||
|
|
||||||
|
// this is to make the minigame set up a bit less convoluted
|
||||||
|
private static int R(int min, int max)
|
||||||
|
{
|
||||||
|
return GD.RandRange(min, max);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static float R(double min, double max)
|
||||||
|
{
|
||||||
|
return (float)GD.RandRange(min, max);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int R(List<int> list)
|
||||||
|
{
|
||||||
|
return list[GD.RandRange(0, list.Count - 1)];
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user