@tool extends Resource class_name RunPoint const DANGER_ICON = preload("res://common/icons/skull.svg") const TYPE_ICON = preload("res://common/icons/map-pin.svg") const OBJECTIVE_ICON = preload("res://common/icons/dna.svg") const CHARGE_ICON = preload("res://common/icons/bolt.svg") @export var level : int = 0 # X pos along the planet, and difficulty @export var planet_parameter : PlanetParameter = PlanetParameter.new() : set(v): planet_parameter = v planet_data = PlanetData.new(planet_parameter) @export var region_name : String = generate_region_name() @export var position : int = 0 # Y pos along the planet, 0 to 360 var planet_data : PlanetData func _init( _level : int = 0, _planet_parameter : PlanetParameter = PlanetParameter.new(), _position : int = randi_range(0,360), _region_name : String = generate_region_name() ): level = _level planet_parameter = _planet_parameter position = _position region_name = _region_name planet_data = PlanetData.new(planet_parameter) func card_info() -> CardInfo: var info = CardInfo.new(region_name) info.important_stat_icon = DANGER_ICON info.important_stat_text = "%d" % level info.type_icon = TYPE_ICON info.stats.append_array([ CardStatInfo.new(tr("%d_GARDEN_POINTS") % planet_parameter.objective, OBJECTIVE_ICON), CardStatInfo.new(tr("%d_CHARGES_AVAILABLE") % planet_parameter.charges, CHARGE_ICON), ]) return info func generate_region_name() -> String: var vowel = ["a","e","i","o","u","y"] var consonants = ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z", "'"] var word_len = randf_range(4,8) var word = '' var last_letter_is_vowel = false for i in range(word_len): if last_letter_is_vowel: word += consonants.pick_random() else: word += vowel.pick_random() last_letter_is_vowel = not last_letter_is_vowel return word.capitalize()