Changing bridge layer logic to Bridge script instead of BasicCharacter. The Bridge was moved from GameLevel to TerrainManager because its more related to terrain.
This commit is contained in:
parent
57b67e6d98
commit
724df1b070
|
|
@ -61,15 +61,14 @@ func _on_animation_finished(_anim_name: StringName) -> void:
|
||||||
_can_attack = true
|
_can_attack = true
|
||||||
set_physics_process(true)
|
set_physics_process(true)
|
||||||
|
|
||||||
func update_collision_layer_mask(_type: String) -> void:
|
#func update_collision_layer_mask(_type: String) -> void:
|
||||||
if _type == "in":
|
#if _type == "in":
|
||||||
set_collision_layer_value(1, false)
|
#set_collision_layer_value(1, false)
|
||||||
set_collision_mask_value(1, false)
|
#set_collision_mask_value(1, false)
|
||||||
set_collision_layer_value(2, true)
|
#set_collision_layer_value(2, true)
|
||||||
set_collision_mask_value(2, true)
|
#set_collision_mask_value(2, true)
|
||||||
if _type == "out":
|
#if _type == "out":
|
||||||
set_collision_layer_value(1, true)
|
#set_collision_layer_value(1, true)
|
||||||
set_collision_mask_value(1, true)
|
#set_collision_mask_value(1, true)
|
||||||
set_collision_layer_value(2, false)
|
#set_collision_layer_value(2, false)
|
||||||
set_collision_mask_value(2, false)
|
#set_collision_mask_value(2, false)
|
||||||
pass
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
[ext_resource type="Script" uid="uid://cbuavletjs0kl" path="res://Factions/Knights/Troops/base_character.gd" id="1_jdal0"]
|
[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")]
|
[node name="BaseCharacter" type="CharacterBody2D" node_paths=PackedStringArray("_animation", "_sprite2d")]
|
||||||
collision_layer = 9
|
collision_layer = 137
|
||||||
collision_mask = 9
|
collision_mask = 137
|
||||||
script = ExtResource("1_jdal0")
|
script = ExtResource("1_jdal0")
|
||||||
_animation = NodePath("Animation")
|
_animation = NodePath("Animation")
|
||||||
_sprite2d = NodePath("Texture")
|
_sprite2d = NodePath("Texture")
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bg2dqq8ebhkjs
|
||||||
|
|
@ -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!")
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://jqtagkf51o2
|
||||||
|
|
@ -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://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"]
|
[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://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://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="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"]
|
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_qnvmo"]
|
||||||
resource_name = "water"
|
resource_name = "water"
|
||||||
|
|
@ -229,8 +231,8 @@ physics_layer_0/collision_layer = 2
|
||||||
physics_layer_0/collision_mask = 2
|
physics_layer_0/collision_mask = 2
|
||||||
sources/0 = SubResource("TileSetAtlasSource_ms6ml")
|
sources/0 = SubResource("TileSetAtlasSource_ms6ml")
|
||||||
|
|
||||||
[sub_resource type="ConvexPolygonShape2D" id="ConvexPolygonShape2D_v8sh6"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6bbuc"]
|
||||||
points = PackedVector2Array(0, 0)
|
size = Vector2(1152, 150)
|
||||||
|
|
||||||
[node name="TerrainManager" type="Node2D"]
|
[node name="TerrainManager" type="Node2D"]
|
||||||
|
|
||||||
|
|
@ -280,24 +282,34 @@ tile_set = SubResource("TileSet_osja2")
|
||||||
tile_map_data = PackedByteArray("AAALAAkAAAAAAAAAAAAOAAkAAAACAAAAAAAUAAoAAAACAAAAAAAUAAwAAAACAAIAAAARAAwAAAAAAAIAAAALAAsAAAAAAAIAAAALAAoAAAAAAAEAAAAMAAkAAAABAAAAAAANAAkAAAABAAAAAAAPAAoAAAABAAAAAAAQAAoAAAABAAAAAAARAAoAAAABAAAAAAASAAoAAAABAAAAAAATAAoAAAABAAAAAAASAAwAAAABAAIAAAATAAwAAAABAAIAAAAUAAsAAAACAAEAAAAMAAsAAAABAAIAAAANAAsAAAABAAIAAAAOAAsAAAABAAIAAAAPAAsAAAABAAIAAAAQAAsAAAABAAIAAAAMAAoAAAABAAEAAAANAAoAAAABAAEAAAAOAAoAAAABAAEAAAARAAsAAAABAAEAAAASAAsAAAABAAEAAAATAAsAAAABAAEAAAA=")
|
tile_map_data = PackedByteArray("AAALAAkAAAAAAAAAAAAOAAkAAAACAAAAAAAUAAoAAAACAAAAAAAUAAwAAAACAAIAAAARAAwAAAAAAAIAAAALAAsAAAAAAAIAAAALAAoAAAAAAAEAAAAMAAkAAAABAAAAAAANAAkAAAABAAAAAAAPAAoAAAABAAAAAAAQAAoAAAABAAAAAAARAAoAAAABAAAAAAASAAoAAAABAAAAAAATAAoAAAABAAAAAAASAAwAAAABAAIAAAATAAwAAAABAAIAAAAUAAsAAAACAAEAAAAMAAsAAAABAAIAAAANAAsAAAABAAIAAAAOAAsAAAABAAIAAAAPAAsAAAABAAIAAAAQAAsAAAABAAIAAAAMAAoAAAABAAEAAAANAAoAAAABAAEAAAAOAAoAAAABAAEAAAARAAsAAAABAAEAAAASAAsAAAABAAEAAAATAAsAAAABAAEAAAA=")
|
||||||
tile_set = SubResource("TileSet_pko0k")
|
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_map_data = PackedByteArray("AAAWAAsAAAAAAAAAAAAXAAsAAAABAAAAAAAYAAsAAAABAAAAAAAZAAsAAAABAAAAAAAaAAsAAAABAAAAAAAbAAsAAAABAAAAAAAcAAsAAAABAAAAAAAdAAsAAAABAAAAAAAeAAsAAAABAAAAAAAfAAsAAAABAAAAAAAgAAsAAAABAAAAAAAhAAsAAAABAAAAAAAiAAsAAAABAAAAAAAjAAsAAAABAAAAAAAkAAsAAAABAAAAAAAlAAsAAAABAAAAAAAmAAsAAAABAAAAAAAnAAsAAAABAAAAAAAoAAsAAAABAAAAAAApAAsAAAACAAAAAAA=")
|
||||||
tile_set = SubResource("TileSet_3cg8g")
|
tile_set = SubResource("TileSet_3cg8g")
|
||||||
collision_visibility_mode = 1
|
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)
|
position = Vector2(1459, 730)
|
||||||
collision_layer = 8
|
collision_layer = 8
|
||||||
collision_mask = 8
|
collision_mask = 8
|
||||||
script = ExtResource("11_oe1b3")
|
script = ExtResource("11_oe1b3")
|
||||||
|
|
||||||
[node name="Collision_old" type="CollisionShape2D" parent="Bridge/BridgeArea"]
|
[node name="OnBridgeCollision" type="CollisionPolygon2D" parent="Bridge/OnBridgeArea"]
|
||||||
position = Vector2(591.5, 6)
|
|
||||||
shape = SubResource("ConvexPolygonShape2D_v8sh6")
|
|
||||||
|
|
||||||
[node name="Collision" type="CollisionPolygon2D" parent="Bridge/BridgeArea"]
|
|
||||||
position = Vector2(-13.6208, -5.48883)
|
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)
|
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"]
|
[node name="BellowBridgeArea" type="Area2D" parent="Bridge"]
|
||||||
[connection signal="body_exited" from="Bridge/BridgeArea" to="Bridge/BridgeArea" method="_on_body_exited"]
|
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"]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue