def __init__(self, reader: ReplayReader) -> None: self.version = reader.read_string() reader.read(3) self.replay_version, self.map_name = reader.read_string().split( "\r\n", 1) reader.read(4) mods_size = reader.read_int() self.mods = reader.read_lua() scenario_size = reader.read_int() self.scenario = reader.read_lua() sources_number = reader.read_byte() self.players = {} for i in range(sources_number): name = reader.read_string() player_id = reader.read_int() self.players[name] = str(player_id) self.cheats_enabled = reader.read_bool() self.numbers_of_armies = reader.read_byte() self.armies = {} for i in range(self.numbers_of_armies): player_data_size = reader.read_int() player_data = reader.read_lua() player_source = reader.read_byte() self.armies[player_source] = player_data if player_source != 255: reader.read(1) self.random_seed = reader.read_float()
def _parse_command_data(reader: ReplayReader) -> TYPE_COMMAND_DATA: command_id = reader.read_int() arg1 = reader.read(4) command_type = reader.read_byte() arg2 = reader.read(4) target = _parse_target(reader) arg3 = reader.read(1) formation = _parse_formation(reader) blueprint_id = reader.read_string() arg4 = reader.read(12) arg5 = None cells = reader.read_lua() if cells: arg5 = reader.read(1) return { "command_id": command_id, "command_type": command_type, "target": target, "formation": formation, "blueprint_id": blueprint_id, "cells": cells, "arg1": arg1, "arg2": arg2, "arg3": arg3, "arg4": arg4, "arg5": arg5 }
def command_create_prop( reader: ReplayReader) -> Dict[str, Union[str, TYPE_VECTOR]]: return { "type": "create_prop", "name": reader.read_string(), "vector": _read_vector(reader) }
def command_process_info_pair(reader: ReplayReader) -> Dict[str, Union[int, str]]: entity_id = reader.read_int() arg1 = reader.read_string() arg2 = reader.read_string() return {"type": "process_info_pair", "entity_id": entity_id, "arg1": arg1, "arg2": arg2}
def command_create_unit(reader: ReplayReader) -> Dict[str, Union[int, str, TYPE_VECTOR]]: army_index = reader.read_byte() blueprint_id = reader.read_string() x, y, heading = _read_vector(reader) return {"type": "create_unit", "army_index": army_index, "blueprint_id": blueprint_id, "vector": (x, y, heading)}
def command_debug_command(reader: ReplayReader) -> Dict[str, Union[str, TYPE_VECTOR, int, TYPE_ENTITY_IDS_SET]]: debug_command = reader.read_string() vector = _read_vector(reader) focus_army_index = reader.read_byte() unit_ids = _parse_entity_ids_set(reader) return {"type": "debug_command", "debug_command": debug_command, "vector": vector, "focus_army_index": focus_army_index, "entity_ids_set": unit_ids}
def command_lua_sim_callback(reader: ReplayReader) -> Dict[str, Union[str, TYPE_LUA, bytes]]: lua_name = reader.read_string() lua = reader.read_lua() size = None data = None if lua: size = reader.read_int() data = reader.read(4 * size) else: data = reader.read(4 + 3) return {"type": "lua_sim_callback", "lua_name": lua_name, "lua": lua, "size": size, "data": data}
def command_execute_lua_in_sim(reader: ReplayReader) -> Dict[str, str]: return {"type": "execute_lua_in_sim", "lua": reader.read_string()}