cosmic/scripts/star_system.gd

52 lines
1.4 KiB
GDScript

extends Node
class_name StarSystem
## Width of the system. Limits stars generation and camera bounds
@export var width: int = 8192
## Height of the system. Limits stars generation and camera bounds
@export var height: int = 8192
## Pause controller packed scene
@export var pause_controller_scene: PackedScene
## Player ship reference. May be null.
var player_ship: PlayerShip
## Pause controller reference
var pause_controller: Control
func _ready():
player_ship = get_node_or_null("FactionPlayer/PlayerShip")
pause_controller = pause_controller_scene.instantiate()
if player_ship != null:
# adjust player ship camera if player ship exists
player_ship.camera.limit_left = -width / 2
player_ship.camera.limit_right = width / 2
player_ship.camera.limit_top = -height / 2
player_ship.camera.limit_bottom = height / 2
# add pause controller child to the gui
player_ship.colorable_gui.add_child(pause_controller)
else:
# or add it to root node lol
add_child(pause_controller)
pause_controller.visible = false
## Pause the game. Remember to unpause it when switching scenes!
func pause():
get_tree().paused = true
pause_controller.visible = true
## Unpause the game.
func unpause():
get_tree().paused = false
pause_controller.visible = false
func _process(_delta):
if Input.is_action_just_released("pause"):
unpause() if get_tree().paused else pause()
if player_ship != null:
pause_controller.position = player_ship.global_position