extends CharacterBody2D class_name MainShip @onready var engine = $Engine @onready var hull = $Hull @onready var shield = $Shield @onready var pause_controller = $GUI/Interface/PauseController @onready var minimap = $CanvasLayer/Control/Minimap @onready var camera = $Camera @onready var primary_slot = $PrimaryWeapon @onready var secondary_slot = $SecondaryWeapon var allow_shooting = true var faction = "player" var money : float = 1000 var quest : Quest = Quest.new() var quest_completed : bool = false var hulls : Array = ["starterhull"] var engines : Array = ["starterengine"] var shields : Array = ["startershield"] var weapons : Array = ["SingleLaserMk1"] signal destroyed func _ready(): quest.quest_added.connect(add_quest) quest.quest_ended.connect(kill_quest) quest.quest_failed.connect(kill_quest) destroyed.connect(quest._restriction_no_deaths) shield.material = material #quest.create(Quest.TYPE.ELIMINATION, 2, 200) func _process(_delta): if hull.hp < 0: destroy() func changeinterfacecolor(): $GUI/Interface.modulate = material.get_shader_parameter('color') func destroy(): hull.hp = hull.max_hp shield.capacity = shield.max_capacity global_position = Vector2.ZERO engine.speed = 0 engine.turbo_enabled = false destroyed.emit() func add_quest(quest : Quest): if quest.restrictions.has(Quest.RESTRICTIONS.TIMER): get_tree().create_timer(quest.data['timer']).timeout.connect(timer_failed) if quest.type == Quest.TYPE.DELIVERY: minimap.add_marker(quest.data['destination'], "quest") func kill_quest(success : bool): if success: quest_completed = true quest.new = true func timer_failed(): if quest.new: return kill_quest(false) func enemy_destroyed(_enemy): if quest.new: return if quest.type == quest.TYPE.ELIMINATION: quest.do_progress() func change_hull(new): var new_hull = Game.get_module(new, 'hull').instantiate() var old_hull = hull add_child(new_hull) hull = new_hull hull.hp = old_hull.hp hull.fuel = old_hull.fuel get_tree().create_timer(0.05).timeout.connect(old_hull.queue_free) func change_engine(new): var new_engine = Game.get_module(new, 'engine').instantiate() var old_engine = engine add_child(new_engine) engine = new_engine get_tree().create_timer(0.05).timeout.connect(old_engine.queue_free) func change_shield(new): var new_shield = Game.get_module(new, 'shield').instantiate() var old_shield = shield add_child(new_shield) shield = new_shield get_tree().create_timer(0.05).timeout.connect(old_shield.queue_free) func change_primary_weapon(new): var weapon = Game.get_weapon(new).instantiate() if primary_slot.get_child_count() > 0: for child in primary_slot.get_children(): child.queue_free() primary_slot.add_child(weapon) func change_secondary_weapon(new): var weapon = Game.get_weapon(new).instantiate() if secondary_slot.get_child_count() > 0: for child in secondary_slot.get_children(): child.queue_free() secondary_slot.add_child(weapon)