clean midi, delete trail

This commit is contained in:
adrienmalin 2019-01-01 14:42:28 +01:00
parent 50821bbb8f
commit 23afbdfdbe
9 changed files with 45 additions and 288 deletions

View File

@ -86,7 +86,7 @@ lod_min_hysteresis = 0.0
lod_max_distance = 0.0 lod_max_distance = 0.0
lod_max_hysteresis = 0.0 lod_max_hysteresis = 0.0
emitting = false emitting = false
amount = 1000 amount = 800
lifetime = 2.0 lifetime = 2.0
one_shot = true one_shot = true
preprocess = 0.0 preprocess = 0.0

View File

@ -35,7 +35,7 @@ const SCORES = [
const LINES_CLEARED_NAMES = ["", "SINGLE", "DOUBLE", "TRIPLE", "TETRIS"] const LINES_CLEARED_NAMES = ["", "SINGLE", "DOUBLE", "TRIPLE", "TETRIS"]
const T_SPIN_NAMES = ["", "T-SPIN", "MINI T-SPIN"] const T_SPIN_NAMES = ["", "T-SPIN", "MINI T-SPIN"]
const MIDI_MOVE_CHANNELS = [] #[7, 8, 9, 11, 12] const LINE_CLEAR_MIDI_CHANNELS = [2, 6]
var next_piece = random_piece() var next_piece = random_piece()
var current_piece var current_piece
@ -85,7 +85,6 @@ func random_piece():
func new_piece(): func new_piece():
current_piece = next_piece current_piece = next_piece
current_piece.translation = START_POSITION current_piece.translation = START_POSITION
current_piece.emit_trail(true)
autoshift_action = "" autoshift_action = ""
next_piece = random_piece() next_piece = random_piece()
next_piece.translation = NEXT_POSITION next_piece.translation = NEXT_POSITION
@ -205,15 +204,14 @@ func line_clear():
print(T_SPIN_NAMES[current_piece.t_spin], ' ', LINES_CLEARED_NAMES[lines_cleared], " Score ", score) print(T_SPIN_NAMES[current_piece.t_spin], ' ', LINES_CLEARED_NAMES[lines_cleared], " Score ", score)
if lines_cleared == Tetromino.NB_MINOES: if lines_cleared == Tetromino.NB_MINOES:
for channel in $MidiPlayer.line_clear_notes: for channel in LINE_CLEAR_MIDI_CHANNELS:
$MidiPlayer.channel_status[channel].vomume = 127 $MidiPlayer.channel_status[channel].vomume = 127
$MidiPlayer/LineCLearTimer.wait_time = 0.86 $MidiPlayer/LineCLearTimer.wait_time = 0.86
else: else:
for channel in $MidiPlayer.line_clear_notes: for channel in LINE_CLEAR_MIDI_CHANNELS:
$MidiPlayer.channel_status[channel].vomume = 100 $MidiPlayer.channel_status[channel].vomume = 100
$MidiPlayer/LineCLearTimer.wait_time = 0.43 $MidiPlayer/LineCLearTimer.wait_time = 0.43
$MidiPlayer.mute_midi_channels($MidiPlayer.line_clear_notes, false) $MidiPlayer.unmute_channels(LINE_CLEAR_MIDI_CHANNELS)
$MidiPlayer.play_line_clear()
$MidiPlayer/LineCLearTimer.start() $MidiPlayer/LineCLearTimer.start()
if goal <= 0: if goal <= 0:
new_level() new_level()
@ -222,13 +220,11 @@ func line_clear():
func hold(): func hold():
if not current_piece_held: if not current_piece_held:
current_piece.emit_trail(false)
if held_piece: if held_piece:
var tmp = held_piece var tmp = held_piece
held_piece = current_piece held_piece = current_piece
current_piece = tmp current_piece = tmp
current_piece.translation = START_POSITION current_piece.translation = START_POSITION
current_piece.emit_trail(true)
else: else:
held_piece = current_piece held_piece = current_piece
new_piece() new_piece()
@ -240,7 +236,7 @@ func resume():
$DropTimer.start() $DropTimer.start()
$LockDelay.start() $LockDelay.start()
$MidiPlayer.resume() $MidiPlayer.resume()
$MidiPlayer.mute_midi_channels($MidiPlayer.line_clear_notes, true) $MidiPlayer.mute_channels(LINE_CLEAR_MIDI_CHANNELS)
print("RESUME") print("RESUME")
func pause(): func pause():
@ -261,4 +257,4 @@ func _notification(what):
resume() resume()
func _on_LineCLearTimer_timeout(): func _on_LineCLearTimer_timeout():
$MidiPlayer.mute_midi_channels($MidiPlayer.line_clear_notes, true) $MidiPlayer.mute_channels(LINE_CLEAR_MIDI_CHANNELS)

View File

@ -15,8 +15,9 @@ subdivide_width = 0
subdivide_height = 0 subdivide_height = 0
subdivide_depth = 0 subdivide_depth = 0
[node name="GridMap" type="GridMap"] [node name="GridMap" type="GridMap" index="0"]
editor/display_folded = true
theme = ExtResource( 1 ) theme = ExtResource( 1 )
cell_size = Vector3( 1, 1, 1 ) cell_size = Vector3( 1, 1, 1 )
cell_octant_size = 8 cell_octant_size = 8
@ -60,7 +61,7 @@ autostart = false
[node name="AutoShiftTimer" type="Timer" parent="." index="3"] [node name="AutoShiftTimer" type="Timer" parent="." index="3"]
process_mode = 1 process_mode = 1
wait_time = 0.02 wait_time = 0.03
one_shot = false one_shot = false
autostart = true autostart = true

View File

@ -1,117 +1,10 @@
[gd_scene load_steps=9 format=2] [gd_scene load_steps=4 format=2]
[ext_resource path="res://Tetrominos/Mino/MinoMesh.tscn" type="PackedScene" id=1] [ext_resource path="res://Tetrominos/Mino/MinoMesh.tscn" type="PackedScene" id=1]
[ext_resource path="res://Tetrominos/Mino/MinoMesh.tres" type="CubeMesh" id=2] [ext_resource path="res://Tetrominos/Mino/MinoMesh.tres" type="CubeMesh" id=2]
[ext_resource path="res://Tetrominos/Mino/TrailMaterial.tres" type="Material" id=3] [ext_resource path="res://Tetrominos/Mino/SpotLight.tscn" type="PackedScene" id=3]
[ext_resource path="res://Tetrominos/Mino/SpotLight.tscn" type="PackedScene" id=4]
[sub_resource type="SpatialMaterial" id=1] [node name="Mino" type="Spatial" index="0"]
render_priority = 0
flags_transparent = true
flags_unshaded = false
flags_vertex_lighting = false
flags_no_depth_test = false
flags_use_point_size = false
flags_world_triplanar = false
flags_fixed_size = false
flags_albedo_tex_force_srgb = false
vertex_color_use_as_albedo = false
vertex_color_is_srgb = false
params_diffuse_mode = 0
params_specular_mode = 0
params_blend_mode = 1
params_cull_mode = 0
params_depth_draw_mode = 0
params_line_width = 1.0
params_point_size = 1.0
params_billboard_mode = 0
params_grow = false
params_use_alpha_scissor = false
albedo_color = Color( 0.601563, 0.775878, 1, 0.270275 )
metallic = 0.68
metallic_specular = 1.0
metallic_texture_channel = 0
roughness = 0.0
roughness_texture_channel = 0
emission_enabled = false
normal_enabled = false
rim_enabled = false
clearcoat_enabled = false
anisotropy_enabled = false
ao_enabled = false
depth_enabled = false
subsurf_scatter_enabled = false
transmission_enabled = false
refraction_enabled = false
detail_enabled = false
uv1_scale = Vector3( 1, 1, 1 )
uv1_offset = Vector3( 0, 0, 0 )
uv1_triplanar = false
uv1_triplanar_sharpness = 1.0
uv2_scale = Vector3( 1, 1, 1 )
uv2_offset = Vector3( 0, 0, 0 )
uv2_triplanar = false
uv2_triplanar_sharpness = 1.0
proximity_fade_enable = true
proximity_fade_distance = 1.0
distance_fade_enable = false
_sections_unfolded = [ "Albedo", "Emission", "Metallic", "NormalMap", "Proximity Fade" ]
[sub_resource type="GradientTexture" id=2]
flags = 4
width = 2048
[sub_resource type="ParticlesMaterial" id=3]
render_priority = 0
trail_divisor = 1
emission_shape = 0
flag_align_y = false
flag_rotate_y = false
flag_disable_z = true
spread = 0.0
flatness = 0.0
gravity = Vector3( 0, 0, 0 )
initial_velocity = 0.0
initial_velocity_random = 0.0
angular_velocity = 0.0
angular_velocity_random = 0.0
orbit_velocity = 0.0
orbit_velocity_random = 0.0
linear_accel = 0.0
linear_accel_random = 0.0
radial_accel = 0.0
radial_accel_random = 0.0
tangential_accel = 0.0
tangential_accel_random = 0.0
damping = 0.0
damping_random = 0.0
angle = 0.0
angle_random = 0.0
scale = 1.0
scale_random = 0.0
color_ramp = SubResource( 2 )
hue_variation = 0.0
hue_variation_random = 0.0
anim_speed = 0.0
anim_speed_random = 0.0
anim_offset = 0.0
anim_offset_random = 0.0
anim_loop = false
_sections_unfolded = [ "Color", "Gravity" ]
[sub_resource type="CubeMesh" id=4]
material = ExtResource( 3 )
custom_aabb = AABB( 0, 0, 0, 0, 0, 0 )
size = Vector3( 0.9, 0.9, 0.9 )
subdivide_width = 0
subdivide_height = 0
subdivide_depth = 0
[node name="Mino" type="Spatial"]
_sections_unfolded = [ "Pause", "Transform", "Visibility" ] _sections_unfolded = [ "Pause", "Transform", "Visibility" ]
@ -121,38 +14,10 @@ mesh = ExtResource( 2 )
material/0 = null material/0 = null
_sections_unfolded = [ "Geometry", "Transform", "material" ] _sections_unfolded = [ "Geometry", "Transform", "material" ]
[node name="Trail" type="Particles" parent="." index="1"] [node name="SpotLight" parent="." index="1" instance=ExtResource( 3 )]
layers = 1
material_override = SubResource( 1 )
cast_shadow = 1
extra_cull_margin = 0.0
use_in_baked_light = false
lod_min_distance = 0.0
lod_min_hysteresis = 0.0
lod_max_distance = 0.0
lod_max_hysteresis = 0.0
emitting = false
amount = 4
lifetime = 0.1
one_shot = false
preprocess = 0.0
speed_scale = 1.0
explosiveness = 0.0
randomness = 0.0
fixed_fps = 0
fract_delta = true
visibility_aabb = AABB( -0.5, -0.5, -0.5, 1, 1, 1 )
local_coords = false
draw_order = 0
process_material = SubResource( 3 )
draw_passes = 1
draw_pass_1 = SubResource( 4 )
_sections_unfolded = [ "Draw Passes", "Drawing", "Geometry", "LOD", "Process Material", "Time", "Transform" ]
[node name="SpotLight" parent="." index="2" instance=ExtResource( 4 )]
transform = Transform( 1, 0, 0, 0, -4.37114e-008, 1, 0, -1, -4.37114e-008, 0, 0, 1 ) transform = Transform( 1, 0, 0, 0, -4.37114e-008, 1, 0, -1, -4.37114e-008, 0, 0, 1 )
light_energy = 4.0 light_energy = 4.0
light_cull_mask = -1

View File

@ -1,59 +0,0 @@
[gd_resource type="SpatialMaterial" format=2]
[resource]
render_priority = 0
flags_transparent = true
flags_unshaded = false
flags_vertex_lighting = false
flags_no_depth_test = false
flags_use_point_size = false
flags_world_triplanar = false
flags_fixed_size = false
flags_albedo_tex_force_srgb = false
vertex_color_use_as_albedo = false
vertex_color_is_srgb = false
params_diffuse_mode = 0
params_specular_mode = 0
params_blend_mode = 1
params_cull_mode = 0
params_depth_draw_mode = 0
params_line_width = 1.0
params_point_size = 1.0
params_billboard_mode = 0
params_grow = false
params_use_alpha_scissor = false
albedo_color = Color( 0.67451, 1, 0.988235, 0.108118 )
metallic = 0.22
metallic_specular = 1.0
metallic_texture_channel = 0
roughness = 0.49
roughness_texture_channel = 0
emission_enabled = true
emission = Color( 0.700471, 1, 0.98947, 1 )
emission_energy = 0.2
emission_operator = 0
emission_on_uv2 = false
normal_enabled = false
rim_enabled = false
clearcoat_enabled = false
anisotropy_enabled = false
ao_enabled = false
depth_enabled = false
subsurf_scatter_enabled = false
transmission_enabled = false
refraction_enabled = false
detail_enabled = false
uv1_scale = Vector3( 1, 1, 1 )
uv1_offset = Vector3( 0, 0, 0 )
uv1_triplanar = false
uv1_triplanar_sharpness = 1.0
uv2_scale = Vector3( 1, 1, 1 )
uv2_offset = Vector3( 0, 0, 0 )
uv2_triplanar = false
uv2_triplanar_sharpness = 1.0
proximity_fade_enable = true
proximity_fade_distance = 1.0
distance_fade_enable = false
_sections_unfolded = [ "Albedo", "Emission", "Metallic", "Parameters" ]

View File

@ -1,55 +0,0 @@
[gd_resource type="SpatialMaterial" format=2]
[resource]
render_priority = 0
flags_transparent = true
flags_unshaded = false
flags_vertex_lighting = false
flags_no_depth_test = false
flags_use_point_size = false
flags_world_triplanar = false
flags_fixed_size = false
flags_albedo_tex_force_srgb = false
vertex_color_use_as_albedo = false
vertex_color_is_srgb = false
params_diffuse_mode = 0
params_specular_mode = 0
params_blend_mode = 1
params_cull_mode = 0
params_depth_draw_mode = 0
params_line_width = 1.0
params_point_size = 1.0
params_billboard_mode = 0
params_grow = false
params_use_alpha_scissor = false
albedo_color = Color( 0.601563, 0.775878, 1, 0.0196078 )
metallic = 0.68
metallic_specular = 1.0
metallic_texture_channel = 0
roughness = 0.0
roughness_texture_channel = 0
emission_enabled = false
normal_enabled = false
rim_enabled = false
clearcoat_enabled = false
anisotropy_enabled = false
ao_enabled = false
depth_enabled = false
subsurf_scatter_enabled = false
transmission_enabled = false
refraction_enabled = false
detail_enabled = false
uv1_scale = Vector3( 1, 1, 1 )
uv1_offset = Vector3( 0, 0, 0 )
uv1_triplanar = false
uv1_triplanar_sharpness = 1.0
uv2_scale = Vector3( 1, 1, 1 )
uv2_offset = Vector3( 0, 0, 0 )
uv2_triplanar = false
uv2_triplanar_sharpness = 1.0
proximity_fade_enable = true
proximity_fade_distance = 1.0
distance_fade_enable = false
_sections_unfolded = [ "Albedo", "Emission", "Proximity Fade" ]

View File

@ -120,8 +120,4 @@ func rotate(direction):
apply_positions(rotated_positions) apply_positions(rotated_positions)
translate(movement) translate(movement)
return true return true
return false return false
func emit_trail(emit):
for mino in minoes:
mino.get_node("Trail").emitting = emit

View File

@ -144,4 +144,19 @@ data = {
"cells": PoolIntArray( ) "cells": PoolIntArray( )
} }
[node name="HUD" type="Control" parent="." index="3"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 40.0
margin_bottom = 40.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1

View File

@ -38,8 +38,7 @@ var audio_stream_players = []
var _used_program_numbers = [] var _used_program_numbers = []
var line_clear_notes = {2: {}, 6: {}} var muted_events = []
var line_clear_notes_to_stop
var paused_position = 0 var paused_position = 0
signal changed_tempo( tempo ) signal changed_tempo( tempo )
@ -181,6 +180,7 @@ func _init_channel( ):
"drum_track": drum_track, "drum_track": drum_track,
"pan": 0.5, "pan": 0.5,
}) })
self.muted_events.append({})
""" """
@ -278,12 +278,11 @@ func _process_track( ):
match event.type: match event.type:
SMF.MIDIEventType.note_off: SMF.MIDIEventType.note_off:
if event_chunk.channel_number in line_clear_notes: muted_events[event_chunk.channel_number].erase(event.note)
line_clear_notes[event_chunk.channel_number].erase(event.note)
self._process_track_event_note_off( channel, event ) self._process_track_event_note_off( channel, event )
SMF.MIDIEventType.note_on: SMF.MIDIEventType.note_on:
if event_chunk.channel_number in line_clear_notes: if self.channel_mute[event_chunk.channel_number]:
line_clear_notes[event_chunk.channel_number][event.note] = event muted_events[event_chunk.channel_number][event.note] = event
self._process_track_event_note_on( channel, event ) self._process_track_event_note_on( channel, event )
SMF.MIDIEventType.program_change: SMF.MIDIEventType.program_change:
channel.program = event.number channel.program = event.number
@ -411,14 +410,13 @@ func get_now_playing_polyphony( ):
func resume(): func resume():
play(position) play(position)
func play_line_clear(): func mute_channels(channels):
line_clear_notes_to_stop = {2: {}, 6:{}}
for channel in line_clear_notes:
for note in line_clear_notes[channel]:
_process_track_event_note_on(channel_status[channel], line_clear_notes[channel][note])
line_clear_notes_to_stop[channel][note] = line_clear_notes[channel][note]
func mute_midi_channels(channels, muted):
for channel_id in channels: for channel_id in channels:
channel_mute[channel_id] = muted 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])