seeding-planets/common/game_data/scripts/game_data.gd

89 lines
2.9 KiB
GDScript

extends Resource
class_name GameData
signal current_planet_data_updated(p : PlanetData)
func _init():
set_default_unlocked()
@export var tutorial_done = false
@export var current_planet_data : PlanetData = PlanetData.new() :
set(v):
current_planet_data = v
current_planet_data_updated.emit(v)
@export var player_data : PlayerData = PlayerData.new()
@export var unlocked_plant_types : Array[PlantType] = []
@export var unlocked_plant_mutations : Array[PlantMutation] = []
@export var unlocked_machines : Array[MachineType] = []
@export var truck_data : TruckData = TruckData.new()
func set_default_unlocked():
unlocked_plant_mutations = all_plant_mutations()
unlocked_machines = all_machines()
func reset_planet():
current_planet_data = PlanetData.new()
func reset_player():
player_data = PlayerData.new()
func reset_truck():
truck_data = TruckData.new()
func reset_all():
reset_planet()
reset_player()
reset_truck()
unlocked_plant_types = []
func unlock_plant_type(new_plant_type : PlantType):
if not is_plant_type_unlocked(new_plant_type):
unlocked_plant_types.append(new_plant_type.duplicate_deep())
func get_locked_plant_types() -> Array[PlantType]:
var locked_plant_type : Array[PlantType] = []
for pt in GameInfo.game_data.all_plant_types():
if not is_plant_type_unlocked(pt):
locked_plant_type.append(pt)
return locked_plant_type
func is_plant_type_unlocked(new_plant_type : PlantType):
return unlocked_plant_types.find_custom(
func (upt : PlantType): return new_plant_type.name == upt.name
) != -1
func all_plant_types() -> Array[PlantType]:
return [
preload("res://entities/plants/resources/plant_types/champ.tres"),
preload("res://entities/plants/resources/plant_types/chardi.tres"),
preload("res://entities/plants/resources/plant_types/ferno.tres"),
preload("res://entities/plants/resources/plant_types/maias.tres"),
preload("res://entities/plants/resources/plant_types/philea.tres"),
preload("res://entities/plants/resources/plant_types/pili.tres"),
preload("res://entities/plants/resources/plant_types/solita.tres"),
]
func all_machines() -> Array[MachineType]:
return [
preload("res://entities/interactables/machines/solar_pannel/solar_pannel.tres"),
]
func all_plant_mutations() -> Array[PlantMutation]:
return [
preload("res://entities/plants/resources/plant_mutations/ancient_mutation.tres"),
preload("res://entities/plants/resources/plant_mutations/elitist_mutation.tres"),
preload("res://entities/plants/resources/plant_mutations/ermit_mutation.tres"),
preload("res://entities/plants/resources/plant_mutations/precocious_mutation.tres"),
preload("res://entities/plants/resources/plant_mutations/quality_mutation.tres"),
preload("res://entities/plants/resources/plant_mutations/quick_mutation.tres"),
preload("res://entities/plants/resources/plant_mutations/sociable_mutation.tres"),
preload("res://entities/plants/resources/plant_mutations/strong_mutation.tres"),
]