50 lines
1.5 KiB
GDScript3
50 lines
1.5 KiB
GDScript3
|
extends Node2D
|
||
|
|
||
|
var inst_buttons = []
|
||
|
var sfx_buttons = []
|
||
|
|
||
|
func _create_sfx_buttons():
|
||
|
var disable_btn := !SoundLoader.has_loaded_audio_samples
|
||
|
for i in SoundLoader.INST_NUM:
|
||
|
var btn = Button.new()
|
||
|
btn.text = 'Play #%02X' % i
|
||
|
btn.align = Button.ALIGN_CENTER
|
||
|
btn.set_position(Vector2((i%8)*72, (i/8)*24))
|
||
|
add_child(btn)
|
||
|
btn.connect('pressed', SoundLoader, 'play_sample', [i])
|
||
|
inst_buttons.append(btn)
|
||
|
btn.disabled = disable_btn
|
||
|
for i in SoundLoader.SFX_NUM:
|
||
|
var btn = Button.new()
|
||
|
btn.text = 'SFX #%02X' % i
|
||
|
btn.align = Button.ALIGN_CENTER
|
||
|
btn.set_position(Vector2((i%8)*72, 128 + (i/8)*24))
|
||
|
add_child(btn)
|
||
|
btn.connect('pressed', SoundLoader, 'play_sfx', [i])
|
||
|
sfx_buttons.append(btn)
|
||
|
btn.disabled = disable_btn
|
||
|
if disable_btn:
|
||
|
SoundLoader.connect('audio_samples_loaded', self, '_enable_sfx_buttons')
|
||
|
SoundLoader.connect('audio_inst_sample_loaded', self, '_enable_inst_button')
|
||
|
SoundLoader.connect('audio_sfx_sample_loaded', self, '_enable_sfx_button')
|
||
|
|
||
|
func _enable_sfx_buttons():
|
||
|
for btn in sfx_buttons:
|
||
|
btn.disabled = false
|
||
|
for btn in inst_buttons:
|
||
|
btn.disabled = false
|
||
|
|
||
|
func _enable_sfx_button(id: int):
|
||
|
# NB: This assumes sequential loading (may change, probably won't)
|
||
|
for i in id+1:
|
||
|
sfx_buttons[i].disabled = false
|
||
|
|
||
|
func _enable_inst_button(id: int):
|
||
|
# NB: This assumes sequential loading (may change, probably won't)
|
||
|
for i in id+1:
|
||
|
inst_buttons[i].disabled = false
|
||
|
|
||
|
# Called when the node enters the scene tree for the first time.
|
||
|
func _ready() -> void:
|
||
|
_create_sfx_buttons()
|