50 lines
1.4 KiB
GDScript
50 lines
1.4 KiB
GDScript
class_name Block_Simple
|
|
|
|
extends RigidBody2D
|
|
|
|
# Last known sprite. In edge cases involving states.
|
|
|
|
# Block type refers to our specific block script.
|
|
# They should always extend eventually from block_simple.
|
|
@export var block_type:Script
|
|
|
|
# Set the animation (sprite sheet) to the specfied block types.
|
|
func SetSpriteSheet(animation):
|
|
$Sprite.animation = animation
|
|
|
|
# If this is false (default) then the block is horizontally facing.
|
|
@export var is_vertical:bool
|
|
|
|
# Tags the block has. These dictate interactions.
|
|
# These must be strings.
|
|
@export var tags:Array = [str]
|
|
|
|
# Rotate the block in a way that we can control.
|
|
# Default to 90 because that's a common use case.
|
|
func rotate_block(degrees:int = 90):
|
|
rotate(degrees)
|
|
|
|
# This runs BEFORE the instance is loaded.
|
|
# There's a lot you can't do here, as it doesn't exist yet.
|
|
func _init():
|
|
pass
|
|
#SetSpriteSheet(str(block_type))
|
|
#set_script(block_type)
|
|
|
|
# This runs AFTER the instance is loaded.
|
|
# This runs BEFORE the instance is added to the scene tree.
|
|
func _ready() -> void:
|
|
if is_vertical:
|
|
rotate_block(90)
|
|
set_script(block_type)
|
|
|
|
# This runs every frame. Expensive.
|
|
func _process(delta: float) -> void:
|
|
var _last_known_delta = delta
|
|
|
|
func on_player_near(body: Node2D) -> void:
|
|
print("Player is touching block with tags: " + str(tags))
|
|
|
|
func on_player_leave(body: Node2D) -> void:
|
|
print("Player is leaving block with tags: " + str(tags))
|