Added offline client inventory version definitions and convertors

This commit is contained in:
Uleat 2016-05-29 20:30:03 -04:00
parent a089820464
commit 2a74d04635
3 changed files with 342 additions and 33 deletions

View File

@ -151,6 +151,14 @@ bool EQEmu::versions::IsValidNonPCInventoryVersion(InventoryVersion inventory_ve
return true;
}
bool EQEmu::versions::IsValidOfflinePCInventoryVersion(InventoryVersion inventory_version)
{
if (inventory_version <= LastNonPCInventoryVersion || inventory_version > LastOfflinePCInventoryVersion)
return false;
return true;
}
EQEmu::versions::InventoryVersion EQEmu::versions::ValidateInventoryVersion(InventoryVersion inventory_version)
{
if (inventory_version <= InventoryVersion::Unknown || inventory_version > LastInventoryVersion)
@ -175,6 +183,14 @@ EQEmu::versions::InventoryVersion EQEmu::versions::ValidateNonPCInventoryVersion
return inventory_version;
}
EQEmu::versions::InventoryVersion EQEmu::versions::ValidateOfflinePCInventoryVersion(InventoryVersion inventory_version)
{
if (inventory_version <= LastNonPCInventoryVersion || inventory_version > LastOfflinePCInventoryVersion)
return InventoryVersion::Unknown;
return inventory_version;
}
const char* EQEmu::versions::InventoryVersionName(InventoryVersion inventory_version)
{
switch (inventory_version) {
@ -202,6 +218,18 @@ const char* EQEmu::versions::InventoryVersionName(InventoryVersion inventory_ver
return "Bot";
case InventoryVersion::Pet:
return "Pet";
case InventoryVersion::OfflineTitanium:
return "Offline Titanium";
case InventoryVersion::OfflineSoF:
return "Offline SoF";
case InventoryVersion::OfflineSoD:
return "Offline SoD";
case InventoryVersion::OfflineUF:
return "Offline UF";
case InventoryVersion::OfflineRoF:
return "Offline RoF";
case InventoryVersion::OfflineRoF2:
return "Offline RoF2";
default:
return "Invalid Version";
};
@ -252,3 +280,83 @@ EQEmu::versions::InventoryVersion EQEmu::versions::ConvertClientVersionToInvento
return InventoryVersion::Unknown;
}
}
EQEmu::versions::InventoryVersion EQEmu::versions::ConvertPCInventoryVersionToOfflinePCInventoryVersion(InventoryVersion inventory_version)
{
switch (inventory_version) {
case InventoryVersion::Titanium:
return InventoryVersion::OfflineTitanium;
case InventoryVersion::SoF:
return InventoryVersion::OfflineSoF;
case InventoryVersion::SoD:
return InventoryVersion::OfflineSoD;
case InventoryVersion::UF:
return InventoryVersion::OfflineUF;
case InventoryVersion::RoF:
return InventoryVersion::OfflineRoF;
case InventoryVersion::RoF2:
return InventoryVersion::OfflineRoF2;
default:
return InventoryVersion::Unknown;
}
}
EQEmu::versions::InventoryVersion EQEmu::versions::ConvertOfflinePCInventoryVersionToPCInventoryVersion(InventoryVersion inventory_version)
{
switch (inventory_version) {
case InventoryVersion::OfflineTitanium:
return InventoryVersion::Titanium;
case InventoryVersion::OfflineSoF:
return InventoryVersion::SoF;
case InventoryVersion::OfflineSoD:
return InventoryVersion::SoD;
case InventoryVersion::OfflineUF:
return InventoryVersion::UF;
case InventoryVersion::OfflineRoF:
return InventoryVersion::RoF;
case InventoryVersion::OfflineRoF2:
return InventoryVersion::RoF2;
default:
return InventoryVersion::Unknown;
}
}
EQEmu::versions::ClientVersion EQEmu::versions::ConvertOfflinePCInventoryVersionToClientVersion(InventoryVersion inventory_version)
{
switch (inventory_version) {
case InventoryVersion::OfflineTitanium:
return ClientVersion::Titanium;
case InventoryVersion::OfflineSoF:
return ClientVersion::SoF;
case InventoryVersion::OfflineSoD:
return ClientVersion::SoD;
case InventoryVersion::OfflineUF:
return ClientVersion::UF;
case InventoryVersion::OfflineRoF:
return ClientVersion::RoF;
case InventoryVersion::OfflineRoF2:
return ClientVersion::RoF2;
default:
return ClientVersion::Unknown;
}
}
EQEmu::versions::InventoryVersion EQEmu::versions::ConvertClientVersionToOfflinePCInventoryVersion(ClientVersion client_version)
{
switch (client_version) {
case ClientVersion::Titanium:
return InventoryVersion::OfflineTitanium;
case ClientVersion::SoF:
return InventoryVersion::OfflineSoF;
case ClientVersion::SoD:
return InventoryVersion::OfflineSoD;
case ClientVersion::UF:
return InventoryVersion::OfflineUF;
case ClientVersion::RoF:
return InventoryVersion::OfflineRoF;
case ClientVersion::RoF2:
return InventoryVersion::OfflineRoF2;
default:
return InventoryVersion::Unknown;
}
}

