Added enum class Expansion

This commit is contained in:
Uleat 2019-01-09 20:14:49 -05:00
parent 34e7d96977
commit 38bf73cc08
11 changed files with 238 additions and 23 deletions

View File

@ -188,6 +188,7 @@ namespace EQEmu
namespace constants { namespace constants {
const EQEmu::versions::ClientVersion CHARACTER_CREATION_CLIENT = EQEmu::versions::ClientVersion::Titanium; const EQEmu::versions::ClientVersion CHARACTER_CREATION_CLIENT = EQEmu::versions::ClientVersion::Titanium;
using RoF2::constants::EXPANSION;
using RoF2::constants::EXPANSION_BIT; using RoF2::constants::EXPANSION_BIT;
using RoF2::constants::EXPANSIONS_MASK; using RoF2::constants::EXPANSIONS_MASK;

View File

@ -342,56 +342,224 @@ EQEmu::versions::MobVersion EQEmu::versions::ConvertClientVersionToOfflinePCMobV
} }
} }
const char* EQEmu::expansions::ExpansionName(uint32 expansion_bit) const char* EQEmu::expansions::ExpansionName(Expansion expansion)
{ {
switch (expansion_bit) { switch (expansion) {
case expansions::bitEverQuest: case Expansion::EverQuest:
return "EverQuest"; return "EverQuest";
case expansions::bitRoK: case Expansion::RoK:
return "The Ruins of Kunark"; return "The Ruins of Kunark";
case expansions::bitSoV: case Expansion::SoV:
return "The Scars of Velious"; return "The Scars of Velious";
case expansions::bitSoL: case Expansion::SoL:
return "The Shadows of Luclin"; return "The Shadows of Luclin";
case expansions::bitPoP: case Expansion::PoP:
return "The Planes of Power"; return "The Planes of Power";
case expansions::bitLoY: case Expansion::LoY:
return "The Legacy of Ykesha"; return "The Legacy of Ykesha";
case expansions::bitLDoN: case Expansion::LDoN:
return "Lost Dungeons of Norrath"; return "Lost Dungeons of Norrath";
case expansions::bitGoD: case Expansion::GoD:
return "Gates of Discord"; return "Gates of Discord";
case expansions::bitOoW: case Expansion::OoW:
return "Omens of War"; return "Omens of War";
case expansions::bitDoN: case Expansion::DoN:
return "Dragons of Norrath"; return "Dragons of Norrath";
case expansions::bitDoD: case Expansion::DoD:
return "Depths of Darkhollow"; return "Depths of Darkhollow";
case expansions::bitPoR: case Expansion::PoR:
return "Prophecy of Ro"; return "Prophecy of Ro";
case expansions::bitTSS: case Expansion::TSS:
return "The Serpent's Spine"; return "The Serpent's Spine";
case expansions::bitTBS: case Expansion::TBS:
return "The Buried Sea"; return "The Buried Sea";
case expansions::bitSoF: case Expansion::SoF:
return "Secrets of Faydwer"; return "Secrets of Faydwer";
case expansions::bitSoD: case Expansion::SoD:
return "Seeds of Destruction"; return "Seeds of Destruction";
case expansions::bitUF: case Expansion::UF:
return "Underfoot"; return "Underfoot";
case expansions::bitHoT: case Expansion::HoT:
return "House of Thule"; return "House of Thule";
case expansions::bitVoA: case Expansion::VoA:
return "Veil of Alaris"; return "Veil of Alaris";
case expansions::bitRoF: case Expansion::RoF:
return "Rain of Fear"; return "Rain of Fear";
case expansions::bitCotF: case Expansion::CotF:
return "Call of the Forsaken"; return "Call of the Forsaken";
default: default:
return "Invalid Expansion"; return "Invalid Expansion";
} }
} }
const char* EQEmu::expansions::ExpansionName(uint32 expansion_bit)
{
return ExpansionName(ConvertExpansionBitToExpansion(expansion_bit));
}
uint32 EQEmu::expansions::ConvertExpansionToExpansionBit(Expansion expansion)
{
switch (expansion) {
case Expansion::RoK:
return bitRoK;
case Expansion::SoV:
return bitSoV;
case Expansion::SoL:
return bitSoL;
case Expansion::PoP:
return bitPoP;
case Expansion::LoY:
return bitLoY;
case Expansion::LDoN:
return bitLDoN;
case Expansion::GoD:
return bitGoD;
case Expansion::OoW:
return bitOoW;
case Expansion::DoN:
return bitDoN;
case Expansion::DoD:
return bitDoD;
case Expansion::PoR:
return bitPoR;
case Expansion::TSS:
return bitTSS;
case Expansion::TBS:
return bitTBS;
case Expansion::SoF:
return bitSoF;
case Expansion::SoD:
return bitSoD;
case Expansion::UF:
return bitUF;
case Expansion::HoT:
return bitHoT;
case Expansion::VoA:
return bitVoA;
case Expansion::RoF:
return bitRoF;
case Expansion::CotF:
return bitCotF;
default:
return bitEverQuest;
}
}
EQEmu::expansions::Expansion EQEmu::expansions::ConvertExpansionBitToExpansion(uint32 expansion_bit)
{
switch (expansion_bit) {
case bitRoK:
return Expansion::RoK;
case bitSoV:
return Expansion::SoV;
case bitSoL:
return Expansion::SoL;
case bitPoP:
return Expansion::PoP;
case bitLoY:
return Expansion::LoY;
case bitLDoN:
return Expansion::LDoN;
case bitGoD:
return Expansion::GoD;
case bitOoW:
return Expansion::OoW;
case bitDoN:
return Expansion::DoN;
case bitDoD:
return Expansion::DoD;
case bitPoR:
return Expansion::PoR;
case bitTSS:
return Expansion::TSS;
case bitTBS:
return Expansion::TBS;
case bitSoF:
return Expansion::SoF;
case bitSoD:
return Expansion::SoD;
case bitUF:
return Expansion::UF;
case bitHoT:
return Expansion::HoT;
case bitVoA:
return Expansion::VoA;
case bitRoF:
return Expansion::RoF;
case bitCotF:
return Expansion::CotF;
default:
return Expansion::EverQuest;
}
}
uint32 EQEmu::expansions::ConvertExpansionToExpansionMask(Expansion expansion)
{
switch (expansion) {
case Expansion::RoK:
return maskRoK;
case Expansion::SoV:
return maskSoV;
case Expansion::SoL:
return maskSoL;
case Expansion::PoP:
return maskPoP;
case Expansion::LoY:
return maskLoY;
case Expansion::LDoN:
return maskLDoN;
case Expansion::GoD:
return maskGoD;
case Expansion::OoW:
return maskOoW;
case Expansion::DoN:
return maskDoN;
case Expansion::DoD:
return maskDoD;
case Expansion::PoR:
return maskPoR;
case Expansion::TSS:
return maskTSS;
case Expansion::TBS:
return maskTBS;
case Expansion::SoF:
return maskSoF;
case Expansion::SoD:
return maskSoD;
case Expansion::UF:
return maskUF;
case Expansion::HoT:
return maskHoT;
case Expansion::VoA:
return maskVoA;
case Expansion::RoF:
return maskRoF;
case Expansion::CotF:
return maskCotF;
default:
return maskEverQuest;
}
}
EQEmu::expansions::Expansion EQEmu::expansions::ConvertClientVersionToExpansion(versions::ClientVersion client_version)
{
switch (client_version) {
case versions::ClientVersion::Titanium:
return expansions::Expansion::PoR;
case versions::ClientVersion::SoF:
return expansions::Expansion::SoF;
case versions::ClientVersion::SoD:
return expansions::Expansion::SoD;
case versions::ClientVersion::UF:
return expansions::Expansion::UF;
case versions::ClientVersion::RoF:
case versions::ClientVersion::RoF2:
return expansions::Expansion::RoF;
default:
return expansions::Expansion::EverQuest;
}
}
uint32 EQEmu::expansions::ConvertClientVersionToExpansionBit(versions::ClientVersion client_version) uint32 EQEmu::expansions::ConvertClientVersionToExpansionBit(versions::ClientVersion client_version)
{ {
switch (client_version) { switch (client_version) {

View File

@ -137,6 +137,30 @@ namespace EQEmu
} /*versions*/ } /*versions*/
namespace expansions { namespace expansions {
enum class Expansion : uint32 {
EverQuest = 0,
RoK,
SoV,
SoL,
PoP,
LoY,
LDoN,
GoD,
OoW,
DoN,
DoD,
PoR,
TSS,
TBS,
SoF,
SoD,
UF,
HoT,
VoA,
RoF,
CotF
};
enum ExpansionBitmask : uint32 { enum ExpansionBitmask : uint32 {
bitEverQuest = 0x00000000, bitEverQuest = 0x00000000,
bitRoK = 0x00000001, bitRoK = 0x00000001,
@ -182,7 +206,12 @@ namespace EQEmu
maskCotF = 0x000FFFFF maskCotF = 0x000FFFFF
}; };
const char* ExpansionName(Expansion expansion);
const char* ExpansionName(uint32 expansion_bit); const char* ExpansionName(uint32 expansion_bit);
uint32 ConvertExpansionToExpansionBit(Expansion expansion);
Expansion ConvertExpansionBitToExpansion(uint32 expansion_bit);
uint32 ConvertExpansionToExpansionMask(Expansion expansion);
Expansion ConvertClientVersionToExpansion(versions::ClientVersion client_version);
uint32 ConvertClientVersionToExpansionBit(versions::ClientVersion client_version); uint32 ConvertClientVersionToExpansionBit(versions::ClientVersion client_version);
uint32 ConvertClientVersionToExpansionMask(versions::ClientVersion client_version); uint32 ConvertClientVersionToExpansionMask(versions::ClientVersion client_version);

View File

@ -25,6 +25,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
{ {
/*[ClientVersion::Unknown] =*/ /*[ClientVersion::Unknown] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
EQEmu::expansions::Expansion::EverQuest,
ClientUnknown::INULL, ClientUnknown::INULL,
ClientUnknown::INULL, ClientUnknown::INULL,
ClientUnknown::INULL, ClientUnknown::INULL,
@ -39,6 +40,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
), ),
/*[ClientVersion::Client62] =*/ /*[ClientVersion::Client62] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
EQEmu::expansions::Expansion::EverQuest,
Client62::INULL, Client62::INULL,
Client62::INULL, Client62::INULL,
Client62::INULL, Client62::INULL,
@ -53,6 +55,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
), ),
/*[ClientVersion::Titanium] =*/ /*[ClientVersion::Titanium] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
Titanium::constants::EXPANSION,
Titanium::constants::EXPANSION_BIT, Titanium::constants::EXPANSION_BIT,
Titanium::constants::EXPANSIONS_MASK, Titanium::constants::EXPANSIONS_MASK,
Titanium::constants::CHARACTER_CREATION_LIMIT, Titanium::constants::CHARACTER_CREATION_LIMIT,
@ -67,6 +70,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
), ),
/*[ClientVersion::SoF] =*/ /*[ClientVersion::SoF] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
SoF::constants::EXPANSION,
SoF::constants::EXPANSION_BIT, SoF::constants::EXPANSION_BIT,
SoF::constants::EXPANSIONS_MASK, SoF::constants::EXPANSIONS_MASK,
SoF::constants::CHARACTER_CREATION_LIMIT, SoF::constants::CHARACTER_CREATION_LIMIT,
@ -81,6 +85,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
), ),
/*[ClientVersion::SoD] =*/ /*[ClientVersion::SoD] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
SoD::constants::EXPANSION,
SoD::constants::EXPANSION_BIT, SoD::constants::EXPANSION_BIT,
SoD::constants::EXPANSIONS_MASK, SoD::constants::EXPANSIONS_MASK,
SoD::constants::CHARACTER_CREATION_LIMIT, SoD::constants::CHARACTER_CREATION_LIMIT,
@ -95,6 +100,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
), ),
/*[ClientVersion::UF] =*/ /*[ClientVersion::UF] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
UF::constants::EXPANSION,
UF::constants::EXPANSION_BIT, UF::constants::EXPANSION_BIT,
UF::constants::EXPANSIONS_MASK, UF::constants::EXPANSIONS_MASK,
UF::constants::CHARACTER_CREATION_LIMIT, UF::constants::CHARACTER_CREATION_LIMIT,
@ -109,6 +115,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
), ),
/*[ClientVersion::RoF] =*/ /*[ClientVersion::RoF] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
RoF::constants::EXPANSION,
RoF::constants::EXPANSION_BIT, RoF::constants::EXPANSION_BIT,
RoF::constants::EXPANSIONS_MASK, RoF::constants::EXPANSIONS_MASK,
RoF::constants::CHARACTER_CREATION_LIMIT, RoF::constants::CHARACTER_CREATION_LIMIT,
@ -123,6 +130,7 @@ static const EQEmu::constants::LookupEntry constants_lookup_entries[EQEmu::versi
), ),
/*[ClientVersion::RoF2] =*/ /*[ClientVersion::RoF2] =*/
EQEmu::constants::LookupEntry( EQEmu::constants::LookupEntry(
RoF2::constants::EXPANSION,
RoF2::constants::EXPANSION_BIT, RoF2::constants::EXPANSION_BIT,
RoF2::constants::EXPANSIONS_MASK, RoF2::constants::EXPANSIONS_MASK,
RoF2::constants::CHARACTER_CREATION_LIMIT, RoF2::constants::CHARACTER_CREATION_LIMIT,

View File

@ -35,6 +35,7 @@ namespace EQEmu
{ {
namespace constants { namespace constants {
struct LookupEntry { struct LookupEntry {
EQEmu::expansions::Expansion Expansion;
uint32 ExpansionBit; uint32 ExpansionBit;
uint32 ExpansionsMask; uint32 ExpansionsMask;
int16 CharacterCreationLimit; int16 CharacterCreationLimit;
@ -48,6 +49,7 @@ namespace EQEmu
int MercBuffs; int MercBuffs;
LookupEntry( LookupEntry(
EQEmu::expansions::Expansion Expansion,
uint32 ExpansionBit, uint32 ExpansionBit,
uint32 ExpansionsMask, uint32 ExpansionsMask,
int16 CharacterCreationLimit, int16 CharacterCreationLimit,
@ -60,6 +62,7 @@ namespace EQEmu
int PetBuffs, int PetBuffs,
int MercBuffs int MercBuffs
) : ) :
Expansion(Expansion),
ExpansionBit(ExpansionBit), ExpansionBit(ExpansionBit),
ExpansionsMask(ExpansionsMask), ExpansionsMask(ExpansionsMask),
CharacterCreationLimit(CharacterCreationLimit), CharacterCreationLimit(CharacterCreationLimit),

View File

@ -259,6 +259,7 @@ namespace RoF2
namespace constants { namespace constants {
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::RoF2; } inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::RoF2; }
const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::RoF;
const uint32 EXPANSION_BIT = EQEmu::expansions::bitRoF; const uint32 EXPANSION_BIT = EQEmu::expansions::bitRoF;
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskRoF; const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskRoF;

View File

@ -250,6 +250,7 @@ namespace RoF
namespace constants { namespace constants {
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::RoF; } inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::RoF; }
const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::RoF;
const uint32 EXPANSION_BIT = EQEmu::expansions::bitRoF; const uint32 EXPANSION_BIT = EQEmu::expansions::bitRoF;
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskRoF; const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskRoF;

View File

@ -277,6 +277,7 @@ namespace SoD
namespace constants { namespace constants {
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::SoD; } inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::SoD; }
const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::SoD;
const uint32 EXPANSION_BIT = EQEmu::expansions::bitSoD; const uint32 EXPANSION_BIT = EQEmu::expansions::bitSoD;
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskSoD; const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskSoD;

View File

@ -277,6 +277,7 @@ namespace SoF
namespace constants { namespace constants {
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::SoF; } inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::SoF; }
const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::SoF;
const uint32 EXPANSION_BIT = EQEmu::expansions::bitSoF; const uint32 EXPANSION_BIT = EQEmu::expansions::bitSoF;
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskSoF; const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskSoF;

View File

@ -276,6 +276,7 @@ namespace Titanium
namespace constants { namespace constants {
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::Titanium; } inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::Titanium; }
const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::PoR;
const uint32 EXPANSION_BIT = EQEmu::expansions::bitPoR; const uint32 EXPANSION_BIT = EQEmu::expansions::bitPoR;
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskPoR; const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskPoR;

View File

@ -278,6 +278,7 @@ namespace UF
namespace constants { namespace constants {
inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::UF; } inline EQEmu::versions::ClientVersion GetConstantsRef() { return EQEmu::versions::ClientVersion::UF; }
const EQEmu::expansions::Expansion EXPANSION = EQEmu::expansions::Expansion::UF;
const uint32 EXPANSION_BIT = EQEmu::expansions::bitUF; const uint32 EXPANSION_BIT = EQEmu::expansions::bitUF;
const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskUF; const uint32 EXPANSIONS_MASK = EQEmu::expansions::maskUF;