mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 23:48:11 +00:00
added the game
This commit is contained in:
50
Scripts/Parts/PipeGenerator.gd
Normal file
50
Scripts/Parts/PipeGenerator.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
extends Node2D
|
||||
|
||||
@export var item: PackedScene = null
|
||||
|
||||
var item_amount := 0
|
||||
|
||||
@export_enum("Up", "Down", "Left", "Right") var direction := 0
|
||||
|
||||
func _ready() -> void:
|
||||
$Timer.start()
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
$Check.target_position = [Vector2.UP, Vector2.DOWN, Vector2.LEFT, Vector2.RIGHT][direction] * 16
|
||||
$Check.position = $Check.target_position.normalized()
|
||||
func on_timeout() -> void:
|
||||
if item == null or item_amount >= 3 or $Check.is_colliding(): return
|
||||
$AnimationPlayer.stop()
|
||||
var node = item.instantiate()
|
||||
node.global_position = $Joint.global_position
|
||||
add_sibling(node)
|
||||
$Joint.remote_path = node.get_path()
|
||||
item_amount += 1
|
||||
node.set_process(false)
|
||||
node.set_physics_process(false)
|
||||
node.reset_physics_interpolation()
|
||||
var z_old = node.z_index
|
||||
node.z_index = -10
|
||||
$AnimationPlayer.play(get_direction_string([Vector2.DOWN, Vector2.UP, Vector2.RIGHT, Vector2.LEFT][direction]))
|
||||
await get_tree().process_frame
|
||||
node.reset_physics_interpolation()
|
||||
await $AnimationPlayer.animation_finished
|
||||
$Joint.remote_path = ""
|
||||
if is_instance_valid(node):
|
||||
node.set_process(true)
|
||||
node.z_index = z_old
|
||||
node.set_physics_process(true)
|
||||
node.tree_exited.connect(func(): item_amount -= 1)
|
||||
|
||||
func get_direction_string(direction_vector := Vector2.UP) -> String:
|
||||
match direction_vector:
|
||||
Vector2.UP:
|
||||
return "Up"
|
||||
Vector2.DOWN:
|
||||
return "Down"
|
||||
Vector2.LEFT:
|
||||
return "Left"
|
||||
Vector2.RIGHT:
|
||||
return "Right"
|
||||
_:
|
||||
return ""
|
Reference in New Issue
Block a user