diff --git a/src/CheckPointArea/check_point_area.gd b/src/CheckPointArea/check_point_area.gd index 1332324..5f05f6b 100644 --- a/src/CheckPointArea/check_point_area.gd +++ b/src/CheckPointArea/check_point_area.gd @@ -13,4 +13,4 @@ func _process(_delta): func _on_body_entered(body): if body in get_tree().get_nodes_in_group('player'): - CheckPoint.add_checkpoint(name, body.global_position) + CheckPoint.add_checkpoint(name, body.global_position, Music.m_current) diff --git a/src/Checkpoint/CheckPoint.gd b/src/Checkpoint/CheckPoint.gd index 8033044..9a2496f 100644 --- a/src/Checkpoint/CheckPoint.gd +++ b/src/Checkpoint/CheckPoint.gd @@ -4,30 +4,32 @@ class CheckPointData: var checkpoint_name var player_position var strikes: bool = false + var music = '' - func _init(myname, ppos): + func _init(myname, ppos, mymusic): checkpoint_name = myname player_position = ppos + music = mymusic var m_checkpoints = [] func _ready(): pass -func _process(delta): +func _process(_delta): pass func reset(): m_checkpoints.clear() -func add_checkpoint(name, pos): +func add_checkpoint(myname, pos, music): for cp in m_checkpoints: - if cp.checkpoint_name == name: + if cp.checkpoint_name == myname: return var strikes = false if m_checkpoints.is_empty() == false: strikes = m_checkpoints.back().strikes - m_checkpoints.push_back(CheckPointData.new(name, pos)) + m_checkpoints.push_back(CheckPointData.new(myname, pos, music)) m_checkpoints.back().strikes = strikes func has_checkpoint(): diff --git a/src/Levels/level_intro.gd b/src/Levels/level_intro.gd index 1597835..743092e 100644 --- a/src/Levels/level_intro.gd +++ b/src/Levels/level_intro.gd @@ -6,24 +6,26 @@ func _ready(): var cp = CheckPoint.get_checkpoint() $Sandbox/Player/Actor.global_position = cp.player_position $Sandbox.strike_enabled = cp.strikes - - var msg = preload("res://MsgBox/msg_box.tscn").instantiate() - $Sandbox/Canvas.add_child(msg) - msg.enable('Hello prisoner', ' - Hello prisoner, - Our spaceship is under attack, but don\'t worry, - you will be executed at time, as soon as we escape. - Good luck ! - ') + if cp.music != '': + Music.play(cp.music) + else: + var msg = preload("res://MsgBox/msg_box.tscn").instantiate() + $Sandbox/Canvas.add_child(msg) + msg.enable('Hello prisoner', ' + Hello prisoner, + Our spaceship is under attack, but don\'t worry, + you will be executed at time, as soon as we escape. + Good luck ! + ') func _start(): pass -func _process(delta): +func _process(_delta): pass - -func _on_area_2d_body_entered(body): +func _on_area_2d_body_entered(_body): $Sandbox.strike_enabled = true if CheckPoint.has_checkpoint(): CheckPoint.get_checkpoint().strikes = true + diff --git a/src/Levels/level_intro.tscn b/src/Levels/level_intro.tscn index 79495ea..88b7585 100644 --- a/src/Levels/level_intro.tscn +++ b/src/Levels/level_intro.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://b33qjw88n8ojq"] +[gd_scene load_steps=10 format=3 uid="uid://b33qjw88n8ojq"] [ext_resource type="PackedScene" uid="uid://ccjenj1vqgosm" path="res://Sandbox/sandbox.tscn" id="1_rftkk"] [ext_resource type="Script" path="res://Levels/level_intro.gd" id="1_uhhgb"] @@ -7,6 +7,7 @@ [ext_resource type="PackedScene" uid="uid://d30oryxv0w7pf" path="res://Door/door.tscn" id="5_6em12"] [ext_resource type="PackedScene" uid="uid://c5f7m5oi32kr5" path="res://DoorCommand/door_command.tscn" id="6_uuoen"] [ext_resource type="PackedScene" uid="uid://ba7detpptxamr" path="res://CheckPointArea/check_point_area.tscn" id="7_jpeg0"] +[ext_resource type="PackedScene" uid="uid://dw7khu8cvs50n" path="res://MusicArea/music_area.tscn" id="8_ag3pa"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_8v3w3"] size = Vector2(332, 210) @@ -145,7 +146,36 @@ position = Vector2(670, 4577) [node name="CheckPointArea2" parent="." instance=ExtResource("7_jpeg0")] position = Vector2(670, 1530) +[node name="MusicArea" parent="." instance=ExtResource("8_ag3pa")] +position = Vector2(650, 402) +music = "prepare" + +[node name="CollisionShape2D" parent="MusicArea" index="0"] +position = Vector2(21.5, 0) +metadata/_edit_lock_ = true + +[node name="MusicArea2" parent="." instance=ExtResource("8_ag3pa")] +position = Vector2(652, 995) +music = "speed_is_the_key" + +[node name="CollisionShape2D" parent="MusicArea2" index="0"] +position = Vector2(21.5, 0) +debug_color = Color(0.627451, 0.823529, 0.270588, 0.419608) +metadata/_edit_lock_ = true + +[node name="MusicArea3" parent="." instance=ExtResource("8_ag3pa")] +position = Vector2(655, 2096) +music = "fight_or_die" + +[node name="CollisionShape2D" parent="MusicArea3" index="0"] +position = Vector2(21.5, 0) +debug_color = Color(0.627451, 0.823529, 0.270588, 0.419608) +metadata/_edit_lock_ = true + [connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"] [editable path="Sandbox"] [editable path="Sandbox/Player"] +[editable path="MusicArea"] +[editable path="MusicArea2"] +[editable path="MusicArea3"] diff --git a/src/LoseMenu/lose_menu.gd b/src/LoseMenu/lose_menu.gd index 6ed2970..838a24b 100644 --- a/src/LoseMenu/lose_menu.gd +++ b/src/LoseMenu/lose_menu.gd @@ -1,13 +1,11 @@ extends Control -# Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + pass -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): +func _process(_delta): pass func _on_button_pressed(): diff --git a/src/MsgArea/msg_area.gd b/src/MsgArea/msg_area.gd index 48d07fb..6bb24ab 100644 --- a/src/MsgArea/msg_area.gd +++ b/src/MsgArea/msg_area.gd @@ -8,7 +8,7 @@ var m_bodies = [] func _ready(): pass -func _process(delta): +func _process(_delta): pass func _on_body_entered(body): diff --git a/src/MsgBox/msg_box.gd b/src/MsgBox/msg_box.gd index 9fc9be1..d805852 100644 --- a/src/MsgBox/msg_box.gd +++ b/src/MsgBox/msg_box.gd @@ -15,7 +15,7 @@ var m_pages = [] func _ready(): pass -func _process(delta): +func _process(_delta): if Input.is_action_just_pressed("ui_accept"): self._on_button_pressed() diff --git a/src/Music/fight_or_die.ogg b/src/Music/fight_or_die.ogg new file mode 100644 index 0000000..dd60cbc Binary files /dev/null and b/src/Music/fight_or_die.ogg differ diff --git a/src/Music/music.gd b/src/Music/music.gd new file mode 100644 index 0000000..2b03df5 --- /dev/null +++ b/src/Music/music.gd @@ -0,0 +1,49 @@ +extends Node + +var m_music = null +var m_player : AudioStreamPlayer = null +var m_current = '' +var m_stop_timer = 0.0 +var m_stop_time = 0.5 +var m_stop = false +var m_next = null + +var m_titles = [ + 'fight_or_die' +] + +func _ready(): + m_player = AudioStreamPlayer.new() + m_player.process_mode = Node.PROCESS_MODE_ALWAYS + add_child(m_player) + +func _process(delta): + if m_stop: + var t = m_stop_timer / m_stop_time + m_player.volume_db = t * -16.0 + if m_stop_timer >= m_stop_time: + m_stop = false + m_stop_timer = 0.0 + if m_next: + play(m_next) + + m_stop_timer += delta + +func next(music_name): + if m_player.playing: + m_next = music_name + m_stop = true + else: + play(music_name) + +func play(music_name): + m_player.volume_db = 0.0 + m_current = music_name + var data = load("res://Music/" + music_name + ".ogg") + data.loop = true + m_player.stream = data + m_player.seek(0) + m_player.play() + + + diff --git a/src/Music/prepare.ogg b/src/Music/prepare.ogg new file mode 100644 index 0000000..f85cd57 Binary files /dev/null and b/src/Music/prepare.ogg differ diff --git a/src/Music/speed_is_the_key.ogg b/src/Music/speed_is_the_key.ogg new file mode 100644 index 0000000..71d1726 Binary files /dev/null and b/src/Music/speed_is_the_key.ogg differ diff --git a/src/MusicArea/music_area.gd b/src/MusicArea/music_area.gd new file mode 100644 index 0000000..b00426f --- /dev/null +++ b/src/MusicArea/music_area.gd @@ -0,0 +1,14 @@ +extends Area2D + +@export var music : String = Music.m_titles[0] + +func _ready(): + pass + +func _process(_delta): + pass + + +func _on_body_entered(body): + if body in get_tree().get_nodes_in_group('player'): + Music.next(music) diff --git a/src/MusicArea/music_area.tscn b/src/MusicArea/music_area.tscn new file mode 100644 index 0000000..c944ab2 --- /dev/null +++ b/src/MusicArea/music_area.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=3 format=3 uid="uid://dw7khu8cvs50n"] + +[ext_resource type="Script" path="res://MusicArea/music_area.gd" id="1_60yhl"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_c834i"] +size = Vector2(383, 20) + +[node name="MusicArea" type="Area2D"] +script = ExtResource("1_60yhl") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_c834i") +debug_color = Color(0.627451, 0.823529, 0.270588, 0.419608) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/src/project.godot b/src/project.godot index f9e854e..c61d9c1 100644 --- a/src/project.godot +++ b/src/project.godot @@ -18,6 +18,7 @@ config/icon="res://icon.svg" [autoload] CheckPoint="*res://Checkpoint/CheckPoint.gd" +Music="*res://Music/music.gd" [input]