From 556f9fca24a0e95732b4cb8957dd32c70c8c8b8e Mon Sep 17 00:00:00 2001 From: adrienmalin <41926238+adrienmalin@users.noreply.github.com> Date: Tue, 1 Jan 2019 02:50:58 +0100 Subject: [PATCH] remove explosion delay, double midi with clarinette --- GridMap/GridMap.gd | 55 +++++++++------------------------------ GridMap/GridMap.tscn | 35 ++++++------------------- midi/MidiPlayer.gd | 2 +- midi/Tetris - Song A.mid | Bin 16165 -> 30722 bytes 4 files changed, 22 insertions(+), 70 deletions(-) diff --git a/GridMap/GridMap.gd b/GridMap/GridMap.gd index a88ab27..8e718e5 100644 --- a/GridMap/GridMap.gd +++ b/GridMap/GridMap.gd @@ -45,7 +45,6 @@ var current_piece_held = false var autoshift_action = "" var exploding_lines = [] -var lines_to_clear = [] var random_bag = [] var playing = true @@ -90,7 +89,6 @@ func new_piece(): current_piece.emit_trail(true) update_ghost_piece() autoshift_action = "" - update_ghost_piece() next_piece = random_piece() next_piece.translation = NEXT_POSITION if move(movements["soft_drop"]): @@ -118,22 +116,18 @@ func process_actions(): for action in movements: if action != autoshift_action: if Input.is_action_pressed(action): - if move(movements[action]): - move_midi() + move(movements[action]) autoshift_action = action $AutoShiftTimer.stop() $AutoShiftDelay.start() if Input.is_action_just_pressed("hard_drop"): - move_midi() while move(movements["soft_drop"]): pass lock_piece() if Input.is_action_just_pressed("rotate_clockwise"): rotate(Tetromino.CLOCKWISE) - move_midi() if Input.is_action_just_pressed("rotate_counterclockwise"): rotate(Tetromino.COUNTERCLOCKWISE) - move_midi() if Input.is_action_just_pressed("hold"): hold() @@ -182,12 +176,6 @@ func rotate(direction): else: return false -func move_midi(): - for channel_id in MIDI_MOVE_CHANNELS: - $MidiPlayer.channel_status[channel_id].pan = current_piece.translation.x / 10.0 - $MidiPlayer.mute_midi_channels(MIDI_MOVE_CHANNELS, false) - $MidiPlayer/MoveDelay.start() - func update_ghost_piece(): var new_positions = current_piece.positions() var positions @@ -211,29 +199,26 @@ func lock_piece(): func line_clear(): var NB_MINOES - lines_to_clear = [] + var lines_cleared = 0 for y in range(NB_LINES-1, -1, -1): NB_MINOES = 0 for x in range(NB_COLLUMNS): if get_cell_item(x, y, 0) == 0: NB_MINOES += 1 if NB_MINOES == NB_COLLUMNS: - for x in range(NB_COLLUMNS): - set_cell_item(x, y, 0, EMPTY_CELL) - lines_to_clear.append(y) + for y2 in range(y, NB_LINES+2): + for x in range(NB_COLLUMNS): + set_cell_item(x, y2, 0, get_cell_item(x, y2+1, 0)) + lines_cleared += 1 exploding_lines[y].restart() - if lines_to_clear: - $ExplosionDelay.start() - update_score() - -func update_score(): - if lines_to_clear or current_piece.t_spin: - var s = SCORES[lines_to_clear.size()][current_piece.t_spin] + update_ghost_piece() + if lines_cleared or current_piece.t_spin: + var s = SCORES[lines_cleared][current_piece.t_spin] score += 100 * s goal -= s - print(T_SPIN_NAMES[current_piece.t_spin], ' ', LINES_CLEARED_NAMES[lines_to_clear.size()], " Score ", score) + print(T_SPIN_NAMES[current_piece.t_spin], ' ', LINES_CLEARED_NAMES[lines_cleared], " Score ", score) - if lines_to_clear.size() == Tetromino.NB_MINOES: + if lines_cleared == Tetromino.NB_MINOES: for channel in $MidiPlayer.line_clear_notes: $MidiPlayer.channel_status[channel].vomume = 127 $MidiPlayer/LineCLearTimer.wait_time = 0.86 @@ -249,13 +234,6 @@ func update_score(): else: new_piece() -func _on_ExplosionDelay_timeout(): - for cleared_line in lines_to_clear: - for y in range(cleared_line, NB_LINES+2): - for x in range(NB_COLLUMNS): - set_cell_item(x, y, 0, get_cell_item(x, y+1, 0)) - update_ghost_piece() - func hold(): if not current_piece_held: if held_piece: @@ -264,10 +242,10 @@ func hold(): current_piece = tmp current_piece.translation = START_POSITION current_piece.emit_trail(true) - update_ghost_piece() else: held_piece = current_piece new_piece() + update_ghost_piece() held_piece.translation = HOLD_POSITION held_piece.emit_trail(false) current_piece_held = true @@ -277,7 +255,6 @@ func resume(): $DropTimer.start() $LockDelay.start() $MidiPlayer.resume() - $MidiPlayer.mute_midi_channels(MIDI_MOVE_CHANNELS, true) $MidiPlayer.mute_midi_channels($MidiPlayer.line_clear_notes, true) print("RESUME") @@ -289,10 +266,7 @@ func pause(): print("PAUSE") func game_over(): - playing = false - $DropTimer.stop() - $AutoShiftDelay.stop() - $AutoShiftTimer.stop() + pause() print("GAME OVER") func _notification(what): @@ -301,8 +275,5 @@ func _notification(what): if what == MainLoop.NOTIFICATION_WM_FOCUS_IN: resume() -func _on_MoveDelay_timeout(): - $MidiPlayer.mute_midi_channels(MIDI_MOVE_CHANNELS, true) - func _on_LineCLearTimer_timeout(): $MidiPlayer.mute_midi_channels($MidiPlayer.line_clear_notes, true) diff --git a/GridMap/GridMap.tscn b/GridMap/GridMap.tscn index 2ba31dc..621d21d 100644 --- a/GridMap/GridMap.tscn +++ b/GridMap/GridMap.tscn @@ -65,50 +65,35 @@ wait_time = 0.02 one_shot = false autostart = true -[node name="ExplosionDelay" type="Timer" parent="." index="4"] - -process_mode = 1 -wait_time = 0.1 -one_shot = true -autostart = false - -[node name="GridBack" parent="." index="5" instance=ExtResource( 3 )] +[node name="GridBack" parent="." index="4" instance=ExtResource( 3 )] transform = Transform( 10, 0, 0, 0, 20, 0, 0, 0, 0.1, 4.5, 9.5, -1 ) mesh = SubResource( 1 ) -[node name="HoldBack" parent="." index="6" instance=ExtResource( 3 )] +[node name="HoldBack" parent="." index="5" instance=ExtResource( 3 )] transform = Transform( 7, 0, 0, 0, 7, 0, 0, 0, 0.1, -5, 16, -1 ) mesh = SubResource( 1 ) -[node name="NextBack" parent="." index="7" instance=ExtResource( 3 )] +[node name="NextBack" parent="." index="6" instance=ExtResource( 3 )] transform = Transform( 7, 0, 0, 0, 7, 0, 0, 0, 0.1, 14, 16, -1 ) mesh = SubResource( 1 ) -[node name="GhostPiece" parent="." index="8" instance=ExtResource( 5 )] +[node name="GhostPiece" parent="." index="7" instance=ExtResource( 5 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 20, 0 ) _sections_unfolded = [ "Pause", "Transform" ] -[node name="MidiPlayer" parent="." index="9" instance=ExtResource( 6 )] +[node name="MidiPlayer" parent="." index="8" instance=ExtResource( 6 )] file = "res://midi/Tetris - Song A.mid" -channel_mute = [ false, true, false, false, false, false, false, true, true, true, true, false, false, false, false, false ] -volume_db = -3 +volume_db = -24 loop = true -loop_start = 2 +loop_start = 1.81 soundfont = "res://midi/FluidR3 GM.sf2" -[node name="MoveDelay" type="Timer" parent="MidiPlayer" index="1"] - -process_mode = 1 -wait_time = 0.1 -one_shot = true -autostart = false - -[node name="LineCLearTimer" type="Timer" parent="MidiPlayer" index="2"] +[node name="LineCLearTimer" type="Timer" parent="MidiPlayer" index="1"] process_mode = 1 wait_time = 1.41 @@ -123,10 +108,6 @@ autostart = false [connection signal="timeout" from="AutoShiftTimer" to="." method="_on_AutoShiftTimer_timeout"] -[connection signal="timeout" from="ExplosionDelay" to="." method="_on_ExplosionDelay_timeout"] - -[connection signal="timeout" from="MidiPlayer/MoveDelay" to="." method="_on_MoveDelay_timeout"] - [connection signal="timeout" from="MidiPlayer/LineCLearTimer" to="." method="_on_LineCLearTimer_timeout"] diff --git a/midi/MidiPlayer.gd b/midi/MidiPlayer.gd index 405191a..751639b 100644 --- a/midi/MidiPlayer.gd +++ b/midi/MidiPlayer.gd @@ -19,7 +19,7 @@ export var play_speed = 1.0 export var volume_db = -30 export var key_shift = 0 export var loop = false -export var loop_start = 0 +export var loop_start = 1.81 export var soundfont = "" export var mix_target = AudioStreamPlayer.MIX_TARGET_STEREO export var bus = "Master" diff --git a/midi/Tetris - Song A.mid b/midi/Tetris - Song A.mid index a3bfc6f9e0e44eec847481d2fd92678929066a1f..3f2edbc165b4652320ff4e687778a4b975736bdd 100644 GIT binary patch delta 242 zcmZ2l*YtsLf(R31Q#JvNLf{-TYYnIP2zT>Q`8qxSBTa(Y0p<8M9BM26EqusPwsA|nIP)gX%D lzdnO+NKrNe1A{h1g5f_ir;=}Jab~iDqY_Zn<`=fMi~w@-Q7!-g delta 198 zcmZqrz__$-f(R4Cx`|?|CTBBpv2vYmPMEOSf#*CIQ$+J-A@NuiCf2Uah0^V;llyHr zS=b_*6E@$|iDhGAoV3~2xQ~&K;lDnEZ%9!#0|T=pP_EiimYIoNZ}Ti09rnrZy*OA| zFE%I4+