diff --git a/Factions/Knights/Troops/base_character.gd b/Factions/Knights/Troops/base_character.gd index fd98ac8..d0d61d2 100644 --- a/Factions/Knights/Troops/base_character.gd +++ b/Factions/Knights/Troops/base_character.gd @@ -61,15 +61,14 @@ func _on_animation_finished(_anim_name: StringName) -> void: _can_attack = true set_physics_process(true) -func update_collision_layer_mask(_type: String) -> void: - if _type == "in": - set_collision_layer_value(1, false) - set_collision_mask_value(1, false) - set_collision_layer_value(2, true) - set_collision_mask_value(2, true) - if _type == "out": - set_collision_layer_value(1, true) - set_collision_mask_value(1, true) - set_collision_layer_value(2, false) - set_collision_mask_value(2, false) - pass +#func update_collision_layer_mask(_type: String) -> void: + #if _type == "in": + #set_collision_layer_value(1, false) + #set_collision_mask_value(1, false) + #set_collision_layer_value(2, true) + #set_collision_mask_value(2, true) + #if _type == "out": + #set_collision_layer_value(1, true) + #set_collision_mask_value(1, true) + #set_collision_layer_value(2, false) + #set_collision_mask_value(2, false) diff --git a/Factions/Knights/Troops/base_character.tscn b/Factions/Knights/Troops/base_character.tscn index a298dc7..03603e6 100644 --- a/Factions/Knights/Troops/base_character.tscn +++ b/Factions/Knights/Troops/base_character.tscn @@ -3,8 +3,8 @@ [ext_resource type="Script" uid="uid://cbuavletjs0kl" path="res://Factions/Knights/Troops/base_character.gd" id="1_jdal0"] [node name="BaseCharacter" type="CharacterBody2D" node_paths=PackedStringArray("_animation", "_sprite2d")] -collision_layer = 9 -collision_mask = 9 +collision_layer = 137 +collision_mask = 137 script = ExtResource("1_jdal0") _animation = NodePath("Animation") _sprite2d = NodePath("Texture") diff --git a/Interactables/bellow_bridge_area.gd b/Interactables/bellow_bridge_area.gd new file mode 100644 index 0000000..30b593e --- /dev/null +++ b/Interactables/bellow_bridge_area.gd @@ -0,0 +1,23 @@ +extends Area2D +class_name BellowBridgeArea + +var is_character_bellow_bridge: bool = false +var character_body: Node2D = null + +func _on_body_entered(_body: Node2D) -> void: + self._set_character_body_bellow_bridge(_body, true) + +func _on_body_exited(_body: Node2D) -> void: + self._set_character_body_bellow_bridge(_body, false) + +func _set_character_body_bellow_bridge(_body: Node2D, _state: bool) -> void: + if _body is BaseCharacter: + self.is_character_bellow_bridge = _state + self.character_body = _body + print("bellow bridge: " + str(_state)) + +func get_character_body_bellow_bridge() -> bool: + return self.is_character_bellow_bridge + +func get_body() -> Node2D: + return self.character_body diff --git a/Interactables/bellow_bridge_area.gd.uid b/Interactables/bellow_bridge_area.gd.uid new file mode 100644 index 0000000..544e777 --- /dev/null +++ b/Interactables/bellow_bridge_area.gd.uid @@ -0,0 +1 @@ +uid://bg2dqq8ebhkjs diff --git a/Interactables/bridge_area.gd b/Interactables/bridge_area.gd deleted file mode 100644 index e64a69e..0000000 --- a/Interactables/bridge_area.gd +++ /dev/null @@ -1,12 +0,0 @@ -extends Area2D -class_name BridgeArea - -func _on_body_entered(_body: Node2D) -> void: - if _body is BaseCharacter: - _body.update_collision_layer_mask("in") - print("entered!") - -func _on_body_exited(_body: Node2D) -> void: - if _body is BaseCharacter: - _body.update_collision_layer_mask("out") - print("exited!") diff --git a/Interactables/on_bridge_area.gd b/Interactables/on_bridge_area.gd new file mode 100644 index 0000000..ff122a2 --- /dev/null +++ b/Interactables/on_bridge_area.gd @@ -0,0 +1,25 @@ +extends Area2D +class_name BridgeArea + +var character_body: Node2D = null +var is_character_on_bridge: bool = false + +func _on_body_entered(_body: Node2D) -> void: + #_body.update_collision_layer_mask("in") + self._set_character_body_on_bridge(_body, true) + +func _on_body_exited(_body: Node2D) -> void: + #_body.update_collision_layer_mask("out") + self._set_character_body_on_bridge(_body, false) + +func _set_character_body_on_bridge(_body: Node2D, _state: bool) -> void: + if _body is BaseCharacter: + self.character_body = _body + self.is_character_on_bridge = _state + print("on bridge: " + str(_state)) + +func get_character_body_on_bridge() -> bool: + return self.is_character_on_bridge + +func get_body() -> Node2D: + return self.character_body diff --git a/Interactables/bridge_area.gd.uid b/Interactables/on_bridge_area.gd.uid similarity index 100% rename from Interactables/bridge_area.gd.uid rename to Interactables/on_bridge_area.gd.uid diff --git a/Terrain/bridge.gd b/Terrain/bridge.gd new file mode 100644 index 0000000..788b60c --- /dev/null +++ b/Terrain/bridge.gd @@ -0,0 +1,39 @@ +extends TileMapLayer +class_name Bridge + +@export_category("Objects") +@export var bellow_bridge_area: Area2D +@export var on_bridge_area: Area2D + + +func _process(_delta: float) -> void: + var character_body_bellow_bridge: Node2D = bellow_bridge_area.get_body() + var character_body_on_bridge: Node2D = on_bridge_area.get_body() + + if character_body_bellow_bridge: + if bellow_bridge_area.get_character_body_bellow_bridge(): + character_body_bellow_bridge.set_collision_layer_value(4, false) + character_body_bellow_bridge.set_collision_mask_value(4, false) + self.z_index = 2 + else: + character_body_bellow_bridge.set_collision_layer_value(4, true) + character_body_bellow_bridge.set_collision_mask_value(4, false) + self.z_index = 0 + + if character_body_on_bridge: + if on_bridge_area.get_character_body_on_bridge(): + character_body_on_bridge.set_collision_layer_value(8, false) + character_body_on_bridge.set_collision_mask_value(8, false) + character_body_on_bridge.set_collision_layer_value(1, false) + character_body_on_bridge.set_collision_mask_value(1, false) + character_body_on_bridge.set_collision_layer_value(2, true) + character_body_on_bridge.set_collision_mask_value(2, true) + + else: + character_body_on_bridge.set_collision_layer_value(8, true) + character_body_on_bridge.set_collision_mask_value(8, true) + character_body_on_bridge.set_collision_layer_value(1, true) + character_body_on_bridge.set_collision_mask_value(1, true) + character_body_on_bridge.set_collision_layer_value(2, false) + character_body_on_bridge.set_collision_mask_value(2, false) + diff --git a/Terrain/bridge.gd.uid b/Terrain/bridge.gd.uid new file mode 100644 index 0000000..24e6c1a --- /dev/null +++ b/Terrain/bridge.gd.uid @@ -0,0 +1 @@ +uid://jqtagkf51o2 diff --git a/Terrain/terrain_manager.tscn b/Terrain/terrain_manager.tscn index 91e334c..8d22088 100644 --- a/Terrain/terrain_manager.tscn +++ b/Terrain/terrain_manager.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=35 format=4 uid="uid://dkfrltbqlycy0"] +[gd_scene load_steps=37 format=4 uid="uid://dkfrltbqlycy0"] [ext_resource type="Texture2D" uid="uid://byqnrxn13bbnp" path="res://Terrain/Water/Water.png" id="1_1aeul"] [ext_resource type="Texture2D" uid="uid://b6wic25dxw41l" path="res://Terrain/Water/Foam/Foam.png" id="2_qnvmo"] @@ -10,7 +10,9 @@ [ext_resource type="Texture2D" uid="uid://bgqwpoivhvjwy" path="res://Terrain/Ground/Tilemap_Flat.png" id="8_g8u8o"] [ext_resource type="Texture2D" uid="uid://ljb2glg7ikd3" path="res://Terrain/Ground/Shadows.png" id="9_osja2"] [ext_resource type="Texture2D" uid="uid://dvdid120sw0q3" path="res://Terrain/Bridge/Bridge_All.png" id="10_v8sh6"] -[ext_resource type="Script" uid="uid://dirg5mq4y4nk0" path="res://Interactables/bridge_area.gd" id="11_oe1b3"] +[ext_resource type="Script" uid="uid://dirg5mq4y4nk0" path="res://Interactables/on_bridge_area.gd" id="11_oe1b3"] +[ext_resource type="Script" uid="uid://jqtagkf51o2" path="res://Terrain/bridge.gd" id="11_pko0k"] +[ext_resource type="Script" uid="uid://bg2dqq8ebhkjs" path="res://Interactables/bellow_bridge_area.gd" id="13_qwqgt"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_qnvmo"] resource_name = "water" @@ -229,8 +231,8 @@ physics_layer_0/collision_layer = 2 physics_layer_0/collision_mask = 2 sources/0 = SubResource("TileSetAtlasSource_ms6ml") -[sub_resource type="ConvexPolygonShape2D" id="ConvexPolygonShape2D_v8sh6"] -points = PackedVector2Array(0, 0) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_6bbuc"] +size = Vector2(1152, 150) [node name="TerrainManager" type="Node2D"] @@ -280,24 +282,34 @@ tile_set = SubResource("TileSet_osja2") tile_map_data = PackedByteArray("AAALAAkAAAAAAAAAAAAOAAkAAAACAAAAAAAUAAoAAAACAAAAAAAUAAwAAAACAAIAAAARAAwAAAAAAAIAAAALAAsAAAAAAAIAAAALAAoAAAAAAAEAAAAMAAkAAAABAAAAAAANAAkAAAABAAAAAAAPAAoAAAABAAAAAAAQAAoAAAABAAAAAAARAAoAAAABAAAAAAASAAoAAAABAAAAAAATAAoAAAABAAAAAAASAAwAAAABAAIAAAATAAwAAAABAAIAAAAUAAsAAAACAAEAAAAMAAsAAAABAAIAAAANAAsAAAABAAIAAAAOAAsAAAABAAIAAAAPAAsAAAABAAIAAAAQAAsAAAABAAIAAAAMAAoAAAABAAEAAAANAAoAAAABAAEAAAAOAAoAAAABAAEAAAARAAsAAAABAAEAAAASAAsAAAABAAEAAAATAAsAAAABAAEAAAA=") tile_set = SubResource("TileSet_pko0k") -[node name="Bridge" type="TileMapLayer" parent="."] +[node name="Bridge" type="TileMapLayer" parent="." node_paths=PackedStringArray("bellow_bridge_area", "on_bridge_area")] tile_map_data = PackedByteArray("AAAWAAsAAAAAAAAAAAAXAAsAAAABAAAAAAAYAAsAAAABAAAAAAAZAAsAAAABAAAAAAAaAAsAAAABAAAAAAAbAAsAAAABAAAAAAAcAAsAAAABAAAAAAAdAAsAAAABAAAAAAAeAAsAAAABAAAAAAAfAAsAAAABAAAAAAAgAAsAAAABAAAAAAAhAAsAAAABAAAAAAAiAAsAAAABAAAAAAAjAAsAAAABAAAAAAAkAAsAAAABAAAAAAAlAAsAAAABAAAAAAAmAAsAAAABAAAAAAAnAAsAAAABAAAAAAAoAAsAAAABAAAAAAApAAsAAAACAAAAAAA=") tile_set = SubResource("TileSet_3cg8g") collision_visibility_mode = 1 +script = ExtResource("11_pko0k") +bellow_bridge_area = NodePath("BellowBridgeArea") +on_bridge_area = NodePath("OnBridgeArea") -[node name="BridgeArea" type="Area2D" parent="Bridge"] +[node name="OnBridgeArea" type="Area2D" parent="Bridge"] position = Vector2(1459, 730) collision_layer = 8 collision_mask = 8 script = ExtResource("11_oe1b3") -[node name="Collision_old" type="CollisionShape2D" parent="Bridge/BridgeArea"] -position = Vector2(591.5, 6) -shape = SubResource("ConvexPolygonShape2D_v8sh6") - -[node name="Collision" type="CollisionPolygon2D" parent="Bridge/BridgeArea"] +[node name="OnBridgeCollision" type="CollisionPolygon2D" parent="Bridge/OnBridgeArea"] position = Vector2(-13.6208, -5.48883) polygon = PackedVector2Array(-20, -20, 26, -20, 26, -5, 1180, -5, 1180, -20, 1230, -20, 1230, 50, 1180, 50, 1180, 26, 26, 26, 26, 50, -20, 50) -[connection signal="body_entered" from="Bridge/BridgeArea" to="Bridge/BridgeArea" method="_on_body_entered"] -[connection signal="body_exited" from="Bridge/BridgeArea" to="Bridge/BridgeArea" method="_on_body_exited"] +[node name="BellowBridgeArea" type="Area2D" parent="Bridge"] +collision_layer = 128 +collision_mask = 128 +script = ExtResource("13_qwqgt") + +[node name="BellowBridgeCollision" type="CollisionShape2D" parent="Bridge/BellowBridgeArea"] +position = Vector2(2048, 734) +shape = SubResource("RectangleShape2D_6bbuc") + +[connection signal="body_entered" from="Bridge/OnBridgeArea" to="Bridge/OnBridgeArea" method="_on_body_entered"] +[connection signal="body_exited" from="Bridge/OnBridgeArea" to="Bridge/OnBridgeArea" method="_on_body_exited"] +[connection signal="body_entered" from="Bridge/BellowBridgeArea" to="Bridge/BellowBridgeArea" method="_on_body_entered"] +[connection signal="body_exited" from="Bridge/BellowBridgeArea" to="Bridge/BellowBridgeArea" method="_on_body_exited"]