59 lines
1.4 KiB
GDScript
59 lines
1.4 KiB
GDScript
class_name GameData
|
|
extends Resource
|
|
|
|
@export var SPEED: float = 2900.0
|
|
@export var ENGINE_SPEED: float = 1900.0
|
|
@export var fuel: float = 100
|
|
@export var fuel_max: float = 100
|
|
@export var engine_speed_modifier: float = 1.0
|
|
@export var fuel_efficiency: float = 1.0
|
|
@export var engine_maneuverability_modifier: float = 1.0
|
|
|
|
@export var cargo: Dictionary = {}
|
|
@export var inventory: Dictionary = {}
|
|
@export var upgrades: Array[Upgrade] = [FirstUpgrade.new()]
|
|
@export var mid_module_limit: int = 0
|
|
@export var modules: Dictionary = {
|
|
0: [],
|
|
1: [],
|
|
2: []
|
|
}
|
|
@export var floating_pods: Array[FloatingPodData] = []
|
|
|
|
enum ModuleType {
|
|
ENGINE,
|
|
MID,
|
|
COCKPIT
|
|
}
|
|
|
|
func get_active_rocket_modules() -> Array[Module]:
|
|
var _modules: Array[Module] = []
|
|
return _modules
|
|
|
|
static func get_module_type_name(_type: ModuleType) -> String:
|
|
return ModuleType.keys()[_type]
|
|
|
|
func pickup(type: String, amount: int = 1) -> void:
|
|
if not cargo.has(type):
|
|
cargo[type] = 0
|
|
cargo[type] += amount
|
|
|
|
func has_cargo() -> bool:
|
|
var cargo_size: int = 0
|
|
for item: int in cargo.values():
|
|
cargo_size += item
|
|
return cargo_size > 0
|
|
|
|
func move_cargo_to_inventory() -> void:
|
|
for item: String in cargo:
|
|
if not inventory.has(item):
|
|
inventory[item] = 0
|
|
inventory[item] += cargo[item]
|
|
|
|
func create_cargo_pod(pod_position: Vector2) -> void:
|
|
if not cargo.is_empty():
|
|
var pod: FloatingPodData = FloatingPodData.new()
|
|
pod.position = pod_position
|
|
pod.cargo = cargo
|
|
floating_pods.append(pod)
|