View File

@ -86,23 +86,38 @@ namespace EQEmu
NPC,
Merc,
Bot,
Pet
Pet,
OfflineTitanium,
OfflineSoF,
OfflineSoD,
OfflineUF,
OfflineRoF,
OfflineRoF2
};
const InventoryVersion LastInventoryVersion = InventoryVersion::Pet;
const InventoryVersion LastInventoryVersion = InventoryVersion::OfflineRoF2;
const InventoryVersion LastPCInventoryVersion = InventoryVersion::RoF2;
const InventoryVersion LastNonPCInventoryVersion = InventoryVersion::Pet;
const InventoryVersion LastOfflinePCInventoryVersion = InventoryVersion::OfflineRoF2;
const size_t InventoryVersionCount = (static_cast<size_t>(LastInventoryVersion) + 1);
extern bool IsValidInventoryVersion(InventoryVersion inventory_version);
extern bool IsValidPCInventoryVersion(InventoryVersion inventory_version);
extern bool IsValidNonPCInventoryVersion(InventoryVersion inventory_version);
extern bool IsValidOfflinePCInventoryVersion(InventoryVersion inventory_version);
extern InventoryVersion ValidateInventoryVersion(InventoryVersion inventory_version);
extern InventoryVersion ValidatePCInventoryVersion(InventoryVersion inventory_version);
extern InventoryVersion ValidateNonPCInventoryVersion(InventoryVersion inventory_version);
extern InventoryVersion ValidateOfflinePCInventoryVersion(InventoryVersion inventory_version);
extern const char* InventoryVersionName(InventoryVersion inventory_version);
extern ClientVersion ConvertInventoryVersionToClientVersion(InventoryVersion inventory_version);
extern InventoryVersion ConvertClientVersionToInventoryVersion(ClientVersion client_version);
extern InventoryVersion ConvertPCInventoryVersionToOfflinePCInventoryVersion(InventoryVersion inventory_version);
extern InventoryVersion ConvertOfflinePCInventoryVersionToPCInventoryVersion(InventoryVersion inventory_version);
extern ClientVersion ConvertOfflinePCInventoryVersionToClientVersion(InventoryVersion inventory_version);
extern InventoryVersion ConvertClientVersionToOfflinePCInventoryVersion(ClientVersion client_version);
} /*versions*/

View File

