extends Node @export var checksum_test = false @export var load_playlist_from_file = false @export var hub_world : level_resource @export var maps_in_rotation : Array[level_resource] = [] @export var gamemodes_in_rotation : Array[gamemode]= [] @export var chest_drops : Array[Resource] @export var levels_per_round : int = 10 @export var rounds_per_match : int = 3 @export var chests_per_match : int = 100 @export var matches_per_year : int = 52 func generate_playlist() -> void: var playlist_name = only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id]) var playlist = [] set_seed(playlist_name) for h in matches_per_year: var matches = [] var chests = [] var round = [] for i in rounds_per_match: for x in levels_per_round: var gamemode_path = gamemodes_in_rotation.pick_random().resource_path var level_selection = maps_in_rotation.pick_random() var level_details = { "level_path" : level_selection.level_path, "level_name" : level_selection.level_name, "gamemode_path" : gamemode_path } round.append(level_details) var chest_serial_no : int = 1 for y in chests_per_match: var drop = chest_drops.pick_random() var chest_details = { "serial" : chest_serial_no, "drop" : drop } chests.append(chest_details) chest_serial_no += 1 var numbers = [] for i in range(chests_per_match): numbers.append(i) numbers.shuffle() var match_details = {"round" : round,"chests" : chests,"chest_order" : numbers} matches.append(match_details) playlist.append(matches) print(playlist[0][0]["round"][0]) print(playlist[0][0]["chests"][3]) print(playlist[0][0]["chest_order"]) GameGlobals.playlist = playlist func only_valid_chars(input_string: String) -> String: var valid_chars = "" for char in input_string: if char.is_valid_identifier(): valid_chars += char elif char == " ": valid_chars += "_" return valid_chars func save_playlist(playlist): var playlist_name = str(only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id])) var playlist_path : String = "user://"+ playlist_name + "_playlist.save" var file = FileAccess.open(playlist_path, FileAccess.WRITE) file.store_var(only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id])) file.store_var(playlist) file.close() func load_playlist(): generate_playlist() GameGlobals.current_match = GameGlobals.playlist[0] func set_seed(playlist_name): var seed_to_use if playlist_name: seed_to_use = hash(playlist_name) else: seed_to_use = randi() seed(seed_to_use) func _on_gui_input(event: InputEvent) -> void: generate_playlist()