TETRIS3000/source/MidiPlayer.gd
2019-01-13 23:16:02 +01:00

59 lines
1.6 KiB
GDScript

extends "midi/MidiPlayer.gd"
const Tetromino = preload("res://Tetrominos/Tetromino.gd")
const LINE_CLEAR_CHANNELS = [2, 6]
const MOVE_CHANNELS = []
var muted_events = []
func _ready():
._ready()
mute_channels(LINE_CLEAR_CHANNELS+MOVE_CHANNELS)
func _init_channel( ):
._init_channel()
for channel in max_channel:
self.muted_events.append({})
func resume():
play(position)
func _process_track_event_note_off( channel, event ):
muted_events[channel.number].erase(event.note)
._process_track_event_note_off( channel, event )
func _process_track_event_note_on( channel, event ):
if self.channel_mute[channel.number]:
muted_events[channel.number][event.note] = event
._process_track_event_note_on( channel, event )
func mute_channels(channels):
for channel_id in channels:
channel_mute[channel_id] = true
func unmute_channels(channels):
for channel_id in channels:
channel_mute[channel_id] = false
for note in muted_events[channel_id]:
_process_track_event_note_on(channel_status[channel_id], muted_events[channel_id][note])
func _on_Main_piece_locked(lines, t_spin):
if lines or t_spin:
if lines == Tetromino.NB_MINOES:
for channel in LINE_CLEAR_CHANNELS:
channel_status[channel].vomume = 127
$LineCLearTimer.wait_time = 0.86
else:
for channel in LINE_CLEAR_CHANNELS:
channel_status[channel].vomume = 100
$LineCLearTimer.wait_time = 0.43
unmute_channels(LINE_CLEAR_CHANNELS)
$LineCLearTimer.start()
func _on_LineCLearTimer_timeout():
mute_channels(LINE_CLEAR_CHANNELS)
func move():
unmute_channels(MOVE_CHANNELS)
mute_channels(MOVE_CHANNELS)