cosmic/scripts/Space.gd
2023-11-16 17:51:07 +03:00

108 lines
3.4 KiB
GDScript

extends Node2D
var can_target = []
var weapon_dict = {
"SingleRocketMk1" : "res://scenes/weapons/presets/SingleRocketMk1.tscn",
"DoubleLaserMk1" : "res://scenes/weapons/presets/DoubleLaserMk1.tscn",
"SingleLaserMk1" : "res://scenes/weapons/presets/SingleLaserMk1.tscn"
}
var bought_weapon : Dictionary = weapon_dict.duplicate()
var color_player
var color_base
var color_enemy
@export var map_width = 8192
@export var map_height = 8192
@onready var ship = $MainShip
@onready var bases = $Bases
@onready var enemy_faction = $EnemyFaction
signal enemy_destroyed
func _ready():
randomize()
recolor()
for key in bought_weapon:
bought_weapon[key] = false
bought_weapon["SingleLaserMk1"] = true
ship.camera.limit_left = -map_width/2.0
ship.camera.limit_right = map_width/2.0
ship.camera.limit_top = -map_height/2.0
ship.camera.limit_bottom = map_height/2.0
enemy_destroyed.connect(ship.enemy_destroyed)
if Game.profile.profile_meta.has('game_load'):
Game.profile.profile_meta.erase('game_load')
var save = Game.profile.profile_meta['game']
ship.money = save['money']
ship.hull.hp = save['hp']
ship.hull.fuel = save['fuel']
ship.hull.ammunition = save['ammo']
ship.hull.cargo = save['cargo']
if save.has('primaryweapon'):
for node in ship.primary_slot.get_children():
node.queue_free()
var weapon_inst = Game.get_weapon(save['primaryweapon']).instantiate()
weapon_inst.id = save['primaryweapon']
ship.primary_slot.add_child(weapon_inst)
if save.has('secondaryweapon'):
for node in ship.secondary_slot.get_children():
node.queue_free()
var weapon_inst = Game.get_weapon(save['secondaryweapon']).instantiate()
weapon_inst.id = save['secondaryweapon']
ship.secondary_slot.add_child(weapon_inst)
if save.has('quest'):
var data = save['quest']
var type = data['type'] as Quest.TYPE
var restrictions : Array[Quest.RESTRICTIONS] = []
for rest in data['restrictions']:
restrictions.append(rest as Quest.RESTRICTIONS)
ship.quest.create(type, data['progress_max'], data['reward_money'], restrictions, data['data'])
if data['got_reward']:
ship.quest.new = true
ship.quest_completed = true
func addtargetlist(body : Node2D):
if !can_target.has(body):
can_target.append(body)
func removetargetlist(body : Node2D):
if can_target.has(body):
can_target.erase(body)
func _process(_delta):
if Input.is_action_just_released("pause"):
if get_tree().paused:
unpause()
else:
pause()
func pause():
var menu = get_node_or_null("MainShip/GUI/BaseMenu")
if menu != null:
menu.visible = false
get_tree().paused = true
ship.pause_controller.visible = true
func unpause():
get_tree().paused = false
ship.pause_controller.visible = false
var menu = get_node_or_null("MainShip/GUI/BaseMenu")
if menu != null:
menu.visible = true
func recolor():
color_player = Color.from_hsv(randf(), randf_range(0.8, 1), randf_range(0.8, 1))
color_base = Color.from_hsv(randf(), randf_range(0.8, 1), randf_range(0.8, 1))
color_enemy = Color.from_hsv(randf(), randf_range(0.8, 1), randf_range(0.8, 1))
ship.modulate = color_player
bases.modulate = color_base
enemy_faction.modulate = color_enemy
enemy_faction.changeitemscolor()
bases.changeitemscolor()
ship.changeinterfacecolor()
var menu = get_node_or_null("MainShip/GUI/StarterBaseMenu")
if menu != null:
menu.modulate = bases.modulate
func enemydestroyed(enemy):
enemy_destroyed.emit(enemy)