From c977ea2ecc2b0bb6d9fb9187423338af17a442ba Mon Sep 17 00:00:00 2001 From: Jacob Feenstra Date: Fri, 19 Dec 2025 13:32:44 -0800 Subject: [PATCH 1/3] building AnimationPlayers have on, off (all levels), and place animations --- scenes/buildings/building.tscn | 21 ++++- scenes/buildings/eco_dome.tscn | 106 +++++++++++++++++++++---- scenes/buildings/iron_refinery.tscn | 118 ++++++++++++++++++++++++---- scenes/buildings/power_plant.tscn | 113 ++++++++++++++++++++++---- scenes/buildings/residential.tscn | 105 ++++++++++++++++++++++--- 5 files changed, 402 insertions(+), 61 deletions(-) diff --git a/scenes/buildings/building.tscn b/scenes/buildings/building.tscn index 86e3bc00..08e886c9 100644 --- a/scenes/buildings/building.tscn +++ b/scenes/buildings/building.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=83 format=3 uid="uid://sr08scun8ys1"] +[gd_scene load_steps=87 format=3 uid="uid://sr08scun8ys1"] [ext_resource type="Script" uid="uid://6myfee53w1xy" path="res://scripts/buildings/building.gd" id="1_a3sb6"] [ext_resource type="Script" uid="uid://dh3go6ocensfh" path="res://scripts/buildings/building_collider.gd" id="3_qcxio"] @@ -245,6 +245,18 @@ tracks/0/keys = { "values": [] } +[sub_resource type="Animation" id="Animation_78n4u"] +resource_name = "on_u1" + +[sub_resource type="Animation" id="Animation_j2vja"] +resource_name = "on_u2" + +[sub_resource type="Animation" id="Animation_c57nt"] +resource_name = "on_u3" + +[sub_resource type="Animation" id="Animation_ia6p8"] +resource_name = "place_u1" + [sub_resource type="AnimationLibrary" id="AnimationLibrary_daisx"] _data = { &"buffed_u1": SubResource("Animation_daisx"), @@ -261,7 +273,11 @@ _data = { &"idle_u3": SubResource("Animation_xl0vr"), &"off_u1": SubResource("Animation_u6fk5"), &"off_u2": SubResource("Animation_w2b1x"), -&"off_u3": SubResource("Animation_4hstu") +&"off_u3": SubResource("Animation_4hstu"), +&"on_u1": SubResource("Animation_78n4u"), +&"on_u2": SubResource("Animation_j2vja"), +&"on_u3": SubResource("Animation_c57nt"), +&"place_u1": SubResource("Animation_ia6p8") } [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_daisx"] @@ -474,7 +490,6 @@ vframes = 18 script = ExtResource("4_mfina") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -active = false libraries = { &"": SubResource("AnimationLibrary_daisx") } diff --git a/scenes/buildings/eco_dome.tscn b/scenes/buildings/eco_dome.tscn index b2d2f313..454b8e00 100644 --- a/scenes/buildings/eco_dome.tscn +++ b/scenes/buildings/eco_dome.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://dgfq7odjk1hcx"] +[gd_scene load_steps=32 format=3 uid="uid://dgfq7odjk1hcx"] [ext_resource type="PackedScene" uid="uid://sr08scun8ys1" path="res://scenes/buildings/building.tscn" id="1_sid64"] [ext_resource type="Script" uid="uid://cap1i0rek2d6n" path="res://scripts/buildings/eco_dome.gd" id="2_hww1b"] @@ -45,6 +45,18 @@ metadata/_custom_type_script = "uid://cy4nkunttcuy5" [sub_resource type="Animation" id="Animation_j3rju"] length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [92] +} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" @@ -244,7 +256,7 @@ tracks/0/keys = { [sub_resource type="Animation" id="Animation_u6fk5"] resource_name = "off_u1" -length = 0.5 +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -252,15 +264,15 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.03333336, 0.13333333, 0.36666667), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [11] +"values": [91, 92, 93] } [sub_resource type="Animation" id="Animation_w2b1x"] resource_name = "off_u2" -length = 0.5 +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -268,15 +280,78 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.03333333, 0.13333333, 0.36666667), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [41] +"values": [96, 97, 98] } [sub_resource type="Animation" id="Animation_4hstu"] resource_name = "off_u3" -length = 0.5 +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.10000001, 0.16666666, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [101, 102, 103] +} + +[sub_resource type="Animation" id="Animation_8kgej"] +resource_name = "on_u1" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.0333333, 0.100000024, 0.33333337), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [93, 92, 91] +} + +[sub_resource type="Animation" id="Animation_fo458"] +resource_name = "on_u2" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.1, 0.13333334, 0.36666667), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [98, 97, 96] +} + +[sub_resource type="Animation" id="Animation_v4082"] +resource_name = "on_u3" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.06666666, 0.13333334, 0.36666667), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [103, 102, 101] +} + +[sub_resource type="Animation" id="Animation_jit6h"] +resource_name = "place_u1" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -287,7 +362,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [71] +"values": [93] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_j3rju"] @@ -307,7 +382,11 @@ _data = { &"idle_u3": SubResource("Animation_xl0vr"), &"off_u1": SubResource("Animation_u6fk5"), &"off_u2": SubResource("Animation_w2b1x"), -&"off_u3": SubResource("Animation_4hstu") +&"off_u3": SubResource("Animation_4hstu"), +&"on_u1": SubResource("Animation_8kgej"), +&"on_u2": SubResource("Animation_fo458"), +&"on_u3": SubResource("Animation_v4082"), +&"place_u1": SubResource("Animation_jit6h") } [node name="EcoDome" instance=ExtResource("1_sid64")] @@ -322,10 +401,9 @@ target = NodePath("..") [node name="Sprite2D" parent="." index="2"] texture = ExtResource("5_j3rju") vframes = 21 -frame = 61 +frame = 92 [node name="AnimationPlayer" parent="." index="3"] -active = true libraries = { &"": SubResource("AnimationLibrary_j3rju") } diff --git a/scenes/buildings/iron_refinery.tscn b/scenes/buildings/iron_refinery.tscn index 22831871..5b830325 100644 --- a/scenes/buildings/iron_refinery.tscn +++ b/scenes/buildings/iron_refinery.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://omx3pl3xhdw"] +[gd_scene load_steps=32 format=3 uid="uid://omx3pl3xhdw"] [ext_resource type="PackedScene" uid="uid://sr08scun8ys1" path="res://scenes/buildings/building.tscn" id="1_tn2a3"] [ext_resource type="Script" uid="uid://dujssmy26e32u" path="res://scripts/buildings/iron_refinery.gd" id="2_n1xno"] @@ -45,6 +45,30 @@ metadata/_custom_type_script = "uid://cy4nkunttcuy5" [sub_resource type="Animation" id="Animation_gymdt"] length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [91] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:frame_coords") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [Vector2i(1, 2)] +} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" @@ -240,7 +264,7 @@ tracks/0/keys = { [sub_resource type="Animation" id="Animation_u6fk5"] resource_name = "off_u1" -length = 0.5 +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -248,15 +272,15 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.1, 0.16666667, 0.43333334), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [11] +"values": [91, 92, 93] } [sub_resource type="Animation" id="Animation_w2b1x"] resource_name = "off_u2" -length = 0.5 +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -264,15 +288,31 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.1, 0.1, 0.33333334), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [41] +"values": [101, 102, 103] } [sub_resource type="Animation" id="Animation_4hstu"] resource_name = "off_u3" -length = 0.5 +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.1, 0.06666667, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [111, 112, 113] +} + +[sub_resource type="Animation" id="Animation_g6fhf"] +resource_name = "on_u1" +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -280,10 +320,57 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { +"times": PackedFloat32Array(-0.1, 0.099999994, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [96, 97, 98] +} + +[sub_resource type="Animation" id="Animation_e5l8k"] +resource_name = "on_u2" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.10000001, 0.06666667, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [106, 107, 108] +} + +[sub_resource type="Animation" id="Animation_ry6o0"] +resource_name = "on_u3" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.13333334, 0.1, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [116, 117, 118] +} + +[sub_resource type="Animation" id="Animation_v5lc3"] +resource_name = "place_u1" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame_coords") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [71] +"values": [Vector2i(1, 2)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_gymdt"] @@ -303,7 +390,11 @@ _data = { &"idle_u3": SubResource("Animation_xl0vr"), &"off_u1": SubResource("Animation_u6fk5"), &"off_u2": SubResource("Animation_w2b1x"), -&"off_u3": SubResource("Animation_4hstu") +&"off_u3": SubResource("Animation_4hstu"), +&"on_u1": SubResource("Animation_g6fhf"), +&"on_u2": SubResource("Animation_e5l8k"), +&"on_u3": SubResource("Animation_ry6o0"), +&"place_u1": SubResource("Animation_v5lc3") } [node name="IronRefinery" instance=ExtResource("1_tn2a3")] @@ -318,10 +409,9 @@ target = NodePath("..") [node name="Sprite2D" parent="." index="2"] texture = ExtResource("5_gymdt") vframes = 24 -frame = 32 +frame = 11 [node name="AnimationPlayer" parent="." index="3"] -active = true libraries = { &"": SubResource("AnimationLibrary_gymdt") } diff --git a/scenes/buildings/power_plant.tscn b/scenes/buildings/power_plant.tscn index 6abd3a70..458f86ce 100644 --- a/scenes/buildings/power_plant.tscn +++ b/scenes/buildings/power_plant.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=28 format=3 uid="uid://bmcgkpbcwft3l"] +[gd_scene load_steps=32 format=3 uid="uid://bmcgkpbcwft3l"] [ext_resource type="PackedScene" uid="uid://sr08scun8ys1" path="res://scenes/buildings/building.tscn" id="1_afyay"] [ext_resource type="Script" uid="uid://bwb3ytyn3xxkr" path="res://scripts/buildings/power_plant.gd" id="2_5nqxb"] [ext_resource type="Script" uid="uid://0leikb15bp7y" path="res://scripts/buildings/cost.gd" id="3_jn2df"] [ext_resource type="Script" uid="uid://cy4nkunttcuy5" path="res://scripts/buildings/building_spec.gd" id="4_e41u7"] -[ext_resource type="Texture2D" uid="uid://b653cdbpruy4i" path="res://assets/sprites/buildings/power_generators/nuclear_reactor/nuclear_reactor_spritesheet.png" id="5_jn2df"] [ext_resource type="AudioStream" uid="uid://5ugsbmor04sc" path="res://assets/audio/buildings/power_plant.wav" id="6_e41u7"] [sub_resource type="Resource" id="Resource_jn2df"] @@ -43,8 +42,23 @@ cost_levels = Array[ExtResource("3_jn2df")]([SubResource("Resource_jn2df"), SubR type = 5 metadata/_custom_type_script = "uid://cy4nkunttcuy5" +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_jn2df"] +load_path = "res://.godot/imported/nuclear_reactor_spritesheet.png-e10e02c122ba8b45db74cbba44b355f0.ctex" + [sub_resource type="Animation" id="Animation_jn2df"] length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [98] +} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" @@ -246,8 +260,7 @@ tracks/0/keys = { [sub_resource type="Animation" id="Animation_u6fk5"] resource_name = "off_u1" -length = 0.5 -loop_mode = 1 +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -255,15 +268,15 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.13333334, 0.099999994, 0.36666667), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [11] +"values": [91, 92, 93] } [sub_resource type="Animation" id="Animation_w2b1x"] resource_name = "off_u2" -length = 0.5 +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -271,15 +284,78 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.06666669, 0.100000024, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [41] +"values": [96, 97, 98] } [sub_resource type="Animation" id="Animation_4hstu"] resource_name = "off_u3" -length = 0.5 +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.06666667, 0.13333334, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [101, 102, 103] +} + +[sub_resource type="Animation" id="Animation_e41u7"] +resource_name = "on_u1" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.13333334, 0.10000001, 0.33333337), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [93, 92, 91] +} + +[sub_resource type="Animation" id="Animation_pap3h"] +resource_name = "on_u2" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.06666667, 0.16666667, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [98, 97, 96] +} + +[sub_resource type="Animation" id="Animation_ra8a1"] +resource_name = "on_u3" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.06666669, 0.16666667, 0.43333334), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [103, 102, 101] +} + +[sub_resource type="Animation" id="Animation_xxpri"] +resource_name = "place_u1" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -290,7 +366,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [71] +"values": [11] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_jn2df"] @@ -310,7 +386,11 @@ _data = { &"idle_u3": SubResource("Animation_xl0vr"), &"off_u1": SubResource("Animation_u6fk5"), &"off_u2": SubResource("Animation_w2b1x"), -&"off_u3": SubResource("Animation_4hstu") +&"off_u3": SubResource("Animation_4hstu"), +&"on_u1": SubResource("Animation_e41u7"), +&"on_u2": SubResource("Animation_pap3h"), +&"on_u3": SubResource("Animation_ra8a1"), +&"place_u1": SubResource("Animation_xxpri") } [node name="PowerPlant" instance=ExtResource("1_afyay")] @@ -322,12 +402,11 @@ building_spec = SubResource("Resource_pap3h") target = NodePath("..") [node name="Sprite2D" parent="." index="2"] -texture = ExtResource("5_jn2df") +texture = SubResource("CompressedTexture2D_jn2df") vframes = 21 -frame = 11 +frame = 98 [node name="AnimationPlayer" parent="." index="3"] -active = true libraries = { &"": SubResource("AnimationLibrary_jn2df") } diff --git a/scenes/buildings/residential.tscn b/scenes/buildings/residential.tscn index ebe20783..8fa34aac 100644 --- a/scenes/buildings/residential.tscn +++ b/scenes/buildings/residential.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://62tr4h246vw0"] +[gd_scene load_steps=32 format=3 uid="uid://62tr4h246vw0"] [ext_resource type="PackedScene" uid="uid://sr08scun8ys1" path="res://scenes/buildings/building.tscn" id="1_e3wr7"] [ext_resource type="Script" uid="uid://cnl1jwpsm0ofq" path="res://scripts/buildings/residential.gd" id="2_4f3d3"] @@ -45,6 +45,18 @@ metadata/_custom_type_script = "uid://cy4nkunttcuy5" [sub_resource type="Animation" id="Animation_0exew"] length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [6] +} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" @@ -239,8 +251,7 @@ tracks/0/keys = { [sub_resource type="Animation" id="Animation_u6fk5"] resource_name = "off_u1" -length = 0.05 -loop_mode = 1 +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -248,14 +259,15 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.13333334, 0.06666667, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [6] +"values": [71, 72, 73] } [sub_resource type="Animation" id="Animation_w2b1x"] resource_name = "off_u2" +length = 0.7 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -263,14 +275,78 @@ tracks/0/path = NodePath("Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(-0.13333334, 0.13333334, 0.36666667), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [26] +"values": [76, 77, 78] } [sub_resource type="Animation" id="Animation_4hstu"] resource_name = "off_u3" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.06666666, 0.13333333, 0.36666667), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [81, 82, 83] +} + +[sub_resource type="Animation" id="Animation_c44lc"] +resource_name = "on_u1" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.10000001, 0.06666667, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [73, 72, 71] +} + +[sub_resource type="Animation" id="Animation_gnoo8"] +resource_name = "on_u2" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.08333335, 0.100000024, 0.21666667), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [78, 77, 76] +} + +[sub_resource type="Animation" id="Animation_wakwv"] +resource_name = "on_u3" +length = 0.7 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.033333335, 0.13333333, 0.33333334), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [83, 82, 81] +} + +[sub_resource type="Animation" id="Animation_x8hhi"] +resource_name = "place_u1" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -281,7 +357,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [51] +"values": [6] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_4f3d3"] @@ -301,7 +377,11 @@ _data = { &"idle_u3": SubResource("Animation_xl0vr"), &"off_u1": SubResource("Animation_u6fk5"), &"off_u2": SubResource("Animation_w2b1x"), -&"off_u3": SubResource("Animation_4hstu") +&"off_u3": SubResource("Animation_4hstu"), +&"on_u1": SubResource("Animation_c44lc"), +&"on_u2": SubResource("Animation_gnoo8"), +&"on_u3": SubResource("Animation_wakwv"), +&"place_u1": SubResource("Animation_x8hhi") } [node name="Residential" instance=ExtResource("1_e3wr7")] @@ -316,10 +396,9 @@ target = NodePath("..") [node name="Sprite2D" parent="." index="2"] texture = ExtResource("5_0exew") vframes = 17 -frame = 2 +frame = 6 [node name="AnimationPlayer" parent="." index="3"] -active = true libraries = { &"": SubResource("AnimationLibrary_4f3d3") } From 3ef36a079140a61713f15dcc2a6fd6f4571aa902 Mon Sep 17 00:00:00 2001 From: Jacob Feenstra Date: Mon, 22 Dec 2025 03:15:33 -0800 Subject: [PATCH 2/3] testing out place_u1 in isolation --- scenes/buildings/building.tscn | 17 +++++++----- scenes/buildings/eco_dome.tscn | 12 --------- scenes/buildings/iron_refinery.tscn | 26 +------------------ scenes/buildings/power_plant.tscn | 15 ----------- scenes/buildings/residential.tscn | 12 --------- .../buildings/building_animation_manager.gd | 2 +- 6 files changed, 13 insertions(+), 71 deletions(-) diff --git a/scenes/buildings/building.tscn b/scenes/buildings/building.tscn index 08e886c9..ffb46fb6 100644 --- a/scenes/buildings/building.tscn +++ b/scenes/buildings/building.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=87 format=3 uid="uid://sr08scun8ys1"] +[gd_scene load_steps=88 format=3 uid="uid://sr08scun8ys1"] [ext_resource type="Script" uid="uid://6myfee53w1xy" path="res://scripts/buildings/building.gd" id="1_a3sb6"] [ext_resource type="Script" uid="uid://dh3go6ocensfh" path="res://scripts/buildings/building_collider.gd" id="3_qcxio"] @@ -325,6 +325,9 @@ animation = &"off_u2" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_4hstu"] animation = &"off_u3" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_78n4u"] +animation = &"place_u1" + [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_daisx"] switch_mode = 1 @@ -396,9 +399,6 @@ advance_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8fr13"] -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_f6oyp"] -advance_mode = 2 - [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_oalqm"] [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vnr05"] @@ -428,6 +428,9 @@ switch_mode = 2 advance_mode = 2 advance_condition = &"not_powered" +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yndyg"] +advance_mode = 2 + [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_daisx"] states/End/position = Vector2(793, 211) states/Start/position = Vector2(266, -10) @@ -461,8 +464,10 @@ states/off_u2/node = SubResource("AnimationNodeAnimation_w2b1x") states/off_u2/position = Vector2(258, 449) states/off_u3/node = SubResource("AnimationNodeAnimation_4hstu") states/off_u3/position = Vector2(266, 697) -transitions = ["idle_u1", "buffed_u1", SubResource("AnimationNodeStateMachineTransition_daisx"), "buffed_u1", "idle_u1", SubResource("AnimationNodeStateMachineTransition_mfina"), "create_u1", "idle_u1", SubResource("AnimationNodeStateMachineTransition_j2vja"), "idle_u1", "create_u2", SubResource("AnimationNodeStateMachineTransition_c57nt"), "create_u2", "idle_u2", SubResource("AnimationNodeStateMachineTransition_ia6p8"), "idle_u2", "buffed_u2", SubResource("AnimationNodeStateMachineTransition_05lpc"), "buffed_u2", "idle_u2", SubResource("AnimationNodeStateMachineTransition_qmjy6"), "idle_u2", "create_u3", SubResource("AnimationNodeStateMachineTransition_diqjy"), "create_u3", "idle_u3", SubResource("AnimationNodeStateMachineTransition_cjfqh"), "idle_u3", "buffed_u3", SubResource("AnimationNodeStateMachineTransition_b7rl2"), "buffed_u3", "idle_u3", SubResource("AnimationNodeStateMachineTransition_5ygep"), "buffed_u3", "delete_u3", SubResource("AnimationNodeStateMachineTransition_11vwp"), "idle_u3", "delete_u3", SubResource("AnimationNodeStateMachineTransition_7s87l"), "buffed_u2", "delete_u2", SubResource("AnimationNodeStateMachineTransition_kus1u"), "idle_u2", "delete_u2", SubResource("AnimationNodeStateMachineTransition_ns6s8"), "buffed_u1", "delete_u1", SubResource("AnimationNodeStateMachineTransition_r8gg6"), "idle_u1", "delete_u1", SubResource("AnimationNodeStateMachineTransition_5a7io"), "delete_u1", "End", SubResource("AnimationNodeStateMachineTransition_hssoc"), "delete_u2", "End", SubResource("AnimationNodeStateMachineTransition_3iqlq"), "delete_u3", "End", SubResource("AnimationNodeStateMachineTransition_67fr5"), "off_u2", "idle_u2", SubResource("AnimationNodeStateMachineTransition_2bcsn"), "idle_u2", "off_u2", SubResource("AnimationNodeStateMachineTransition_g43g5"), "off_u3", "idle_u3", SubResource("AnimationNodeStateMachineTransition_jh2q7"), "idle_u3", "off_u3", SubResource("AnimationNodeStateMachineTransition_d0qax"), "idle_u1", "off_u1", SubResource("AnimationNodeStateMachineTransition_ygdnu"), "off_u1", "idle_u1", SubResource("AnimationNodeStateMachineTransition_8fr13"), "Start", "off_u1", SubResource("AnimationNodeStateMachineTransition_f6oyp"), "off_u1", "create_u1", SubResource("AnimationNodeStateMachineTransition_oalqm"), "buffed_u3", "off_u3", SubResource("AnimationNodeStateMachineTransition_vnr05"), "buffed_u1", "off_u1", SubResource("AnimationNodeStateMachineTransition_wlaec"), "buffed_u2", "off_u2", SubResource("AnimationNodeStateMachineTransition_hhebf"), "off_u1", "delete_u1", SubResource("AnimationNodeStateMachineTransition_1x723"), "off_u2", "delete_u2", SubResource("AnimationNodeStateMachineTransition_0krn8"), "off_u3", "delete_u3", SubResource("AnimationNodeStateMachineTransition_ofkw7"), "create_u1", "off_u1", SubResource("AnimationNodeStateMachineTransition_volt3"), "create_u2", "off_u2", SubResource("AnimationNodeStateMachineTransition_xl0vr"), "create_u3", "off_u3", SubResource("AnimationNodeStateMachineTransition_u6fk5")] -graph_offset = Vector2(0, 213.7602) +states/place_u1/node = SubResource("AnimationNodeAnimation_78n4u") +states/place_u1/position = Vector2(450, -66.91553) +transitions = ["idle_u1", "buffed_u1", SubResource("AnimationNodeStateMachineTransition_daisx"), "buffed_u1", "idle_u1", SubResource("AnimationNodeStateMachineTransition_mfina"), "create_u1", "idle_u1", SubResource("AnimationNodeStateMachineTransition_j2vja"), "idle_u1", "create_u2", SubResource("AnimationNodeStateMachineTransition_c57nt"), "create_u2", "idle_u2", SubResource("AnimationNodeStateMachineTransition_ia6p8"), "idle_u2", "buffed_u2", SubResource("AnimationNodeStateMachineTransition_05lpc"), "buffed_u2", "idle_u2", SubResource("AnimationNodeStateMachineTransition_qmjy6"), "idle_u2", "create_u3", SubResource("AnimationNodeStateMachineTransition_diqjy"), "create_u3", "idle_u3", SubResource("AnimationNodeStateMachineTransition_cjfqh"), "idle_u3", "buffed_u3", SubResource("AnimationNodeStateMachineTransition_b7rl2"), "buffed_u3", "idle_u3", SubResource("AnimationNodeStateMachineTransition_5ygep"), "buffed_u3", "delete_u3", SubResource("AnimationNodeStateMachineTransition_11vwp"), "idle_u3", "delete_u3", SubResource("AnimationNodeStateMachineTransition_7s87l"), "buffed_u2", "delete_u2", SubResource("AnimationNodeStateMachineTransition_kus1u"), "idle_u2", "delete_u2", SubResource("AnimationNodeStateMachineTransition_ns6s8"), "buffed_u1", "delete_u1", SubResource("AnimationNodeStateMachineTransition_r8gg6"), "idle_u1", "delete_u1", SubResource("AnimationNodeStateMachineTransition_5a7io"), "delete_u1", "End", SubResource("AnimationNodeStateMachineTransition_hssoc"), "delete_u2", "End", SubResource("AnimationNodeStateMachineTransition_3iqlq"), "delete_u3", "End", SubResource("AnimationNodeStateMachineTransition_67fr5"), "off_u2", "idle_u2", SubResource("AnimationNodeStateMachineTransition_2bcsn"), "idle_u2", "off_u2", SubResource("AnimationNodeStateMachineTransition_g43g5"), "off_u3", "idle_u3", SubResource("AnimationNodeStateMachineTransition_jh2q7"), "idle_u3", "off_u3", SubResource("AnimationNodeStateMachineTransition_d0qax"), "idle_u1", "off_u1", SubResource("AnimationNodeStateMachineTransition_ygdnu"), "off_u1", "idle_u1", SubResource("AnimationNodeStateMachineTransition_8fr13"), "off_u1", "create_u1", SubResource("AnimationNodeStateMachineTransition_oalqm"), "buffed_u3", "off_u3", SubResource("AnimationNodeStateMachineTransition_vnr05"), "buffed_u1", "off_u1", SubResource("AnimationNodeStateMachineTransition_wlaec"), "buffed_u2", "off_u2", SubResource("AnimationNodeStateMachineTransition_hhebf"), "off_u1", "delete_u1", SubResource("AnimationNodeStateMachineTransition_1x723"), "off_u2", "delete_u2", SubResource("AnimationNodeStateMachineTransition_0krn8"), "off_u3", "delete_u3", SubResource("AnimationNodeStateMachineTransition_ofkw7"), "create_u1", "off_u1", SubResource("AnimationNodeStateMachineTransition_volt3"), "create_u2", "off_u2", SubResource("AnimationNodeStateMachineTransition_xl0vr"), "create_u3", "off_u3", SubResource("AnimationNodeStateMachineTransition_u6fk5"), "Start", "place_u1", SubResource("AnimationNodeStateMachineTransition_yndyg")] +graph_offset = Vector2(0, -157.30507) [sub_resource type="AudioStream" id="AudioStream_vnr05"] diff --git a/scenes/buildings/eco_dome.tscn b/scenes/buildings/eco_dome.tscn index 454b8e00..c14bbc77 100644 --- a/scenes/buildings/eco_dome.tscn +++ b/scenes/buildings/eco_dome.tscn @@ -45,18 +45,6 @@ metadata/_custom_type_script = "uid://cy4nkunttcuy5" [sub_resource type="Animation" id="Animation_j3rju"] length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [92] -} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" diff --git a/scenes/buildings/iron_refinery.tscn b/scenes/buildings/iron_refinery.tscn index 5b830325..a249b405 100644 --- a/scenes/buildings/iron_refinery.tscn +++ b/scenes/buildings/iron_refinery.tscn @@ -45,30 +45,6 @@ metadata/_custom_type_script = "uid://cy4nkunttcuy5" [sub_resource type="Animation" id="Animation_gymdt"] length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [91] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:frame_coords") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [Vector2i(1, 2)] -} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" @@ -409,7 +385,7 @@ target = NodePath("..") [node name="Sprite2D" parent="." index="2"] texture = ExtResource("5_gymdt") vframes = 24 -frame = 11 +frame = 91 [node name="AnimationPlayer" parent="." index="3"] libraries = { diff --git a/scenes/buildings/power_plant.tscn b/scenes/buildings/power_plant.tscn index 458f86ce..1054eb58 100644 --- a/scenes/buildings/power_plant.tscn +++ b/scenes/buildings/power_plant.tscn @@ -47,18 +47,6 @@ load_path = "res://.godot/imported/nuclear_reactor_spritesheet.png-e10e02c122ba8 [sub_resource type="Animation" id="Animation_jn2df"] length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [98] -} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" @@ -411,9 +399,6 @@ libraries = { &"": SubResource("AnimationLibrary_jn2df") } -[node name="AnimationTree" parent="." index="4"] -active = true - [node name="Select" parent="Audio" index="1"] stream = ExtResource("6_e41u7") bus = &"Effects" diff --git a/scenes/buildings/residential.tscn b/scenes/buildings/residential.tscn index 8fa34aac..05d0836a 100644 --- a/scenes/buildings/residential.tscn +++ b/scenes/buildings/residential.tscn @@ -45,18 +45,6 @@ metadata/_custom_type_script = "uid://cy4nkunttcuy5" [sub_resource type="Animation" id="Animation_0exew"] length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [6] -} [sub_resource type="Animation" id="Animation_daisx"] resource_name = "buffed_u1" diff --git a/scripts/buildings/building_animation_manager.gd b/scripts/buildings/building_animation_manager.gd index 18fe2e10..9a11b25b 100644 --- a/scripts/buildings/building_animation_manager.gd +++ b/scripts/buildings/building_animation_manager.gd @@ -17,7 +17,7 @@ var parent_node: Building func _ready() -> void: state_machine = get("parameters/playback") as AnimationNodeStateMachinePlayback parent_node = get_parent() - active = true + active = true func update_animation(action: StateAction) -> void: From 94c9eb656d97758193d6184bafc20bdd60e58f6f Mon Sep 17 00:00:00 2001 From: Jacob Feenstra Date: Wed, 31 Dec 2025 12:40:32 -0800 Subject: [PATCH 3/3] manager for AnimTree includes place and on --- scripts/buildings/building_animation_manager.gd | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/buildings/building_animation_manager.gd b/scripts/buildings/building_animation_manager.gd index 9a11b25b..cdc8bb5b 100644 --- a/scripts/buildings/building_animation_manager.gd +++ b/scripts/buildings/building_animation_manager.gd @@ -2,7 +2,9 @@ class_name AnimationManager extends AnimationTree enum StateAction { + PLACE, OFF, + ON, CREATE, IDLE, BUFFED, @@ -25,8 +27,12 @@ func update_animation(action: StateAction) -> void: var target_node: String match action: + StateAction.PLACE: + target_node = "place_u1" StateAction.OFF: target_node = "off_u%d" % u_level + StateAction.ON: + target_node = "on_u%d" % u_level StateAction.CREATE: target_node = "create_u%d" % u_level StateAction.IDLE: