2024-04-16 20:29:45 -04:00
|
|
|
extends Marker2D
|
|
|
|
|
|
|
|
@export var item: PackedScene
|
2024-04-22 07:51:43 -04:00
|
|
|
var portal = preload("res://portal.tscn")
|
|
|
|
@export var portal_texture: SpriteFrames
|
2024-04-20 09:45:17 -04:00
|
|
|
@export var random_off_screen = false
|
2024-04-19 17:59:19 -04:00
|
|
|
@export var radius = 100
|
2024-04-16 20:29:45 -04:00
|
|
|
|
|
|
|
func spawn():
|
2024-04-17 15:00:20 -04:00
|
|
|
if get_tree().paused:
|
|
|
|
return
|
2024-04-20 09:45:17 -04:00
|
|
|
var spawn_loc = Vector2.ZERO
|
|
|
|
if random_off_screen:
|
|
|
|
var random = randi_range(1, 4)
|
|
|
|
if random == 1:
|
|
|
|
spawn_loc = Vector2(-50, 1080 * randf())
|
|
|
|
elif random == 2:
|
|
|
|
spawn_loc = Vector2(1950, 1080 * randf())
|
|
|
|
elif random == 3:
|
|
|
|
spawn_loc = Vector2(1920 * randf(), -50)
|
|
|
|
elif random == 4:
|
|
|
|
spawn_loc = Vector2(1920 * randf(), 1080 + 50)
|
2024-04-16 20:29:45 -04:00
|
|
|
for i in range(10):
|
|
|
|
var test_pos = Vector2(randf(), randf()) * Vector2(1920, 1080)
|
2024-04-19 17:59:19 -04:00
|
|
|
if not $"../CollisionCheck".is_clear(test_pos, radius):
|
2024-04-16 20:29:45 -04:00
|
|
|
continue
|
2024-04-20 09:45:17 -04:00
|
|
|
spawn_loc = test_pos
|
2024-04-16 20:29:45 -04:00
|
|
|
break
|
2024-04-20 09:45:17 -04:00
|
|
|
|
|
|
|
|
2024-04-22 07:51:43 -04:00
|
|
|
var portal_effect = portal.instantiate()
|
|
|
|
portal_effect.global_position = spawn_loc
|
|
|
|
portal_effect.sprite_frames = portal_texture
|
|
|
|
$/root/Node2D.add_child(portal_effect)
|
|
|
|
await get_tree().create_timer(0.6).timeout
|
2024-04-20 09:45:17 -04:00
|
|
|
var node = item.instantiate()
|
|
|
|
node.global_position = spawn_loc
|
|
|
|
node.rotation_degrees = 360 * randf()
|
|
|
|
$/root/Node2D.add_child(node)
|