diff --git a/elements/collectible.tscn b/elements/collectible.tscn deleted file mode 100644 index ba6f319..0000000 --- a/elements/collectible.tscn +++ /dev/null @@ -1,34 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://bwxor1n3m4d4a"] - -[sub_resource type="GDScript" id="GDScript_f1obc"] -script/source = "extends Area3D - - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass - - -func _on_body_entered(body: Node3D) -> void: - print(body, \" !!\") - pass # Replace with function body. -" - -[sub_resource type="SphereShape3D" id="SphereShape3D_lnm1h"] -radius = 1.0 - -[node name="Collectible" type="Area3D"] -script = SubResource("GDScript_f1obc") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("SphereShape3D_lnm1h") - -[node name="CSGSphere3D" type="CSGSphere3D" parent="."] -radius = 1.0 - -[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/idea.txt b/idea.txt deleted file mode 100644 index df8d5a5..0000000 --- a/idea.txt +++ /dev/null @@ -1,12 +0,0 @@ -Theme: Gravity - -3D, but played in 2D (think New Super Mario Bros) -2 controls: - With the arrow keys, change the direction of the gravity - With the shift key, change how much the gravity is applied -1 objective: Bring the ball through all the rings - -Music is proportional to the ball's velocity -Each level looks and sounds different - -Have score be Sonic-like, there's a timer and it's converted into score, also add to score if ball collects certain stuff diff --git a/index.tscn b/index.tscn index 238dea4..e95e78e 100644 --- a/index.tscn +++ b/index.tscn @@ -4,22 +4,30 @@ script/source = "extends Node var seconds_spent: float = 0.0 +var changing_level: bool = false var base = preload(\"res://levels/base/level.tscn\") var forest = preload(\"res://levels/forest/level.tscn\") var night = preload(\"res://levels/night/level.tscn\") +func _ready() -> void: + $PauseMenu.hide() + ## Add the version of the game and the name of the OS to the footer of the start menu + $StartMenu/VBoxContainer/MarginContainer2/Notice.text += \" - build \" + ProjectSettings.get_setting(\"application/config/version\") + \" (\" + OS.get_name() + \")\" + func start_level(level_scene: PackedScene) -> void: if level_scene and level_scene.can_instantiate(): AudioServer.set_bus_volume_db(0, 0) var level = level_scene.instantiate() $Levels.add_child(level) $Timer.paused = false + changing_level = false else: assert(false, \"NO LEVEL AAAA\") func stop_level() -> void: PhysicsServer3D.area_set_param(get_viewport().find_world_3d().space, PhysicsServer3D.AREA_PARAM_GRAVITY, 1) $Timer.paused = true + changing_level = true AudioServer.set_bus_volume_db(0, -5) await get_tree().create_timer(0.5).timeout @@ -34,9 +42,9 @@ func stop_level() -> void: var current_levels = $Levels.get_children(true) if len(current_levels): var current_level = current_levels[0] - if current_level.name == \"Base\": + if current_level.get_meta(\"name\") == \"Base\": next_level = forest - elif current_level.name == \"Forest\": + elif current_level.get_meta(\"name\") == \"Forest\": next_level = night for level in current_levels: @@ -44,13 +52,47 @@ func stop_level() -> void: start_level(next_level) -func _on_btn_fullscreen_pressed() -> void: +func restart_level() -> void: + if changing_level == false: + var current_levels = $Levels.get_children(true) + if len(current_levels): + pause_game() + changing_level = true + var current_level = current_levels[0] + + var next_level: PackedScene = base + if current_level.get_meta(\"name\") == \"Forest\": + next_level = forest + elif current_level.get_meta(\"name\") == \"Night\": + next_level = night + + for level in current_levels: + level.queue_free() + + start_level(next_level) + +func pause_game() -> void: + if $Levels.process_mode == PROCESS_MODE_INHERIT: + $Levels.process_mode = Node.PROCESS_MODE_DISABLED + $Timer.paused = true + $PauseMenu.show() + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + else: + $Levels.process_mode = Node.PROCESS_MODE_INHERIT + $Timer.paused = false + $PauseMenu.hide() + Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) + +func fullscreen_game() -> void: var fs = DisplayServer.window_get_mode() if fs != DisplayServer.WindowMode.WINDOW_MODE_FULLSCREEN: DisplayServer.window_set_mode(DisplayServer.WindowMode.WINDOW_MODE_FULLSCREEN) else: DisplayServer.window_set_mode(DisplayServer.WindowMode.WINDOW_MODE_WINDOWED) +func _on_btn_fullscreen_pressed() -> void: + fullscreen_game() + func _on_btn_start_pressed() -> void: $StartMenu/AnimationPlayer.play(\"fadeout\") Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) @@ -66,12 +108,36 @@ func _on_timer_timeout() -> void: var minutes = floor(seconds_spent / 60) $Informations/MarginContainer/Timer.text = (\"%0*d\" % [2, minutes]) + \":\" + (\"%0*.1f\" % [4, seconds_spent - (minutes * 60)]) -func _process(delta: float) -> void: +func _process(_delta: float) -> void: var current_levels = $Levels.get_children(true) if len(current_levels): var current_level = current_levels[0] - if is_instance_valid(current_level) and \"velocity\" in current_level: - $Informations/MarginContainer/VBoxContainer/Speed.text = str(floor(current_level.velocity)) + \" km/h\" + if is_instance_valid(current_level): + if \"velocity\" in current_level: + $Informations/MarginContainer/VBoxContainer/Speed.text = str(floor(current_level.velocity)) + \" km/h\" + if \"rings_count\" in current_level and \"finished_rings_count\" in current_level: + $Informations/MarginContainer/VBoxContainer/Rings.text = str(current_level.finished_rings_count) + \"/\" + str(current_level.rings_count) + +func _unhandled_key_input(event: InputEvent) -> void: + if event.is_pressed() and event is InputEventKey: + if $StartMenu.visible == false and changing_level == false: + if event.keycode == KEY_ESCAPE: + pause_game() + elif event.keycode == KEY_R: + pause_game() + restart_level() + +func _on_btn_resume_pressed() -> void: + pause_game() + +func _on_btn_fullscreen_2_pressed() -> void: + fullscreen_game() + +func _on_btn_restart_pressed() -> void: + restart_level() + +func _on_btn_quit_pressed() -> void: + get_tree().quit() " [sub_resource type="LabelSettings" id="LabelSettings_0s07t"] @@ -291,14 +357,14 @@ layout_mode = 2 size_flags_horizontal = 4 text = "START the game!" -[node name="Notice" type="MarginContainer" parent="StartMenu/VBoxContainer"] +[node name="MarginContainer2" type="MarginContainer" parent="StartMenu/VBoxContainer"] layout_mode = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 -[node name="Title3" type="Label" parent="StartMenu/VBoxContainer/Notice"] +[node name="Notice" type="Label" parent="StartMenu/VBoxContainer/MarginContainer2"] layout_mode = 2 text = "Made during the 21st edition of Alakajam!" label_settings = SubResource("LabelSettings_5jdmh") @@ -314,7 +380,54 @@ libraries = { [node name="Timer" type="Timer" parent="."] wait_time = 0.1 +[node name="PauseMenu" type="Control" parent="."] +visible = false +z_index = 2 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 + +[node name="VBoxContainer" type="VBoxContainer" parent="PauseMenu"] +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_top = -50.5 +offset_bottom = 50.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 10 + +[node name="Btn_Resume" type="Button" parent="PauseMenu/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 6 +text = "RESUME game" + +[node name="Btn_Fullscreen2" type="Button" parent="PauseMenu/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 6 +text = "Toggle FULLSCREEN" + +[node name="Btn_Restart" type="Button" parent="PauseMenu/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 6 +text = "RESTART the level" + +[node name="Btn_Quit" type="Button" parent="PauseMenu/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 6 +text = "QUIT game" + [connection signal="pressed" from="StartMenu/VBoxContainer/MarginContainer/HBoxContainer/Buttons/HBoxContainer/Btn_Fullscreen" to="." method="_on_btn_fullscreen_pressed"] [connection signal="pressed" from="StartMenu/VBoxContainer/MarginContainer/HBoxContainer/Buttons/HBoxContainer/Btn_Start" to="." method="_on_btn_start_pressed"] [connection signal="animation_finished" from="StartMenu/AnimationPlayer" to="." method="_on_animation_player_animation_finished"] [connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] +[connection signal="pressed" from="PauseMenu/VBoxContainer/Btn_Resume" to="." method="_on_btn_resume_pressed"] +[connection signal="pressed" from="PauseMenu/VBoxContainer/Btn_Fullscreen2" to="." method="_on_btn_fullscreen_2_pressed"] +[connection signal="pressed" from="PauseMenu/VBoxContainer/Btn_Restart" to="." method="_on_btn_restart_pressed"] +[connection signal="pressed" from="PauseMenu/VBoxContainer/Btn_Quit" to="." method="_on_btn_quit_pressed"] diff --git a/levels/base/level.tscn b/levels/base/level.tscn index e10d268..d0ec56b 100644 --- a/levels/base/level.tscn +++ b/levels/base/level.tscn @@ -11,6 +11,7 @@ [node name="Base" type="Node3D"] script = ExtResource("1_rj40i") metadata/material = ExtResource("1_dwsqy") +metadata/name = "Base" [node name="Environment" parent="." instance=ExtResource("1_n7fd8")] @@ -80,7 +81,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.18355, 0) transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -14.2868, 3.51514, 0) [node name="Ring18" parent="Rings" instance=ExtResource("3_hel5x")] -transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 10.4967, 3.51514, 0) +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 10.2086, 3.51514, 0) [node name="Ring5" parent="Rings" instance=ExtResource("3_hel5x")] transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -27.6263, 3.51514, 0) @@ -92,7 +93,7 @@ transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -51.81 transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -65.1566, 3.51514, 0) [node name="Ring3" parent="Rings" instance=ExtResource("3_hel5x")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.9205, -3.18355, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5274, -3.18355, 0) [node name="Ring2" parent="Rings" instance=ExtResource("3_hel5x")] transform = Transform3D(-6.55671e-08, -1.5, 0, 1.5, -6.55671e-08, 0, 0, 0, 1.5, 10, -16.4737, 0) diff --git a/levels/forest/level.tscn b/levels/forest/level.tscn index 1311565..2f096e1 100644 --- a/levels/forest/level.tscn +++ b/levels/forest/level.tscn @@ -10,6 +10,7 @@ [node name="Forest" type="Node3D"] script = ExtResource("1_fdxcj") +metadata/name = "Forest" [node name="Environment" parent="." instance=ExtResource("1_7clrg")] diff --git a/levels/night/level.tscn b/levels/night/level.tscn index 43ca698..9ae261d 100644 --- a/levels/night/level.tscn +++ b/levels/night/level.tscn @@ -11,6 +11,7 @@ [node name="Night" type="Node3D"] script = ExtResource("1_3m1pa") +metadata/name = "Night" [node name="Environment" parent="." instance=ExtResource("2_wintp")] @@ -150,7 +151,7 @@ transform = Transform3D(-1.74846e-08, 0.4, 0, -0.4, -1.74846e-08, 0, 0, 0, 0.4, transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 140.19, -14.6271, 0) [node name="Ring22" parent="Rings" instance=ExtResource("4_brcr0")] -transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 229.201, -2.70863, 0) +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 229.201, -5.43154, 0) [node name="Ring23" parent="Rings" instance=ExtResource("4_brcr0")] transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 315.818, -14.6271, 0) @@ -170,25 +171,37 @@ transform = Transform3D(-1.31134e-07, -3, 0, 3, -1.31134e-07, 0, 0, 0, 3, -104.2 [node name="Ring2" parent="Rings" instance=ExtResource("4_brcr0")] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -12.3896, -2, 0) -[node name="Sign" parent="." instance=ExtResource("6_36yav")] +[node name="Signs" type="Node3D" parent="."] + +[node name="Sign" parent="Signs" instance=ExtResource("6_36yav")] transform = Transform3D(0.843785, 0, 0.536681, 0, 1, 0, -0.536681, 0, 0.843785, -159.605, -62.9326, 0) -[node name="Text" parent="Sign" index="0"] +[node name="Text" parent="Signs/Sign" index="0"] text = "^^^ Go UP!!" font_size = 2048 -[node name="Sign2" parent="." instance=ExtResource("6_36yav")] +[node name="Sign4" parent="Signs" instance=ExtResource("6_36yav")] +transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, 231.92, -32.6467, 0) + +[node name="Text" parent="Signs/Sign4" index="0"] +text = "^^ +Don't forget +that one!" +font_size = 1500 + +[node name="Sign2" parent="Signs" instance=ExtResource("6_36yav")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -159.605, -30.0117, -45.6318) -[node name="Text" parent="Sign2" index="0"] -text = "Now, RIGHT!" -font_size = 2048 +[node name="Text" parent="Signs/Sign2" index="0"] +text = "After taking this, +go RIGHT!" +font_size = 1600 -[node name="Sign3" parent="." instance=ExtResource("6_36yav")] +[node name="Sign3" parent="Signs" instance=ExtResource("6_36yav")] transform = Transform3D(-1, -8.74228e-08, 0, 8.74228e-08, -1, 0, 0, 0, 1, -64.0671, 131.627, -45.6318) -[node name="Text" parent="Sign3" index="0"] +[node name="Text" parent="Signs/Sign3" index="0"] transform = Transform3D(-1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 0, 0, 1, 0, 0, 0) text = "Go RIGHT!" font_size = 2048 @@ -294,6 +307,7 @@ transform = Transform3D(-0.99693, 0.0731445, -0.0279554, -0.0555776, -0.912445, [node name="Tree" parent="." instance=ExtResource("8_kgstj")] transform = Transform3D(-3.79443, -7.04289, 0, 7.04289, -3.79443, 0, 0, 0, 8, 28.958, -413.185, -93.8242) -[editable path="Sign"] -[editable path="Sign2"] -[editable path="Sign3"] +[editable path="Signs/Sign"] +[editable path="Signs/Sign4"] +[editable path="Signs/Sign2"] +[editable path="Signs/Sign3"]