109 lines
3.4 KiB
GDScript
109 lines
3.4 KiB
GDScript
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)
|