JHRGB/sim.gd
2023-12-04 19:42:47 +00:00

54 lines
1.8 KiB
GDScript

extends Node2D
var spawn_position=Vector2(100,100);
# Called when the node enters the scene tree for the first time.
func _ready():
pass
func _input(event):
if event.is_action_pressed("escape"):
get_tree().change_scene_to_file("res://map_select/map_select.tscn")
get_node("/root/Sim").queue_free()
if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
spawn_position=get_global_mouse_position()
spawn()
$Timer.stop()
if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_RIGHT:
spawn_position=get_global_mouse_position()
$Timer.start()
func _on_timer_timeout():
spawn()
func spawn():
var new_player = load("res://player.tscn").instantiate()
new_player.get_node("Body2D").position = spawn_position
new_player.get_node("Body2D").apply_impulse(Vector2.from_angle(randf_range(0, 2 * PI)) * 100)
# Prepare the shape query parameters
var query_parameters = PhysicsShapeQueryParameters2D.new()
var collision_shape = new_player.get_node("Body2D/CollisionShape2D").shape
query_parameters.set_shape(collision_shape)
query_parameters.set_transform(Transform2D(0, spawn_position))
query_parameters.set_collision_mask(1)
# Get the Physics2DDirectSpaceState for collision checking
var space_state = get_world_2d().direct_space_state
# Check for collision
var collision_results = space_state.intersect_shape(query_parameters)
if collision_results.size() == 0:
# No collision, safe to add child
add_child(new_player)
else:
for collision in collision_results:
#print
if collision.collider.get_parent() is Pool:
collision.collider.get_parent()._on_decay_timer_timeout()
return
var marker = load("res://crosshair.tscn").instantiate()
marker.position = new_player.get_node("Body2D").position
add_child(marker)