Compare commits

..

13 Commits

Author SHA1 Message Date
saderako 5636c0da67 Add first two cat animations
Petting animation is still being worked on
2025-12-22 12:30:31 +01:00
kziolkowski 4578a2cfda Added Spine2D GDExtension bin to project 2025-12-22 10:48:58 +01:00
Jonathan 9032272599 Merge pull request 'BlobFighter TargetSelection ColliderShape2D Transform angepasst' (#42) from Enemy_selection_overlap into develop
Reviewed-on: #42
Reviewed-by: Jonathan <cblech@ymail.com>
2025-12-18 13:06:03 +01:00
jlink a2ef3bfaf0 Window angepasst 2025-12-18 13:02:32 +01:00
jlink 1ab1071246 HoverIndicator off 2025-12-17 15:29:58 +01:00
Jonathan e5b2b8b8ab Merge pull request 'Connect farming and fighting by making them codependent' (#44) from feature/farm_fight_loop into develop
Reviewed-on: #44
2025-12-16 20:44:26 +01:00
Jonathan 2fa8aa9fbc Merge pull request 'Vesna resets to bed after death' (#47) from Vesna_resets_to_bed_after_dead into develop
Reviewed-on: #47
Reviewed-by: Jonathan <cblech@ymail.com>
2025-12-16 19:37:29 +01:00
Jonathan 6deb6e29fd Merge pull request 'Made attack selection only select alive enemies' (#45) from bug/attack_dead_enemy into develop
Reviewed-on: #45
Reviewed-by: kziolkowski <katharina.ziolkowski@gmail.com>
2025-12-16 19:30:33 +01:00
Jonathan edc133749f Merge pull request 'Randomized who starts the fight' (#41) from randomise_fight_start into develop
Reviewed-on: #41
Reviewed-by: kziolkowski <katharina.ziolkowski@gmail.com>
2025-12-16 19:28:37 +01:00
jlink 2ed9dbbc52 Vesna resets to bed after death 2025-12-16 15:34:52 +01:00
jonathan 6375383373 🐛Made attack selection only select alive enemies 2025-12-11 18:49:51 +01:00
jlink 09f55d3aa7 BlobFighter TargetSelection ColliderShape2D Transform angepasst 2025-12-10 15:29:56 +01:00
jonathan a736adaafb Randomized who starts the fight 2025-12-09 15:07:50 +01:00
42 changed files with 329 additions and 6 deletions
+8
View File
@@ -0,0 +1,8 @@
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=3 uid="uid://b8320gi2iry7e"]
[ext_resource type="SpineAtlasResource" uid="uid://bp5dm6ppdxyfy" path="res://art/animation/Cat/sk_cat.atlas" id="1_silct"]
[ext_resource type="SpineSkeletonFileResource" uid="uid://dj4q5ov01nmar" path="res://art/animation/Cat/sk_cat.skel" id="2_bwfy5"]
[resource]
atlas_res = ExtResource("1_silct")
skeleton_file_res = ExtResource("2_bwfy5")
+12
View File
@@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://cdqhc3rpjiod2"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://b8320gi2iry7e" path="res://art/animation/Cat/cat.tres" id="1_x424w"]
[node name="Cat" type="Node2D"]
[node name="SpineSprite" type="SpineSprite" parent="."]
skeleton_data_res = ExtResource("1_x424w")
preview_skin = "Default"
preview_animation = "Idle"
preview_frame = false
preview_time = 0.0
+29
View File
@@ -0,0 +1,29 @@
sk_cat.png
size:4930,1270
filter:Linear,Linear
pma:true
cat_backleg_lower
bounds:0,0,72,113
cat_backleg_upper
bounds:493,0,181,200
offsets:0,1,181,201
cat_body
bounds:986,0,493,349
cat_eyeball
bounds:1479,0,302,155
cat_eyelashes
bounds:1972,0,331,160
cat_frontleg_lower
bounds:2465,0,84,115
offsets:0,1,84,116
cat_frontleg_upper
bounds:2958,0,76,169
cat_head
bounds:3451,0,422,575
offsets:0,2,422,577
cat_leg
bounds:3944,0,218,635
cat_nose
bounds:4437,0,294,93
cat_pupil
bounds:0,635,235,117
+16
View File
@@ -0,0 +1,16 @@
[remap]
importer="spine.atlas"
type="SpineAtlasResource"
uid="uid://bp5dm6ppdxyfy"
path="res://.godot/imported/sk_cat.atlas-209e52708ae51512bd5a9c13ecef821d.spatlas"
[deps]
source_file="res://art/animation/Cat/sk_cat.atlas"
dest_files=["res://.godot/imported/sk_cat.atlas-209e52708ae51512bd5a9c13ecef821d.spatlas"]
[params]
normal_map_prefix="n"
specular_map_prefix="s"
Binary file not shown.

After

Width:  |  Height:  |  Size: 515 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxbae280ae8yv"
path="res://.godot/imported/sk_cat.png-400ad3198e50487a16cece95aef9c056.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/Cat/sk_cat.png"
dest_files=["res://.godot/imported/sk_cat.png-400ad3198e50487a16cece95aef9c056.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.
+14
View File
@@ -0,0 +1,14 @@
[remap]
importer="spine.skel"
type="SpineSkeletonFileResource"
uid="uid://dj4q5ov01nmar"
path="res://.godot/imported/sk_cat.skel-040dd3b0902fe4467d3f597cd8205232.spskel"
[deps]
source_file="res://art/animation/Cat/sk_cat.skel"
dest_files=["res://.godot/imported/sk_cat.skel-040dd3b0902fe4467d3f597cd8205232.spskel"]
[params]
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleExecutable</key>
<string>libspine_godot.ios.template_debug</string>
<key>CFBundleName</key>
<string>spine-godot</string>
<key>CFBundleIdentifier</key>
<string>com.esotericsoftware.spine.spine-godot</string>
<key>CFBundleVersion</key>
<string>4.2.0</string>
<key>CFBundleShortVersionString</key>
<string>4.2.0</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
<key>DTPlatformName</key>
<string>iphoneos</string>
</dict>
</plist>
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleExecutable</key>
<string>libspine_godot.ios.template_release</string>
<key>CFBundleName</key>
<string>spine-godot</string>
<key>CFBundleIdentifier</key>
<string>com.esotericsoftware.spine.spine-godot</string>
<key>CFBundleVersion</key>
<string>4.2.0</string>
<key>CFBundleShortVersionString</key>
<string>4.2.0</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
<key>DTPlatformName</key>
<string>iphoneos</string>
</dict>
</plist>
Binary file not shown.
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleExecutable</key>
<string>libspine_godot.macos.editor</string>
<key>CFBundleName</key>
<string>spine-godot</string>
<key>CFBundleIdentifier</key>
<string>com.esotericsoftware.spine.spine-godot</string>
<key>CFBundleVersion</key>
<string>4.2.0</string>
<key>CFBundleShortVersionString</key>
<string>4.2.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
</dict>
</plist>
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleExecutable</key>
<string>libspine_godot.macos.template_debug</string>
<key>CFBundleName</key>
<string>spine-godot</string>
<key>CFBundleIdentifier</key>
<string>com.esotericsoftware.spine.spine-godot</string>
<key>CFBundleVersion</key>
<string>4.2.0</string>
<key>CFBundleShortVersionString</key>
<string>4.2.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
</dict>
</plist>
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleExecutable</key>
<string>libspine_godot.macos.template_release</string>
<key>CFBundleName</key>
<string>spine-godot</string>
<key>CFBundleIdentifier</key>
<string>com.esotericsoftware.spine.spine-godot</string>
<key>CFBundleVersion</key>
<string>4.2.0</string>
<key>CFBundleShortVersionString</key>
<string>4.2.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
</dict>
</plist>
+40
View File
@@ -0,0 +1,40 @@
[configuration]
entry_symbol = "spine_godot_library_init"
compatibility_minimum = "4.1"
[libraries]
macos.editor = "macos/libspine_godot.macos.editor.framework"
macos.debug = "macos/libspine_godot.macos.template_debug.framework"
macos.release = "macos/libspine_godot.macos.template_release.framework"
ios.debug = "ios/libspine_godot.ios.template_debug.framework"
ios.release = "ios/libspine_godot.ios.template_release.framework"
windows.editor.x86_64 = "windows/libspine_godot.windows.editor.x86_64.dll"
windows.debug.x86_64 = "windows/libspine_godot.windows.template_debug.x86_64.dll"
windows.release.x86_64 = "windows/libspine_godot.windows.template_release.x86_64.dll"
linux.editor.x86_64 = "linux/libspine_godot.linux.editor.x86_64.so"
linux.debug.x86_64 = "linux/libspine_godot.linux.template_debug.x86_64.so"
linux.release.x86_64 = "linux/libspine_godot.linux.template_release.x86_64.so"
linux.editor.arm64 = "linux/libspine_godot.linux.editor.arm64.so"
linux.debug.arm64 = "linux/libspine_godot.linux.template_debug.arm64.so"
linux.release.arm64 = "linux/libspine_godot.linux.template_release.arm64.so"
linux.editor.rv64 = "linux/libspine_godot.linux.editor.rv64.so"
linux.debug.rv64 = "linux/libspine_godot.linux.template_debug.rv64.so"
linux.release.rv64 = "linux/libspine_godot.linux.template_release.rv64.so"
android.debug.x86_64 = "android/libspine_godot.android.template_debug.x86_64.so"
android.release.x86_64 = "android/libspine_godot.android.template_release.x86_64.so"
android.debug.arm64 = "android/libspine_godot.android.template_debug.arm64.so"
android.release.arm64 = "android/libspine_godot.android.template_release.arm64.so"
web.debug.threads.wasm32 = "web/libspine_godot.web.template_debug.wasm32.wasm"
web.release.threads.wasm32 = "web/libspine_godot.web.template_release.wasm32.wasm"
web.debug.wasm32 = "web/libspine_godot.web.template_debug.wasm32.nothreads.wasm"
web.release.wasm32 = "web/libspine_godot.web.template_release.wasm32.nothreads.wasm"
@@ -0,0 +1 @@
uid://cjp18u5g8vh2o
Binary file not shown.
@@ -14,5 +14,9 @@ position = Vector2(23, -96)
scale = Vector2(0.547474, 0.547474)
texture = SubResource("AtlasTexture_ane0o")
[node name="CollisionShape2D" parent="TargetSelection/Click" index="0"]
position = Vector2(25.215, -195)
scale = Vector2(0.72370636, 1)
[node name="Sprite2D" parent="TargetSelection/HoverIndicator" index="0"]
position = Vector2(1, -126)
position = Vector2(0.84, -126)
+3 -2
View File
@@ -141,6 +141,7 @@ directories/tres_directory={
"beet": "res://resources/items/beet.tres",
"beetRoot": "res://resources/quests/beetRoot.tres",
"beet_seed": "res://resources/items/beet_seed.tres",
"cat": "res://art/animation/Cat/cat.tres",
"choice_panel_focus": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_focus.tres",
"choice_panel_hover": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_hover.tres",
"choice_panel_normal": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_normal.tres",
@@ -186,8 +187,8 @@ directories/tres_directory={
[display]
window/size/viewport_width=1980
window/size/viewport_height=1020
window/size/viewport_width=1920
window/size/viewport_height=1080
window/stretch/mode="viewport"
window/stretch/aspect="keep_height"
@@ -12,6 +12,7 @@ public class TargetSelectActionDetail : FighterAction.FighterActionDetail
// settings
public required bool selectEnemy;
public required bool selectAlly;
public required bool aliveOnly;
public VisualRange visualRange = VisualRange.Single;
// result
@@ -13,7 +13,8 @@ public class AllyAttackAction : FighterAction
public TargetSelectActionDetail targetSelect = new()
{
selectEnemy = true,
selectAlly = false
selectAlly = false,
aliveOnly = true
};
public MinigameActionDetail minigameDetail = new();
@@ -117,11 +117,13 @@ public partial class AllFightersVisual : Node
if (targetDetail.selectEnemy)
_fighterVisuals
.Where(kv => kv.Key.IsInFormation(HappeningData.enemyFighterFormation))
.Where(kv => !targetDetail.aliveOnly || kv.Key.IsAlive())// if aliveOnly: take where IsAlive
.ForEach(kv => kv.Value.SetTargetSelectionActive(true));
if (targetDetail.selectAlly)
_fighterVisuals
.Where(kv => kv.Key.IsInFormation(HappeningData.allyFighterFormation))
.Where(kv => !targetDetail.aliveOnly || kv.Key.IsAlive())// if aliveOnly: take where IsAlive
.ForEach(kv => kv.Value.SetTargetSelectionActive(true));
}
@@ -307,6 +307,11 @@ public partial class FightHappening : Node
HappeningData.enemyFighterFormation.SetFighterAtPosition(emptySlotIndex, fighter);
HappeningData.fighterTurn.AddAsLast(fighter);
}
if (GD.RandRange(0, 2) != 0) // 2/3 chance for vesna to start
{
HappeningData.fighterTurn.SpinBack();
}
}
private void ExecuteNextFighter()
@@ -99,6 +99,23 @@ public class FighterTurn : IEnumerable<FightWorld.Fighter>
return false;
}
/// <summary>
/// Sets the current one back
/// This is an expensive operation, because the entire data structure needs to be circled
/// </summary>
public void SpinBack()
{
if (_currentNode == null) return;
var node = _currentNode;
while (node.next != _currentNode)
{
node = node.next;
}
_currentNode = node;
}
public IEnumerator<FightWorld.Fighter> GetEnumerator()
{
if (_currentNode == null) return Enumerable.Empty<FightWorld.Fighter>().GetEnumerator();
@@ -9,9 +9,15 @@ public partial class SwitchSceneOnFightEnd : Node
public void OnFightStateEnter(FightHappening.FightState to)
{
if (to is FightHappening.FightState.PlayerWin
or FightHappening.FightState.EnemyWin)
if (to is FightHappening.FightState.PlayerWin )
_ = SwitchSceneAfterTime(2.0f);
if (to is FightHappening.FightState.EnemyWin)
{
_fightSceneSwitcher.ExitFight();
_fightSceneSwitcher.ExitFightWorld();
}
}
private async Task SwitchSceneAfterTime(float seconds)