cosmic/scripts/Space.gd

109 lines
3.4 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

extends Node2D
# TODO: move colors to profile settings
var can_target = []
var color_player
var color_base
var color_enemy
var color_background
@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
signal scene_ready
signal updated_colors
func _ready():
randomize()
recolor()
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']
ship.hulls = save['hulls'].duplicate()
ship.engines = save['engines'].duplicate()
ship.shields = save['shields'].duplicate()
ship.weapons = save['weapons'].duplicate()
if save.has('ship_equipment'):
var hull = save['ship_equipment']['hull']
var engine = save['ship_equipment']['engine']
var shield = save['ship_equipment']['shield']
var primary_weapon = save['ship_equipment']['primary_weapon']
var secondary_weapon = save['ship_equipment']['secondary_weapon']
ship.change_hull(hull)
ship.change_engine(engine)
ship.change_shield(shield)
ship.change_primary_weapon(primary_weapon)
ship.change_secondary_weapon(secondary_weapon)
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
scene_ready.emit()
func addtargetlist(body : Node2D):
#print("ГОЙДА")
if !can_target.has(body):
can_target.append(body)
func removetargetlist(body : Node2D):
#print("ГОЙДАN'T")
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))
color_background = Color.from_hsv(randf(), randf_range(0.1765, 1), randf_range(0.06, 0.08))
ship.material.set_shader_parameter('color',color_player)
bases.modulate = color_base
enemy_faction.modulate = color_enemy
enemy_faction.changeitemscolor()
bases.changeitemscolor()
ship.changeinterfacecolor()
updated_colors.emit()
var menu = get_node_or_null("MainShip/GUI/StarterBaseMenu")
if menu != null:
menu.modulate = bases.modulate
func enemydestroyed(enemy):
enemy_destroyed.emit(enemy)