ADD: music integration.

main
bog 2023-10-01 08:10:07 +02:00
parent af4f5062b7
commit 728cd1b766
14 changed files with 136 additions and 25 deletions

View File

@ -13,4 +13,4 @@ func _process(_delta):
func _on_body_entered(body): func _on_body_entered(body):
if body in get_tree().get_nodes_in_group('player'): 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)

View File

@ -4,30 +4,32 @@ class CheckPointData:
var checkpoint_name var checkpoint_name
var player_position var player_position
var strikes: bool = false var strikes: bool = false
var music = ''
func _init(myname, ppos): func _init(myname, ppos, mymusic):
checkpoint_name = myname checkpoint_name = myname
player_position = ppos player_position = ppos
music = mymusic
var m_checkpoints = [] var m_checkpoints = []
func _ready(): func _ready():
pass pass
func _process(delta): func _process(_delta):
pass pass
func reset(): func reset():
m_checkpoints.clear() m_checkpoints.clear()
func add_checkpoint(name, pos): func add_checkpoint(myname, pos, music):
for cp in m_checkpoints: for cp in m_checkpoints:
if cp.checkpoint_name == name: if cp.checkpoint_name == myname:
return return
var strikes = false var strikes = false
if m_checkpoints.is_empty() == false: if m_checkpoints.is_empty() == false:
strikes = m_checkpoints.back().strikes 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 m_checkpoints.back().strikes = strikes
func has_checkpoint(): func has_checkpoint():

View File

@ -6,7 +6,9 @@ func _ready():
var cp = CheckPoint.get_checkpoint() var cp = CheckPoint.get_checkpoint()
$Sandbox/Player/Actor.global_position = cp.player_position $Sandbox/Player/Actor.global_position = cp.player_position
$Sandbox.strike_enabled = cp.strikes $Sandbox.strike_enabled = cp.strikes
if cp.music != '':
Music.play(cp.music)
else:
var msg = preload("res://MsgBox/msg_box.tscn").instantiate() var msg = preload("res://MsgBox/msg_box.tscn").instantiate()
$Sandbox/Canvas.add_child(msg) $Sandbox/Canvas.add_child(msg)
msg.enable('Hello prisoner', ' msg.enable('Hello prisoner', '
@ -19,11 +21,11 @@ func _ready():
func _start(): func _start():
pass pass
func _process(delta): func _process(_delta):
pass pass
func _on_area_2d_body_entered(_body):
func _on_area_2d_body_entered(body):
$Sandbox.strike_enabled = true $Sandbox.strike_enabled = true
if CheckPoint.has_checkpoint(): if CheckPoint.has_checkpoint():
CheckPoint.get_checkpoint().strikes = true CheckPoint.get_checkpoint().strikes = true

View File

@ -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="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"] [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://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://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://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"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_8v3w3"]
size = Vector2(332, 210) size = Vector2(332, 210)
@ -145,7 +146,36 @@ position = Vector2(670, 4577)
[node name="CheckPointArea2" parent="." instance=ExtResource("7_jpeg0")] [node name="CheckPointArea2" parent="." instance=ExtResource("7_jpeg0")]
position = Vector2(670, 1530) 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"] [connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
[editable path="Sandbox"] [editable path="Sandbox"]
[editable path="Sandbox/Player"] [editable path="Sandbox/Player"]
[editable path="MusicArea"]
[editable path="MusicArea2"]
[editable path="MusicArea3"]

View File

@ -1,13 +1,11 @@
extends Control extends Control
# Called when the node enters the scene tree for the first time.
func _ready(): 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 pass
func _on_button_pressed(): func _on_button_pressed():

View File

@ -8,7 +8,7 @@ var m_bodies = []
func _ready(): func _ready():
pass pass
func _process(delta): func _process(_delta):
pass pass
func _on_body_entered(body): func _on_body_entered(body):

View File

@ -15,7 +15,7 @@ var m_pages = []
func _ready(): func _ready():
pass pass
func _process(delta): func _process(_delta):
if Input.is_action_just_pressed("ui_accept"): if Input.is_action_just_pressed("ui_accept"):
self._on_button_pressed() self._on_button_pressed()

BIN
src/Music/fight_or_die.ogg Normal file

Binary file not shown.

49
src/Music/music.gd Normal file
View File

@ -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()

BIN
src/Music/prepare.ogg Normal file

Binary file not shown.

Binary file not shown.

View File

@ -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)

View File

@ -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"]

View File

@ -18,6 +18,7 @@ config/icon="res://icon.svg"
[autoload] [autoload]
CheckPoint="*res://Checkpoint/CheckPoint.gd" CheckPoint="*res://Checkpoint/CheckPoint.gd"
Music="*res://Music/music.gd"
[input] [input]