-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMusic.gd
More file actions
142 lines (120 loc) · 3.22 KB
/
Music.gd
File metadata and controls
142 lines (120 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
extends Node
var MusicPlayer : AudioStreamPlayer
var JinglePlayer : AudioStreamPlayer
enum {
MUSIC_INTRO,
MUSIC_GAME,
MUSIC_GAME_OVER,
MUSIC_NONE
}
enum {
JINGLE_LEVEL_START,
JINGLE_LEVEL_WON,
JINGLE_GAME_OVER
}
signal jingle_finished(type : int)
var music : int = MUSIC_NONE
var pausepos : float = 0
var MP3 : Dictionary = {
"Through The Crystal": preload("res://Music/Through The Crystal - Jeremy Blake.mp3"),
"Powerup": preload("res://Music/Powerup! - Jeremy Blake.mp3"),
"Absolutely Nothing" : preload("res://Music/Absolutely Nothing - Jeremy Blake.mp3"),
"I'll Remember You": preload("res://Music/I'll Remember You - Jeremy Blake.mp3")
}
var JingleFileStart = preload("res://Sounds/Start.wav")
var JingleFileWin = preload("res://Sounds/Win.wav")
var JingleFileGameOver = preload("res://Sounds/GameOver.wav")
var jingle_playing : bool = false
var jingle_number : int = 0
var tween = null
func _ready() -> void:
pass
func initialize() -> void:
MusicPlayer = AudioStreamPlayer.new();
MusicPlayer.bus = "Music"
MusicPlayer.process_mode = Node.PROCESS_MODE_ALWAYS
add_child(MusicPlayer)
# MusicPlayer.stream = MP3["Through The Crystal"]
# MusicPlayer.play()
# music = MUSIC_INTRO
JinglePlayer = AudioStreamPlayer.new();
JinglePlayer.bus = "Music"
JinglePlayer.process_mode = Node.PROCESS_MODE_ALWAYS
JinglePlayer.finished.connect(_jingle_done)
add_child(JinglePlayer)
func fade_up(time : int = 1) -> void:
if MusicPlayer.volume_db < 0:
if tween != null:
tween.kill()
tween = get_tree().create_tween()
tween.tween_property(MusicPlayer, "volume_db", 0, time)
func fade_down(time : int = 1) -> void:
if MusicPlayer.volume_db > -80:
if tween != null:
tween.kill()
tween = get_tree().create_tween()
tween.tween_property(MusicPlayer, "volume_db", -80, time)
func play_game() -> void:
fade_up()
if music == MUSIC_GAME:
return
if jingle_playing:
pausepos = 0
else:
MusicPlayer.stream = MP3["Powerup"]
MusicPlayer.play()
music = MUSIC_GAME
func play_intro() -> void:
fade_up()
if music == MUSIC_INTRO:
return
if jingle_playing:
pausepos = 0
else:
MusicPlayer.stream = MP3["Through The Crystal"]
MusicPlayer.play()
music = MUSIC_INTRO
func play_game_over() -> void:
fade_up()
if music == MUSIC_GAME_OVER:
return
if jingle_playing:
pausepos = 0
else:
MusicPlayer.stream = MP3["I'll Remember You"]
MusicPlayer.play()
music = MUSIC_GAME_OVER
func pause() -> void:
pausepos = MusicPlayer.get_playback_position()
MusicPlayer.stop()
func resume() -> void:
MusicPlayer.play(pausepos)
func jingle(item : int) -> void:
fade_down()
# MusicPlayer.volume_db = 0
jingle_number = item
# pause()
match item:
JINGLE_LEVEL_START:
JinglePlayer.stream = JingleFileStart
JinglePlayer.play()
JINGLE_LEVEL_WON:
JinglePlayer.stream = JingleFileWin
JinglePlayer.play()
JINGLE_GAME_OVER:
JinglePlayer.stream = JingleFileGameOver
JinglePlayer.play()
jingle_playing = true
pass
func _jingle_done() -> void:
fade_up()
#match music:
#MUSIC_INTRO:
#MusicPlayer.stream = MP3["Through The Crystal"]
#MUSIC_GAME:
#MusicPlayer.stream = MP3["Powerup"]
#MUSIC_GAME_OVER:
#MusicPlayer.stream = MP3["I'll Remember You"]
#resume()
jingle_playing = false
jingle_finished.emit(jingle_number)