GHOST PIECE

This commit is contained in:
adrienmalin 2019-01-26 14:03:27 +01:00
parent ac6e561c3d
commit 92b97dbfb3
5 changed files with 271 additions and 36 deletions

View File

@ -43,7 +43,7 @@ func new_game(level):
func new_piece():
current_piece = next_piece
current_piece.translation = $Matrix/Position3D.translation
current_piece.turn_light(true)
current_piece.move_ghost()
next_piece = random_piece()
next_piece.translation = $Next/Position3D.translation
if $Matrix/GridMap.possible_positions(current_piece.get_translations(), THERE):
@ -159,13 +159,12 @@ func hold():
var swap = current_piece
current_piece = held_piece
held_piece = swap
held_piece.turn_light(false)
for mino in held_piece.minoes:
mino.get_node("LockingMesh").visible = false
held_piece.translation = $Hold/Position3D.translation
if current_piece:
current_piece.translation = $Matrix/Position3D.translation
current_piece.turn_light(true)
current_piece.move_ghost()
else:
new_piece()
@ -182,6 +181,7 @@ func resume():
$Hold.visible = true
$Next.visible = true
current_piece.visible = true
$Ghost.visible = true
if held_piece:
held_piece.visible = true
next_piece.visible = true
@ -203,6 +203,7 @@ func pause(gui=null):
$Hold.visible = false
$Next.visible = false
current_piece.visible = false
$Ghost.visible = false
if held_piece:
held_piece.visible = false
next_piece.visible = false

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=2]
[gd_scene load_steps=22 format=2]
[ext_resource path="res://Environment.tres" type="Environment" id=1]
[ext_resource path="res://Main.gd" type="Script" id=2]
@ -14,6 +14,7 @@
[ext_resource path="res://controls.tscn" type="PackedScene" id=12]
[ext_resource path="res://Start.tscn" type="PackedScene" id=13]
[ext_resource path="res://fonts/Gamer.ttf" type="DynamicFontData" id=14]
[ext_resource path="res://Tetrominos/Ghost.tscn" type="PackedScene" id=15]
[sub_resource type="SpatialMaterial" id=1]
@ -146,14 +147,14 @@ extra_spacing_bottom = 5
font_data = ExtResource( 14 )
_sections_unfolded = [ "Extra Spacing", "Font", "Settings" ]
[node name="Main" type="WorldEnvironment" index="0"]
[node name="Main" type="WorldEnvironment"]
environment = ExtResource( 1 )
script = ExtResource( 2 )
[node name="Background" type="Sprite3D" parent="." index="0"]
transform = Transform( 12.8, 0, 0, 0, 8.53, 0, 0, 0, 1, 4.5, 29, -34 )
transform = Transform( 12.8, 0, 0, 0, 8.53, 0, 0, 0, 1, 4.5, 28.8, -34 )
layers = 1
material_override = null
cast_shadow = 1
@ -627,6 +628,10 @@ flat = false
align = 1
_sections_unfolded = [ "Margin", "custom_colors", "custom_fonts" ]
[node name="Ghost" parent="." index="16" instance=ExtResource( 15 )]
visible = false
[connection signal="timeout" from="Matrix/DropTrail/Delay" to="." method="_on_DropTrailDelay_timeout"]
[connection signal="timeout" from="DropTimer" to="." method="_on_DropTimer_timeout"]

View File