@ -52,7 +52,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
legacy::TYPE_POSSESSIONS_SIZE,
legacy::TYPE_POSSESSIONS_SIZE,
legacy::TYPE_POSSESSIONS_SIZE,
legacy::TYPE_POSSESSIONS_SIZE
legacy::TYPE_POSSESSIONS_SIZE,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeBank]
ClientUnknown::Null,
@ -66,7 +72,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeSharedBank]
ClientUnknown::Null,
@ -80,7 +92,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeTrade]
ClientUnknown::Null,
@ -94,7 +112,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
4,
4,
legacy::TYPE_TRADE_SIZE, // client thinks this is another client
4
4,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeWorld]
ClientUnknown::Null,
@ -108,7 +132,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeLimbo]
ClientUnknown::Null,
@ -122,7 +152,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeTribute]
ClientUnknown::Null,
@ -136,7 +172,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeTrophyTribute]
ClientUnknown::Null,
@ -150,7 +192,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeGuildTribute]
ClientUnknown::Null,
@ -164,7 +212,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeMerchant]
ClientUnknown::Null,
@ -178,7 +232,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeDeleted]
ClientUnknown::Null,
@ -192,7 +252,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeCorpse]
ClientUnknown::Null,
@ -206,7 +272,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeBazaar]
ClientUnknown::Null,
@ -220,7 +292,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeInspect]
ClientUnknown::Null,
@ -234,7 +312,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeRealEstate]
ClientUnknown::Null,
@ -248,7 +332,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeViewMODPC]
ClientUnknown::Null,
@ -262,7 +352,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeViewMODBank]
ClientUnknown::Null,
@ -276,7 +372,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeViewMODSharedBank]
ClientUnknown::Null,
@ -290,7 +392,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeViewMODLimbo]
ClientUnknown::Null,
@ -304,7 +412,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeAltStorage]
ClientUnknown::Null,
@ -318,7 +432,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeArchived]
ClientUnknown::Null,
@ -332,7 +452,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeMail]
ClientUnknown::Null,
@ -346,7 +472,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeGuildTrophyTribute]
ClientUnknown::Null,
@ -360,7 +492,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeKrono]
ClientUnknown::Null,
@ -374,7 +512,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
},
{ // local[TypeOther]
ClientUnknown::Null,
@ -388,7 +532,13 @@ uint16 EQEmu::inventory::InventoryTypeSize(versions::InventoryVersion inventory_
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
}
};
@ -412,7 +562,13 @@ uint64 EQEmu::inventory::PossessionsBitmask(versions::InventoryVersion inventory
EntityLimits::npc::Null,
EntityLimits::merc::Null,
EntityLimits::bot::Null,
EntityLimits::pet::Null
EntityLimits::pet::Null,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
};
return NOT_USED;
@ -433,7 +589,13 @@ bool EQEmu::inventory::AllowEmptyBagInBag(versions::InventoryVersion inventory_v
EntityLimits::npc::False,
EntityLimits::merc::False,
EntityLimits::bot::False,
EntityLimits::pet::False
EntityLimits::pet::False,
Titanium::False,
SoF::False,
SoD::False,
UF::False,
RoF::False,
RoF2::False
};
return false;
@ -454,7 +616,13 @@ bool EQEmu::inventory::AllowClickCastFromBag(versions::InventoryVersion inventor
EntityLimits::npc::False,
EntityLimits::merc::False,
EntityLimits::bot::False,
EntityLimits::pet::False
EntityLimits::pet::False,
Titanium::False,
SoF::False,
SoD::False,
UF::False,
RoF::False,
RoF2::False
};
return local[static_cast<size_t>(versions::ValidateInventoryVersion(inventory_version))];
@ -474,7 +642,13 @@ uint16 EQEmu::inventory::ItemAugSize(versions::InventoryVersion inventory_versio
legacy::ITEM_COMMON_SIZE,
legacy::ITEM_COMMON_SIZE,
legacy::ITEM_COMMON_SIZE,
legacy::ITEM_COMMON_SIZE
legacy::ITEM_COMMON_SIZE,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
};
return local[static_cast<size_t>(versions::ValidateInventoryVersion(inventory_version))];
@ -494,7 +668,13 @@ uint16 EQEmu::inventory::ItemBagSize(versions::InventoryVersion inventory_versio
legacy::ITEM_CONTAINER_SIZE,
legacy::ITEM_CONTAINER_SIZE,
legacy::ITEM_CONTAINER_SIZE,
legacy::ITEM_CONTAINER_SIZE
legacy::ITEM_CONTAINER_SIZE,
Titanium::Null,
SoF::Null,
SoD::Null,
UF::Null,
RoF::Null,
RoF2::Null
};
return local[static_cast<size_t>(versions::ValidateInventoryVersion(inventory_version))];
@ -514,7 +694,13 @@ bool EQEmu::profile::CoinHasWeight(versions::InventoryVersion inventory_version)
EntityLimits::npc::True,
EntityLimits::merc::True,
EntityLimits::bot::True,
EntityLimits::pet::True
EntityLimits::pet::True,
Titanium::False,
SoF::False,
SoD::False,
UF::False,
RoF::False,
RoF2::False
};
return local[static_cast<size_t>(versions::ValidateInventoryVersion(inventory_version))];