#include "zonefile.h" #include "utils.h" #include "logmanager.h" #include #include #include ZoneFile::ZoneFile() : mStem(), mSize(), mTagCount(), mTags(), mRecordCount(), mRecords(), mAssetMap() { } ZoneFile::~ZoneFile() { } ZoneFile::ZoneFile(const ZoneFile &aZoneFile) { mStem = aZoneFile.mStem; mSize = aZoneFile.mSize; mTagCount = aZoneFile.mTagCount; mTags = aZoneFile.mTags; mRecordCount = aZoneFile.mRecordCount; mRecords = aZoneFile.mRecords; mAssetMap = aZoneFile.mAssetMap; } ZoneFile &ZoneFile::operator=(const ZoneFile &other) { if (this != &other) { mStem = other.mStem; mSize = other.mSize; mTagCount = other.mTagCount; mTags = other.mTags; mRecordCount = other.mRecordCount; mRecords = other.mRecords; mAssetMap = other.mAssetMap; } return *this; } QString ZoneFile::AssetEnumToStr(const AssetType aAssetType) { if (aAssetType == ASSET_LOCAL_STRING) { return "LOCAL_STRING"; } else if (aAssetType == ASSET_RAW_FILE) { return "RAW_FILE"; } else if (aAssetType == ASSET_SCRIPT_PARSE_TREE) { return "GSC_FILE"; } else if (aAssetType == ASSET_EFFECT) { return "EFFECT"; } else if (aAssetType == ASSET_SOUND) { return "SOUND"; } else if (aAssetType == ASSET_ANIMATION) { return "ANIMATION"; } else if (aAssetType == ASSET_COLLISION_MAP) { return "COLLISION_MAP"; } else if (aAssetType == ASSET_STRING_TABLE) { return "STRING_TABLE"; } else if (aAssetType == ASSET_MENU) { return "MENU"; } else if (aAssetType == ASSET_TECH_SET) { return "TECH_SET"; } else if (aAssetType == ASSET_WEAPON) { return "WEAPON"; } else if (aAssetType == ASSET_GFX_MAP) { return "GFX_MAP"; } else if (aAssetType == ASSET_LIGHT_DEF) { return "LIGHT_DEF"; } else if (aAssetType == ASSET_FONT) { return "FONT"; } else if (aAssetType == ASSET_MODEL) { return "MODEL"; } else if (aAssetType == ASSET_D3DBSP) { return "D3DBSP"; } else if (aAssetType == ASSET_IMAGE) { return "IMAGE"; } else if (aAssetType == ASSET_GAME_MAP_SP) { return "GAME_MAP_SP"; } else if (aAssetType == ASSET_COL_MAP_SP) { return "COL_MAP_SP"; } else if (aAssetType == ASSET_COL_MAP_SP) { return "COL_MAP_SP"; } else if (aAssetType == ASSET_UI_MAP) { return "UI_MAP"; } else if (aAssetType == ASSET_DESTRUCTIBLE) { return "DESTRUCTIBLE"; } else if (aAssetType == ASSET_MATERIAL) { return "MATERIAL"; } else if (aAssetType == ASSET_PHYS_PRESET) { return "PHYS_PRESET"; } else if (aAssetType == ASSET_COMPUTE_SHADER_SET) { return "COMPUTE_SHADER_SET"; } else if (aAssetType == ASSET_STRUCTURED_TABLE) { return "STRUCTURED_TABLE"; } else if (aAssetType == ASSET_LEADERBOARD_DEF) { return "LEADERBOARD_DEF"; } else if (aAssetType == ASSET_DDL) { return "DDL"; } else if (aAssetType == ASSET_SCRIPT_PARSE_TREE) { return "SCRIPT_PARSE_TREE"; } else if (aAssetType == ASSET_KEY_VALUE_PAIRS) { return "KEY_VALUE_PAIRS"; } else if (aAssetType == ASSET_SCRIPT_BUNDLE) { return "SCRIPT_BUNDLE"; } else if (aAssetType == ASSET_SCRIPT_BUNDLE_LIST) { return "SCRIPT_BUNDLE_LIST"; } else if (aAssetType == ASSET_LIGHT_DEF) { return "LIGHT_DEF"; } else if (aAssetType == ASSET_BIT_FIELD) { return "BIT_FIELD"; } else if (aAssetType == ASSET_MAP_TABLE) { return "MAP_TABLE"; } else if (aAssetType == ASSET_MAP_TABLE_LOADING_IMAGES) { return "MAP_TABLE_LOADING_IMAGES"; } else if (aAssetType == ASSET_SURFACE_SOUND_DEF) { return "SURFACE_SOUND_DEF"; } else if (aAssetType == ASSET_SURFACE_FX_TABLE) { return "SURFACE_FX_TABLE"; } else if (aAssetType == ASSET_RUMBLE) { return "RUMBLE"; } else if (aAssetType == ASSET_AIM_TABLE) { return "AIM_TABLE"; } else if (aAssetType == ASSET_MEDAL) { return "MEDAL"; } else if (aAssetType == ASSET_MEDAL_TABLE) { return "MEDAL_TABLE"; } else if (aAssetType == ASSET_OBJECTIVE) { return "OBJECTIVE"; } else if (aAssetType == ASSET_OBJECTIVE_LIST) { return "OBJECTIVE_LIST"; } else if (aAssetType == ASSET_LASER) { return "LASER"; } else if (aAssetType == ASSET_BEAM) { return "BEAM"; } else if (aAssetType == ASSET_STREAMER_HINT) { return "STREAMER_HINT"; } else if (aAssetType == ASSET_ANIM_SELECTOR_TABLE) { return "ANIM_SELECTOR_TABLE"; } else if (aAssetType == ASSET_ANIM_MAPPING_TABLE) { return "ANIM_MAPPING_TABLE"; } else if (aAssetType == ASSET_ANIM_STATE_MACHINE) { return "ANIM_STATE_MACHINE"; } else if (aAssetType == ASSET_BEHAVIOR_TREE) { return "BEHAVIOR_TREE"; } else if (aAssetType == ASSET_BEHAVIOR_STATE_MACHINE) { return "BEHAVIOR_STATE_MACHINE"; } else if (aAssetType == ASSET_FOOTSTEP_TABLE) { return "FOOTSTEP_TABLE"; } else if (aAssetType == ASSET_ENTITY_FX_IMPACTS) { return "ENTITY_FX_IMPACTS"; } else if (aAssetType == ASSET_ENTITY_SOUND_IMPACTS) { return "ENTITY_SOUND_IMPACTS"; } else if (aAssetType == ASSET_VEHICLE_FX_DEF) { return "VEHICLE_FX_DEF"; } else if (aAssetType == ASSET_VEHICLE_SOUND_DEF) { return "VEHICLE_SOUND_DEF"; } else if (aAssetType == ASSET_VEHICLE) { return "VEHICLE"; } else if (aAssetType == ASSET_VEHICLE_TRACER) { return "VEHICLE_TRACER"; } else if (aAssetType == ASSET_PLAYER_SOUNDS_TABLE) { return "PLAYER_SOUNDS_TABLE"; } else if (aAssetType == ASSET_PLAYER_FX_TABLE) { return "PLAYER_FX_TABLE"; } else if (aAssetType == ASSET_SHARED_WEAPON_SOUNDS) { return "SHARED_WEAPON_SOUNDS"; } else if (aAssetType == ASSET_ATTACHMENT) { return "ATTACHMENT"; } else if (aAssetType == ASSET_ATTACHMENT_UNIQUE) { return "ATTACHMENT_UNIQUE"; } else if (aAssetType == ASSET_WEAPON_CAMO) { return "WEAPON_CAMO"; } else if (aAssetType == ASSET_CUSTOMIZATION_TABLE) { return "CUSTOMIZATION_TABLE"; } else if (aAssetType == ASSET_CUSTOMIZATION_TABLE_FEIMAGES) { return "CUSTOMIZATION_TABLE_FEIMAGES"; } else if (aAssetType == ASSET_CUSTOMIZATION_TABLE_COLOR) { return "CUSTOMIZATION_TABLE_COLOR"; } else if (aAssetType == ASSET_PHYS_CONSTRAINTS) { return "PHYS_CONSTRAINTS"; } else if (aAssetType == ASSET_DESTRUCTIBLE_DEF) { return "DESTRUCTIBLE_DEF"; } else if (aAssetType == ASSET_MODEL_MESH) { return "MODEL_MESH"; } else if (aAssetType == ASSET_S_ANIM) { return "S_ANIM"; } else if (aAssetType == ASSET_SOUND) { return "SOUND"; } else if (aAssetType == ASSET_FONT_ICON) { return "FONT_ICON"; } else if (aAssetType == ASSET_SHOCK_FILE) { return "SHOCK_FILE"; } else if (aAssetType == ASSET_FAST_FILE) { return "FAST_FILE"; } else if (aAssetType == ASSET_ZONE_FILE) { return "ZONE_FILE"; } else if (aAssetType == ASSET_SOUND_DRIVER_GLOBALS) { return "SOUND_DRIVER_GLOBALS"; } return "UNKNOWN"; } QIcon ZoneFile::AssetTypeToIcon(const AssetType aAssetType) { QString assetCode; const QStringList parts = AssetEnumToStr(aAssetType).split('_'); foreach (const QString part, parts) { assetCode.append(part[0]); } if (parts.size() == 1) { assetCode.append(parts[0][1]); } return Utils::CreateAssetIcon(assetCode); if (aAssetType == ASSET_NONE) { return Utils::CreateAssetIcon("NO"); } else if (aAssetType == ASSET_RAW_FILE) { return Utils::CreateAssetIcon("RAW"); } else if (aAssetType == ASSET_SCRIPT_PARSE_TREE) { return Utils::CreateAssetIcon("PT"); } else if (aAssetType == ASSET_EFFECT) { return Utils::CreateAssetIcon("EF"); } else if (aAssetType == ASSET_SOUND) { return Utils::CreateAssetIcon("SN"); } else if (aAssetType == ASSET_ANIMATION) { return Utils::CreateAssetIcon("AN"); } else if (aAssetType == ASSET_COLLISION_MAP) { return Utils::CreateAssetIcon("CM"); } else if (aAssetType == ASSET_STRING_TABLE) { return Utils::CreateAssetIcon("ST"); } else if (aAssetType == ASSET_MENU) { return Utils::CreateAssetIcon("MN"); } else if (aAssetType == ASSET_TECH_SET) { return Utils::CreateAssetIcon("TS"); } else if (aAssetType == ASSET_WEAPON) { return Utils::CreateAssetIcon("WP"); } else if (aAssetType == ASSET_GFX_MAP) { return Utils::CreateAssetIcon("GFM"); } else if (aAssetType == ASSET_LIGHT_DEF) { return Utils::CreateAssetIcon("LDF"); } else if (aAssetType == ASSET_FONT) { return Utils::CreateAssetIcon("FN"); } else if (aAssetType == ASSET_MODEL) { return Utils::CreateAssetIcon("MD"); } else if (aAssetType == ASSET_D3DBSP) { return Utils::CreateAssetIcon("BSP"); } else if (aAssetType == ASSET_IMAGE) { return Utils::CreateAssetIcon("IM"); } else if (aAssetType == ASSET_GAME_MAP_SP) { return Utils::CreateAssetIcon("GMS"); } else if (aAssetType == ASSET_COL_MAP_SP) { return Utils::CreateAssetIcon("CMS"); } else if (aAssetType == ASSET_PHYS_PRESET) { return Utils::CreateAssetIcon("PP"); } else if (aAssetType == ASSET_DESTRUCTIBLE) { return Utils::CreateAssetIcon("DE"); } else if (aAssetType == ASSET_LOCAL_STRING) { return Utils::CreateAssetIcon("LS"); } else if (aAssetType == ASSET_SHADER) { return Utils::CreateAssetIcon("SH"); } else if (aAssetType == ASSET_MP_MAP) { return Utils::CreateAssetIcon("MM"); } else if (aAssetType == ASSET_SP_MAP) { return Utils::CreateAssetIcon("SM"); } else if (aAssetType == ASSET_UI_MAP) { return Utils::CreateAssetIcon("UM"); } else if (aAssetType == ASSET_SND_DRIVER_GLOBALS) { return Utils::CreateAssetIcon("DG"); } else if (aAssetType == ASSET_AI_TYPE) { return Utils::CreateAssetIcon("AT"); } else if (aAssetType == ASSET_MATERIAL) { return Utils::CreateAssetIcon("MT"); } else if (aAssetType == ASSET_COMPUTE_SHADER_SET) { return Utils::CreateAssetIcon("CSH"); } else if (aAssetType == ASSET_LIGHT_DESCRIPTION) { return Utils::CreateAssetIcon("LDS"); } else if (aAssetType == ASSET_BIT_FIELD) { return Utils::CreateAssetIcon("BF"); } else if (aAssetType == ASSET_STRUCTURED_TABLE) { return Utils::CreateAssetIcon("SDT"); } else if (aAssetType == ASSET_LEADERBOARD_DEF) { return Utils::CreateAssetIcon("LBD"); } else if (aAssetType == ASSET_DDL) { return Utils::CreateAssetIcon("DDL"); } else if (aAssetType == ASSET_KEY_VALUE_PAIRS) { return Utils::CreateAssetIcon("KV"); } else if (aAssetType == ASSET_SCRIPT_BUNDLE) { return Utils::CreateAssetIcon("SB"); } else if (aAssetType == ASSET_SCRIPT_BUNDLE_LIST) { return Utils::CreateAssetIcon("SBL"); } else if (aAssetType == ASSET_MAP_TABLE) { return Utils::CreateAssetIcon("MT"); } else if (aAssetType == ASSET_MAP_TABLE_LOADING_IMAGES) { return Utils::CreateAssetIcon("LI"); } else if (aAssetType == ASSET_SURFACE_SOUND_DEF) { return Utils::CreateAssetIcon("SSD"); } else if (aAssetType == ASSET_SURFACE_FX_TABLE) { return Utils::CreateAssetIcon("FT"); } else if (aAssetType == ASSET_RUMBLE) { return Utils::CreateAssetIcon("RM"); } else if (aAssetType == ASSET_AIM_TABLE) { return Utils::CreateAssetIcon("AMT"); } else if (aAssetType == ASSET_MEDAL) { return Utils::CreateAssetIcon("ME"); } else if (aAssetType == ASSET_MEDAL_TABLE) { return Utils::CreateAssetIcon("MET"); } else if (aAssetType == ASSET_OBJECTIVE) { return Utils::CreateAssetIcon("OB"); } else if (aAssetType == ASSET_OBJECTIVE_LIST) { return Utils::CreateAssetIcon("OBL"); } else if (aAssetType == ASSET_LASER) { return Utils::CreateAssetIcon("LS"); } else if (aAssetType == ASSET_BEAM) { return Utils::CreateAssetIcon("BM"); } else if (aAssetType == ASSET_STREAMER_HINT) { return Utils::CreateAssetIcon("SH"); } else if (aAssetType == ASSET_ANIM_SELECTOR_TABLE) { return Utils::CreateAssetIcon("AST"); } else if (aAssetType == ASSET_ANIM_MAPPING_TABLE) { return Utils::CreateAssetIcon("AMP"); } else if (aAssetType == ASSET_ANIM_STATE_MACHINE) { return Utils::CreateAssetIcon("ASM"); } else if (aAssetType == ASSET_BEHAVIOR_TREE) { return Utils::CreateAssetIcon("BT"); } else if (aAssetType == ASSET_BEHAVIOR_STATE_MACHINE) { return Utils::CreateAssetIcon("BSM"); } else if (aAssetType == ASSET_FOOTSTEP_TABLE) { return Utils::CreateAssetIcon("FT"); } else if (aAssetType == ASSET_ENTITY_FX_IMPACTS) { return Utils::CreateAssetIcon("FI"); } else if (aAssetType == ASSET_ENTITY_SOUND_IMPACTS) { return Utils::CreateAssetIcon("SI"); } else if (aAssetType == ASSET_VEHICLE_FX_DEF) { return Utils::CreateAssetIcon("FD"); } else if (aAssetType == ASSET_VEHICLE_SOUND_DEF) { return Utils::CreateAssetIcon("SDD"); } else if (aAssetType == ASSET_VEHICLE) { return Utils::CreateAssetIcon("VE"); } else if (aAssetType == ASSET_VEHICLE_TRACER) { return Utils::CreateAssetIcon("VT"); } else if (aAssetType == ASSET_PLAYER_SOUNDS_TABLE) { return Utils::CreateAssetIcon("SDT"); } else if (aAssetType == ASSET_PLAYER_FX_TABLE) { return Utils::CreateAssetIcon("FXT"); } else if (aAssetType == ASSET_SHARED_WEAPON_SOUNDS) { return Utils::CreateAssetIcon("SWS"); } else if (aAssetType == ASSET_ATTACHMENT) { return Utils::CreateAssetIcon("AT"); } else if (aAssetType == ASSET_ATTACHMENT_UNIQUE) { return Utils::CreateAssetIcon("AU"); } else if (aAssetType == ASSET_WEAPON_CAMO) { return Utils::CreateAssetIcon("WPC"); } else if (aAssetType == ASSET_CUSTOMIZATION_TABLE) { return Utils::CreateAssetIcon("CT"); } else if (aAssetType == ASSET_CUSTOMIZATION_TABLE_FEIMAGES) { return Utils::CreateAssetIcon("CI"); } else if (aAssetType == ASSET_CUSTOMIZATION_TABLE_COLOR) { return Utils::CreateAssetIcon("CC"); } else if (aAssetType == ASSET_PHYS_CONSTRAINTS) { return Utils::CreateAssetIcon("PC"); } else if (aAssetType == ASSET_DESTRUCTIBLE_DEF) { return Utils::CreateAssetIcon("DD"); } else if (aAssetType == ASSET_MODEL_MESH) { return Utils::CreateAssetIcon("MM"); } else if (aAssetType == ASSET_S_ANIM) { return Utils::CreateAssetIcon("SA"); } else if (aAssetType == ASSET_FONT_ICON) { return Utils::CreateAssetIcon("FI"); } else if (aAssetType == ASSET_CG_MEDIA_TABLE) { return Utils::CreateAssetIcon("MT"); } else if (aAssetType == ASSET_SHOCK_FILE) { return Utils::CreateAssetIcon("SF"); } else if (aAssetType == ASSET_FAST_FILE) { return Utils::CreateAssetIcon("FF"); } else if (aAssetType == ASSET_ZONE_FILE) { return Utils::CreateAssetIcon("ZF"); } else if (aAssetType == ASSET_SOUND_DRIVER_GLOBALS) { return Utils::CreateAssetIcon("SDG"); } return QIcon(); } bool ZoneFile::SaveZoneFile(const QString aZoneFilePath) { QFile zoneFile(aZoneFilePath); if (!zoneFile.open(QIODevice::WriteOnly)) { LogManager::instance().addEntry("Failed to write zone file! " + zoneFile.errorString()); return false; } zoneFile.write(GetBinaryData()); zoneFile.close(); return true; } QString ZoneFile::GetStem() { return mStem; } QString ZoneFile::GetBaseStem() { return mStem.split('.').first(); } quint32 ZoneFile::GetSize() { return mSize; } quint32 ZoneFile::GetTagCount() { return mTagCount; } QStringList ZoneFile::GetTags() { return mTags; } quint32 ZoneFile::GetRecordCount() { return mRecordCount; } QStringList ZoneFile::GetRecords() { return mRecords; } AssetMap ZoneFile::GetAssetMap() { return mAssetMap; } void ZoneFile::SetStem(const QString aStem) { mStem = aStem; } void ZoneFile::SetSize(quint32 aSize) { mSize = aSize; } void ZoneFile::SetTagCount(quint32 aTagCount) { mTagCount = aTagCount; } void ZoneFile::SetTags(const QStringList aTags) { mTags = aTags; } void ZoneFile::SetRecordCount(quint32 aRecordCount) { mRecordCount = aRecordCount; } void ZoneFile::SetRecords(const QStringList aRecords) { mRecords = aRecords; } void ZoneFile::SetAssetMap(const AssetMap aAssetMap) { mAssetMap = aAssetMap; }