class_name Player extends Area2D # Components managed by Player @onready var input_component: InputComponent = %InputComponent @onready var movement_component: MovementComponent = %MovementComponent @onready var shoot_component: ShootComponent = %ShootComponent @onready var weapon_component: WeaponComponent = %WeaponComponent # Get the viewport size for positioning @onready var screensize = get_viewport().content_scale_size # Variables for Player shooting status @export var can_shoot: bool = true @export var is_shooting: bool = false @export var muzzle_flash: bool = false # Variables for Player position calculations for equidistant bullets var previous_position: Vector2 var ship_displacement: float var travel: float = 0 func _ready() -> void: ## Set initial start position position = Vector2(screensize.x / 2, screensize.y - 45) func _process(delta) -> void: # Read Controls input_component.update() # Read Shooting if input_component.shooting: is_shooting = true else: is_shooting = false if is_shooting == true: shoot_component.shoot() $%MuzzleFlash.show() if is_shooting == false: $%MuzzleFlash.hide() # Read Movement Component movement_component.input = input_component.move_dir movement_component.tick(delta) # Cycle weapon (testing key) if input_component.cycle_weapon: weapon_component.cycle_weapon()