diff --git a/project.godot b/project.godot index 12b313f..9ddbc0a 100644 --- a/project.godot +++ b/project.godot @@ -19,6 +19,10 @@ config/icon="res://icon.svg" VFXManager="*res://src/scenes/autoload/vfx_manager.tscn" +[debug] + +gdscript/warnings/untyped_declaration=2 + [display] window/size/viewport_width=2560 diff --git a/src/scenes/characters/player.tscn b/src/scenes/characters/player.tscn index ce8d919..d8b3407 100644 --- a/src/scenes/characters/player.tscn +++ b/src/scenes/characters/player.tscn @@ -70,53 +70,53 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) [node name="Rig" parent="RigPivot" instance=ExtResource("3_n52bt")] [node name="Skeleton3D" parent="RigPivot/Rig/CharacterRig/GameRig" index="0"] -bones/0/position = Vector3(4.44089e-15, 0.911229, -0.0481736) +bones/0/position = Vector3(3.37508e-15, 0.891802, -0.0481736) bones/0/rotation = Quaternion(0.12582, 1.18262e-07, 1.49989e-08, 0.992053) bones/1/rotation = Quaternion(-0.0566577, -0.00072973, -0.0117082, 0.998325) bones/2/position = Vector3(3.20474e-09, 0.146689, -1.95578e-08) -bones/2/rotation = Quaternion(0.00731494, -0.000267675, 0.00321092, 0.999968) +bones/2/rotation = Quaternion(-0.00477157, -0.000463564, 0.00321576, 0.999983) bones/3/position = Vector3(-2.01263e-09, 0.202058, -2.51457e-08) -bones/3/rotation = Quaternion(-0.0881755, -0.000271906, 0.00852504, 0.996069) +bones/3/rotation = Quaternion(-0.0995774, -0.000420182, 0.00851791, 0.994993) bones/4/position = Vector3(3.02934e-10, 0.0925562, 3.91155e-08) -bones/4/rotation = Quaternion(0.269538, 1.43865e-08, 9.15835e-08, 0.96299) +bones/4/rotation = Quaternion(0.279128, 1.42007e-08, 9.62163e-08, 0.960254) bones/5/rotation = Quaternion(-0.0948564, -2.80691e-14, -2.26155e-08, 0.995491) -bones/6/rotation = Quaternion(-0.165627, -1.17563e-07, -1.97443e-08, 0.986188) -bones/7/position = Vector3(-4.58328e-08, 0.911229, -0.0481734) +bones/6/rotation = Quaternion(-0.15348, -1.18034e-07, -1.67592e-08, 0.988152) +bones/7/position = Vector3(-3.58587e-08, 0.891802, -0.0481735) bones/7/rotation = Quaternion(-0.0863677, -0.751104, -0.383052, 0.530711) -bones/8/position = Vector3(-3.51702e-08, 0.911229, -0.0481735) +bones/8/position = Vector3(-4.91649e-08, 0.891802, -0.0481735) bones/8/rotation = Quaternion(-0.0863677, 0.751104, 0.383052, 0.530711) -bones/9/position = Vector3(0.131144, 0.977433, -0.0351291) -bones/9/rotation = Quaternion(0.994354, 0.0201906, -0.0312759, 0.0993672) +bones/9/position = Vector3(0.131144, 0.958007, -0.0351291) +bones/9/rotation = Quaternion(0.992468, 0.0211448, -0.0308219, 0.11666) bones/10/position = Vector3(-2.36129e-08, 0.26601, -2.14789e-08) bones/10/rotation = Quaternion(-3.13921e-08, -0.000695086, 1.20449e-08, 1) bones/11/position = Vector3(-4.6306e-08, 0.26601, 2.42145e-08) -bones/11/rotation = Quaternion(0.392666, -0.000694321, 0.000296553, 0.919681) +bones/11/rotation = Quaternion(0.431745, -0.000700548, 0.000335449, 0.901996) bones/12/position = Vector3(3.05151e-08, 0.22603, 5.03768e-08) bones/12/rotation = Quaternion(-8.19226e-09, -0.00710644, 4.16102e-08, 0.999975) bones/13/position = Vector3(-2.95495e-08, 0.22603, 2.68392e-09) -bones/13/rotation = Quaternion(-0.739747, 0.0118417, 0.0243568, 0.67234) +bones/13/rotation = Quaternion(-0.756488, 0.0119036, 0.024431, 0.653443) bones/14/position = Vector3(-3.05481e-08, 0.139877, 1.64787e-08) bones/14/rotation = Quaternion(-9.66743e-05, 0.967474, -0.252972, -0.000383447) -bones/15/position = Vector3(-0.131144, 0.977433, -0.0351291) -bones/15/rotation = Quaternion(0.976045, -0.00523292, 0.0277031, 0.215732) +bones/15/position = Vector3(-0.131144, 0.958007, -0.0351291) +bones/15/rotation = Quaternion(0.972077, -0.00599083, 0.0271768, 0.233005) bones/16/position = Vector3(-1.10042e-08, 0.265705, -3.31989e-08) bones/16/rotation = Quaternion(-3.43227e-08, 0.00314323, 8.33075e-10, 0.999995) bones/17/position = Vector3(1.83545e-08, 0.265705, 6.98543e-10) -bones/17/rotation = Quaternion(0.419096, 0.00314277, -0.00145079, 0.907935) +bones/17/rotation = Quaternion(0.455066, 0.00335549, -0.0017149, 0.89045) bones/18/position = Vector3(1.2807e-08, 0.225719, -8.28774e-09) bones/18/rotation = Quaternion(-2.29017e-08, -0.00785732, 3.30149e-08, 0.999969) bones/19/position = Vector3(-1.27748e-08, 0.225719, 1.12004e-08) -bones/19/rotation = Quaternion(-0.677207, -0.0281333, -0.00151177, 0.735253) +bones/19/rotation = Quaternion(-0.692381, -0.0282147, -0.000432916, 0.72098) bones/20/position = Vector3(-1.30142e-08, 0.139877, -2.77457e-09) bones/20/rotation = Quaternion(-9.96472e-05, 0.967461, -0.253021, -0.000383039) -bones/21/position = Vector3(0.0251286, 1.44071, 0.0475463) -bones/21/rotation = Quaternion(-0.468899, -0.267874, -0.417939, 0.730551) -bones/22/position = Vector3(0.191647, 1.47968, -0.00896416) -bones/22/rotation = Quaternion(0.0192298, -0.164322, 0.975527, -0.144831) +bones/21/position = Vector3(0.0251286, 1.42287, 0.0407677) +bones/21/rotation = Quaternion(-0.501716, -0.254442, -0.39392, 0.726889) +bones/22/position = Vector3(0.187338, 1.45827, -0.0289832) +bones/22/rotation = Quaternion(0.0606447, -0.158023, 0.97383, -0.151679) bones/23/position = Vector3(-5.41331e-09, 0.143946, -2.98023e-08) -bones/23/rotation = Quaternion(7.11168e-08, -0.0407952, -7.42444e-08, 0.999168) +bones/23/rotation = Quaternion(8.8908e-08, -0.0073359, 3.28813e-09, 0.999973) bones/24/position = Vector3(-6.33301e-08, 0.143946, 4.3873e-08) -bones/24/rotation = Quaternion(0.355324, -0.0408126, -0.0221815, 0.933588) +bones/24/rotation = Quaternion(0.278516, -0.00704655, -0.0166663, 0.960261) bones/25/position = Vector3(1.30385e-08, 0.127601, 6.51926e-09) bones/25/rotation = Quaternion(1.49943e-07, -1.20606e-07, 9.91859e-08, 1) bones/26/position = Vector3(2.06034e-08, 0.127601, 2.42761e-08) @@ -141,14 +141,14 @@ bones/42/rotation = Quaternion(-0.120913, 0.799109, 0.0358921, 0.587807) bones/43/rotation = Quaternion(0.498693, -0.0202705, -0.0256953, 0.866161) bones/44/rotation = Quaternion(0.715385, 0.035306, 0.0573145, 0.695481) bones/45/rotation = Quaternion(-0.129059, 0.728936, -0.0250259, 0.67184) -bones/46/position = Vector3(-0.0113635, 1.44071, 0.0475463) -bones/46/rotation = Quaternion(-0.468109, 0.267414, 0.418225, 0.731062) -bones/47/position = Vector3(-0.177878, 1.47981, -0.00889) -bones/47/rotation = Quaternion(-0.00633264, -0.148417, 0.976093, 0.158668) +bones/46/position = Vector3(-0.0113635, 1.42287, 0.0407677) +bones/46/rotation = Quaternion(-0.527406, 0.202335, 0.358051, 0.743441) +bones/47/position = Vector3(-0.162235, 1.45827, -0.0510164) +bones/47/rotation = Quaternion(-0.100988, -0.132326, 0.970875, 0.172317) bones/48/position = Vector3(1.88476e-07, 0.143946, 1.02445e-08) -bones/48/rotation = Quaternion(-1.95624e-07, 0.0600442, -1.88432e-07, 0.998196) +bones/48/rotation = Quaternion(1.35188e-08, -0.00396547, -2.21344e-08, 0.999992) bones/49/position = Vector3(6.5191e-09, 0.143946, -1.95094e-08) -bones/49/rotation = Quaternion(0.396516, 0.0600607, 0.0277118, 0.915642) +bones/49/rotation = Quaternion(0.308264, -0.00406624, 0.028514, 0.950865) bones/50/position = Vector3(-1.48779e-07, 0.1276, 5.9139e-08) bones/50/rotation = Quaternion(-8.73115e-08, 2.7474e-08, -1.28057e-07, 1) bones/51/position = Vector3(1.9461e-07, 0.127601, 6.06248e-08) @@ -174,19 +174,19 @@ bones/67/rotation = Quaternion(0.108364, -0.768224, 0.166291, 0.608635) bones/68/rotation = Quaternion(0.629954, 0.0295149, 0.0177509, 0.775869) bones/69/rotation = Quaternion(0.816678, -0.0439534, -0.0509861, 0.573155) bones/70/rotation = Quaternion(-0.12906, -0.728937, 0.0250258, 0.67184) -bones/71/position = Vector3(0.127191, 1.36189, -0.0243177) -bones/71/rotation = Quaternion(2.03758e-08, 0.597434, 0.801918, -4.58154e-08) -bones/72/position = Vector3(-0.113426, 1.36189, -0.0243177) -bones/72/rotation = Quaternion(2.03758e-08, 0.597434, 0.801918, -4.58153e-08) +bones/71/position = Vector3(0.127191, 1.33983, -0.0270516) +bones/71/rotation = Quaternion(1.89417e-08, 0.618384, 0.785876, -4.66143e-08) +bones/72/position = Vector3(-0.113426, 1.33983, -0.0270516) +bones/72/rotation = Quaternion(1.89418e-08, 0.618384, 0.785876, -4.66142e-08) [node name="RightHandBone" parent="RigPivot/Rig" index="2"] -transform = Transform3D(-0.962351, -0.270776, -0.0236977, 0.219798, -0.826526, 0.518212, -0.159906, 0.493493, 0.854924, -0.351688, 1.01452, 0.0336896) +transform = Transform3D(-0.962309, -0.270911, -0.0238701, 0.247289, -0.908164, 0.337768, -0.113183, 0.319135, 0.940926, -0.336079, 0.971891, -0.0516855) [node name="LeftHandBone" parent="RigPivot/Rig" index="3"] -transform = Transform3D(-0.970512, 0.239113, 0.0305286, -0.207849, -0.894232, 0.39642, 0.122089, 0.378385, 0.917561, 0.348458, 0.996882, -0.0047055) +transform = Transform3D(-0.970456, 0.239301, 0.030828, -0.225683, -0.94548, 0.234808, 0.0853371, 0.220914, 0.971553, 0.344198, 0.962045, -0.0639757) [node name="RayAttachment" type="BoneAttachment3D" parent="RigPivot/Rig"] -transform = Transform3D(-0.962351, -0.270776, -0.0236977, 0.219798, -0.826526, 0.518212, -0.159906, 0.493493, 0.854924, -0.351688, 1.01452, 0.0336896) +transform = Transform3D(-0.962309, -0.270911, -0.0238701, 0.247289, -0.908164, 0.337768, -0.113183, 0.319135, 0.940926, -0.336079, 0.971891, -0.0516855) bone_name = "DEF-hand.R" bone_idx = 51 use_external_skeleton = true diff --git a/src/scenes/characters/rig.tscn83958877592.tmp b/src/scenes/characters/rig.tscn83958877592.tmp new file mode 100644 index 0000000..020130a --- /dev/null +++ b/src/scenes/characters/rig.tscn83958877592.tmp @@ -0,0 +1,237 @@ +[gd_scene load_steps=22 format=3 uid="uid://ckwydalda0teo"] + +[ext_resource type="Script" uid="uid://ckjbqjere1jpf" path="res://src/scripts/characters/rig.gd" id="1_n80wy"] +[ext_resource type="PackedScene" uid="uid://xivf38sp0l78" path="res://assets/models/character/character_rig.glb" id="2_ow4sk"] +[ext_resource type="PackedScene" uid="uid://bnkhiay2id2kl" path="res://assets/models/character/gear/longsword.glb" id="3_dka8l"] +[ext_resource type="PackedScene" uid="uid://c7ahf78h5s3kx" path="res://assets/models/character/gear/tall_shield.glb" id="4_i4vhj"] + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_isuva"] +animation = &"Dash" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6b80y"] +animation = &"Defeat" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_eek7r"] +animation = &"Run" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_gxy77"] +animation = &"Idle" + +[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_djdpq"] +blend_point_0/node = SubResource("AnimationNodeAnimation_eek7r") +blend_point_0/pos = 1.0 +blend_point_1/node = SubResource("AnimationNodeAnimation_gxy77") +blend_point_1/pos = -1.0 + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_q073i"] +animation = &"Overhead" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_bd73k"] +animation = &"OverheadRecover" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_1br2m"] +animation = &"Slash" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gkl4x"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_eek7r"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gxy77"] +xfade_time = 0.1 +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_isuva"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8x2vi"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_eqygr"] +xfade_time = 0.1 +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yvrik"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_dnffl"] +xfade_time = 0.2 +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_mq48a"] +states/Dash/node = SubResource("AnimationNodeAnimation_isuva") +states/Dash/position = Vector2(434, -58) +states/Defeat/node = SubResource("AnimationNodeAnimation_6b80y") +states/Defeat/position = Vector2(584, -69) +states/MoveSpace/node = SubResource("AnimationNodeBlendSpace1D_djdpq") +states/MoveSpace/position = Vector2(434, 28) +states/Overhead/node = SubResource("AnimationNodeAnimation_q073i") +states/Overhead/position = Vector2(652, 28) +states/OverheadRecover/node = SubResource("AnimationNodeAnimation_bd73k") +states/OverheadRecover/position = Vector2(652, 123) +states/Slash/node = SubResource("AnimationNodeAnimation_1br2m") +states/Slash/position = Vector2(434, 243) +states/Start/position = Vector2(239, 28) +transitions = ["Start", "MoveSpace", SubResource("AnimationNodeStateMachineTransition_gkl4x"), "MoveSpace", "Slash", SubResource("AnimationNodeStateMachineTransition_eek7r"), "Slash", "MoveSpace", SubResource("AnimationNodeStateMachineTransition_gxy77"), "MoveSpace", "Overhead", SubResource("AnimationNodeStateMachineTransition_isuva"), "Overhead", "OverheadRecover", SubResource("AnimationNodeStateMachineTransition_8x2vi"), "OverheadRecover", "MoveSpace", SubResource("AnimationNodeStateMachineTransition_eqygr"), "MoveSpace", "Dash", SubResource("AnimationNodeStateMachineTransition_yvrik"), "Dash", "MoveSpace", SubResource("AnimationNodeStateMachineTransition_dnffl")] +graph_offset = Vector2(-166, -157) + +[node name="Rig" type="Node3D"] +script = ExtResource("1_n80wy") + +[node name="CharacterRig" parent="." instance=ExtResource("2_ow4sk")] + +[node name="Skeleton3D" parent="CharacterRig/GameRig" index="0"] +bones/0/position = Vector3(7.26674e-15, 0.905219, -0.0481736) +bones/0/rotation = Quaternion(0.12582, 1.18262e-07, 1.49989e-08, 0.992053) +bones/1/rotation = Quaternion(-0.0566577, -0.00072973, -0.0117082, 0.998325) +bones/2/position = Vector3(3.20474e-09, 0.146689, -1.95578e-08) +bones/2/rotation = Quaternion(0.00342428, -0.000330737, 0.00321264, 0.999989) +bones/3/position = Vector3(-2.01263e-09, 0.202058, -2.51457e-08) +bones/3/rotation = Quaternion(-0.0917035, -0.000317814, 0.0085231, 0.99575) +bones/4/position = Vector3(3.02934e-10, 0.0925562, 3.91155e-08) +bones/4/rotation = Quaternion(0.272765, 1.55048e-08, 8.8995e-08, 0.962081) +bones/5/rotation = Quaternion(-0.0948564, -2.80691e-14, -2.26155e-08, 0.995491) +bones/6/rotation = Quaternion(-0.161588, -1.17078e-07, -2.27072e-08, 0.986858) +bones/7/position = Vector3(-2.80761e-08, 0.905219, -0.0481735) +bones/7/rotation = Quaternion(-0.0863677, -0.751104, -0.383052, 0.530711) +bones/8/position = Vector3(-3.02922e-08, 0.905219, -0.0481735) +bones/8/rotation = Quaternion(-0.0863677, 0.751104, 0.383052, 0.530711) +bones/9/position = Vector3(0.131144, 0.971423, -0.0351291) +bones/9/rotation = Quaternion(0.993771, 0.0204958, -0.0311284, 0.105023) +bones/10/position = Vector3(-2.36129e-08, 0.26601, -2.14789e-08) +bones/10/rotation = Quaternion(-3.13921e-08, -0.000695086, 1.20449e-08, 1) +bones/11/position = Vector3(-4.6306e-08, 0.26601, 2.42145e-08) +bones/11/rotation = Quaternion(0.405395, -0.000698014, 0.000309707, 0.914141) +bones/12/position = Vector3(3.05151e-08, 0.22603, 5.03768e-08) +bones/12/rotation = Quaternion(-8.19226e-09, -0.00710644, 4.16102e-08, 0.999975) +bones/13/position = Vector3(-2.95495e-08, 0.22603, 2.68392e-09) +bones/13/rotation = Quaternion(-0.745208, 0.0118619, 0.024377, 0.666281) +bones/14/position = Vector3(-3.05481e-08, 0.139877, 1.64787e-08) +bones/14/rotation = Quaternion(-9.66743e-05, 0.967474, -0.252972, -0.000383447) +bones/15/position = Vector3(-0.131144, 0.971423, -0.0351291) +bones/15/rotation = Quaternion(0.974773, -0.00548165, 0.0275307, 0.221428) +bones/16/position = Vector3(-1.10042e-08, 0.265705, -3.31989e-08) +bones/16/rotation = Quaternion(-3.43227e-08, 0.00314323, 8.33075e-10, 0.999995) +bones/17/position = Vector3(1.83545e-08, 0.265705, 6.98543e-10) +bones/17/rotation = Quaternion(0.430608, 0.00321092, -0.00153208, 0.902532) +bones/18/position = Vector3(1.2807e-08, 0.225719, -8.28774e-09) +bones/18/rotation = Quaternion(-2.29017e-08, -0.00785732, 3.30149e-08, 0.999969) +bones/19/position = Vector3(-1.27748e-08, 0.225719, 1.12004e-08) +bones/19/rotation = Quaternion(-0.682229, -0.0281607, -0.00115883, 0.730596) +bones/20/position = Vector3(-1.30142e-08, 0.139877, -2.77457e-09) +bones/20/rotation = Quaternion(-9.96472e-05, 0.967461, -0.253021, -0.000383039) +bones/21/position = Vector3(0.0251286, 1.43502, 0.0453797) +bones/21/rotation = Quaternion(-0.479038, -0.263849, -0.410476, 0.729669) +bones/22/position = Vector3(0.190386, 1.4732, -0.0152245) +bones/22/rotation = Quaternion(0.0321166, -0.162394, 0.975188, -0.146989) +bones/23/position = Vector3(-5.41331e-09, 0.143946, -2.98023e-08) +bones/23/rotation = Quaternion(1.64524e-08, -0.0303919, 5.87102e-08, 0.999538) +bones/24/position = Vector3(-6.33301e-08, 0.143946, 4.3873e-08) +bones/24/rotation = Quaternion(0.331879, -0.0303926, -0.0206683, 0.942606) +bones/25/position = Vector3(1.30385e-08, 0.127601, 6.51926e-09) +bones/25/rotation = Quaternion(1.49943e-07, -1.20606e-07, 9.91859e-08, 1) +bones/26/position = Vector3(2.06034e-08, 0.127601, 2.42761e-08) +bones/26/rotation = Quaternion(-0.00824883, -0.00027077, -0.0328667, 0.999426) +bones/28/rotation = Quaternion(0.702583, -0.000939743, -0.00133552, 0.7116) +bones/29/rotation = Quaternion(0.741121, 0.00218291, 0.00265381, 0.671363) +bones/30/rotation = Quaternion(0.32527, 0.890055, 0.295977, -0.119997) +bones/31/rotation = Quaternion(0.514882, -0.114149, 0.114482, 0.841879) +bones/32/rotation = Quaternion(0.592003, -0.0381348, -0.090699, 0.799907) +bones/34/position = Vector3(-0.00316938, 0.0987206, 0.0147918) +bones/34/rotation = Quaternion(-0.0674699, 0.718446, 0.0663966, 0.689112) +bones/35/rotation = Quaternion(0.580803, -0.000892135, -0.0014975, 0.814042) +bones/36/rotation = Quaternion(0.682777, 0.00174509, 0.00256596, 0.73062) +bones/37/rotation = Quaternion(-0.00426514, 0.736714, 0.0394785, 0.675038) +bones/38/position = Vector3(-0.00622951, 0.0926415, -0.0236344) +bones/38/rotation = Quaternion(-0.109873, 0.743351, 0.0333507, 0.658973) +bones/39/rotation = Quaternion(0.630039, 0.00151959, 0.00237944, 0.776559) +bones/40/rotation = Quaternion(0.652643, -0.00308142, -0.00421108, 0.757648) +bones/41/rotation = Quaternion(-0.0684174, 0.72411, 0.0332337, 0.685478) +bones/42/position = Vector3(-0.00715362, 0.0679857, -0.0481983) +bones/42/rotation = Quaternion(-0.120913, 0.799109, 0.0358921, 0.587807) +bones/43/rotation = Quaternion(0.498693, -0.0202705, -0.0256953, 0.866161) +bones/44/rotation = Quaternion(0.715385, 0.035306, 0.0573145, 0.695481) +bones/45/rotation = Quaternion(-0.129059, 0.728936, -0.0250259, 0.67184) +bones/46/position = Vector3(-0.0113635, 1.43502, 0.0453797) +bones/46/rotation = Quaternion(-0.486493, 0.247709, 0.399802, 0.73629) +bones/47/position = Vector3(-0.173773, 1.47366, -0.0222159) +bones/47/rotation = Quaternion(-0.0357016, -0.143575, 0.97546, 0.163062) +bones/48/position = Vector3(1.88476e-07, 0.143946, 1.02445e-08) +bones/48/rotation = Quaternion(-1.30634e-07, 0.0403754, -8.65587e-08, 0.999185) +bones/49/position = Vector3(6.5191e-09, 0.143946, -1.95094e-08) +bones/49/rotation = Quaternion(0.369655, 0.040376, 0.0286822, 0.927848) +bones/50/position = Vector3(-1.48779e-07, 0.1276, 5.9139e-08) +bones/50/rotation = Quaternion(-8.73115e-08, 2.7474e-08, -1.28057e-07, 1) +bones/51/position = Vector3(1.9461e-07, 0.127601, 6.06248e-08) +bones/51/rotation = Quaternion(-0.00824876, 0.000270832, 0.032867, 0.999426) +bones/52/rotation = Quaternion(-0.2563, 0.855859, 0.0299184, -0.448241) +bones/53/rotation = Quaternion(0.694912, 0.107145, -0.103549, 0.703488) +bones/54/rotation = Quaternion(0.74112, -0.00218237, -0.00265409, 0.671363) +bones/55/rotation = Quaternion(-0.325269, 0.890055, 0.295977, 0.119998) +bones/56/rotation = Quaternion(0.514882, 0.11415, -0.114483, 0.841879) +bones/57/rotation = Quaternion(0.592004, 0.0381346, 0.0906992, 0.799907) +bones/59/position = Vector3(0.00316943, 0.0987207, 0.0147917) +bones/59/rotation = Quaternion(0.138771, -0.704916, 0.15571, 0.677932) +bones/60/rotation = Quaternion(0.579984, 0.0462615, -0.0308755, 0.812727) +bones/61/rotation = Quaternion(0.682777, -0.00174718, -0.00256448, 0.73062) +bones/62/rotation = Quaternion(-0.00426532, -0.736714, -0.0394788, 0.675038) +bones/63/position = Vector3(0.00622955, 0.0926417, -0.0236344) +bones/63/rotation = Quaternion(0.104095, -0.719607, 0.186262, 0.660784) +bones/64/rotation = Quaternion(0.670693, 0.0163391, -0.0185663, 0.741323) +bones/65/rotation = Quaternion(0.692499, 0.00330364, 0.00403917, 0.7214) +bones/66/rotation = Quaternion(-0.0684178, -0.72411, -0.0332339, 0.685477) +bones/67/position = Vector3(0.00715371, 0.0679859, -0.0481984) +bones/67/rotation = Quaternion(0.108364, -0.768224, 0.166291, 0.608635) +bones/68/rotation = Quaternion(0.629954, 0.0295149, 0.0177509, 0.775869) +bones/69/rotation = Quaternion(0.816678, -0.0439534, -0.0509861, 0.573155) +bones/70/rotation = Quaternion(-0.12906, -0.728937, 0.0250258, 0.67184) +bones/71/position = Vector3(0.127191, 1.35504, -0.025184) +bones/71/rotation = Quaternion(1.99291e-08, 0.603985, 0.796996, -4.6074e-08) +bones/72/position = Vector3(-0.113426, 1.35504, -0.025184) +bones/72/rotation = Quaternion(1.99291e-08, 0.603985, 0.796996, -4.60739e-08) + +[node name="Knight_01" parent="CharacterRig/GameRig/Skeleton3D" index="0"] +visible = false + +[node name="Villager_01" parent="CharacterRig/GameRig/Skeleton3D" index="2"] +visible = false + +[node name="Villager_02" parent="CharacterRig/GameRig/Skeleton3D" index="3"] +visible = false + +[node name="AnimationTree" type="AnimationTree" parent="."] +root_node = NodePath("../CharacterRig") +tree_root = SubResource("AnimationNodeStateMachine_mq48a") +anim_player = NodePath("../CharacterRig/AnimationPlayer") +parameters/MoveSpace/blend_position = -1.0 + +[node name="RightHandBone" type="BoneAttachment3D" parent="."] +transform = Transform3D(-0.962343, -0.270803, -0.023713, 0.229265, -0.855403, 0.464461, -0.146061, 0.441534, 0.885276, -0.34759, 1.00095, 0.00749419) +bone_name = "DEF-hand.R" +bone_idx = 51 +use_external_skeleton = true +external_skeleton = NodePath("../CharacterRig/GameRig/Skeleton3D") + +[node name="WeaponSlot" type="Node3D" parent="RightHandBone"] +transform = Transform3D(0.16656, 0.0770401, -0.983017, -0.982939, 0.0918653, -0.159347, 0.078029, 0.992787, 0.0910268, -0.0211409, 0.0798348, 0.00721136) + +[node name="longsword" parent="RightHandBone/WeaponSlot" instance=ExtResource("3_dka8l")] + +[node name="LeftHandBone" type="BoneAttachment3D" parent="."] +transform = Transform3D(-0.970514, 0.239108, 0.030521, -0.213985, -0.912909, 0.347574, 0.110971, 0.330795, 0.937155, 0.347196, 0.98554, -0.0228143) +bone_name = "DEF-hand.L" +bone_idx = 26 +use_external_skeleton = true +external_skeleton = NodePath("../CharacterRig/GameRig/Skeleton3D") + +[node name="OffHandSlot" type="Node3D" parent="LeftHandBone"] +unique_name_in_owner = true +transform = Transform3D(0.10564, 0.417333, -0.902592, -0.99124, 0.116542, -0.0621291, 0.0792616, 0.90125, 0.425989, -0.084208, -0.04557, -0.025934) + +[node name="tall_shield" parent="LeftHandBone/OffHandSlot" instance=ExtResource("4_i4vhj")] + +[connection signal="animation_finished" from="AnimationTree" to="." method="_on_animation_tree_animation_finished"] + +[editable path="CharacterRig"] diff --git a/src/scenes/levels/level.tscn b/src/scenes/levels/level.tscn index 322681e..21a0da3 100644 --- a/src/scenes/levels/level.tscn +++ b/src/scenes/levels/level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=36 format=3 uid="uid://dw0lbkh31rofd"] +[gd_scene load_steps=38 format=3 uid="uid://dw0lbkh31rofd"] [ext_resource type="Script" uid="uid://bmywk4wvcp0lr" path="res://addons/sky_3d/src/Sky3D.gd" id="1_1jhfv"] [ext_resource type="Texture2D" uid="uid://bpamrp14tk2cp" path="res://assets/textures/terrain/sand_albedo_height.png" id="1_7iny7"] @@ -20,7 +20,9 @@ [ext_resource type="PackedScene" uid="uid://cyhw4ocljvikh" path="res://src/scenes/ui/currency_icon.tscn" id="10_vltgv"] [ext_resource type="PackedScene" uid="uid://yp4mabfdyo6h" path="res://src/scenes/ui/armor_icon.tscn" id="11_b2fxt"] [ext_resource type="PackedScene" uid="uid://dbypidud1gcqw" path="res://src/scenes/ui/shield_icon.tscn" id="11_tbe37"] +[ext_resource type="PackedScene" uid="uid://dfrxtkeqmshen" path="res://assets/models/character/gear/battleaxe.glb" id="12_50gno"] [ext_resource type="PackedScene" uid="uid://yyxkltwrme4l" path="res://src/scenes/ui/weapon_icon.tscn" id="12_htor1"] +[ext_resource type="PackedScene" uid="uid://csdumqcs3kutf" path="res://assets/models/character/gear/short_shield.glb" id="12_nedwn"] [ext_resource type="PackedScene" uid="uid://jf0abtmnencg" path="res://src/scenes/environment/water.tscn" id="15_0slur"] [sub_resource type="Gradient" id="Gradient_0eo66"] @@ -119,7 +121,7 @@ sky_material = SubResource("PhysicalSkyMaterial_dn2un") background_mode = 2 sky = SubResource("Sky_7iny7") ambient_light_source = 3 -ambient_light_color = Color(0.539954, 0.363854, 0.27832, 1) +ambient_light_color = Color(1, 1, 1, 1) reflected_light_source = 2 tonemap_mode = 3 tonemap_white = 6.0 @@ -183,16 +185,33 @@ transform = Transform3D(0.787989, 0, 0.615689, 0, 1, 0, -0.615689, 0, 0.787989, [node name="ArmorIcon" parent="Interactible/Chest2" instance=ExtResource("11_b2fxt")] visible = false -power = 10 +protection = 10 armor = 1 +[node name="ArmorIcon2" parent="Interactible/Chest2" instance=ExtResource("11_b2fxt")] +visible = false +protection = 5 + [node name="WeaponIcon" parent="Interactible/Chest2" instance=ExtResource("12_htor1")] visible = false power = 12 [node name="ShieldIcon" parent="Interactible/Chest2" instance=ExtResource("11_tbe37")] +visible = false protection = 25 +[node name="WeaponIcon2" parent="Interactible/Chest2" instance=ExtResource("12_htor1")] +visible = false +item_name = "Battleaxe" +power = 200 +item_model = ExtResource("12_50gno") + +[node name="ShieldIcon2" parent="Interactible/Chest2" instance=ExtResource("11_tbe37")] +visible = false +item_name = "Short Shield" +protection = 12 +item_model = ExtResource("12_nedwn") + [node name="NavigationRegion3D" type="NavigationRegion3D" parent="."] navigation_mesh = ExtResource("1_juj6f") @@ -207,13 +226,12 @@ metadata/_edit_lock_ = true environment = SubResource("Environment_cxs0p") camera_attributes = SubResource("CameraAttributesPractical_0slur") script = ExtResource("1_1jhfv") -current_time = 6.91 +current_time = 12.0 reflected_energy = 4.0 metadata/_custom_type_script = "uid://bmywk4wvcp0lr" [node name="SunLight" type="DirectionalLight3D" parent="Sky3D"] -transform = Transform3D(0, -0.466727, 0.884402, 0.957378, 0.255448, 0.134808, -0.288837, 0.846707, 0.446834, 0.884402, 0.134808, 0.446834) -light_color = Color(0.985392, 0.651607, 0.484349, 1) +transform = Transform3D(0, -0.999334, -0.0365005, 0.630711, -0.0283251, 0.775501, -0.776018, -0.0230213, 0.63029, -0.0365004, 0.775501, 0.63029) shadow_enabled = true directional_shadow_blend_splits = true @@ -233,8 +251,8 @@ ground_color = Color(0.3, 0.3, 0.3, 1) sky_layers = 4 sky_render_priority = -128 horizon_level = 0.0 -sun_altitude = -82.2525 -sun_azimuth = -116.805 +sun_altitude = -39.1495 +sun_azimuth = -183.314 sun_disk_color = Color(0.996094, 0.541334, 0.140076, 1) sun_disk_intensity = 2.0 sun_disk_size = 0.015 @@ -242,8 +260,8 @@ sun_light_path = NodePath("../SunLight") sun_light_color = Color(1, 1, 1, 1) sun_horizon_light_color = Color(0.98, 0.523, 0.294, 1) sun_light_energy = 1.0 -moon_altitude = -84.5215 -moon_azimuth = -295.966 +moon_altitude = -136.152 +moon_azimuth = -346.24 moon_color = Color(1, 1, 1, 1) moon_size = 0.07 enable_set_moon_texture = false @@ -251,7 +269,7 @@ moon_resolution = 2 moon_light_path = NodePath("../MoonLight") moon_light_color = Color(0.572549, 0.776471, 0.956863, 1) moon_light_energy = 0.3 -deep_space_euler = Vector3(1.29154, 3.14159, 2.64477) +deep_space_euler = Vector3(1.29154, 3.14159, 1.34794) background_color = Color(0.709804, 0.709804, 0.709804, 0.854902) set_background_texture = false stars_field_color = Color(1, 1, 1, 1) @@ -320,7 +338,7 @@ update_in_editor = false dome_path = NodePath("../Skydome") system_sync = false total_cycle_in_minutes = 15.0 -total_hours = 6.91 +total_hours = 12.0 day = 1 month = 1 year = 2025 diff --git a/src/scenes/main.tscn83819848558.tmp b/src/scenes/main.tscn83819848558.tmp new file mode 100644 index 0000000..3d79b9f --- /dev/null +++ b/src/scenes/main.tscn83819848558.tmp @@ -0,0 +1,41 @@ +[gd_scene load_steps=2 format=3 uid="uid://cd3upe4xetlgl"] + +[ext_resource type="Script" uid="uid://b2ec1cajpfusg" path="res://src/scripts/network/multiplayer.gd" id="1_rr2wm"] + +[node name="Main" type="Node"] +script = ExtResource("1_rr2wm") + +[node name="Level" type="Node" parent="."] + +[node name="LevelSpawner" type="MultiplayerSpawner" parent="."] +_spawnable_scenes = PackedStringArray("uid://dw0lbkh31rofd") +spawn_path = NodePath("../Level") +spawn_limit = 1 + +[node name="UI" type="MarginContainer" parent="."] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -22.0 +offset_top = -15.5 +offset_right = 22.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI"] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="Host" type="Button" parent="UI/VBoxContainer"] +layout_mode = 2 +text = "Host" + +[node name="Join" type="Button" parent="UI/VBoxContainer"] +layout_mode = 2 +text = "Join" + +[connection signal="pressed" from="UI/VBoxContainer/Host" to="." method="_on_host_pressed"] +[connection signal="pressed" from="UI/VBoxContainer/Join" to="." method="_on_join_pressed"] diff --git a/src/scenes/main.tscn83823768669.tmp b/src/scenes/main.tscn83823768669.tmp new file mode 100644 index 0000000..3d79b9f --- /dev/null +++ b/src/scenes/main.tscn83823768669.tmp @@ -0,0 +1,41 @@ +[gd_scene load_steps=2 format=3 uid="uid://cd3upe4xetlgl"] + +[ext_resource type="Script" uid="uid://b2ec1cajpfusg" path="res://src/scripts/network/multiplayer.gd" id="1_rr2wm"] + +[node name="Main" type="Node"] +script = ExtResource("1_rr2wm") + +[node name="Level" type="Node" parent="."] + +[node name="LevelSpawner" type="MultiplayerSpawner" parent="."] +_spawnable_scenes = PackedStringArray("uid://dw0lbkh31rofd") +spawn_path = NodePath("../Level") +spawn_limit = 1 + +[node name="UI" type="MarginContainer" parent="."] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -22.0 +offset_top = -15.5 +offset_right = 22.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI"] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="Host" type="Button" parent="UI/VBoxContainer"] +layout_mode = 2 +text = "Host" + +[node name="Join" type="Button" parent="UI/VBoxContainer"] +layout_mode = 2 +text = "Join" + +[connection signal="pressed" from="UI/VBoxContainer/Host" to="." method="_on_host_pressed"] +[connection signal="pressed" from="UI/VBoxContainer/Join" to="." method="_on_join_pressed"] diff --git a/src/scenes/ui/armor_icon.tscn b/src/scenes/ui/armor_icon.tscn index c5e935c..9d95781 100644 --- a/src/scenes/ui/armor_icon.tscn +++ b/src/scenes/ui/armor_icon.tscn @@ -5,5 +5,5 @@ [node name="ArmorIcon" instance=ExtResource("1_djls0")] script = ExtResource("2_f0yql") -power = 0 +protection = 0 armor = 0 diff --git a/src/scenes/ui/inventory.tscn b/src/scenes/ui/inventory.tscn index 300ee89..d798f46 100644 --- a/src/scenes/ui/inventory.tscn +++ b/src/scenes/ui/inventory.tscn @@ -130,7 +130,7 @@ horizontal_alignment = 1 vertical_alignment = 1 [node name="SubViewportContainer" type="SubViewportContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] -custom_minimum_size = Vector2(512, 0) +custom_minimum_size = Vector2(800, 0) layout_mode = 2 stretch = true @@ -138,7 +138,7 @@ stretch = true world_3d = SubResource("World3D_tfrle") transparent_bg = true handle_input_locally = false -size = Vector2i(512, 1228) +size = Vector2i(800, 1228) render_target_update_mode = 4 [node name="Rig" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer/SubViewport" instance=ExtResource("5_dryat")] @@ -163,6 +163,7 @@ theme_override_styles/panel = ExtResource("3_qcfrv") [node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet"] layout_mode = 2 +theme_override_constants/separation = 24 [node name="LevelLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] unique_name_in_owner = true @@ -300,3 +301,53 @@ size_flags_horizontal = 3 text = "0" label_settings = SubResource("LabelSettings_tfrle") horizontal_alignment = 1 + +[node name="ArmorProtectionLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Armor protection" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="ArmorProtectionValue" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 + +[node name="EquipmentLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +text = "Equipment" +label_settings = SubResource("LabelSettings_31epi") +horizontal_alignment = 1 + +[node name="EquipmentSlotGrid" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 2 +columns = 3 + +[node name="WeaponSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 + +[node name="ShieldSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 + +[node name="ArmorSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 diff --git a/src/scenes/ui/inventory.tscn82838248093.tmp b/src/scenes/ui/inventory.tscn82838248093.tmp new file mode 100644 index 0000000..d798f46 --- /dev/null +++ b/src/scenes/ui/inventory.tscn82838248093.tmp @@ -0,0 +1,353 @@ +[gd_scene load_steps=17 format=3 uid="uid://csadps2at3npv"] + +[ext_resource type="Texture2D" uid="uid://dhvatbbng4411" path="res://assets/ui/window/window_header.png" id="1_0708f"] +[ext_resource type="Script" uid="uid://ccmiaof7tpjxn" path="res://src/scripts/ui/inventory.gd" id="1_ylnvo"] +[ext_resource type="FontFile" uid="uid://sua821wsaeli" path="res://assets/fonts/Candara_Bold.ttf" id="2_apwy2"] +[ext_resource type="StyleBox" uid="uid://copt367rq3lyr" path="res://src/resources/ui/ui_panel.tres" id="3_qcfrv"] +[ext_resource type="Texture2D" uid="uid://dd48efbhydh3d" path="res://assets/ui/icons/spell_slot_empty_icon.png" id="4_16ir6"] +[ext_resource type="PackedScene" uid="uid://ckwydalda0teo" path="res://src/scenes/characters/rig.tscn" id="5_dryat"] +[ext_resource type="Texture2D" uid="uid://byfgyey43cxxl" path="res://assets/ui/window/NumberFrame.png" id="5_tfrle"] +[ext_resource type="FontFile" uid="uid://d3s081dnj7ea4" path="res://assets/fonts/Candara_Italic.ttf" id="5_ylnvo"] + +[sub_resource type="Gradient" id="Gradient_s4y2v"] +colors = PackedColorArray(0.0941176, 0.101961, 0.133333, 1, 0.0185326, 0.0209737, 0.0325612, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_0708f"] +gradient = SubResource("Gradient_s4y2v") +fill_to = Vector2(0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_qcfrv"] +font = ExtResource("2_apwy2") +font_size = 48 +font_color = Color(0.835294, 0.627451, 0.356863, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_tfrle"] +font = ExtResource("2_apwy2") +font_size = 32 +font_color = Color(0.835294, 0.627451, 0.356863, 1) +shadow_color = Color(0, 0, 0, 1) + +[sub_resource type="Environment" id="Environment_dryat"] + +[sub_resource type="World3D" id="World3D_tfrle"] +environment = SubResource("Environment_dryat") + +[sub_resource type="LabelSettings" id="LabelSettings_31epi"] +font = ExtResource("2_apwy2") +font_size = 36 +font_color = Color(0.835294, 0.627451, 0.356863, 1) +shadow_color = Color(0, 0, 0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_dryat"] +font = ExtResource("5_ylnvo") +font_size = 24 + +[node name="Inventory" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ylnvo") + +[node name="BackgroundGradient" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture2D_0708f") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 32 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 32 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="HeaderRect" type="TextureRect" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +texture = ExtResource("1_0708f") +stretch_mode = 5 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HeaderRect"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Inventory" +label_settings = SubResource("LabelSettings_qcfrv") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="HeldItems" type="PanelContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(960, 0) +layout_mode = 2 +theme_override_styles/panel = ExtResource("3_qcfrv") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems"] +layout_mode = 2 + +[node name="ItemsGrid" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +columns = 7 + +[node name="GoldFrame" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 8 +texture = ExtResource("5_tfrle") + +[node name="GoldLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems/VBoxContainer/GoldFrame"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "0g" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="SubViewportContainer" type="SubViewportContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(800, 0) +layout_mode = 2 +stretch = true + +[node name="SubViewport" type="SubViewport" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer"] +world_3d = SubResource("World3D_tfrle") +transparent_bg = true +handle_input_locally = false +size = Vector2i(800, 1228) +render_target_update_mode = 4 + +[node name="Rig" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer/SubViewport" instance=ExtResource("5_dryat")] + +[node name="Camera3D" type="Camera3D" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer/SubViewport"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 3) +fov = 50.8 + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer/SubViewport"] +transform = Transform3D(-0.866023, -0.433016, 0.250001, 0.498707, -0.712081, 0.494198, -0.0359752, 0.552664, 0.832627, 0, 0, 0) +shadow_enabled = true + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(384, 0) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="CharacterSheet" type="PanelContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = ExtResource("3_qcfrv") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet"] +layout_mode = 2 +theme_override_constants/separation = 24 + +[node name="LevelLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Level 1" +label_settings = SubResource("LabelSettings_31epi") +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +columns = 2 + +[node name="Attribute1" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute1"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute1/VBoxContainer"] +layout_mode = 2 +text = "Strength" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="StrengthScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute1/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="Attribute2" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute2"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute2/VBoxContainer"] +layout_mode = 2 +text = "Agility" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="AgilityScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute2/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="Attribute3" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute3"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute3/VBoxContainer"] +layout_mode = 2 +text = "Speed" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="SpeedScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute3/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="Attribute4" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute4"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute4/VBoxContainer"] +layout_mode = 2 +text = "Endurance" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="EnduranceScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute4/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 + +[node name="AttackDamageLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Attack damage" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="AttackDamageValue" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="ArmorProtectionLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Armor protection" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="ArmorProtectionValue" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 + +[node name="EquipmentLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +text = "Equipment" +label_settings = SubResource("LabelSettings_31epi") +horizontal_alignment = 1 + +[node name="EquipmentSlotGrid" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 2 +columns = 3 + +[node name="WeaponSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 + +[node name="ShieldSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 + +[node name="ArmorSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 diff --git a/src/scenes/ui/inventory.tscn83658394838.tmp b/src/scenes/ui/inventory.tscn83658394838.tmp new file mode 100644 index 0000000..d798f46 --- /dev/null +++ b/src/scenes/ui/inventory.tscn83658394838.tmp @@ -0,0 +1,353 @@ +[gd_scene load_steps=17 format=3 uid="uid://csadps2at3npv"] + +[ext_resource type="Texture2D" uid="uid://dhvatbbng4411" path="res://assets/ui/window/window_header.png" id="1_0708f"] +[ext_resource type="Script" uid="uid://ccmiaof7tpjxn" path="res://src/scripts/ui/inventory.gd" id="1_ylnvo"] +[ext_resource type="FontFile" uid="uid://sua821wsaeli" path="res://assets/fonts/Candara_Bold.ttf" id="2_apwy2"] +[ext_resource type="StyleBox" uid="uid://copt367rq3lyr" path="res://src/resources/ui/ui_panel.tres" id="3_qcfrv"] +[ext_resource type="Texture2D" uid="uid://dd48efbhydh3d" path="res://assets/ui/icons/spell_slot_empty_icon.png" id="4_16ir6"] +[ext_resource type="PackedScene" uid="uid://ckwydalda0teo" path="res://src/scenes/characters/rig.tscn" id="5_dryat"] +[ext_resource type="Texture2D" uid="uid://byfgyey43cxxl" path="res://assets/ui/window/NumberFrame.png" id="5_tfrle"] +[ext_resource type="FontFile" uid="uid://d3s081dnj7ea4" path="res://assets/fonts/Candara_Italic.ttf" id="5_ylnvo"] + +[sub_resource type="Gradient" id="Gradient_s4y2v"] +colors = PackedColorArray(0.0941176, 0.101961, 0.133333, 1, 0.0185326, 0.0209737, 0.0325612, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_0708f"] +gradient = SubResource("Gradient_s4y2v") +fill_to = Vector2(0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_qcfrv"] +font = ExtResource("2_apwy2") +font_size = 48 +font_color = Color(0.835294, 0.627451, 0.356863, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_tfrle"] +font = ExtResource("2_apwy2") +font_size = 32 +font_color = Color(0.835294, 0.627451, 0.356863, 1) +shadow_color = Color(0, 0, 0, 1) + +[sub_resource type="Environment" id="Environment_dryat"] + +[sub_resource type="World3D" id="World3D_tfrle"] +environment = SubResource("Environment_dryat") + +[sub_resource type="LabelSettings" id="LabelSettings_31epi"] +font = ExtResource("2_apwy2") +font_size = 36 +font_color = Color(0.835294, 0.627451, 0.356863, 1) +shadow_color = Color(0, 0, 0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_dryat"] +font = ExtResource("5_ylnvo") +font_size = 24 + +[node name="Inventory" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ylnvo") + +[node name="BackgroundGradient" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture2D_0708f") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 32 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 32 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="HeaderRect" type="TextureRect" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +texture = ExtResource("1_0708f") +stretch_mode = 5 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HeaderRect"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Inventory" +label_settings = SubResource("LabelSettings_qcfrv") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="HeldItems" type="PanelContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(960, 0) +layout_mode = 2 +theme_override_styles/panel = ExtResource("3_qcfrv") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems"] +layout_mode = 2 + +[node name="ItemsGrid" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +columns = 7 + +[node name="GoldFrame" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 8 +texture = ExtResource("5_tfrle") + +[node name="GoldLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/HeldItems/VBoxContainer/GoldFrame"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "0g" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="SubViewportContainer" type="SubViewportContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(800, 0) +layout_mode = 2 +stretch = true + +[node name="SubViewport" type="SubViewport" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer"] +world_3d = SubResource("World3D_tfrle") +transparent_bg = true +handle_input_locally = false +size = Vector2i(800, 1228) +render_target_update_mode = 4 + +[node name="Rig" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer/SubViewport" instance=ExtResource("5_dryat")] + +[node name="Camera3D" type="Camera3D" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer/SubViewport"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 3) +fov = 50.8 + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="MarginContainer/VBoxContainer/HBoxContainer/SubViewportContainer/SubViewport"] +transform = Transform3D(-0.866023, -0.433016, 0.250001, 0.498707, -0.712081, 0.494198, -0.0359752, 0.552664, 0.832627, 0, 0, 0) +shadow_enabled = true + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(384, 0) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="CharacterSheet" type="PanelContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_styles/panel = ExtResource("3_qcfrv") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet"] +layout_mode = 2 +theme_override_constants/separation = 24 + +[node name="LevelLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Level 1" +label_settings = SubResource("LabelSettings_31epi") +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +columns = 2 + +[node name="Attribute1" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute1"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute1/VBoxContainer"] +layout_mode = 2 +text = "Strength" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="StrengthScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute1/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="Attribute2" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute2"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute2/VBoxContainer"] +layout_mode = 2 +text = "Agility" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="AgilityScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute2/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="Attribute3" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute3"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute3/VBoxContainer"] +layout_mode = 2 +text = "Speed" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="SpeedScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute3/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="Attribute4" type="TextureRect" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("4_16ir6") + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute4"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AttributeName" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute4/VBoxContainer"] +layout_mode = 2 +text = "Endurance" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="EnduranceScore" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/GridContainer/Attribute4/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 + +[node name="AttackDamageLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Attack damage" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="AttackDamageValue" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="ArmorProtectionLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Armor protection" +label_settings = SubResource("LabelSettings_dryat") +horizontal_alignment = 1 + +[node name="ArmorProtectionValue" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +label_settings = SubResource("LabelSettings_tfrle") +horizontal_alignment = 1 + +[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 + +[node name="EquipmentLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +text = "Equipment" +label_settings = SubResource("LabelSettings_31epi") +horizontal_alignment = 1 + +[node name="EquipmentSlotGrid" type="GridContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 2 +columns = 3 + +[node name="WeaponSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 + +[node name="ShieldSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 + +[node name="ArmorSlot" type="CenterContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/CharacterSheet/VBoxContainer/EquipmentSlotGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 diff --git a/src/scenes/ui/loot_container_display.tscn84322285775.tmp b/src/scenes/ui/loot_container_display.tscn84322285775.tmp new file mode 100644 index 0000000..f9c335c --- /dev/null +++ b/src/scenes/ui/loot_container_display.tscn84322285775.tmp @@ -0,0 +1,83 @@ +[gd_scene load_steps=9 format=3 uid="uid://b8r1w3tush5ue"] + +[ext_resource type="Script" uid="uid://depcr1bjlbfo4" path="res://src/scripts/ui/loot_container_display.gd" id="1_pfyrf"] +[ext_resource type="StyleBox" uid="uid://copt367rq3lyr" path="res://src/resources/ui/ui_panel.tres" id="2_lvx26"] +[ext_resource type="Texture2D" uid="uid://dhvatbbng4411" path="res://assets/ui/window/window_header.png" id="3_s2tg5"] +[ext_resource type="FontFile" uid="uid://sua821wsaeli" path="res://assets/fonts/Candara_Bold.ttf" id="4_0a0ik"] +[ext_resource type="Texture2D" uid="uid://bhwo6wc0xooyv" path="res://assets/ui/button/button.png" id="5_c6yad"] +[ext_resource type="Texture2D" uid="uid://sy6pbgn2gaqq" path="res://assets/ui/button/button_press.png" id="6_07kgi"] +[ext_resource type="Texture2D" uid="uid://xl4dmewy7fpf" path="res://assets/ui/button/button_hover.png" id="7_1ikc2"] + +[sub_resource type="LabelSettings" id="LabelSettings_g5kcc"] +font = ExtResource("4_0a0ik") +font_size = 22 +shadow_color = Color(0, 0, 0, 1) + +[node name="LootContainerDisplay" type="CenterContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_pfyrf") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 2 +theme_override_styles/panel = ExtResource("2_lvx26") + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 + +[node name="TitleTexture" type="TextureRect" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 +texture = ExtResource("3_s2tg5") +expand_mode = 5 + +[node name="TitleLabel" type="Label" parent="PanelContainer/VBoxContainer/TitleTexture"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Chest" +label_settings = SubResource("LabelSettings_g5kcc") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(512, 256) +layout_mode = 2 +columns = 4 + +[node name="CloseButton" type="TextureButton" parent="PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(200, 80) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture_normal = ExtResource("5_c6yad") +texture_pressed = ExtResource("6_07kgi") +texture_hover = ExtResource("7_1ikc2") +ignore_texture_size = true +stretch_mode = 4 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/CloseButton"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -16.5 +offset_top = -8.5 +offset_right = 16.5 +offset_bottom = 8.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "Close" +label_settings = SubResource("LabelSettings_g5kcc") +horizontal_alignment = 1 +vertical_alignment = 1 + +[connection signal="pressed" from="PanelContainer/VBoxContainer/CloseButton" to="." method="close"] diff --git a/src/scripts/autoload/vfx_manager.gd b/src/scripts/autoload/vfx_manager.gd index 36ff8e2..225d84f 100644 --- a/src/scripts/autoload/vfx_manager.gd +++ b/src/scripts/autoload/vfx_manager.gd @@ -2,7 +2,7 @@ extends Node3D const DAMAGE_NUMBER = preload("res://src/scenes/ui/damage_number.tscn") -func spawn_damage_number(damage: int, position_in: Vector3, is_critical: bool) -> void: - var number = DAMAGE_NUMBER.instantiate() +func spawn_damage_number(damage: float, position_in: Vector3, is_critical: bool) -> void: + var number: Node3D = DAMAGE_NUMBER.instantiate() number.setup(damage, position_in, is_critical) add_child(number) diff --git a/src/scripts/characters/area_attack.gd b/src/scripts/characters/area_attack.gd index 8bc3898..3328e21 100644 --- a/src/scripts/characters/area_attack.gd +++ b/src/scripts/characters/area_attack.gd @@ -2,8 +2,13 @@ extends ShapeCast3D func deal_damage(damage: float, crit_chance: float) -> void: for collision_id in get_collision_count(): - var is_critical = randf() <= crit_chance - var collider = get_collider(collision_id) + var is_critical: bool = randf() <= crit_chance + var collider: Object = get_collider(collision_id) - if collider is Player or collider is Enemy: + if collider is Player: + var protection: float = collider.ui.inventory.get_armor_protection() / 100.0 + var damage_reduction: float = damage * protection + damage -= damage_reduction + collider.health_component.take_damage(damage, is_critical) + elif collider is Enemy: collider.health_component.take_damage(damage, is_critical) diff --git a/src/scripts/characters/attack_cast.gd b/src/scripts/characters/attack_cast.gd index f53921a..628c401 100644 --- a/src/scripts/characters/attack_cast.gd +++ b/src/scripts/characters/attack_cast.gd @@ -4,8 +4,8 @@ func deal_damage(damage: float, crit_chance: float) -> void: if !is_colliding(): return - var is_critical = randf() <= crit_chance - var collider = get_collider() + var is_critical: bool = randf() <= crit_chance + var collider: Object = get_collider() if collider is Enemy: collider.health_component.take_damage(damage, is_critical) diff --git a/src/scripts/characters/enemy.gd b/src/scripts/characters/enemy.gd index 81bf65d..7735339 100644 --- a/src/scripts/characters/enemy.gd +++ b/src/scripts/characters/enemy.gd @@ -7,7 +7,7 @@ enum State { } var player: Player -var current_state = State.IDLE +var current_state: State = State.IDLE @export var max_health: float = 20.0 @export var xp_value: int = 30 @@ -27,7 +27,7 @@ var current_state = State.IDLE func _ready() -> void: - var mesh = rig.villager_meshes.pick_random() + var mesh: MeshInstance3D = rig.villager_meshes.pick_random() rig.set_active_mesh(mesh) rig.equip_offhand(off_hand_items.pick_random()) health_component.update_max_health(max_health) @@ -59,7 +59,7 @@ func _physics_process(delta: float) -> void: func check_for_player() -> bool: for collision_id in player_detector_pursue.get_collision_count(): - var collider = player_detector_pursue.get_collider(collision_id) + var collider: Object = player_detector_pursue.get_collider(collision_id) if collider is Player: timer.start(5) player = collider @@ -69,7 +69,7 @@ func check_for_player() -> bool: func check_for_attacks() -> void: for collision_id in player_detector_attack.get_collision_count(): - var collider = player_detector_attack.get_collider(collision_id) + var collider: Object = player_detector_attack.get_collider(collision_id) if collider is Player: rig.playback.travel("Overhead") navigation_agent.avoidance_mask = 0 @@ -93,8 +93,8 @@ func orient_rig(target_position: Vector3) -> void: rig.look_at(target_position, Vector3.UP, true) func get_local_navigation_direction() -> Vector3: - var destination = navigation_agent.get_next_path_position() - var local_destination = destination - global_position + var destination: Vector3 = navigation_agent.get_next_path_position() + var local_destination: Vector3 = destination - global_position return local_destination.normalized() diff --git a/src/scripts/characters/health_component.gd b/src/scripts/characters/health_component.gd index b65b3fd..820b7e6 100644 --- a/src/scripts/characters/health_component.gd +++ b/src/scripts/characters/health_component.gd @@ -18,7 +18,7 @@ func update_max_health(max_hp_in: float) -> void: current_health = max_health func take_damage(damage_in: float, is_critical: bool) -> void: - var damage = damage_in + var damage: float = damage_in if is_critical: damage *= 2.0 current_health -= damage diff --git a/src/scripts/characters/interaction_cast.gd b/src/scripts/characters/interaction_cast.gd index 32d5e3f..f1fb06c 100644 --- a/src/scripts/characters/interaction_cast.gd +++ b/src/scripts/characters/interaction_cast.gd @@ -4,7 +4,7 @@ extends ShapeCast3D func check_interactions() -> void: for collision in get_collision_count(): - var collider = get_collider(collision) + var collider: Object = get_collider(collision) if collider is LootContainer: ui.update_interact_text("Open [E]") if Input.is_action_just_pressed("interact"): diff --git a/src/scripts/characters/player.gd b/src/scripts/characters/player.gd index 685dd32..c62b206 100644 --- a/src/scripts/characters/player.gd +++ b/src/scripts/characters/player.gd @@ -37,7 +37,7 @@ func _ready() -> void: Input.mouse_mode = Input.MOUSE_MODE_CAPTURED health_component.update_max_health(stats.get_max_hp()) stats.level_up_notification.connect( - func(): health_component.update_max_health(stats.get_max_hp()) + func() -> void: health_component.update_max_health(stats.get_max_hp()) ) stats.update_stats.connect(ui.update_stats_display) ui.update_stats_display() @@ -103,7 +103,7 @@ func look_toward_direction(direction: Vector3, delta: float) -> void: func slash_attack() -> void: rig.playback.travel("Slash") - var movement_direction = get_movement_direction() + var movement_direction: Vector3 = get_movement_direction() if movement_direction.is_zero_approx(): _attack_direction = rig.global_basis * Vector3(0, 0, 1) else: @@ -112,7 +112,7 @@ func slash_attack() -> void: func heavy_attack() -> void: rig.playback.travel("Overhead") - var movement_direction = get_movement_direction() + var movement_direction: Vector3 = get_movement_direction() if movement_direction.is_zero_approx(): _attack_direction = rig.global_basis * Vector3(0, 0, 1) else: @@ -139,8 +139,7 @@ func handle_slashing_physics_frame(delta: float) -> void: velocity.x = _attack_direction.x * attack_move_speed velocity.z = _attack_direction.z * attack_move_speed look_toward_direction(_attack_direction, delta) - var damage = 10.0 + stats.strength.get_modifier() - attack_cast.deal_damage(damage, stats.agility.get_modifier()) + attack_cast.deal_damage(get_damage(), stats.agility.get_modifier()) func handle_overhead_physics_frame() -> void: if !rig.is_overhead(): @@ -154,5 +153,7 @@ func _on_health_component_defeat() -> void: set_physics_process(false) func _on_rig_heavy_attack() -> void: - var damage = 10.0 + stats.strength.get_modifier() - area_attack.deal_damage(damage, stats.agility.get_modifier()) + area_attack.deal_damage(get_damage(), stats.agility.get_modifier()) + +func get_damage() -> int: + return ui.inventory.get_weapon_damage() + stats.strength.get_modifier() diff --git a/src/scripts/characters/rig.gd b/src/scripts/characters/rig.gd index d20ff00..811b51d 100644 --- a/src/scripts/characters/rig.gd +++ b/src/scripts/characters/rig.gd @@ -50,7 +50,7 @@ func set_active_mesh(active_mesh: MeshInstance3D) -> void: func equip_offhand(equipment_scene: PackedScene) -> void: for child in off_hand_slot.get_children(): child.queue_free() - var new_equipment = equipment_scene.instantiate() + var new_equipment: Node3D = equipment_scene.instantiate() off_hand_slot.add_child(new_equipment) func _on_animation_tree_animation_finished(anim_name: StringName) -> void: diff --git a/src/scripts/levels/level.gd b/src/scripts/levels/level.gd index f23925e..ba71f34 100644 --- a/src/scripts/levels/level.gd +++ b/src/scripts/levels/level.gd @@ -15,20 +15,20 @@ func _ready() -> void: if not OS.has_feature("dedicated_server"): add_player(1) -func _exit_tree(): +func _exit_tree() -> void: if not multiplayer.is_server(): return multiplayer.peer_connected.disconnect(add_player) multiplayer.peer_disconnected.disconnect(del_player) -func add_player(id: int): - var character = preload("res://src/scenes/characters/player.tscn").instantiate() +func add_player(id: int) -> void: + var character: Player = preload("res://src/scenes/characters/player.tscn").instantiate() character.name = str(id) $Players.add_child(character, true) -func del_player(id: int): +func del_player(id: int) -> void: if not $Players.has_node(str(id)): return $Players.get_node(str(id)).queue_free() diff --git a/src/scripts/network/multiplayer.gd b/src/scripts/network/multiplayer.gd index 484fe1f..f750aa7 100644 --- a/src/scripts/network/multiplayer.gd +++ b/src/scripts/network/multiplayer.gd @@ -1,16 +1,16 @@ extends Node func _on_host_pressed() -> void: - var peer = ENetMultiplayerPeer.new() - var error = peer.create_server(1027) + var peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new() + var error: Error = peer.create_server(1027) if error: print(error) multiplayer.multiplayer_peer = peer start_game() func _on_join_pressed() -> void: - var peer = ENetMultiplayerPeer.new() - var error = peer.create_client("127.0.0.1", 1027) + var peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new() + var error: Error = peer.create_client("127.0.0.1", 1027) if error: print(error) multiplayer.multiplayer_peer = peer @@ -24,7 +24,7 @@ func start_game() -> void: change_level.call_deferred(load("res://src/scenes/levels/level.tscn")) func change_level(scene: PackedScene) -> void: - var level = $Level + var level: Node = $Level for c in level.get_children(): level.remove_child(c) c.queue_free() diff --git a/src/scripts/structures/chest.gd b/src/scripts/structures/chest.gd index a7e1740..c43e644 100644 --- a/src/scripts/structures/chest.gd +++ b/src/scripts/structures/chest.gd @@ -1,5 +1,4 @@ class_name LootContainer extends StaticBody3D func get_items() -> Array: - return get_children().filter(func(child): return child is ItemIcon) - + return get_children().filter(func(child: Node) -> bool: return child is ItemIcon) diff --git a/src/scripts/ui/armor_icon.gd b/src/scripts/ui/armor_icon.gd index 677a5c7..612b567 100644 --- a/src/scripts/ui/armor_icon.gd +++ b/src/scripts/ui/armor_icon.gd @@ -2,10 +2,9 @@ class_name ArmorIcon extends ItemIcon enum armor_type { IRON_PLATE, STEEL_PLATE } -@export var power: int +@export var protection: int @export var armor: armor_type func _ready() -> void: - stat_label.text = "%d" % power + stat_label.text = "%d" % protection item_name_label.text = armor_type.keys()[armor] - diff --git a/src/scripts/ui/damage_number.gd b/src/scripts/ui/damage_number.gd index c2137d2..a7fa508 100644 --- a/src/scripts/ui/damage_number.gd +++ b/src/scripts/ui/damage_number.gd @@ -2,14 +2,13 @@ extends Node3D @onready var label: Label3D = $Label3D -func setup(damage: int, position_in: Vector3, is_critical: bool) -> void: +func setup(damage: float, position_in: Vector3, is_critical: bool) -> void: if not is_inside_tree(): await ready - var color = Color.GOLD + var color: Color = Color.GOLD if is_critical: color = Color.RED - label.text = "-" + str(damage) + label.text = "-%d" % damage label.modulate = color global_position = position_in - diff --git a/src/scripts/ui/inventory.gd b/src/scripts/ui/inventory.gd index 0efee49..3704b9c 100644 --- a/src/scripts/ui/inventory.gd +++ b/src/scripts/ui/inventory.gd @@ -1,17 +1,24 @@ class_name Inventory extends Control +const MIN_ARMOR_RATING: float = 0.0 +const MAX_ARMOR_RATING: float = 80.0 + @onready var level_label: Label = %LevelLabel @onready var strength_label: Label = %StrengthScore @onready var agility_label: Label = %AgilityScore @onready var speed_label: Label = %SpeedScore @onready var endurance_label: Label = %EnduranceScore @onready var attack_damage_value: Label = %AttackDamageValue +@onready var armor_protection_value: Label = %ArmorProtectionValue @onready var items_grid: GridContainer = %ItemsGrid @onready var gold_label: Label = %GoldLabel @onready var gold: int = 0: set(value): gold = value gold_label.text = "%dg" % gold +@onready var weapon_slot: CenterContainer = %WeaponSlot +@onready var shield_slot: CenterContainer = %ShieldSlot +@onready var armor_slot: CenterContainer = %ArmorSlot @export var player: Player @@ -20,22 +27,79 @@ func _ready() -> void: func update_stats() -> void: level_label.text = "Level %d" % player.stats.level - strength_label.text = str(player.stats.strength.score) - agility_label.text = str(player.stats.agility.score) - speed_label.text = str(player.stats.speed.score) - endurance_label.text = str(player.stats.endurance.score) + strength_label.text = "%d" % player.stats.strength.score + agility_label.text = "%d" % player.stats.agility.score + speed_label.text = "%d" % player.stats.speed.score + endurance_label.text = "%d" % player.stats.endurance.score func update_gear_stats() -> void: - attack_damage_value.text = str(get_weapon_damage_value()) + attack_damage_value.text = "%d" % [player.stats.strength.get_modifier() + get_weapon_damage()] + armor_protection_value.text = "%d%%" % get_armor_protection() -func get_weapon_damage_value() -> int: - var damage = 10 - damage += player.stats.strength.get_modifier() +func get_weapon_damage() -> float: + var damage: float = 0.0 + var weapon: WeaponIcon = get_weapon() + if weapon: + damage += weapon.power return damage +func get_armor_protection() -> float: + var protection: float = 0.0 + var armor: ArmorIcon = get_armor() + if armor: + protection += armor.protection + var shield: ShieldIcon = get_shield() + if shield: + protection += shield.protection + protection = clampf(protection, MIN_ARMOR_RATING, MAX_ARMOR_RATING) + return protection + func add_item(item: ItemIcon) -> void: + disconnect_item_connections(item) + if item is CurrencyIcon: gold += item.value item.queue_free() - else: + else: items_grid.add_child(item) + item.interact.connect(equip_item) + +func equip_item(item: ItemIcon) -> void: + var item_slot: CenterContainer + + if item is WeaponIcon: + item_slot = weapon_slot + elif item is ArmorIcon: + item_slot = armor_slot + elif item is ShieldIcon: + item_slot = shield_slot + else: + return + + for child in item_slot.get_children(): + child.get_parent().remove_child(child) + add_item(child) + + item.get_parent().remove_child(item) + item_slot.add_child(item) + disconnect_item_connections(item) + update_gear_stats() + +func disconnect_item_connections(item: ItemIcon) -> void: + for connection: Dictionary in item.interact.get_connections(): + item.interact.disconnect(connection.callable) + +func get_weapon() -> WeaponIcon: + if weapon_slot.get_child_count() != 1: + return null + return weapon_slot.get_child(0) + +func get_armor() -> ArmorIcon: + if armor_slot.get_child_count() != 1: + return null + return armor_slot.get_child(0) + +func get_shield() -> ShieldIcon: + if shield_slot.get_child_count() != 1: + return null + return shield_slot.get_child(0) diff --git a/src/scripts/ui/item_icon.gd b/src/scripts/ui/item_icon.gd index b5f59cb..df60e73 100644 --- a/src/scripts/ui/item_icon.gd +++ b/src/scripts/ui/item_icon.gd @@ -1,6 +1,6 @@ class_name ItemIcon extends TextureButton -signal interact(item) +signal interact(item: ItemIcon) @onready var stat_label: Label = $MarginContainer/StatLabel @onready var item_name_label: Label = $MarginContainer/ItemNameLabel @@ -8,4 +8,3 @@ signal interact(item) func _on_gui_input(event: InputEvent) -> void: if event.is_action("click"): interact.emit(self) - diff --git a/src/scripts/ui/loot_container_display.gd b/src/scripts/ui/loot_container_display.gd index 2c5a3e2..5835606 100644 --- a/src/scripts/ui/loot_container_display.gd +++ b/src/scripts/ui/loot_container_display.gd @@ -27,7 +27,7 @@ func toggle_open(container: LootContainer) -> void: else: current_container = container title_label.text = container.name.capitalize() - for item in container.get_items(): + for item: ItemIcon in container.get_items(): current_container.remove_child(item) grid_container.add_child(item) item.visible = true