From f35ab3703ba4c41791be8d190cc69cc6e2def41a Mon Sep 17 00:00:00 2001 From: Nitsud Yarg Date: Sun, 30 Jun 2024 10:59:43 -0700 Subject: [PATCH] Level physics state modifier system added. Now just need to apply it to the actors. --- assets/Tiles/Assets/Assets.png | Bin 42247 -> 16708 bytes assets/Tiles/Assets/Demo TileSet.tres | 20 +++++++++- project.godot | 6 +++ src/Levels/Level.tscn | 23 +++++++++-- src/components/Modifier_Component.gd | 48 ++++++++++++++++++++++ src/components/Modifier_Component.tscn | 9 +++++ src/components/Modifier_Receiver.gd | 53 +++++++++++++++++++++++++ src/components/Modifier_Receiver.tscn | 6 +++ src/playerD/Player.gd | 7 ++++ src/playerD/Player.tscn | 10 +++-- src/state_modifier.gd | 1 + 11 files changed, 174 insertions(+), 9 deletions(-) create mode 100644 src/components/Modifier_Component.gd create mode 100644 src/components/Modifier_Component.tscn create mode 100644 src/components/Modifier_Receiver.gd create mode 100644 src/components/Modifier_Receiver.tscn diff --git a/assets/Tiles/Assets/Assets.png b/assets/Tiles/Assets/Assets.png index a5eab06d06b875d2f5b40d5cea62a6e9543962b8..40a418b5b4e6d48e9a1ad6a4e3693d43a1693d96 100644 GIT binary patch literal 16708 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 g^Ik>Yxe4mw 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 diff --git a/assets/Tiles/Assets/Demo TileSet.tres b/assets/Tiles/Assets/Demo TileSet.tres index 24cdc31..b6d49ac 100644 --- a/assets/Tiles/Assets/Demo TileSet.tres +++ b/assets/Tiles/Assets/Demo TileSet.tres @@ -1,4 +1,4 @@ -[gd_resource type="TileSet" load_steps=13 format=2] +[gd_resource type="TileSet" load_steps=15 format=2] [ext_resource path="res://assets/Tiles/Assets/Assets.png" type="Texture" id=1] @@ -35,6 +35,12 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=12] points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + [resource] 0/name = "Assets.png 0" 0/texture = ExtResource( 1 ) @@ -122,5 +128,17 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) "one_way_margin": 1.0, "shape": SubResource( 12 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 8, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 9, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 diff --git a/project.godot b/project.godot index 5c62422..591cbce 100644 --- a/project.godot +++ b/project.godot @@ -49,6 +49,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://src/state_modifier_properties.gd" }, { +"base": "Node2D", +"class": "Modifier_Receiver", +"language": "GDScript", +"path": "res://src/components/Modifier_Receiver.gd" +}, { "base": "Node", "class": "MovementComponent", "language": "GDScript", @@ -93,6 +98,7 @@ _global_script_class_icons={ "Interactable_Receiver": "", "Level": "", "ModifierProperties": "", +"Modifier_Receiver": "", "MovementComponent": "", "State": "", "StateAnimatedActor": "", diff --git a/src/Levels/Level.tscn b/src/Levels/Level.tscn index 6723520..c1430f3 100644 --- a/src/Levels/Level.tscn +++ b/src/Levels/Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=16 format=2] [ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/Tiles/Assets/Demo TileSet.tres" type="TileSet" id=2] @@ -10,6 +10,7 @@ [ext_resource path="res://src/Interactables/Door.tscn" type="PackedScene" id=8] [ext_resource path="res://src/components/Hitbox_Component.tscn" type="PackedScene" id=9] [ext_resource path="res://src/Level.gd" type="Script" id=10] +[ext_resource path="res://src/components/Modifier_Component.tscn" type="PackedScene" id=11] [sub_resource type="SegmentShape2D" id=1] b = Vector2( 1500, 0 ) @@ -21,11 +22,14 @@ b = Vector2( -1, 349 ) [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 50, 2 ) +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 80, 2.5 ) + [node name="Level" type="Node2D"] script = ExtResource( 10 ) [node name="PlayerStart" type="Position2D" parent="."] -position = Vector2( 86, 97 ) +position = Vector2( 1094, 128 ) [node name="CameraBoundaries" type="Area2D" parent="."] collision_layer = 256 @@ -84,7 +88,7 @@ tile_set = ExtResource( 2 ) cell_size = Vector2( 16, 16 ) show_collision = true format = 1 -tile_data = PoolIntArray( -65536, 0, 196613, 65528, 0, 0, 0, 0, 196613, 79, 0, 196613, 65536, 0, 196613, 65615, 0, 196613, 196603, 0, 0, 131072, 0, 196613, 131151, 0, 196613, 196608, 0, 196613, 196687, 0, 196613, 262144, 0, 196613, 262172, 0, 196613, 262173, 0, 196613, 262174, 0, 196613, 262175, 0, 196613, 262176, 0, 196613, 262177, 0, 196613, 262223, 0, 196613, 327680, 0, 196613, 327759, 0, 196613, 393216, 0, 196613, 393260, 0, 196613, 393261, 0, 196613, 393295, 0, 196613, 458752, 0, 196613, 458792, 0, 196613, 458793, 0, 196613, 458794, 0, 196613, 458795, 0, 196613, 458796, 0, 196613, 458797, 0, 196613, 458831, 0, 196613, 524288, 0, 196613, 524307, 0, 196613, 524308, 0, 196613, 524327, 0, 196613, 524328, 0, 196613, 524329, 0, 196613, 524330, 0, 196613, 524334, 0, 196613, 524367, 0, 196613, 589824, 0, 196613, 589843, 0, 196613, 589844, 0, 196613, 589863, 0, 196613, 589864, 0, 196613, 589870, 0, 196613, 589903, 0, 196613, 655360, 0, 196613, 655361, 0, 2, 655362, 0, 2, 655363, 0, 2, 655364, 0, 2, 655365, 0, 2, 655366, 0, 2, 655367, 0, 2, 655368, 0, 2, 655369, 0, 2, 655370, 0, 2, 655371, 0, 2, 655372, 0, 2, 655373, 0, 2, 655374, 0, 2, 655375, 0, 2, 655376, 0, 2, 655377, 0, 2, 655378, 0, 2, 655379, 0, 196613, 655380, 0, 196613, 655381, 0, 196613, 655382, 0, 196613, 655383, 0, 196613, 655384, 0, 196613, 655385, 0, 196613, 655386, 0, 196613, 655387, 0, 196613, 655388, 0, 196613, 655389, 0, 196613, 655390, 0, 196613, 655391, 0, 196613, 655392, 0, 196613, 655393, 0, 196613, 655394, 0, 196613, 655395, 0, 196613, 655396, 0, 196613, 655397, 0, 196613, 655398, 0, 196613, 655399, 0, 196613, 655400, 0, 196613, 655406, 0, 196613, 655407, 0, 196613, 655408, 0, 196613, 655409, 0, 196613, 655410, 0, 196613, 655411, 0, 196613, 655412, 0, 196613, 655413, 0, 196613, 655414, 0, 196613, 655415, 0, 196613, 655416, 0, 196613, 655417, 0, 196613, 655418, 0, 196613, 655419, 0, 196613, 655420, 0, 196613, 655421, 0, 196613, 655422, 0, 196613, 655423, 0, 196613, 655424, 0, 196613, 655425, 0, 196613, 655426, 0, 196613, 655427, 0, 196613, 655428, 0, 196613, 655439, 0, 196613, 720896, 0, 196613, 720897, 0, 65538, 720898, 0, 65538, 720899, 0, 65538, 720900, 0, 65538, 720901, 0, 65538, 720902, 0, 65538, 720903, 0, 65538, 720904, 0, 65538, 720905, 0, 65538, 720906, 0, 65538, 720907, 0, 65538, 720908, 0, 65538, 720909, 0, 65538, 720910, 0, 65538, 720911, 0, 65538, 720912, 0, 65538, 720913, 0, 65538, 720914, 0, 65538, 720915, 0, 196613, 720916, 0, 196613, 720917, 0, 196613, 720918, 0, 196613, 720919, 0, 196613, 720920, 0, 196613, 720921, 0, 196613, 720959, 0, 0, 720961, 0, 196613, 720962, 0, 196613, 720963, 0, 196613, 720964, 0, 196613, 720965, 0, 196613, 720975, 0, 196613, 786432, 0, 196613, 786495, 0, 0, 786511, 0, 196613, 851968, 0, 196613, 852002, 0, 196613, 852031, 0, 0, 852047, 0, 196613, 917504, 0, 196613, 917583, 0, 196613, 983040, 0, 196613, 983119, 0, 196613, 1048576, 0, 196613, 1048655, 0, 196613, 1114112, 0, 196613, 1114167, 0, 196613, 1114168, 0, 196613, 1114169, 0, 196613, 1114170, 0, 196613, 1114171, 0, 196613, 1114191, 0, 196613, 1179648, 0, 196613, 1179701, 0, 196613, 1179702, 0, 196613, 1179703, 0, 196613, 1179707, 0, 196613, 1179708, 0, 196613, 1179709, 0, 196613, 1179727, 0, 196613, 1245184, 0, 196613, 1245236, 0, 196613, 1245237, 0, 196613, 1245245, 0, 196613, 1245246, 0, 196613, 1245247, 0, 196613, 1245263, 0, 196613, 1310720, 0, 196613, 1310771, 0, 196613, 1310772, 0, 196613, 1310783, 0, 196613, 1310784, 0, 196613, 1310799, 0, 196613, 1376256, 0, 196613, 1376257, 0, 196613, 1376258, 0, 196613, 1376259, 0, 196613, 1376260, 0, 196613, 1376261, 0, 196613, 1376262, 0, 196613, 1376263, 0, 196613, 1376264, 0, 196613, 1376265, 0, 196613, 1376266, 0, 196613, 1376267, 0, 196613, 1376268, 0, 196613, 1376269, 0, 196613, 1376270, 0, 196613, 1376271, 0, 196613, 1376272, 0, 196613, 1376273, 0, 196613, 1376274, 0, 196613, 1376275, 0, 196613, 1376276, 0, 196613, 1376277, 0, 196613, 1376278, 0, 196613, 1376279, 0, 196613, 1376280, 0, 196613, 1376281, 0, 196613, 1376282, 0, 196613, 1376283, 0, 196613, 1376284, 0, 196613, 1376285, 0, 196613, 1376286, 0, 196613, 1376287, 0, 196613, 1376288, 0, 196613, 1376289, 0, 196613, 1376290, 0, 196613, 1376291, 0, 196613, 1376292, 0, 196613, 1376293, 0, 196613, 1376294, 0, 196613, 1376295, 0, 196613, 1376296, 0, 196613, 1376297, 0, 196613, 1376298, 0, 196613, 1376299, 0, 196613, 1376300, 0, 196613, 1376301, 0, 196613, 1376302, 0, 196613, 1376303, 0, 196613, 1376304, 0, 196613, 1376305, 0, 196613, 1376306, 0, 196613, 1376307, 0, 196613, 1376308, 0, 196613, 1376309, 0, 196613, 1376310, 0, 196613, 1376311, 0, 196613, 1376312, 0, 196613, 1376313, 0, 196613, 1376314, 0, 196613, 1376315, 0, 196613, 1376316, 0, 196613, 1376317, 0, 196613, 1376318, 0, 196613, 1376319, 0, 196613, 1376320, 0, 196613, 1376321, 0, 196613, 1376322, 0, 196613, 1376323, 0, 196613, 1376324, 0, 196613, 1376325, 0, 196613, 1376326, 0, 196613, 1376327, 0, 196613, 1376328, 0, 196613, 1376329, 0, 196613, 1376330, 0, 196613, 1376331, 0, 196613, 1376332, 0, 196613, 1376333, 0, 196613, 1376334, 0, 196613, 1376335, 0, 196613, 1441792, 0, 196613, 1441793, 0, 196613, 1441794, 0, 196613, 1441795, 0, 196613, 1441796, 0, 196613, 1441797, 0, 196613, 1441798, 0, 196613, 1441799, 0, 196613, 1441800, 0, 196613, 1441801, 0, 196613, 1441802, 0, 196613, 1441803, 0, 196613, 1441804, 0, 196613, 1441805, 0, 196613, 1441806, 0, 196613, 1441807, 0, 196613, 1441808, 0, 196613, 1441809, 0, 196613, 1441810, 0, 196613, 1441811, 0, 196613, 1441812, 0, 196613, 1441813, 0, 196613, 1441814, 0, 196613, 1441815, 0, 196613, 1441816, 0, 196613, 1441817, 0, 196613, 1441818, 0, 196613, 1441819, 0, 196613, 1441820, 0, 196613, 1441821, 0, 196613, 1441822, 0, 196613, 1441823, 0, 196613, 1441824, 0, 196613, 1441825, 0, 196613, 1441826, 0, 196613, 1441827, 0, 196613, 1441828, 0, 196613, 1441829, 0, 196613, 1441830, 0, 196613, 1441831, 0, 196613, 1441832, 0, 196613, 1441833, 0, 196613, 1441834, 0, 196613, 1441835, 0, 196613, 1441836, 0, 196613, 1441837, 0, 196613, 1441838, 0, 196613, 1441839, 0, 196613, 1441840, 0, 196613, 1441841, 0, 196613, 1441842, 0, 196613, 1441843, 0, 196613, 1441844, 0, 196613, 1441845, 0, 196613, 1441846, 0, 196613, 1441847, 0, 196613, 1441848, 0, 196613, 1441849, 0, 196613, 1441850, 0, 196613, 1441851, 0, 196613, 1441852, 0, 196613, 1441853, 0, 196613, 1441854, 0, 196613, 1441855, 0, 196613, 1441856, 0, 196613, 1441857, 0, 196613, 1441858, 0, 196613, 1441859, 0, 196613, 1441860, 0, 196613, 1441861, 0, 196613, 1441862, 0, 196613, 1441863, 0, 196613, 1441864, 0, 196613, 1441865, 0, 196613, 1441866, 0, 196613, 1441867, 0, 196613, 1441868, 0, 196613, 1441869, 0, 196613, 1441870, 0, 196613, 1441871, 0, 196613 ) +tile_data = PoolIntArray( -65536, 0, 196613, 65528, 0, 0, 0, 0, 196613, 79, 0, 196613, 65536, 0, 196613, 65615, 0, 196613, 196603, 0, 0, 131072, 0, 196613, 131151, 0, 196613, 196608, 0, 196613, 196687, 0, 196613, 262144, 0, 196613, 262172, 0, 196613, 262173, 0, 196613, 262174, 0, 196613, 262175, 0, 196613, 262176, 0, 196613, 262177, 0, 196613, 262223, 0, 196613, 327680, 0, 196613, 327759, 0, 196613, 393216, 0, 196613, 393260, 0, 196613, 393261, 0, 196613, 393295, 0, 196613, 458752, 0, 196613, 458792, 0, 196613, 458793, 0, 196613, 458794, 0, 196613, 458795, 0, 196613, 458796, 0, 196613, 458797, 0, 196613, 458831, 0, 196613, 524288, 0, 196613, 524307, 0, 196613, 524308, 0, 196613, 524327, 0, 196613, 524328, 0, 196613, 524329, 0, 196613, 524330, 0, 196613, 524334, 0, 196613, 524367, 0, 196613, 589824, 0, 196613, 589843, 0, 196613, 589844, 0, 196613, 589863, 0, 196613, 589864, 0, 196613, 589870, 0, 196613, 589903, 0, 196613, 655360, 0, 196613, 655361, 0, 2, 655362, 0, 2, 655363, 0, 2, 655364, 0, 2, 655365, 0, 2, 655366, 0, 2, 655367, 0, 2, 655368, 0, 2, 655369, 0, 2, 655370, 0, 2, 655371, 0, 2, 655372, 0, 2, 655373, 0, 2, 655374, 0, 2, 655375, 0, 2, 655376, 0, 2, 655377, 0, 2, 655378, 0, 2, 655379, 0, 196613, 655380, 0, 196613, 655381, 0, 196613, 655382, 0, 196613, 655383, 0, 196613, 655384, 0, 196613, 655385, 0, 196613, 655386, 0, 196613, 655387, 0, 196613, 655388, 0, 196613, 655389, 0, 196613, 655390, 0, 196613, 655391, 0, 196613, 655392, 0, 196613, 655393, 0, 196613, 655394, 0, 196613, 655395, 0, 196613, 655396, 0, 196613, 655397, 0, 196613, 655398, 0, 196613, 655399, 0, 196613, 655400, 0, 196613, 655406, 0, 196613, 655407, 0, 196613, 655408, 0, 196613, 655409, 0, 196613, 655410, 0, 196613, 655411, 0, 196613, 655412, 0, 196613, 655413, 0, 196613, 655414, 0, 196613, 655415, 0, 196613, 655416, 0, 196613, 655417, 0, 196613, 655418, 0, 196613, 655419, 0, 196613, 655420, 0, 196613, 655421, 0, 196613, 655422, 0, 196613, 655423, 0, 196613, 655424, 0, 196613, 655425, 0, 196613, 655426, 0, 196613, 655427, 0, 196613, 655428, 0, 196613, 655439, 0, 196613, 720896, 0, 196613, 720897, 0, 65538, 720898, 0, 65538, 720899, 0, 65538, 720900, 0, 65538, 720901, 0, 65538, 720902, 0, 65538, 720903, 0, 65538, 720904, 0, 65538, 720905, 0, 65538, 720906, 0, 65538, 720907, 0, 65538, 720908, 0, 65538, 720909, 0, 65538, 720910, 0, 65538, 720911, 0, 65538, 720912, 0, 65538, 720913, 0, 65538, 720914, 0, 65538, 720915, 0, 196613, 720916, 0, 196613, 720917, 0, 196613, 720918, 0, 196613, 720919, 0, 196613, 720920, 0, 196613, 720921, 0, 196613, 720959, 0, 0, 720961, 0, 196613, 720962, 0, 196613, 720963, 0, 196613, 720964, 0, 196613, 720965, 0, 196613, 720975, 0, 196613, 786432, 0, 196613, 786495, 0, 0, 786511, 0, 196613, 851968, 0, 196613, 852002, 0, 196613, 852031, 0, 0, 852047, 0, 196613, 917504, 0, 196613, 917583, 0, 196613, 983040, 0, 196613, 983119, 0, 196613, 1048576, 0, 196613, 1048655, 0, 196613, 1114112, 0, 196613, 1114167, 0, 196613, 1114168, 0, 196613, 1114169, 0, 196613, 1114170, 0, 196613, 1114171, 0, 196613, 1114191, 0, 196613, 1179648, 0, 196613, 1179701, 0, 196613, 1179702, 0, 196613, 1179703, 0, 196613, 1179707, 0, 196613, 1179708, 0, 196613, 1179709, 0, 196613, 1179727, 0, 196613, 1245184, 0, 196613, 1245236, 0, 196613, 1245237, 0, 196613, 1245245, 0, 196613, 1245246, 0, 196613, 1245247, 0, 196613, 1245263, 0, 196613, 1310720, 0, 196613, 1310771, 0, 196613, 1310772, 0, 196613, 1310783, 0, 196613, 1310784, 0, 196613, 1310799, 0, 196613, 1376256, 0, 196613, 1376257, 0, 196613, 1376258, 0, 196613, 1376259, 0, 196613, 1376260, 0, 196613, 1376261, 0, 196613, 1376262, 0, 196613, 1376263, 0, 196613, 1376264, 0, 196613, 1376265, 0, 196613, 1376266, 0, 196613, 1376267, 0, 196613, 1376268, 0, 196613, 1376269, 0, 196613, 1376270, 0, 196613, 1376271, 0, 196613, 1376272, 0, 196613, 1376273, 0, 196613, 1376274, 0, 196613, 1376275, 0, 196613, 1376276, 0, 196613, 1376277, 0, 196613, 1376278, 0, 196613, 1376279, 0, 196613, 1376280, 0, 196613, 1376281, 0, 196613, 1376282, 0, 196613, 1376283, 0, 196613, 1376284, 0, 196613, 1376285, 0, 196613, 1376286, 0, 196613, 1376287, 0, 196613, 1376288, 0, 196613, 1376289, 0, 196613, 1376290, 0, 196613, 1376291, 0, 196613, 1376292, 0, 196613, 1376293, 0, 196613, 1376294, 0, 196613, 1376295, 0, 196613, 1376296, 0, 196613, 1376297, 0, 196613, 1376298, 0, 196613, 1376299, 0, 196613, 1376300, 0, 196613, 1376301, 0, 196613, 1376302, 0, 196613, 1376303, 0, 196613, 1376304, 0, 196613, 1376305, 0, 196613, 1376306, 0, 196613, 1376307, 0, 196613, 1376308, 0, 196613, 1376309, 0, 196613, 1376310, 0, 196613, 1376311, 0, 196613, 1376312, 0, 196613, 1376313, 0, 196613, 1376314, 0, 196613, 1376315, 0, 196613, 1376316, 0, 196613, 1376317, 0, 196613, 1376318, 0, 196613, 1376319, 0, 196613, 1376320, 0, 196613, 1376321, 0, 196613, 1376322, 0, 196613, 1376323, 0, 196613, 1376324, 0, 196613, 1376325, 0, 131080, 1376326, 0, 131081, 1376327, 0, 131080, 1376328, 0, 131081, 1376329, 0, 131080, 1376330, 0, 131081, 1376331, 0, 131080, 1376332, 0, 131081, 1376333, 0, 131081, 1376334, 0, 131080, 1376335, 0, 196613, 1441792, 0, 196613, 1441793, 0, 196613, 1441794, 0, 196613, 1441795, 0, 196613, 1441796, 0, 196613, 1441797, 0, 196613, 1441798, 0, 196613, 1441799, 0, 196613, 1441800, 0, 196613, 1441801, 0, 196613, 1441802, 0, 196613, 1441803, 0, 196613, 1441804, 0, 196613, 1441805, 0, 196613, 1441806, 0, 196613, 1441807, 0, 196613, 1441808, 0, 196613, 1441809, 0, 196613, 1441810, 0, 196613, 1441811, 0, 196613, 1441812, 0, 196613, 1441813, 0, 196613, 1441814, 0, 196613, 1441815, 0, 196613, 1441816, 0, 196613, 1441817, 0, 196613, 1441818, 0, 196613, 1441819, 0, 196613, 1441820, 0, 196613, 1441821, 0, 196613, 1441822, 0, 196613, 1441823, 0, 196613, 1441824, 0, 196613, 1441825, 0, 196613, 1441826, 0, 196613, 1441827, 0, 196613, 1441828, 0, 196613, 1441829, 0, 196613, 1441830, 0, 196613, 1441831, 0, 196613, 1441832, 0, 196613, 1441833, 0, 196613, 1441834, 0, 196613, 1441835, 0, 196613, 1441836, 0, 196613, 1441837, 0, 196613, 1441838, 0, 196613, 1441839, 0, 196613, 1441840, 0, 196613, 1441841, 0, 196613, 1441842, 0, 196613, 1441843, 0, 196613, 1441844, 0, 196613, 1441845, 0, 196613, 1441846, 0, 196613, 1441847, 0, 196613, 1441848, 0, 196613, 1441849, 0, 196613, 1441850, 0, 196613, 1441851, 0, 196613, 1441852, 0, 196613, 1441853, 0, 196613, 1441854, 0, 196613, 1441855, 0, 196613, 1441856, 0, 196613, 1441857, 0, 196613, 1441858, 0, 196613, 1441859, 0, 196613, 1441860, 0, 196613, 1441861, 0, 196613, 1441862, 0, 196613, 1441863, 0, 196613, 1441864, 0, 196613, 1441865, 0, 196613, 1441866, 0, 196613, 1441867, 0, 196613, 1441868, 0, 196613, 1441869, 0, 196613, 1441870, 0, 196613, 1441871, 0, 196613 ) __meta__ = { "_edit_lock_": true } @@ -94,7 +98,7 @@ z_index = 1 tile_set = ExtResource( 2 ) cell_size = Vector2( 16, 16 ) format = 1 -tile_data = PoolIntArray( -131044, 0, 262152, -65508, 0, 262152, 28, 0, 262152, 44, 0, 262145, 45, 0, 262146, 46, 0, 262146, 47, 0, 262147, 65564, 0, 262152, 65581, 0, 327685, 65582, 0, 327686, 65583, 0, 327687, 131100, 0, 262152, 131118, 0, 327688, 196636, 0, 262152, 196654, 0, 327688, 262190, 0, 327688, 327726, 0, 327688, 393262, 0, 327688, 458798, 0, 327690, 589827, 0, 262148, 589828, 0, 262149, 589829, 0, 262149, 589830, 0, 262149, 589831, 0, 262151 ) +tile_data = PoolIntArray( -131044, 0, 262152, -65508, 0, 262152, 28, 0, 262152, 44, 0, 262145, 45, 0, 262146, 46, 0, 262146, 47, 0, 262147, 65564, 0, 262152, 65581, 0, 327685, 65582, 0, 327686, 65583, 0, 327687, 131100, 0, 262152, 131118, 0, 327688, 196636, 0, 262152, 196654, 0, 327688, 262190, 0, 327688, 327726, 0, 327688, 393262, 0, 327688, 458798, 0, 327690, 589827, 0, 262148, 589828, 0, 262149, 589829, 0, 262149, 589830, 0, 262149, 589831, 0, 262151, 1310765, 0, 262144, 1310766, 0, 262144, 1310767, 0, 262144, 1310768, 0, 262144, 1310769, 0, 262144, 1310770, 0, 262144 ) [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = ExtResource( 6 ) @@ -137,3 +141,14 @@ shape = SubResource( 3 ) __meta__ = { "_edit_lock_": true } + +[node name="Ice" parent="." instance=ExtResource( 11 )] +position = Vector2( 1101, 328 ) +collision_layer = 0 +collision_mask = 2 +modifier_name = "ice_flow_nowhere_to_go" +jerk_factor = -80.0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Ice"] +position = Vector2( 83, 9.5 ) +shape = SubResource( 4 ) diff --git a/src/components/Modifier_Component.gd b/src/components/Modifier_Component.gd new file mode 100644 index 0000000..13ec527 --- /dev/null +++ b/src/components/Modifier_Component.gd @@ -0,0 +1,48 @@ +extends Area2D + + +var modifier_type = 0 + +export var modifier_name :String = '' +var animation_name: String = '' # Not using this one +var timeout_seconds: float = 0.0 # Not doing timeout based ones yet either. + +export var move_speed: float = 0.0 +export var move_acceleration: float = 0.0 +export var move_speed_modifier: float = 0.0 +export var move_modifier_move_acceleration: float = 0.0 +export var jerk_factor: float = 0 + +export var gravity_modifier: int = 0 + +#var state_timeout: Timer + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +var modifier :StateModifier +#var modifier_properties: ModifierProperties + + +# Called when the node enters the scene tree for the first time. +func _ready(): + modifier = StateModifier.new() + modifier.ready( modifier_name, animation_name , modifier.TYPE.NONE, timeout_seconds) + modifier.modifier_properties = ModifierProperties.new( move_speed, + gravity_modifier, + move_acceleration, + move_speed_modifier, + move_modifier_move_acceleration, + jerk_factor) + +func _on_Modifier_Component_body_entered(body): + var colliding_node = body + if colliding_node.has_node("Modifier_Receiver"): + colliding_node.get_node("Modifier_Receiver").register_modifier(modifier) + + +func _on_Modifier_Component_body_exited(body): + var colliding_node = body + if colliding_node.has_node("Modifier_Receiver"): + colliding_node.get_node("Modifier_Receiver").remove_modifier(modifier) diff --git a/src/components/Modifier_Component.tscn b/src/components/Modifier_Component.tscn new file mode 100644 index 0000000..cd6c7d0 --- /dev/null +++ b/src/components/Modifier_Component.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://src/components/Modifier_Component.gd" type="Script" id=1] + +[node name="Modifier_Component" type="Area2D"] +script = ExtResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_Modifier_Component_body_entered"] +[connection signal="body_exited" from="." to="." method="_on_Modifier_Component_body_exited"] diff --git a/src/components/Modifier_Receiver.gd b/src/components/Modifier_Receiver.gd new file mode 100644 index 0000000..f70a652 --- /dev/null +++ b/src/components/Modifier_Receiver.gd @@ -0,0 +1,53 @@ +class_name Modifier_Receiver +extends Node2D + +# This may be stupid but we're going to have two kinds of callbacks here. +# It's going to be up to the parent/actor/kinematicbody2d/whatever to know +# what conditions have to be met before being able to call that interactible's +# function. +# This is a nice and generic interface that I might be able to use for +# things like opening doors in a level, opening chests/flipping switches etc. + +# This node can keep an array of various interactibles within a level +# and provide several helper functions for managing them perhaps. + +export(String) var modifier_parent_callback = "" +export var debug_receiver :bool = false + +var call_function: FuncRef + +#var interactable_function_callables = [] + +var modifier_collection = [] + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +##NOTE: +## Call function should be implemented as two parameters, one expecting a modifier +## and the other expecting a boolean as to whether its being added + +# Called when the node enters the scene tree for the first time. +func _ready(): + if modifier_parent_callback: + call_function = funcref(owner, modifier_parent_callback) + else: + print("Warning: No modifier receiver function defined on ", owner.name) + +# Switching to a new model that starts with Hitbox +func register_modifier(modifier: StateModifier): + if modifier_collection.has(modifier) == false: + print("New Modifier Registered " + modifier.name) + modifier_collection.append(modifier) + if call_function.is_valid(): + call_function.call_func(modifier, true) + +func remove_modifier(modifier): + print("Modifier Removal " + modifier.name) + if modifier_collection.has(modifier): + var modifier_index = modifier_collection.rfind(modifier) + if modifier_index != -1: + modifier_collection.remove(modifier_index) + if call_function.is_valid(): + call_function.call_func(modifier, false) diff --git a/src/components/Modifier_Receiver.tscn b/src/components/Modifier_Receiver.tscn new file mode 100644 index 0000000..6e0c4a3 --- /dev/null +++ b/src/components/Modifier_Receiver.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://src/components/Modifier_Receiver.gd" type="Script" id=1] + +[node name="Modifier_Receiver" type="Node2D"] +script = ExtResource( 1 ) diff --git a/src/playerD/Player.gd b/src/playerD/Player.gd index b7a7064..3e31c0c 100644 --- a/src/playerD/Player.gd +++ b/src/playerD/Player.gd @@ -27,6 +27,13 @@ func hit_Receiver(damage): yield( get_tree().create_timer(2 + $movement_state_machine/hurt.timeout_seconds), "timeout") $Hurtbox_Component.set_hurtbox(true) +func receive_modifier(incomming_modifier :StateModifier, is_adding_modifier_operation: bool): + #var mod :StateModifier + if is_adding_modifier_operation: + print("Player Received modifier:", incomming_modifier.name) + else: + print("Player Removed modifier:", incomming_modifier.name) + func touch_the_thing(the_thing: Interactable) -> bool: print("You see! a THING...", the_thing.name) if the_thing is HealthPickup: diff --git a/src/playerD/Player.tscn b/src/playerD/Player.tscn index cbe695c..33be82c 100644 --- a/src/playerD/Player.tscn +++ b/src/playerD/Player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=126 format=2] +[gd_scene load_steps=127 format=2] [ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1] [ext_resource path="res://src/playerD/movement_component.gd" type="Script" id=2] @@ -8,6 +8,7 @@ [ext_resource path="res://src/playerD/states/fall.gd" type="Script" id=6] [ext_resource path="res://src/components/Health_Component.tscn" type="PackedScene" id=7] [ext_resource path="res://src/playerD/states/jump.gd" type="Script" id=8] +[ext_resource path="res://src/components/Modifier_Receiver.tscn" type="PackedScene" id=9] [ext_resource path="res://src/playerD/states/attack.gd" type="Script" id=10] [ext_resource path="res://src/playerD/states/dash.gd" type="Script" id=11] [ext_resource path="res://src/playerD/states/hurt.gd" type="Script" id=12] @@ -578,14 +579,12 @@ roll_node = NodePath("../roll") [node name="fall" parent="movement_state_machine" index="1"] script = ExtResource( 6 ) -debug_state = true move_speed = 90.0 animation_sequence = [ "jump" ] landing_node = NodePath("") [node name="move" parent="movement_state_machine" index="2"] script = ExtResource( 5 ) -debug_state = true move_speed = 90.0 animation_sequence = [ "step", "run" ] jump_node = NodePath("../jump") @@ -593,7 +592,6 @@ attack_node = NodePath("../attack") [node name="jump" type="Node" parent="movement_state_machine" index="3"] script = ExtResource( 8 ) -debug_state = true move_speed = 90.0 animation_sequence = [ "jump" ] idle_node = NodePath("../idle") @@ -675,6 +673,10 @@ default_color = Color( 1, 0.607843, 0, 1 ) script = ExtResource( 16 ) interactable_parent_callback = "touch_the_thing" +[node name="Modifier_Receiver" parent="." index="9" instance=ExtResource( 9 )] +modifier_parent_callback = "receive_modifier" +debug_receiver = true + [connection signal="do_attack" from="movement_state_machine/attack" to="." method="_on_attack_do_attack"] [connection signal="frame_reached" from="movement_state_machine/roll" to="." method="_on_roll_frame_reached"] [connection signal="state_exited" from="movement_state_machine/roll" to="." method="_on_roll_state_exited"] diff --git a/src/state_modifier.gd b/src/state_modifier.gd index 9da82f7..06be1b4 100644 --- a/src/state_modifier.gd +++ b/src/state_modifier.gd @@ -92,6 +92,7 @@ func get_modifier_properties() -> ModifierProperties: modifier_properties.jerk_factor) func ready(modifier_name:String, anim_name:String = '', type = TYPE.NONE, timeout : float = 0, parent:Node = null, function_name : String = "") -> Timer: + name = modifier_name # If somebody forgot to specify the type if anim_name != '' and type == TYPE.NONE: modifier_type = TYPE.REPLACE_ANIMATION