Make sample button enabling more granular, like a loading bar
This commit is contained in:
parent
17fd68bbbb
commit
cbd624c53d
24
Node2D.gd
24
Node2D.gd
|
@ -2,6 +2,7 @@ extends Node2D
|
|||
|
||||
var PC = load('PC.tscn')
|
||||
var PCs = []
|
||||
var inst_buttons = []
|
||||
var sfx_buttons = []
|
||||
|
||||
func _ready():
|
||||
|
@ -27,8 +28,6 @@ func _ready():
|
|||
|
||||
func _create_sfx_buttons():
|
||||
var disable_btn := !SoundLoader.has_loaded_audio_samples
|
||||
if disable_btn:
|
||||
SoundLoader.connect('audio_samples_loaded', self, '_enable_sfx_buttons')
|
||||
for i in SoundLoader.INST_NUM:
|
||||
var btn = Button.new()
|
||||
btn.text = 'Play #%02X' % i
|
||||
|
@ -37,7 +36,7 @@ func _create_sfx_buttons():
|
|||
btn.set_scale(Vector2(0.5, 0.5))
|
||||
add_child(btn)
|
||||
btn.connect('pressed', SoundLoader, 'play_sample', [i])
|
||||
sfx_buttons.append(btn)
|
||||
inst_buttons.append(btn)
|
||||
btn.disabled = disable_btn
|
||||
for i in SoundLoader.SFX_NUM:
|
||||
var btn = Button.new()
|
||||
|
@ -49,15 +48,26 @@ func _create_sfx_buttons():
|
|||
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
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# update()
|
||||
# pass
|
||||
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
|
||||
|
||||
|
||||
func _on_OptionButton_item_selected(ID):
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
extends Node
|
||||
|
||||
signal audio_samples_loaded
|
||||
signal audio_inst_sample_loaded(id)
|
||||
signal audio_sfx_sample_loaded(id)
|
||||
var has_loaded_audio_samples := false
|
||||
|
||||
const BGM_NUM := 70
|
||||
|
@ -151,15 +153,17 @@ func load_sfx_samples_data(rom: File):
|
|||
rom.seek(brr_spc_addrs[i])
|
||||
# print('Loading sfx sample #%X with BRR data offset $%06X' % [i, rom.get_position()])
|
||||
sfx_samples.append(make_sample(rom, 900, sample_rates[i])) # Use 900 as a limit, it won't be hit, parser stops after End packet anyway
|
||||
emit_signal('audio_sfx_sample_loaded', i)
|
||||
# print('size of %d samples' % sfx_samples[i].data.size())
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func load_samples(rom: File):
|
||||
pass
|
||||
load_sfx_samples_data(rom)
|
||||
# For some reason, this is a bit slow currently. Might optimize later.
|
||||
for i in INST_NUM:
|
||||
instrument_samples.append(get_inst_sample_data(rom, i))
|
||||
emit_signal('audio_inst_sample_loaded', i)
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue