extends Control var currentStage: String var playing = false var index = 0 var cam_index = 1 var loaded_frames = [] var in_flows = [] var out_flows = [] var prev_frame_held = [] var animatables_handles = [] var rotationStages = [ "Balcony Stage", "C-Stage", "Prototype Road Stage", "Mini Unit 1-Stage", "1-Stage w 2-Stage Props", "1-Stage", "Turntable 1-Stage", "2-Stage", "Cyberamic 3-Stage", ] func _ready() -> void: if (GlobalVariables.title_dynamic == 1): currentStage = rotationStages[randi() % rotationStages.size()] $SubViewport.add_child(load(Stages.stages_info[currentStage]["scene"]).instantiate()) for curtain in Stages.stages_info[currentStage]["curtains"]: for curtain_movement in Stages.stages_info[currentStage]["curtains"][curtain]: get_node(Stages.stages_info[currentStage]["scene_ref_base"] + curtain)._movement_in(curtain_movement + " Up", 100000) var cosmetics_count = 0 for cosmetic_subtable in Stages.stages_info[currentStage]["cosmetics"]: for cosmetic in cosmetic_subtable: var cosmetic_adjustment = load("res://Scenes/GUI/Controls/CosmeticAdjustment.tscn").instantiate() cosmetic_adjustment.vis_name = cosmetic cosmetic_adjustment.options = cosmetic_subtable[cosmetic] cosmetic_adjustment.scene_handle = "../../" + Stages.stages_info[currentStage]["scene_ref_base"] cosmetic_adjustment.drop_index = Stages.stages_info[currentStage]["cosmetic_defaults"][cosmetics_count] cosmetics_count += 1 $SuperSecretInvisibleZone.add_child(cosmetic_adjustment) for bit_number in Stages.stages_info[currentStage]["bit_mapping"]: var bot = Stages.stages_info[currentStage]["bit_mapping"][bit_number]["bot"] var in_flow = Stages.stages_info[currentStage]["bit_mapping"][bit_number]["flow_in"] var out_flow = Stages.stages_info[currentStage]["bit_mapping"][bit_number]["flow_out"] animatables_handles.push_back(get_node(Stages.stages_info[currentStage]["scene_ref_base"] + bot)) in_flows.push_back(in_flow) out_flows.push_back(out_flow) prev_frame_held.push_back(false) var file = FileAccess.open("res://UI/CybersMenuRandom.txt", FileAccess.READ) var content = file.get_as_text() loaded_frames = [] for frame_string in content.split(","): if (frame_string == ""): continue var check_frame_split = frame_string.split() check_frame_split.reverse() var unpacked_frame = [] for i in Stages.stages_info[currentStage]["bit_mapping"]: if ((check_frame_split[(i - 1) / 4].hex_to_int() & int(pow(2, ((i - 1) % 4)))) == int(pow(2, ((i - 1) % 4)))): unpacked_frame.push_back(true) else: unpacked_frame.push_back(false) loaded_frames.push_back(unpacked_frame) playing = true func _physics_process(_delta: float) -> void: if (playing): if (index >= loaded_frames.size()): index = 0 return var j = 0 for i in Stages.stages_info[currentStage]["bit_mapping"]: if (loaded_frames[index][j]): if (!prev_frame_held[j]): animatables_handles[j]._movement_in(Stages.stages_info[currentStage]["bit_mapping"][i]["movement"], in_flows[j]) prev_frame_held[j] = true else: if (prev_frame_held[j]): animatables_handles[j]._movement_out(Stages.stages_info[currentStage]["bit_mapping"][i]["movement"], in_flows[j]) prev_frame_held[j] = false j+=1 index += 1 if (index % 1800 == 0): cam_index += 1 get_node(Stages.stages_info[currentStage]["scene_ref_base"] + "Angle " + str((cam_index % Stages.stages_info[currentStage]["camera_count"])+1)).current = true