@ -0,0 +1,247 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Tetrominos/TetroI.gd" type="Script" id=1]
[sub_resource type="SpatialMaterial" id=1]
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.259529 )
metallic = 1.0
metallic_specular = 0.63
metallic_texture_channel = 4
roughness = 0.46
roughness_texture_channel = 0
emission_enabled = true
emission = Color( 0.446159, 0.591797, 0.540939, 1 )
emission_energy = 0.15
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", "NormalMap", "Proximity Fade" ]
[sub_resource type="CubeMesh" id=2]
material = SubResource( 1 )
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="Ghost" type="Spatial" index="0"]
script = ExtResource( 1 )
[node name="Mino0" type="Spatial" parent="." index="0"]
transform = Transform( 0.997027, 0, 0, 0, 0.997027, 0, 0, 0, 0.997027, 0, 0, 0 )
_sections_unfolded = [ "Pause", "Transform", "Visibility" ]
[node name="MinoMesh" type="MeshInstance" parent="Mino0" index="0"]
layers = 1
material_override = null
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
mesh = SubResource( 2 )
skeleton = NodePath("..")
material/0 = null
_sections_unfolded = [ "Geometry", "Transform", "material" ]
[node name="OmniLight" type="OmniLight" parent="Mino0" index="1"]
layers = 1
light_color = Color( 1, 1, 1, 1 )
light_energy = 16.0
light_indirect_energy = 1.0
light_negative = false
light_specular = 0.5
light_bake_mode = 1
light_cull_mask = -1
shadow_enabled = false
shadow_color = Color( 0, 0, 0, 1 )
shadow_bias = 0.15
shadow_contact = 0.0
shadow_reverse_cull_face = false
editor_only = false
omni_range = 5.0
omni_attenuation = 1.0
omni_shadow_mode = 1
omni_shadow_detail = 1
_sections_unfolded = [ "Light" ]
[node name="Mino1" type="Spatial" parent="." index="1"]
transform = Transform( 0.997027, 0, 0, 0, 0.997027, 0, 0, 0, 0.997027, 0, 0, 0 )
_sections_unfolded = [ "Pause", "Transform", "Visibility" ]
[node name="MinoMesh" type="MeshInstance" parent="Mino1" index="0"]
layers = 1
material_override = null
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
mesh = SubResource( 2 )
skeleton = NodePath("..")
material/0 = null
_sections_unfolded = [ "Geometry", "Transform", "material" ]
[node name="OmniLight" type="OmniLight" parent="Mino1" index="1"]
layers = 1
light_color = Color( 1, 1, 1, 1 )
light_energy = 16.0
light_indirect_energy = 1.0
light_negative = false
light_specular = 0.5
light_bake_mode = 1
light_cull_mask = -1
shadow_enabled = false
shadow_color = Color( 0, 0, 0, 1 )
shadow_bias = 0.15
shadow_contact = 0.0
shadow_reverse_cull_face = false
editor_only = false
omni_range = 5.0
omni_attenuation = 1.0
omni_shadow_mode = 1
omni_shadow_detail = 1
_sections_unfolded = [ "Light" ]
[node name="Mino2" type="Spatial" parent="." index="2"]
transform = Transform( 0.997027, 0, 0, 0, 0.997027, 0, 0, 0, 0.997027, 0, 0, 0 )
_sections_unfolded = [ "Pause", "Transform", "Visibility" ]
[node name="MinoMesh" type="MeshInstance" parent="Mino2" index="0"]
layers = 1
material_override = null
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
mesh = SubResource( 2 )
skeleton = NodePath("..")
material/0 = null
_sections_unfolded = [ "Geometry", "Transform", "material" ]
[node name="OmniLight" type="OmniLight" parent="Mino2" index="1"]
layers = 1
light_color = Color( 1, 1, 1, 1 )
light_energy = 16.0
light_indirect_energy = 1.0
light_negative = false
light_specular = 0.5
light_bake_mode = 1
light_cull_mask = -1
shadow_enabled = false
shadow_color = Color( 0, 0, 0, 1 )
shadow_bias = 0.15
shadow_contact = 0.0
shadow_reverse_cull_face = false
editor_only = false
omni_range = 5.0
omni_attenuation = 1.0
omni_shadow_mode = 1
omni_shadow_detail = 1
_sections_unfolded = [ "Light" ]
[node name="Mino3" type="Spatial" parent="." index="3"]
transform = Transform( 0.997027, 0, 0, 0, 0.997027, 0, 0, 0, 0.997027, 0, 0, 0 )
_sections_unfolded = [ "Pause", "Transform", "Visibility" ]
[node name="MinoMesh" type="MeshInstance" parent="Mino3" index="0"]
layers = 1
material_override = null
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
mesh = SubResource( 2 )
skeleton = NodePath("..")
material/0 = null
_sections_unfolded = [ "Geometry", "Transform", "material" ]
[node name="OmniLight" type="OmniLight" parent="Mino3" index="1"]
layers = 1
light_color = Color( 1, 1, 1, 1 )
light_energy = 16.0
light_indirect_energy = 1.0
light_negative = false
light_specular = 0.5
light_bake_mode = 1
light_cull_mask = -1
shadow_enabled = false
shadow_color = Color( 0, 0, 0, 1 )
shadow_bias = 0.15
shadow_contact = 0.0
shadow_reverse_cull_face = false
editor_only = false
omni_range = 5.0
omni_attenuation = 1.0
omni_shadow_mode = 1
omni_shadow_detail = 1
_sections_unfolded = [ "Light" ]

View File

@ -79,30 +79,7 @@ mesh = ExtResource( 2 )
material/0 = null
_sections_unfolded = [ "Geometry", "Transform", "material" ]
[node name="SpotLight" type="SpotLight" parent="." index="1"]
transform = Transform( 1, 0, 0, 0, 0.0174524, 0.999848, 0, -0.999848, 0.0174524, 0, 4, 1 )
layers = 1
light_color = Color( 1, 1, 1, 1 )
light_energy = 16.0
light_indirect_energy = 1.0
light_negative = false
light_specular = 0.86
light_bake_mode = 1
light_cull_mask = -1
shadow_enabled = false
shadow_color = Color( 0, 0, 0, 1 )
shadow_bias = 0.15
shadow_contact = 0.0
shadow_reverse_cull_face = false
editor_only = false
spot_range = 30.0
spot_attenuation = 0.5
spot_angle = 5.0
spot_angle_attenuation = 2.0
_sections_unfolded = [ "Editor", "Light", "Spot", "Transform" ]
[node name="LockingMesh" type="MeshInstance" parent="." index="2"]
[node name="LockingMesh" type="MeshInstance" parent="." index="1"]
visible = false
layers = 1

View File

@ -73,17 +73,19 @@ var super_rotation_system = [
]
var minoes = []
var grid_map
var lock_delay
var orientation = 0
var rotation_point_5_used = false
var rotated_last = false
var grid_map
var lock_delay
var ghost
func _ready():
for i in range(NB_MINOES):
minoes.append(get_node("Mino"+str(i)))
grid_map = get_node("../Matrix/GridMap")
lock_delay = get_node("../LockDelay")
ghost = get_node("../Ghost")
func set_translations(translations):
for i in range(NB_MINOES):
@ -100,6 +102,7 @@ func move(movement):
translate(movement)
unlocking()
rotated_last = false
move_ghost()
return true
else:
if movement == DROP_MOVEMENT:
@ -125,16 +128,18 @@ func turn(direction):
rotated_last = true
if i == 4:
rotation_point_5_used = true
move_ghost()
return true
return false
func move_ghost():
ghost.set_translations(get_translations())
while grid_map.possible_positions(ghost.get_translations(), DROP_MOVEMENT):
ghost.translate(DROP_MOVEMENT)
func t_spin():
return ""
func turn_light(on):
for mino in minoes:
mino.get_node("SpotLight").visible = on
func locking():
if lock_delay.is_stopped():
lock_delay.start()