remove explosion delay, double midi with clarinette
This commit is contained in:
parent
b904924241
commit
556f9fca24
@ -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 y2 in range(y, NB_LINES+2):
|
||||
for x in range(NB_COLLUMNS):
|
||||
set_cell_item(x, y, 0, EMPTY_CELL)
|
||||
lines_to_clear.append(y)
|
||||
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)
|
||||
|
@ -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"]
|
||||
|
||||
|
||||
|
@ -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"
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user