Make WebMIDI optional, MIDI for multiplayer
We now only open MIDI by default on non-Web platforms. On web, there is an extra button to open MIDI devices. This allows us to no longer pester users with the "allow MIDI" popup when they don't want to use MIDI. If MIDI devices have been opened, the multiplayer part of this project now uses it as well, in the same way the "singleplayer" part does it.
This commit is contained in:
parent
cfddacb278
commit
807d9e2b0f
|
@ -32,16 +32,18 @@ func _ready():
|
||||||
playback = $Player.get_stream_playback()
|
playback = $Player.get_stream_playback()
|
||||||
fill_buffer()
|
fill_buffer()
|
||||||
|
|
||||||
|
if OS.get_name() != "Web":
|
||||||
|
OS.open_midi_inputs()
|
||||||
|
print(OS.get_connected_midi_inputs())
|
||||||
|
else:
|
||||||
|
%MidiButton.visible = true
|
||||||
|
|
||||||
if multiplayer_enabled:
|
if multiplayer_enabled:
|
||||||
%MultiplayerButton.visible = true
|
%MultiplayerButton.visible = true
|
||||||
|
|
||||||
if Utils.get_external_freq_param():
|
if Utils.get_external_freq_param():
|
||||||
print("Direct connect to external freq: ", Utils.get_external_freq_param())
|
print("Direct connect to external freq: ", Utils.get_external_freq_param())
|
||||||
_on_multiplayer_button_pressed()
|
_on_multiplayer_button_pressed()
|
||||||
|
|
||||||
# FIXME: make this dependent on button
|
|
||||||
OS.open_midi_inputs()
|
|
||||||
print(OS.get_connected_midi_inputs())
|
|
||||||
|
|
||||||
func set_morse_state(state: bool):
|
func set_morse_state(state: bool):
|
||||||
MorseState.set_state(state)
|
MorseState.set_state(state)
|
||||||
|
@ -163,3 +165,8 @@ func _on_reset_button_pressed() -> void:
|
||||||
|
|
||||||
func _on_multiplayer_button_pressed() -> void:
|
func _on_multiplayer_button_pressed() -> void:
|
||||||
get_tree().change_scene_to_file("res://scenes/MultiplayerConnect.tscn")
|
get_tree().change_scene_to_file("res://scenes/MultiplayerConnect.tscn")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_midi_button_pressed() -> void:
|
||||||
|
OS.open_midi_inputs()
|
||||||
|
print(OS.get_connected_midi_inputs())
|
||||||
|
|
|
@ -64,6 +64,14 @@ text = "Save Wav"
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="MidiButton" type="Button" parent="VBoxContainer/HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_stretch_ratio = 0.25
|
||||||
|
text = "Open
|
||||||
|
Midi"
|
||||||
|
|
||||||
[node name="ResetButton" type="Button" parent="VBoxContainer/HBoxContainer"]
|
[node name="ResetButton" type="Button" parent="VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
@ -89,5 +97,6 @@ script = ExtResource("3_sugp2")
|
||||||
[connection signal="button_down" from="VBoxContainer/MorseButton" to="." method="_on_morse_button_down"]
|
[connection signal="button_down" from="VBoxContainer/MorseButton" to="." method="_on_morse_button_down"]
|
||||||
[connection signal="button_up" from="VBoxContainer/MorseButton" to="." method="_on_morse_button_up"]
|
[connection signal="button_up" from="VBoxContainer/MorseButton" to="." method="_on_morse_button_up"]
|
||||||
[connection signal="pressed" from="VBoxContainer/WavButton" to="." method="_on_wav_button_pressed"]
|
[connection signal="pressed" from="VBoxContainer/WavButton" to="." method="_on_wav_button_pressed"]
|
||||||
|
[connection signal="pressed" from="VBoxContainer/HBoxContainer/MidiButton" to="." method="_on_midi_button_pressed"]
|
||||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/ResetButton" to="." method="_on_reset_button_pressed"]
|
[connection signal="pressed" from="VBoxContainer/HBoxContainer/ResetButton" to="." method="_on_reset_button_pressed"]
|
||||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/MultiplayerButton" to="." method="_on_multiplayer_button_pressed"]
|
[connection signal="pressed" from="VBoxContainer/HBoxContainer/MultiplayerButton" to="." method="_on_multiplayer_button_pressed"]
|
||||||
|
|
|
@ -225,6 +225,20 @@ func _on_morse_button_button_up() -> void:
|
||||||
return
|
return
|
||||||
set_morse_state(false)
|
set_morse_state(false)
|
||||||
|
|
||||||
|
func _input(input_event):
|
||||||
|
if input_event is InputEventMIDI:
|
||||||
|
_process_midi_event(input_event)
|
||||||
|
|
||||||
|
func _process_midi_event(midi_event):
|
||||||
|
if not mmb_self:
|
||||||
|
return
|
||||||
|
|
||||||
|
if midi_event.channel in [0, 9]:
|
||||||
|
if midi_event.message == MIDI_MESSAGE_NOTE_ON:
|
||||||
|
set_morse_state(true)
|
||||||
|
elif midi_event.message == MIDI_MESSAGE_NOTE_OFF:
|
||||||
|
set_morse_state(false)
|
||||||
|
|
||||||
func _on_leave_button_pressed() -> void:
|
func _on_leave_button_pressed() -> void:
|
||||||
send_data({"cmd": "leave"})
|
send_data({"cmd": "leave"})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue