move parts to new common component to avoid circular dependency of zonecommon and objcommon

This commit is contained in:
Jan
2021-03-03 12:56:15 -08:00
parent d616738be4
commit 12461d27e7
38 changed files with 70 additions and 22 deletions

View File

@ -1,41 +0,0 @@
#pragma once
#include <string>
enum class GameLanguage
{
LANGUAGE_NONE,
LANGUAGE_ENGLISH,
LANGUAGE_FRENCH,
LANGUAGE_GERMAN,
LANGUAGE_ITALIAN,
LANGUAGE_SPANISH,
LANGUAGE_BRITISH,
LANGUAGE_RUSSIAN,
LANGUAGE_POLISH,
LANGUAGE_KOREAN,
LANGUAGE_TAIWANESE,
LANGUAGE_JAPANESE,
LANGUAGE_CHINESE,
LANGUAGE_THAI,
LANGUAGE_LEET,
LANGUAGE_CZECH,
LANGUAGE_FRENCH_CAN,
LANGUAGE_AUSTRIAN,
LANGUAGE_PORTUGUESE,
LANGUAGE_MEXICAN_SPANISH,
LANGUAGE_FULL_JAPANESE
};
class GameLanguagePrefix
{
public:
GameLanguage m_language;
const std::string m_prefix;
GameLanguagePrefix(const GameLanguage language, std::string prefix)
: m_language(language),
m_prefix(std::move(prefix))
{
}
};

View File

@ -1,15 +0,0 @@
#pragma once
#include "GameLanguage.h"
#include <vector>
class Zone;
class IGame
{
public:
virtual const std::string& GetName() = 0;
virtual void AddZone(Zone* zone) = 0;
virtual void RemoveZone(Zone* zone) = 0;
virtual std::vector<Zone*> GetZones() = 0;
virtual std::vector<GameLanguagePrefix> GetLanguagePrefixes() = 0;
};

View File

@ -4,7 +4,7 @@
#include "Pool/ZoneAssetPools.h"
#include "Pool/AssetPool.h"
#include "IW4.h"
#include "Game/IW4/IW4.h"
class GameAssetPoolIW4 final : public ZoneAssetPools
{

View File

@ -1,40 +0,0 @@
#include "GameIW4.h"
#include <algorithm>
#include "IW4.h"
using namespace IW4;
GameIW4 g_GameIW4;
const std::string GameIW4::NAME = "IW4";
const std::string& GameIW4::GetName()
{
return NAME;
}
void GameIW4::AddZone(Zone* zone)
{
m_zones.push_back(zone);
}
void GameIW4::RemoveZone(Zone* zone)
{
const auto foundEntry = std::find(m_zones.begin(), m_zones.end(), zone);
if (foundEntry != m_zones.end())
m_zones.erase(foundEntry);
}
std::vector<Zone*> GameIW4::GetZones()
{
return m_zones;
}
std::vector<GameLanguagePrefix> GameIW4::GetLanguagePrefixes()
{
std::vector<GameLanguagePrefix> prefixes;
return prefixes;
}

View File

@ -1,17 +0,0 @@
#pragma once
#include "Game/IGame.h"
class GameIW4 : public IGame
{
static const std::string NAME;
std::vector<Zone*> m_zones;
public:
const std::string& GetName() override;
void AddZone(Zone* zone) override;
void RemoveZone(Zone* zone) override;
std::vector<Zone*> GetZones() override;
std::vector<GameLanguagePrefix> GetLanguagePrefixes() override;
};
extern GameIW4 g_GameIW4;

View File

@ -1,125 +0,0 @@
#pragma once
//#include <d3d11.h>
#include "Image/Texture.h"
#include "IW4_Assets.h"
namespace IW4
{
struct DB_AuthHash
{
char bytes[32];
};
struct DB_AuthSignature
{
char bytes[256];
};
struct DB_AuthSubHeader
{
char fastfileName[32];
unsigned int reserved;
DB_AuthHash masterBlockHashes[244];
};
struct DB_AuthHeader
{
char magic[8]; // + 0
unsigned int reserved; // + 8
DB_AuthHash subheaderHash; // + 12
DB_AuthSignature signedSubheaderHash; // + 44
DB_AuthSubHeader subheader; // + 300
};
struct ScriptStringList
{
int count;
const char** strings;
};
struct XAsset
{
XAssetType type;
XAssetHeader header;
};
struct XAssetList
{
ScriptStringList stringList;
int assetCount;
XAsset* assets;
};
struct cspField_t
{
const char* szName;
int iOffset;
int iFieldType;
};
enum csParseFieldType_t
{
CSPFT_STRING = 0,
CSPFT_STRING_MAX_STRING_CHARS,
CSPFT_STRING_MAX_QPATH,
CSPFT_STRING_MAX_OSPATH,
CSPFT_INT,
CSPFT_QBOOLEAN,
CSPFT_BOOL,
CSPFT_FLOAT,
CSPFT_MPH_TO_INCHES_PER_SEC,
CSPFT_MILLISECONDS,
CSPFT_FX,
CSPFT_XMODEL,
CSPFT_MATERIAL,
CSPFT_PHYS_COLLMAP,
CSPFT_SOUND,
CSPFT_TRACER,
CSPFT_NUM_BASE_FIELD_TYPES,
};
enum weapFieldType_t
{
WFT_WEAPONTYPE = CSPFT_NUM_BASE_FIELD_TYPES,
WFT_WEAPONCLASS,
WFT_OVERLAYRETICLE,
WFT_PENETRATE_TYPE,
WFT_IMPACT_TYPE,
WFT_STANCE,
WFT_PROJ_EXPLOSION,
WFT_OFFHAND_CLASS,
WFT_ANIMTYPE,
WFT_ACTIVE_RETICLE_TYPE,
WFT_GUIDED_MISSILE_TYPE,
WFT_BOUNCE_SOUND,
WFT_STICKINESS,
WFT_OVERLAYINTERFACE,
WFT_INVENTORYTYPE,
WFT_FIRETYPE,
WFT_AMMOCOUNTER_CLIPTYPE,
WFT_ICONRATIO_HUD,
WFT_ICONRATIO_PICKUP,
WFT_ICONRATIO_AMMOCOUNTER,
WFT_ICONRATIO_KILL,
WFT_ICONRATIO_DPAD,
WFT_HIDETAGS,
WFT_NOTETRACKSOUNDMAP,
WFT_NOTETRACKRUMBLEMAP,
WFT_NUM_FIELD_TYPES,
};
enum VehicleFieldType
{
VFT_TYPE = CSPFT_NUM_BASE_FIELD_TYPES,
VFT_AXLE_STEERING,
VFT_AXLE_POWER,
VFT_AXLE_BRAKING,
VFT_TROPHY_TAGS,
VFT_NUM,
};
}

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +0,0 @@
#include "CommonT6.h"
#include <cctype>
int CommonT6::Com_HashKey(const char* str, const int maxLen)
{
if (str == nullptr)
return 0;
int hash = 0;
for (int i = 0; i < maxLen; i++)
{
if (str[i] == '\0')
break;
hash += str[i] * (0x77 + i);
}
return hash ^ ((hash ^ (hash >> 10)) >> 10);
}
int CommonT6::Com_HashString(const char* str, const int len)
{
if (!str)
return 0;
int result = 0x1505;
int offset = 0;
while(str[offset])
{
if (len > 0 && offset >= len)
break;
const int c = tolower(str[offset++]);
result = c + 33 * result;
}
return result;
}

View File

@ -1,8 +0,0 @@
#pragma once
class CommonT6
{
public:
static int Com_HashKey(const char* str, int maxLen);
static int Com_HashString(const char* str, int len);
};

View File

@ -2,7 +2,7 @@
#include "Pool/ZoneAssetPools.h"
#include "Pool/AssetPool.h"
#include "T6.h"
#include "Game/T6/T6.h"
class GameAssetPoolT6 final : public ZoneAssetPools
{

View File

@ -1,58 +0,0 @@
#include "GameT6.h"
#include <algorithm>
#include "T6.h"
using namespace T6;
GameT6 g_GameT6;
const std::string GameT6::NAME = "T6";
const std::string& GameT6::GetName()
{
return NAME;
}
void GameT6::AddZone(Zone* zone)
{
m_zones.push_back(zone);
}
void GameT6::RemoveZone(Zone* zone)
{
const auto foundEntry = std::find(m_zones.begin(), m_zones.end(), zone);
if (foundEntry != m_zones.end())
m_zones.erase(foundEntry);
}
std::vector<Zone*> GameT6::GetZones()
{
return m_zones;
}
std::vector<GameLanguagePrefix> GameT6::GetLanguagePrefixes()
{
std::vector<GameLanguagePrefix> prefixes;
prefixes.emplace_back(GameLanguage::LANGUAGE_ENGLISH, "en_");
prefixes.emplace_back(GameLanguage::LANGUAGE_FRENCH, "fr_");
prefixes.emplace_back(GameLanguage::LANGUAGE_FRENCH_CAN, "fc_");
prefixes.emplace_back(GameLanguage::LANGUAGE_GERMAN, "ge_");
prefixes.emplace_back(GameLanguage::LANGUAGE_AUSTRIAN, "as_");
prefixes.emplace_back(GameLanguage::LANGUAGE_ITALIAN, "it_");
prefixes.emplace_back(GameLanguage::LANGUAGE_SPANISH, "sp_");
prefixes.emplace_back(GameLanguage::LANGUAGE_BRITISH, "br_");
prefixes.emplace_back(GameLanguage::LANGUAGE_RUSSIAN, "ru_");
prefixes.emplace_back(GameLanguage::LANGUAGE_POLISH, "po_");
prefixes.emplace_back(GameLanguage::LANGUAGE_KOREAN, "ko_");
prefixes.emplace_back(GameLanguage::LANGUAGE_JAPANESE, "ja_");
prefixes.emplace_back(GameLanguage::LANGUAGE_CZECH, "cz_");
prefixes.emplace_back(GameLanguage::LANGUAGE_FULL_JAPANESE, "fj_");
prefixes.emplace_back(GameLanguage::LANGUAGE_PORTUGUESE, "bp_");
prefixes.emplace_back(GameLanguage::LANGUAGE_MEXICAN_SPANISH, "ms_");
return prefixes;
}

View File

@ -1,17 +0,0 @@
#pragma once
#include "Game/IGame.h"
class GameT6 : public IGame
{
static const std::string NAME;
std::vector<Zone*> m_zones;
public:
const std::string& GetName() override;
void AddZone(Zone* zone) override;
void RemoveZone(Zone* zone) override;
std::vector<Zone*> GetZones() override;
std::vector<GameLanguagePrefix> GetLanguagePrefixes() override;
};
extern GameT6 g_GameT6;

View File

@ -1,126 +0,0 @@
#pragma once
//#include <d3d11.h>
#include "Image/Texture.h"
#include "T6_Assets.h"
namespace T6
{
struct ScriptStringList
{
int count;
const char** strings;
};
struct XAsset
{
XAssetType type;
XAssetHeader header;
};
struct XAssetList
{
ScriptStringList stringList;
int dependCount;
const char** depends;
int assetCount;
XAsset* assets;
};
struct cspField_t
{
const char* szName;
int iOffset;
int iFieldType;
};
enum csParseFieldType_t
{
CSPFT_STRING = 0,
CSPFT_STRING_MAX_STRING_CHARS,
CSPFT_STRING_MAX_QPATH,
CSPFT_STRING_MAX_OSPATH,
CSPFT_INT,
CSPFT_UINT,
CSPFT_BOOL,
CSPFT_QBOOLEAN,
CSPFT_FLOAT,
CSPFT_MILLISECONDS,
CSPFT_FX,
CSPFT_XMODEL,
CSPFT_MATERIAL,
CSPFT_MATERIAL_STREAM,
CSPFT_PHYS_PRESET,
CSPFT_SCRIPT_STRING,
CSPFT_TRACER,
CSPFT_SOUND_ALIAS_ID,
CSPFT_NUM_BASE_FIELD_TYPES
};
enum weapFieldType_t
{
WFT_WEAPONTYPE = CSPFT_NUM_BASE_FIELD_TYPES,
WFT_WEAPONCLASS,
WFT_OVERLAYRETICLE,
WFT_PENETRATE_TYPE,
WFT_IMPACT_TYPE,
WFT_STANCE,
WFT_PROJ_EXPLOSION,
WFT_OFFHAND_CLASS,
WFT_OFFHAND_SLOT,
WFT_ANIMTYPE,
WFT_ACTIVE_RETICLE_TYPE,
WFT_GUIDED_MISSILE_TYPE,
WFT_BOUNCE_SOUND,
WFT_STICKINESS,
WFT_ROTATETYPE,
WFT_OVERLAYINTERFACE,
WFT_INVENTORYTYPE,
WFT_FIRETYPE,
WFT_CLIPTYPE,
WFT_AMMOCOUNTER_CLIPTYPE,
WFT_ICONRATIO_HUD,
WFT_ICONRATIO_AMMOCOUNTER,
WFT_ICONRATIO_KILL,
WFT_ICONRATIO_DPAD,
WFT_ICONRATIO_INDICATOR,
WFT_BARRELTYPE,
WFT_HIDETAGS,
WFT_EXPLOSION_TAG,
WFT_NOTETRACKSOUNDMAP,
WFT_WEAPON_CAMO,
WFT_NUM_FIELD_TYPES
};
enum VehicleFieldType
{
VFT_TYPE = CSPFT_NUM_BASE_FIELD_TYPES,
VFT_CAMERAMODE,
VFT_TRACTION_TYPE,
VFT_MPH_TO_INCHES_PER_SECOND,
VFT_POUNDS_TO_GAME_MASS,
VFT_TEAM,
VFT_KEY_BINDING,
VFT_GRAPH,
VFT_WIIUCONTROLOVERRIDE,
VFT_NUM
};
enum tracerFieldType_t
{
TFT_TRACERTYPE = CSPFT_NUM_BASE_FIELD_TYPES,
TFT_NUM_FIELD_TYPES
};
enum constraintsFieldType_t
{
CFT_TYPE = 0x12,
CFT_NUM
};
}

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,15 @@
#pragma once
#include <memory>
#include "ZoneTypes.h"
#include <memory>
#include <string>
#include <vector>
#include "Zone/ZoneTypes.h"
#include "Pool/ZoneAssetPools.h"
#include "Game/IGame.h"
#include "Game/GameLanguage.h"
#include "Zone/XBlock.h"
#include "ZoneMemory.h"
#include <string>
#include <vector>
class IGame;
class ZoneAssetPools;

View File

@ -1,28 +0,0 @@
#pragma once
#include <cstdint>
struct ZoneHeader
{
uint8_t m_magic[8];
uint32_t m_version;
};
#ifdef ARCH_x64
typedef uint32_t scr_string_t;
typedef uint64_t xchunk_size_t;
typedef uint64_t xblock_size_t;
typedef uint64_t zone_pointer_t;
constexpr uint16_t SCR_STRING_MAX = UINT32_MAX;
#elif ARCH_x86
typedef uint16_t scr_string_t;
typedef uint32_t xchunk_size_t;
typedef uint32_t xblock_size_t;
typedef uint32_t zone_pointer_t;
constexpr uint16_t SCR_STRING_MAX = UINT16_MAX;
#endif
typedef int block_t;
typedef int asset_type_t;
typedef unsigned int zone_priority_t;