Door connections
This commit is contained in:
parent
c613eac80f
commit
0143c01c1e
|
@ -7,7 +7,6 @@ var active = true
|
||||||
|
|
||||||
|
|
||||||
func _on_Door_body_entered(player):
|
func _on_Door_body_entered(player):
|
||||||
print("hit door")
|
|
||||||
if active:
|
if active:
|
||||||
player.emit_signal("his_door", self)
|
player.emit_signal("hit_door", self)
|
||||||
active = false
|
active = false
|
||||||
|
|
|
@ -13,10 +13,11 @@ collision_layer = 0
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
[node name="Collider" type="CollisionShape2D" parent="."]
|
[node name="Collider" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2( 16, 0 )
|
||||||
shape = SubResource( 1 )
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="."]
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
position = Vector2( -6, 0 )
|
position = Vector2( 10, 0 )
|
||||||
texture = ExtResource( 1 )
|
texture = ExtResource( 1 )
|
||||||
|
|
||||||
[connection signal="body_entered" from="." to="." method="_on_Door_body_entered"]
|
[connection signal="body_entered" from="." to="." method="_on_Door_body_entered"]
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[gd_resource type="Resource" format=2]
|
||||||
|
|
||||||
|
[resource]
|
|
@ -1,7 +1,8 @@
|
||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://Levels/Level.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://Levels/Level.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://Levels/Door.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://Levels/Door.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://Levels/DoorConnections/00_link_01.tres" type="Resource" id=3]
|
||||||
|
|
||||||
[node name="Level_00" instance=ExtResource( 1 )]
|
[node name="Level_00" instance=ExtResource( 1 )]
|
||||||
|
|
||||||
|
@ -9,4 +10,6 @@
|
||||||
tile_data = PoolIntArray( 0, 0, 4, 1, 0, 196609, 2, 0, 196609, 3, 0, 196609, 4, 0, 196609, 5, 0, 196609, 6, 0, 196609, 7, 0, 196609, 8, 0, 196609, 9, 0, 196609, 10, 0, 196609, 11, 0, 196609, 12, 0, 196609, 13, 0, 196609, 14, 0, 196609, 15, 0, 196609, 16, 0, 196609, 17, 0, 196609, 18, 0, 196609, 19, 0, 7, 65536, 0, 65539, 65555, 0, 65539, 131072, 0, 65539, 131091, 0, 65539, 196608, 0, 65539, 196627, 0, 65539, 262144, 0, 65539, 262163, 0, 65539, 327680, 0, 65539, 327699, 0, 65539, 393216, 0, 65539, 393235, 0, 65539, 458752, 0, 65539, 458771, 0, 131075, 524288, 0, 65539, 589824, 0, 65539, 655360, 0, 196612, 655361, 0, 196609, 655362, 0, 196609, 655363, 0, 196609, 655364, 0, 196609, 655365, 0, 196609, 655366, 0, 196609, 655367, 0, 196609, 655368, 0, 196609, 655369, 0, 196609, 655370, 0, 196609, 655371, 0, 196609, 655372, 0, 196609, 655373, 0, 196609, 655374, 0, 196609, 655375, 0, 196609, 655376, 0, 196609, 655377, 0, 196609, 655378, 0, 196609, 655379, 0, 196610 )
|
tile_data = PoolIntArray( 0, 0, 4, 1, 0, 196609, 2, 0, 196609, 3, 0, 196609, 4, 0, 196609, 5, 0, 196609, 6, 0, 196609, 7, 0, 196609, 8, 0, 196609, 9, 0, 196609, 10, 0, 196609, 11, 0, 196609, 12, 0, 196609, 13, 0, 196609, 14, 0, 196609, 15, 0, 196609, 16, 0, 196609, 17, 0, 196609, 18, 0, 196609, 19, 0, 7, 65536, 0, 65539, 65555, 0, 65539, 131072, 0, 65539, 131091, 0, 65539, 196608, 0, 65539, 196627, 0, 65539, 262144, 0, 65539, 262163, 0, 65539, 327680, 0, 65539, 327699, 0, 65539, 393216, 0, 65539, 393235, 0, 65539, 458752, 0, 65539, 458771, 0, 131075, 524288, 0, 65539, 589824, 0, 65539, 655360, 0, 196612, 655361, 0, 196609, 655362, 0, 196609, 655363, 0, 196609, 655364, 0, 196609, 655365, 0, 196609, 655366, 0, 196609, 655367, 0, 196609, 655368, 0, 196609, 655369, 0, 196609, 655370, 0, 196609, 655371, 0, 196609, 655372, 0, 196609, 655373, 0, 196609, 655374, 0, 196609, 655375, 0, 196609, 655376, 0, 196609, 655377, 0, 196609, 655378, 0, 196609, 655379, 0, 196610 )
|
||||||
|
|
||||||
[node name="Door" parent="." index="1" instance=ExtResource( 2 )]
|
[node name="Door" parent="." index="1" instance=ExtResource( 2 )]
|
||||||
position = Vector2( 320, 144 )
|
position = Vector2( 312, 144 )
|
||||||
|
connection = ExtResource( 3 )
|
||||||
|
new_level_path = "res://Levels/Level_01.tscn"
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://Levels/Door.tscn" type="PackedScene" id=1]
|
||||||
|
[ext_resource path="res://Levels/Level.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://Levels/DoorConnections/00_link_01.tres" type="Resource" id=3]
|
||||||
|
|
||||||
|
[node name="Level_01" instance=ExtResource( 2 )]
|
||||||
|
|
||||||
|
[node name="TileMap" parent="." index="0"]
|
||||||
|
tile_data = PoolIntArray( 393216, 0, 4, 393217, 0, 196609, 393218, 0, 196609, 393219, 0, 196609, 393220, 0, 196609, 393221, 0, 7, 458752, 0, 131075, 458757, 0, 131075, 655360, 0, 196608, 655361, 0, 196609, 655362, 0, 196609, 655363, 0, 196609, 655364, 0, 196609, 655365, 0, 196610 )
|
||||||
|
|
||||||
|
[node name="InDoor" parent="." index="1" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( 8, 144 )
|
||||||
|
scale = Vector2( -1, 1 )
|
||||||
|
connection = ExtResource( 3 )
|
||||||
|
new_level_path = "res://Levels/Level_00.tscn"
|
|
@ -1,6 +1,33 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
var MainInstances = ResourceLoader.MainInstances
|
||||||
|
|
||||||
onready var currentLevel = $Level_00
|
onready var currentLevel = $Level_00
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
VisualServer.set_default_clear_color(Color.black)
|
VisualServer.set_default_clear_color(Color.black)
|
||||||
|
MainInstances.Player.connect("hit_door", self, "_on_Player_hit_door")
|
||||||
|
|
||||||
|
func _on_Player_hit_door(door):
|
||||||
|
# Executes the function after the current tick of the game is done, to make
|
||||||
|
# sure everything is ready to be switched since we're doing calculations
|
||||||
|
# based on the current level
|
||||||
|
call_deferred("change_levels", door)
|
||||||
|
|
||||||
|
func change_levels(door):
|
||||||
|
var offset = currentLevel.position
|
||||||
|
currentLevel.queue_free()
|
||||||
|
var NewLevel = load(door.new_level_path)
|
||||||
|
var newLevel = NewLevel.instance()
|
||||||
|
add_child(newLevel)
|
||||||
|
var newDoor = get_door_with_connection(door)
|
||||||
|
var exit_position = newDoor.position - offset
|
||||||
|
newLevel.position = door.position - exit_position
|
||||||
|
|
||||||
|
func get_door_with_connection(outgoingDoor):
|
||||||
|
var doors = get_tree().get_nodes_in_group("Door")
|
||||||
|
for door in doors:
|
||||||
|
if door.connection == outgoingDoor.connection and door != outgoingDoor:
|
||||||
|
return door
|
||||||
|
|
||||||
|
return null
|
||||||
|
|
Loading…
Reference in New Issue