Files
Dunkanoid/Brick/Brick.gd
Matt Jenkins 81d8e14746 Added pause and mute.
Improved fonts and font scaling
Added level editor
2024-05-05 22:36:32 +01:00

77 lines
1.6 KiB
GDScript

extends StaticBody2D
class_name Brick
enum {
NORMAL,
SILVER,
GOLD,
INVULNERABLE
}
signal brick_destroyed(brick : StaticBody2D)
var hits : int = 1
var value : int = 100
var original_color : Color = Color.WHITE
var my_type : int = NORMAL
func _ready() -> void:
pass
func _process(_delta) -> void:
pass
func hit() -> void:
if hits <= 0:
return
hits -= 1
if hits <= 0:
collision_layer = 0
if my_type == INVULNERABLE:
hits = 2
visible = false
get_tree().create_timer(5).timeout.connect(_show_block)
return
brick_destroyed.emit(self)
get_parent().call_deferred("remove_child", self)
call_deferred("queue_free")
else:
var tween = create_tween()
$TextureRect.modulate = Color(1, 1, 1)
tween.tween_property($TextureRect, "modulate", original_color, 0.25)
func _show_block() -> void:
$TextureRect.modulate = Color(1, 1, 1)
var tween = create_tween()
tween.tween_property($TextureRect, "modulate", original_color, 0.25)
visible = true
collision_layer = 1
func type(base : int, color : Color) -> void:
my_type = base
original_color = color
match base:
NORMAL:
$TextureRect.texture = load("res://Brick/BaseBrick.png")
$TextureRect.modulate = color
hits = 1
value = 100
SILVER:
$TextureRect.texture = load("res://Brick/ShinyBrick.png")
$TextureRect.modulate = color
hits = 2
value = 200
GOLD:
$TextureRect.texture = load("res://Brick/ShinyBrick.png")
$TextureRect.modulate = color
hits = 3
value = 500
INVULNERABLE:
$TextureRect.texture = load("res://Brick/InvulBrick.png")
$TextureRect.modulate = color
hits = 2
value = 0