extends RigidBody2D var speed = 1000 # move speed in pixels/sec var rotation_speed = 3 # turning speed in radians/sec var quare = preload("res://quare.tscn") var exagon = preload("res://exagon.tscn") @onready var notifier = $"../Notification" var num_quares = 0 var max_quares = 3 var exagons = 1 var absolute_movement = false var config = ConfigFile.new() const idle_anim = preload("res://player_idle.gif") const moving_anim = preload("res://player_moving.gif") var moving = false func _ready(): update_display() update_animation() if config.load("user://settings.cfg") == OK: absolute_movement = not config.get_value("config", "relative_controls") func update_animation(): if moving: $AnimatedSprite2D.sprite_frames = moving_anim else: $AnimatedSprite2D.sprite_frames = idle_anim $AnimatedSprite2D.play("gif") func _physics_process(delta): look_at(get_global_mouse_position()) var move_input = Input.get_axis("down", "up") var side_input = Input.get_axis("right", "left") if move_input > 0 and not moving: moving = true update_animation() elif move_input <= 0 and moving: moving = false update_animation() if absolute_movement: apply_central_force(Vector2(side_input * speed, move_input * speed) * -1) else: apply_central_force(transform.y * side_input * speed / -2 + transform.x * move_input * speed) func _input(event): if event.is_action_pressed("jump"): global_position = get_global_mouse_position() if event.is_action_pressed("quare"): if num_quares >= max_quares: notifier.notify("All Quares in Use!") return if not $"../CollisionCheck".is_clear(get_global_mouse_position(), 60): $"../CollisionCheck".flash() notifier.notify("Too Close!") return num_quares += 1 var new_quare = quare.instantiate() new_quare.position = get_global_mouse_position() $/root/Node2D.add_child(new_quare) new_quare.name = "Quare" update_display() if event.is_action_pressed("exagon"): if exagons > 1: exagons = 1 if exagons <= 0: notifier.notify("No Exagons!") return if not $"../CollisionCheck".is_clear(get_global_mouse_position()): $"../CollisionCheck".flash() notifier.notify("Too Close!") return exagons -= 1 var new_exagon = exagon.instantiate() new_exagon.position = get_global_mouse_position() $/root/Node2D.add_child(new_exagon) new_exagon.name = "Exagon" update_display() #$Gun.shoot() func aquire_quare(): await get_tree().create_timer(3).timeout num_quares -= 1 update_display() func aquire_exagon(): await get_tree().create_timer(15).timeout exagons += 1 update_display() func update_display(): $"../UI/Quare Count".text = "%d Quares\n%d Exagons" % [(max_quares - num_quares), exagons] func destroy(): get_tree().paused = true $"../GameOver".visible = true