niveau: avoir des niveaux indépendants
Il est maintenant possible d'avoir des niveaux indépendants et de switcher de l'un à l'autre en utilisant une porte. La porte doit indiquer le nom du niveau suivant et ensuite dans game.gd un mapping statique permet de passer d'un niveau à l'autre. Les limitations actuelles et la todo liste: - La princesse spawn toujours au même endroit, elle devrait spawner par la porte qui l'a fait venir et bien sur dans la carte pas dans le vide à côté. - On perds l'état du niveau quand on meurt, il faut que ça change dans le futur, c'est pas préssé ceci dit. - Le niveau devrait s'inscire automatiquement à l'événement de mort de la princesse pour pas oublier de le faire à chaque fois. En tout cas, ce chantier va permettre de travailler des niveaux indépendament les uns des autres et paralléliser si on veut être plusieurs à tweaker en parallèle.
This commit is contained in:
40
game.gd
40
game.gd
@@ -1,20 +1,38 @@
|
||||
extends Node
|
||||
class_name Game extends Node
|
||||
|
||||
@onready var transition_shader := $"TransitionShader"
|
||||
@onready var princesse := $"level/Princesse"
|
||||
|
||||
var current_scene : Node
|
||||
var level0 = preload("res://levels/level_0.tscn")
|
||||
var level1 = preload("res://levels/level_1.tscn")
|
||||
|
||||
var scene_name = "level_0"
|
||||
var current_scence
|
||||
var prev_scene
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
_on_transition_shader_fade_in_done()
|
||||
go_to(scene_name)
|
||||
|
||||
func reload_current_scene() -> void:
|
||||
go_to(scene_name)
|
||||
|
||||
func _on_transition_shader_fade_in_done() -> void:
|
||||
princesse.go_play()
|
||||
func enter_door(destination):
|
||||
call_deferred("go_to", destination)
|
||||
|
||||
func go_to(destination):
|
||||
if current_scence:
|
||||
remove_child(current_scence)
|
||||
|
||||
func _on_princesse_princesse_is_dead() -> void:
|
||||
_on_transition_shader_fade_out_done()
|
||||
if destination == "level_1":
|
||||
current_scence = level1.instantiate()
|
||||
scene_name = "level_1"
|
||||
elif destination == "level_0":
|
||||
current_scence = level0.instantiate()
|
||||
scene_name = "level_0"
|
||||
|
||||
|
||||
func _on_transition_shader_fade_out_done() -> void:
|
||||
get_tree(). reload_current_scene()
|
||||
current_scence.connect("reload_me", reload_current_scene, ConnectFlags.CONNECT_ONE_SHOT)
|
||||
var doors :Node = current_scence.find_child("Doors")
|
||||
if doors:
|
||||
for door in doors.get_children():
|
||||
door.connect("door_openned", enter_door, ConnectFlags.CONNECT_ONE_SHOT)
|
||||
add_child(current_scence)
|
||||
|
||||
16
game.tscn
16
game.tscn
@@ -1,20 +1,6 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://dn0b30kvaeasf"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://dn0b30kvaeasf"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cfou80f4ng1q0" path="res://levels/level_test_1.tscn" id="1_qv57y"]
|
||||
[ext_resource type="Script" path="res://game.gd" id="1_yny56"]
|
||||
[ext_resource type="PackedScene" uid="uid://dv0mokf4eogm7" path="res://princesse.tscn" id="2_0ku48"]
|
||||
|
||||
[node name="game" type="Node"]
|
||||
script = ExtResource("1_yny56")
|
||||
|
||||
[node name="level" parent="." instance=ExtResource("1_qv57y")]
|
||||
light_mask = 1
|
||||
visibility_layer = 1
|
||||
position = Vector2(1, 10)
|
||||
|
||||
[node name="Princesse" parent="level" instance=ExtResource("2_0ku48")]
|
||||
position = Vector2(-137, -46)
|
||||
scale = Vector2(0.6, 0.6)
|
||||
collision_mask = 112
|
||||
|
||||
[connection signal="princesse_is_dead" from="level/Princesse" to="." method="_on_princesse_princesse_is_dead"]
|
||||
|
||||
10
items/door.gd
Normal file
10
items/door.gd
Normal file
@@ -0,0 +1,10 @@
|
||||
extends Area2D
|
||||
|
||||
@export var destination := ""
|
||||
signal door_openned(where)
|
||||
var openned = false
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if not openned:
|
||||
openned = true
|
||||
door_openned.emit(destination)
|
||||
16
items/door.tscn
Normal file
16
items/door.tscn
Normal file
@@ -0,0 +1,16 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://4pdhps0lgy4o"]
|
||||
|
||||
[ext_resource type="Script" path="res://items/door.gd" id="1_6vj5d"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_n7rh8"]
|
||||
size = Vector2(9.875, 26)
|
||||
|
||||
[node name="Door" type="Area2D"]
|
||||
collision_layer = 128
|
||||
script = ExtResource("1_6vj5d")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(-1.0625, -2)
|
||||
shape = SubResource("RectangleShape2D_n7rh8")
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
19
levels/level.gd
Normal file
19
levels/level.gd
Normal file
@@ -0,0 +1,19 @@
|
||||
extends Node2D
|
||||
|
||||
signal reload_me()
|
||||
|
||||
@onready var map := $TileMap as TileMap
|
||||
@onready var cam := $Princesse/Camera2D as Camera2D
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var limits:Rect2 = map.get_used_rect()
|
||||
var size = map.cell_quadrant_size
|
||||
cam.limit_left = limits.position.x * size
|
||||
cam.limit_top = limits.position.y * size
|
||||
cam.limit_right = limits.end.x * size
|
||||
cam.limit_bottom = limits.end.y * size
|
||||
|
||||
|
||||
func _on_princesse_princesse_is_dead() -> void:
|
||||
reload_me.emit()
|
||||
29
levels/level_0.tscn
Normal file
29
levels/level_0.tscn
Normal file
File diff suppressed because one or more lines are too long
25
levels/level_1.tscn
Normal file
25
levels/level_1.tscn
Normal file
@@ -0,0 +1,25 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bmupdjkqacbt6"]
|
||||
|
||||
[ext_resource type="Script" path="res://levels/level.gd" id="1_ree4a"]
|
||||
[ext_resource type="TileSet" uid="uid://cx4160r6lbeb3" path="res://levels/global_tileset.tres" id="1_sdkpd"]
|
||||
[ext_resource type="PackedScene" uid="uid://dv0mokf4eogm7" path="res://princesse.tscn" id="2_p75ky"]
|
||||
[ext_resource type="PackedScene" uid="uid://4pdhps0lgy4o" path="res://items/door.tscn" id="4_mk1ik"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource("1_ree4a")
|
||||
|
||||
[node name="TileMap" type="TileMap" parent="."]
|
||||
tile_set = ExtResource("1_sdkpd")
|
||||
format = 2
|
||||
layer_0/tile_data = PackedInt32Array(196605, 262145, 2, 196606, 262145, 2, 196607, 196609, 2, 131072, 196609, 2, 131073, 196609, 2, 131074, 262145, 2, 131075, 196609, 2, 131076, 262145, 2, 131077, 196609, 2, 131078, 262145, 2, 131079, 196609, 2, 131080, 262145, 2, 131081, 196609, 2, 131082, 262145, 2, 131083, 196609, 2, 131084, 196609, 2, 196594, 196609, 2, 196595, 262145, 2, 196596, 196609, 2, 196597, 262145, 2, 196598, 196609, 2, 196599, 262145, 2, 196600, 196609, 2, 196601, 262145, 2, 196602, 196609, 2, 196603, 262145, 2, 196604, 196609, 2, 131085, 262145, 2, 131086, 196609, 2, 131087, 262145, 2, 131088, 196609, 2, 131089, 262145, 2, 131090, 196609, 2, 131091, 262145, 2, 131092, 196609, 2, 131093, 262145, 2, 131094, 196609, 2, 131095, 262145, 2, 131096, 196609, 2, 131097, 262145, 2, 131057, 131073, 1, 196593, 65537, 4, 131098, 65537, 4, 65562, 1, 1, 65521, 131073, 1, -15, 131073, 1, -65551, 131073, 1, -131087, 131073, 1, -196623, 131073, 1, -262159, 131073, 1, -327695, 131073, 1, -393231, 131073, 1, -458767, 131073, 1, -524303, 131073, 1, -589839, 131073, 1, -655375, 131073, 1, -720911, 131073, 1, -786447, 131073, 1, -851983, 131073, 1, -917519, 65537, 5, -983055, 65537, 0, -1179663, 65537, 1, -1245199, 65537, 1, -1310735, 65537, 1, -1376270, 65537, 1, -1376269, 65537, 1, -1376268, 65537, 1, -1376267, 65537, 2, -1376266, 65537, 2, -1376265, 65537, 2, -1376264, 65537, 2, -1376263, 65537, 2, -1376262, 65537, 2, -1376261, 65537, 2, -1376260, 65537, 2, -1376259, 65537, 2, -1376258, 65537, 2, -1376257, 65537, 2, -1441792, 65537, 2, -1441791, 65537, 2, -1441790, 65537, 2, -1441789, 65537, 2, -1441788, 65537, 2, -1441787, 65537, 2, -1441786, 65537, 2, -1441785, 65537, 2, -1441784, 65537, 2, -1441783, 65537, 2, -1441782, 65537, 2, -1441781, 65537, 2, -1441780, 65537, 2, -1441779, 65537, 2, -1441778, 65537, 2, -1441777, 65537, 2, -1441776, 65537, 2, -1441775, 65537, 2, -1441774, 65537, 2, -1441773, 65537, 2, -1441772, 65537, 2, -1441771, 65537, 2, -1441770, 65537, 2, -1441769, 65537, 2, -1441768, 65537, 2, -1441767, 65537, 2, -1441766, 65537, 4, 26, 1, 1, -65510, 1, 1, -131046, 1, 1, -196582, 1, 1, -262118, 1, 1, -327654, 1, 1, -393190, 1, 1, -458726, 1, 1, -524262, 1, 1, -589798, 1, 1, -655334, 1, 1, -720870, 1, 1, -786406, 1, 1, -851942, 1, 1, -917478, 1, 1, -983014, 1, 1, -1048550, 1, 1, -1114086, 1, 1, -1179622, 1, 1, -1245158, 1, 1, -1310694, 1, 1, -1376230, 1, 1, -1376271, 65537, 1, 131058, 196610, 5, 131059, 262146, 5, 131060, 327682, 5, 131061, 393218, 5, 131062, 196610, 5, 131063, 262146, 5, 131064, 327682, 5, 131065, 196610, 5, 131066, 262146, 5, 131067, 327682, 5, 131068, 393218, 5, 65539, 196610, 5, 65540, 262146, 5, 65541, 327682, 5, 65542, 393218, 5, 65543, 196610, 5, 65544, 262146, 5, 65545, 327682, 5, 65546, 393218, 5, 65547, 196610, 5, 65548, 262146, 5, 65549, 327682, 5, 65550, 393218, 5, 65551, 196610, 5, 65552, 262146, 5, 65553, 327682, 5, 65554, 393218, 5, 65555, 196610, 5, 65556, 262146, 5, 65557, 327682, 5, 65558, 393218, 5, 65559, 196610, 5, 65560, 262146, 5, 65561, 327682, 5, -983054, 65537, 0, -983053, 65537, 0, -983052, 65537, 0, -983051, 65537, 0, -983050, 65537, 0, -983049, 65537, 0, -983048, 65537, 0, -983047, 65537, 0, -983046, 65537, 0, -983045, 65537, 0, -983044, 65537, 0, -983043, 65537, 0, -983042, 65537, 0, -983041, 65537, 0, -1048576, 65537, 0, -1048575, 65537, 0, -1048574, 65537, 0, -1048573, 65537, 0, -1048572, 65537, 0, -917518, 65537, 5, -917517, 65537, 5, -917516, 65537, 5, -917515, 65537, 5, -917514, 65537, 5, -917513, 65537, 5, -917512, 65537, 5, -917511, 65537, 5, -917510, 65537, 5, -917509, 65537, 5, -917508, 65537, 5, -917507, 65537, 5, -917506, 65537, 5, -917505, 65537, 5, -983040, 65537, 5, -983039, 65537, 5, -983038, 65537, 5, -983037, 65537, 5, -983036, 65537, 5, -1048571, 262145, 0, -983035, 262145, 1, -1179662, 131073, 5, -1245197, 131073, 5, -1310732, 131073, 5, -1310734, 65537, 1, -1310733, 65537, 1, -1245198, 65537, 1)
|
||||
|
||||
[node name="Princesse" parent="." instance=ExtResource("2_p75ky")]
|
||||
position = Vector2(-232, -272)
|
||||
|
||||
[node name="Doors" type="Node" parent="."]
|
||||
|
||||
[node name="Door" parent="Doors" instance=ExtResource("4_mk1ik")]
|
||||
position = Vector2(-244, -267)
|
||||
destination = "level_0"
|
||||
|
||||
[connection signal="princesse_is_dead" from="Princesse" to="." method="_on_princesse_princesse_is_dead"]
|
||||
@@ -1,7 +1,8 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cfou80f4ng1q0"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cfou80f4ng1q0"]
|
||||
|
||||
[ext_resource type="TileSet" uid="uid://cx4160r6lbeb3" path="res://levels/global_tileset.tres" id="1_u82x8"]
|
||||
[ext_resource type="PackedScene" uid="uid://bfff6uggijk4k" path="res://items/fromage_normal.tscn" id="3_3jwuu"]
|
||||
[ext_resource type="PackedScene" uid="uid://dv0mokf4eogm7" path="res://princesse.tscn" id="3_cfovy"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
light_mask = 3
|
||||
@@ -80,3 +81,6 @@ position = Vector2(956, 427)
|
||||
|
||||
[node name="Fromage normal12" parent="Node" instance=ExtResource("3_3jwuu")]
|
||||
position = Vector2(999, -136)
|
||||
|
||||
[node name="Princesse" parent="." instance=ExtResource("3_cfovy")]
|
||||
position = Vector2(-238, -7)
|
||||
|
||||
@@ -483,7 +483,7 @@ func death() -> void:
|
||||
dead = true
|
||||
death_animation.play(&"death")
|
||||
|
||||
func go_play():
|
||||
func _ready():
|
||||
locked = false
|
||||
dead = false
|
||||
|
||||
|
||||
@@ -257,10 +257,12 @@ fill = 1
|
||||
fill_from = Vector2(0.5, 0.5)
|
||||
|
||||
[node name="Princesse" type="CharacterBody2D"]
|
||||
collision_mask = 113
|
||||
scale = Vector2(0.6, 0.6)
|
||||
collision_mask = 241
|
||||
slide_on_ceiling = false
|
||||
floor_constant_speed = true
|
||||
script = ExtResource("1_dkp7s")
|
||||
JUMPING_SPEED = 230
|
||||
KICK_JUMP_LIMITER = 0.7
|
||||
COYOTE_LENGTH = 5
|
||||
WALK_INCR_AIR = 4
|
||||
@@ -297,7 +299,7 @@ libraries = {
|
||||
|
||||
[node name="vignetting" type="PointLight2D" parent="."]
|
||||
position = Vector2(0, -12)
|
||||
scale = Vector2(0.79275, 0.765625)
|
||||
scale = Vector2(0.5, 0.483)
|
||||
energy = 1.8
|
||||
blend_mode = 1
|
||||
texture = SubResource("GradientTexture2D_t1uxd")
|
||||
|
||||
Reference in New Issue
Block a user