Door connections
This commit is contained in:
parent
c613eac80f
commit
0143c01c1e
|
@ -7,7 +7,6 @@ var active = true
|
|||
|
||||
|
||||
func _on_Door_body_entered(player):
|
||||
print("hit door")
|
||||
if active:
|
||||
player.emit_signal("his_door", self)
|
||||
player.emit_signal("hit_door", self)
|
||||
active = false
|
||||
|
|
|
@ -13,10 +13,11 @@ collision_layer = 0
|
|||
script = ExtResource( 2 )
|
||||
|
||||
[node name="Collider" type="CollisionShape2D" parent="."]
|
||||
position = Vector2( 16, 0 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
position = Vector2( -6, 0 )
|
||||
position = Vector2( 10, 0 )
|
||||
texture = ExtResource( 1 )
|
||||
|
||||
[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/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 )]
|
||||
|
||||
|
@ -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 )
|
||||
|
||||
[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
|
||||
|
||||
var MainInstances = ResourceLoader.MainInstances
|
||||
|
||||
onready var currentLevel = $Level_00
|
||||
|
||||
func _ready():
|
||||
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