more work on level system
This commit is contained in:
parent
b19ee682d1
commit
dd54e286d8
13 changed files with 219 additions and 71 deletions
|
@ -2,3 +2,61 @@ extends Node
|
||||||
|
|
||||||
|
|
||||||
@export var level_sets: Array[LevelSet] = []
|
@export var level_sets: Array[LevelSet] = []
|
||||||
|
|
||||||
|
|
||||||
|
var current_set_index: int = 0
|
||||||
|
var current_level_index: int = 0
|
||||||
|
|
||||||
|
var current_set: LevelSet:
|
||||||
|
get():
|
||||||
|
return level_sets[current_set_index]
|
||||||
|
|
||||||
|
var current_level: LevelInfo:
|
||||||
|
get():
|
||||||
|
return current_set.levels[current_level_index]
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
SceneManager.current_scene_changed.connect(_on_current_scene_changed)
|
||||||
|
|
||||||
|
|
||||||
|
func get_level(set_idx: int, level_idx: int) -> LevelInfo:
|
||||||
|
if set_idx >= level_sets.size():
|
||||||
|
return null
|
||||||
|
var lvl_set = level_sets[set_idx]
|
||||||
|
if level_idx >= lvl_set.levels.size():
|
||||||
|
return null
|
||||||
|
return lvl_set.levels[level_idx]
|
||||||
|
|
||||||
|
|
||||||
|
func advance_level() -> void:
|
||||||
|
var next_idx = current_level_index + 1
|
||||||
|
|
||||||
|
# change scene to end-of-set scene if it is reached
|
||||||
|
if next_idx >= current_set.levels.size():
|
||||||
|
SceneManager.current_scene = current_set.end_scene.instantiate()
|
||||||
|
return
|
||||||
|
|
||||||
|
var level_info = current_set.levels[next_idx]
|
||||||
|
var level = load(level_info.scene_path) as PackedScene
|
||||||
|
if level:
|
||||||
|
SceneManager.current_scene = level.instantiate()
|
||||||
|
|
||||||
|
func _detect_current_level() -> void:
|
||||||
|
if not SceneManager.current_scene is Level:
|
||||||
|
current_set_index = -1
|
||||||
|
current_level_index = -1
|
||||||
|
return
|
||||||
|
|
||||||
|
for idx_set in level_sets.size():
|
||||||
|
var level_set = level_sets[idx_set]
|
||||||
|
for idx_lvl in level_set.levels.size():
|
||||||
|
var level = level_set.levels[idx_lvl]
|
||||||
|
if level.scene_path == SceneManager.current_scene.scene_file_path:
|
||||||
|
current_set_index = idx_set
|
||||||
|
current_level_index = idx_lvl
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
func _on_current_scene_changed(_new_scene: Node) -> void:
|
||||||
|
_detect_current_level()
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://dbqsgks307bto"]
|
[gd_scene load_steps=4 format=3 uid="uid://dbqsgks307bto"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://4na03iques5r" path="res://autoloads/levels.gd" id="1_b8434"]
|
[ext_resource type="Script" uid="uid://4na03iques5r" path="res://autoloads/levels.gd" id="1_b8434"]
|
||||||
|
[ext_resource type="Script" uid="uid://dak8il8fxqyph" path="res://scripts/level/level_set.gd" id="2_ebfuu"]
|
||||||
|
[ext_resource type="Resource" uid="uid://g36wkssommtr" path="res://maps/descent.tres" id="3_hgsu8"]
|
||||||
|
|
||||||
[node name="Levels" type="Node"]
|
[node name="Levels" type="Node"]
|
||||||
script = ExtResource("1_b8434")
|
script = ExtResource("1_b8434")
|
||||||
|
level_sets = Array[ExtResource("2_ebfuu")]([ExtResource("3_hgsu8")])
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
|
## Emitted when the current scene is changed.
|
||||||
|
signal current_scene_changed(new_scene: Node)
|
||||||
|
|
||||||
|
|
||||||
## Methods of scaling the game viewport.
|
## Methods of scaling the game viewport.
|
||||||
enum ScaleMode {
|
enum ScaleMode {
|
||||||
## Maintain aspect ratio and scale by highest whole number that will fit within the screen.
|
## Maintain aspect ratio and scale by highest whole number that will fit within the screen.
|
||||||
|
@ -46,6 +50,7 @@ var current_scene: Node:
|
||||||
new_scene.get_parent().remove_child.call_deferred(new_scene)
|
new_scene.get_parent().remove_child.call_deferred(new_scene)
|
||||||
viewport.add_child.call_deferred(new_scene)
|
viewport.add_child.call_deferred(new_scene)
|
||||||
current_scene = new_scene
|
current_scene = new_scene
|
||||||
|
current_scene_changed.emit(new_scene)
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
|
@ -4,6 +4,57 @@
|
||||||
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="2_3lnes"]
|
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="2_3lnes"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dp7tqt5uocg0g" path="res://assets/audio/sfx/talking.ogg" id="3_3lnes"]
|
[ext_resource type="AudioStream" uid="uid://dp7tqt5uocg0g" path="res://assets/audio/sfx/talking.ogg" id="3_3lnes"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_edpvw"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Label:position")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(7, 6)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Label2:position")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(169, 186)]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("ColorRect:color")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0, 0, 0, 1)]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("AudioStreamPlayer:playing")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_5wwpe"]
|
[sub_resource type="Animation" id="Animation_5wwpe"]
|
||||||
resource_name = "fade"
|
resource_name = "fade"
|
||||||
length = 6.0
|
length = 6.0
|
||||||
|
@ -71,57 +122,6 @@ tracks/4/keys = {
|
||||||
"values": [true]
|
"values": [true]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_edpvw"]
|
|
||||||
length = 0.001
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath("Label:position")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector2(7, 6)]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("Label2:position")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector2(169, 186)]
|
|
||||||
}
|
|
||||||
tracks/2/type = "value"
|
|
||||||
tracks/2/imported = false
|
|
||||||
tracks/2/enabled = true
|
|
||||||
tracks/2/path = NodePath("ColorRect:color")
|
|
||||||
tracks/2/interp = 1
|
|
||||||
tracks/2/loop_wrap = true
|
|
||||||
tracks/2/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Color(0, 0, 0, 1)]
|
|
||||||
}
|
|
||||||
tracks/3/type = "value"
|
|
||||||
tracks/3/imported = false
|
|
||||||
tracks/3/enabled = true
|
|
||||||
tracks/3/path = NodePath("AudioStreamPlayer:playing")
|
|
||||||
tracks/3/interp = 1
|
|
||||||
tracks/3/loop_wrap = true
|
|
||||||
tracks/3/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [false]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_iw1oc"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_iw1oc"]
|
||||||
_data = {
|
_data = {
|
||||||
&"RESET": SubResource("Animation_edpvw"),
|
&"RESET": SubResource("Animation_edpvw"),
|
||||||
|
@ -141,9 +141,9 @@ position = Vector2(144, 108)
|
||||||
texture = ExtResource("1_edpvw")
|
texture = ExtResource("1_edpvw")
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="."]
|
[node name="Label" type="Label" parent="."]
|
||||||
offset_left = -126.41
|
offset_left = 7.0
|
||||||
offset_top = 6.0
|
offset_top = 6.0
|
||||||
offset_right = -14.41
|
offset_right = 119.0
|
||||||
offset_bottom = 29.0
|
offset_bottom = 29.0
|
||||||
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||||
theme_override_constants/shadow_outline_size = 8
|
theme_override_constants/shadow_outline_size = 8
|
||||||
|
@ -152,9 +152,9 @@ theme_override_font_sizes/font_size = 16
|
||||||
text = "WORLD 1"
|
text = "WORLD 1"
|
||||||
|
|
||||||
[node name="Label2" type="Label" parent="."]
|
[node name="Label2" type="Label" parent="."]
|
||||||
offset_left = 295.0
|
offset_left = 169.0
|
||||||
offset_top = 186.0
|
offset_top = 186.0
|
||||||
offset_right = 407.0
|
offset_right = 281.0
|
||||||
offset_bottom = 209.0
|
offset_bottom = 209.0
|
||||||
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||||
theme_override_constants/shadow_outline_size = 8
|
theme_override_constants/shadow_outline_size = 8
|
||||||
|
|
57
maps/descent.tres
Normal file
57
maps/descent.tres
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
[gd_resource type="Resource" script_class="LevelSet" load_steps=10 format=3 uid="uid://g36wkssommtr"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://d3hlv706rwapg" path="res://scripts/level/level_info.gd" id="1_47duy"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bbnq7ptk8hhxa" path="res://maps/level1.tscn" id="1_d6k11"]
|
||||||
|
[ext_resource type="Script" uid="uid://dak8il8fxqyph" path="res://scripts/level/level_set.gd" id="2_f3ju2"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bt3mxr1j3qyul" path="res://cutscenes/world1_cut.tscn" id="4_i5ovp"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_d6k11"]
|
||||||
|
resource_name = "Obligatory Tutorial Level"
|
||||||
|
script = ExtResource("1_47duy")
|
||||||
|
title = "Obligatory Tutorial Level"
|
||||||
|
id = "tutorial"
|
||||||
|
order = 0
|
||||||
|
scene_path = "res://maps/descent/tutorial.tscn"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_i5ovp"]
|
||||||
|
resource_name = "Yikes! Spikes!"
|
||||||
|
script = ExtResource("1_47duy")
|
||||||
|
title = "Yikes! Spikes!"
|
||||||
|
id = "spikes"
|
||||||
|
order = 1
|
||||||
|
scene_path = "res://maps/descent/yikes_spikes.tscn"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_p1poa"]
|
||||||
|
resource_name = "Yikes! More Spikes!"
|
||||||
|
script = ExtResource("1_47duy")
|
||||||
|
title = "Yikes! More Spikes!"
|
||||||
|
id = "more-spikes"
|
||||||
|
order = 2
|
||||||
|
scene_path = "res://maps/descent/yikes_more_spikes.tscn"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_sgm6x"]
|
||||||
|
resource_name = "Spring Time!"
|
||||||
|
script = ExtResource("1_47duy")
|
||||||
|
title = "Spring Time!"
|
||||||
|
id = "spring-time"
|
||||||
|
order = 3
|
||||||
|
scene_path = "res://maps/descent/its_spring.tscn"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ba8kn"]
|
||||||
|
resource_name = "Purple Portals"
|
||||||
|
script = ExtResource("1_47duy")
|
||||||
|
title = "Purple Portals"
|
||||||
|
id = "purple-portals"
|
||||||
|
order = 4
|
||||||
|
scene_path = "res://maps/descent/purple_portals.tscn"
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "Descent"
|
||||||
|
script = ExtResource("2_f3ju2")
|
||||||
|
title = "Descent"
|
||||||
|
id = "descent"
|
||||||
|
start_scene = ExtResource("4_i5ovp")
|
||||||
|
end_scene = ExtResource("1_d6k11")
|
||||||
|
levels_dir = "res://maps/descent"
|
||||||
|
levels = Array[ExtResource("1_47duy")]([SubResource("Resource_d6k11"), SubResource("Resource_i5ovp"), SubResource("Resource_p1poa"), SubResource("Resource_sgm6x"), SubResource("Resource_ba8kn")])
|
||||||
|
metadata/_custom_type_script = "uid://dak8il8fxqyph"
|
|
@ -1,12 +1,13 @@
|
||||||
[gd_scene load_steps=12 format=3 uid="uid://bd2srrfspy7ft"]
|
[gd_scene load_steps=13 format=3 uid="uid://bd2srrfspy7ft"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://d3v13a4er2h1x" path="res://scripts/level/level.gd" id="1_dnp5v"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_p8vut"]
|
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_p8vut"]
|
||||||
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_hpwyk"]
|
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_hpwyk"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_edpy5"]
|
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_edpy5"]
|
||||||
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_onc0l"]
|
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_onc0l"]
|
||||||
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_s8gph"]
|
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_s8gph"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_8fhro"]
|
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_8fhro"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dmg4t4vm6fd5s" path="res://maps/purple_portals.tscn" id="7_ri7pq"]
|
[ext_resource type="PackedScene" uid="uid://dmg4t4vm6fd5s" path="res://maps/descent/purple_portals.tscn" id="7_ri7pq"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="8_cfxl1"]
|
[ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="8_cfxl1"]
|
||||||
[ext_resource type="PackedScene" uid="uid://68lav5rke5ag" path="res://objects/spring/spring.tscn" id="9_dtd3x"]
|
[ext_resource type="PackedScene" uid="uid://68lav5rke5ag" path="res://objects/spring/spring.tscn" id="9_dtd3x"]
|
||||||
|
|
||||||
|
@ -18,7 +19,11 @@ shader_parameter/animate_noise = true
|
||||||
shader_parameter/noise_intensity = 1.0
|
shader_parameter/noise_intensity = 1.0
|
||||||
shader_parameter/fps = 15.0
|
shader_parameter/fps = 15.0
|
||||||
|
|
||||||
[node name="Level3" type="Node2D"]
|
[node name="SpringTime" type="Node2D"]
|
||||||
|
script = ExtResource("1_dnp5v")
|
||||||
|
title = "Spring Time!"
|
||||||
|
id = "spring-time"
|
||||||
|
order = 3
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
material = SubResource("ShaderMaterial_sf5kh")
|
material = SubResource("ShaderMaterial_sf5kh")
|
|
@ -22,7 +22,7 @@ shader_parameter/fps = 15.0
|
||||||
script = ExtResource("1_srnft")
|
script = ExtResource("1_srnft")
|
||||||
title = "Purple Portals"
|
title = "Purple Portals"
|
||||||
id = "purple-portals"
|
id = "purple-portals"
|
||||||
order = 3
|
order = 4
|
||||||
metadata/_custom_type_script = "uid://d3v13a4er2h1x"
|
metadata/_custom_type_script = "uid://d3v13a4er2h1x"
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
|
@ -1,12 +1,13 @@
|
||||||
[gd_scene load_steps=10 format=3 uid="uid://byx8blpt2i8hx"]
|
[gd_scene load_steps=11 format=3 uid="uid://byx8blpt2i8hx"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_5dne7"]
|
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_5dne7"]
|
||||||
|
[ext_resource type="Script" uid="uid://d3v13a4er2h1x" path="res://scripts/level/level.gd" id="1_8bygc"]
|
||||||
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_els7d"]
|
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_els7d"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_imjpd"]
|
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_imjpd"]
|
||||||
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_1rmvv"]
|
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_1rmvv"]
|
||||||
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_ae2vf"]
|
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_ae2vf"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_yywag"]
|
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_yywag"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cun6ov7vdfr6a" path="res://maps/yikes_spikes.tscn" id="7_0g05i"]
|
[ext_resource type="PackedScene" uid="uid://cun6ov7vdfr6a" path="res://maps/descent/yikes_spikes.tscn" id="7_0g05i"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sf5kh"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sf5kh"]
|
||||||
|
|
||||||
|
@ -16,7 +17,10 @@ shader_parameter/animate_noise = true
|
||||||
shader_parameter/noise_intensity = 1.0
|
shader_parameter/noise_intensity = 1.0
|
||||||
shader_parameter/fps = 15.0
|
shader_parameter/fps = 15.0
|
||||||
|
|
||||||
[node name="Level2" type="Node2D"]
|
[node name="Tutorial" type="Node2D"]
|
||||||
|
script = ExtResource("1_8bygc")
|
||||||
|
title = "Obligatory Tutorial Level"
|
||||||
|
id = "tutorial"
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
material = SubResource("ShaderMaterial_sf5kh")
|
material = SubResource("ShaderMaterial_sf5kh")
|
|
@ -1,12 +1,13 @@
|
||||||
[gd_scene load_steps=11 format=3 uid="uid://hrrypch7psfa"]
|
[gd_scene load_steps=12 format=3 uid="uid://hrrypch7psfa"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_6i0lb"]
|
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_6i0lb"]
|
||||||
|
[ext_resource type="Script" uid="uid://d3v13a4er2h1x" path="res://scripts/level/level.gd" id="1_73lj3"]
|
||||||
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_3dp43"]
|
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_3dp43"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_mts2t"]
|
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_mts2t"]
|
||||||
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_evy0b"]
|
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_evy0b"]
|
||||||
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_eo1kb"]
|
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_eo1kb"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_vvcgd"]
|
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_vvcgd"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bd2srrfspy7ft" path="res://maps/its_spring.tscn" id="7_4f1b6"]
|
[ext_resource type="PackedScene" uid="uid://bd2srrfspy7ft" path="res://maps/descent/its_spring.tscn" id="7_4f1b6"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="8_8qxg7"]
|
[ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="8_8qxg7"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sf5kh"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sf5kh"]
|
||||||
|
@ -17,7 +18,11 @@ shader_parameter/animate_noise = true
|
||||||
shader_parameter/noise_intensity = 1.0
|
shader_parameter/noise_intensity = 1.0
|
||||||
shader_parameter/fps = 15.0
|
shader_parameter/fps = 15.0
|
||||||
|
|
||||||
[node name="Level3" type="Node2D"]
|
[node name="YikesMoreSpikes" type="Node2D"]
|
||||||
|
script = ExtResource("1_73lj3")
|
||||||
|
title = "Yikes! More Spikes!"
|
||||||
|
id = "more-spikes"
|
||||||
|
order = 2
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
material = SubResource("ShaderMaterial_sf5kh")
|
material = SubResource("ShaderMaterial_sf5kh")
|
|
@ -1,12 +1,13 @@
|
||||||
[gd_scene load_steps=11 format=3 uid="uid://cun6ov7vdfr6a"]
|
[gd_scene load_steps=12 format=3 uid="uid://cun6ov7vdfr6a"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_588ks"]
|
[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="1_588ks"]
|
||||||
|
[ext_resource type="Script" uid="uid://d3v13a4er2h1x" path="res://scripts/level/level.gd" id="1_3317b"]
|
||||||
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_rvhjv"]
|
[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="2_rvhjv"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_pdn7u"]
|
[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="3_pdn7u"]
|
||||||
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_pcxb3"]
|
[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_pcxb3"]
|
||||||
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_bpruh"]
|
[ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_bpruh"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_uyuca"]
|
[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_uyuca"]
|
||||||
[ext_resource type="PackedScene" uid="uid://hrrypch7psfa" path="res://maps/yikes_more_spikes.tscn" id="7_7rv68"]
|
[ext_resource type="PackedScene" uid="uid://hrrypch7psfa" path="res://maps/descent/yikes_more_spikes.tscn" id="7_7rv68"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="7_y3eq7"]
|
[ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="7_y3eq7"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sf5kh"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sf5kh"]
|
||||||
|
@ -17,7 +18,11 @@ shader_parameter/animate_noise = true
|
||||||
shader_parameter/noise_intensity = 1.0
|
shader_parameter/noise_intensity = 1.0
|
||||||
shader_parameter/fps = 15.0
|
shader_parameter/fps = 15.0
|
||||||
|
|
||||||
[node name="Level3" type="Node2D"]
|
[node name="YikesSpikes" type="Node2D"]
|
||||||
|
script = ExtResource("1_3317b")
|
||||||
|
title = "Yikes! Spikes!"
|
||||||
|
id = "spikes"
|
||||||
|
order = 1
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
material = SubResource("ShaderMaterial_sf5kh")
|
material = SubResource("ShaderMaterial_sf5kh")
|
|
@ -10,4 +10,4 @@ signal door_entered()
|
||||||
func _on_player_detector_body_entered(body: Node2D) -> void:
|
func _on_player_detector_body_entered(body: Node2D) -> void:
|
||||||
if body is Player:
|
if body is Player:
|
||||||
door_entered.emit()
|
door_entered.emit()
|
||||||
SceneManager.current_scene = next_map.instantiate()
|
Levels.advance_level()
|
||||||
|
|
|
@ -17,4 +17,5 @@ static func from_level(level: Level) -> LevelInfo:
|
||||||
info.title = level.title
|
info.title = level.title
|
||||||
info.id = level.id
|
info.id = level.id
|
||||||
info.order = level.order
|
info.order = level.order
|
||||||
|
info.scene_path = level.scene_file_path
|
||||||
return info
|
return info
|
||||||
|
|
|
@ -8,12 +8,15 @@ extends Resource
|
||||||
title = value
|
title = value
|
||||||
resource_name = title
|
resource_name = title
|
||||||
@export var id: String
|
@export var id: String
|
||||||
|
@export var start_scene: PackedScene
|
||||||
|
@export var end_scene: PackedScene
|
||||||
|
|
||||||
@export_dir var levels_dir: String:
|
@export_dir var levels_dir: String:
|
||||||
set(value):
|
set(value):
|
||||||
levels_dir = value
|
levels_dir = value
|
||||||
if Engine.is_editor_hint():
|
if Engine.is_editor_hint():
|
||||||
update_levels()
|
update_levels()
|
||||||
|
@export_tool_button("Update Levels") var _update_levels_action = update_levels
|
||||||
@export var levels: Array[LevelInfo] = []
|
@export var levels: Array[LevelInfo] = []
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,6 +54,8 @@ func update_levels() -> void:
|
||||||
file = dir.get_next()
|
file = dir.get_next()
|
||||||
# sort levels by level order
|
# sort levels by level order
|
||||||
levels.sort_custom(func(a, b): return a.order < b.order)
|
levels.sort_custom(func(a, b): return a.order < b.order)
|
||||||
|
emit_changed()
|
||||||
|
notify_property_list_changed()
|
||||||
|
|
||||||
|
|
||||||
func _popup_alert(message: String) -> void:
|
func _popup_alert(message: String) -> void:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue