mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 00:18:43 +01:00
Deps/CascLib: Updated to ladislav-zezula/CascLib@d1d617d4fe
This commit is contained in:
@@ -539,6 +539,13 @@ static int GetGameType(TCascStorage * hs, LPBYTE pbVarBegin, LPBYTE pbLineEnd)
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
// Diablo III BETA 2.2.0
|
||||
if((pbLineEnd - pbVarBegin) == 7 && !_strnicmp((const char *)pbVarBegin, "Diablo3", 7))
|
||||
{
|
||||
hs->dwGameInfo = CASC_GAME_DIABLO3;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
// An unknown game
|
||||
assert(false);
|
||||
return ERROR_BAD_FORMAT;
|
||||
@@ -546,6 +553,7 @@ static int GetGameType(TCascStorage * hs, LPBYTE pbVarBegin, LPBYTE pbLineEnd)
|
||||
|
||||
// "B29049"
|
||||
// "WOW-18125patch6.0.1"
|
||||
// "30013_Win32_2_2_0_Ptr_ptr"
|
||||
static int GetBuildNumber(TCascStorage * hs, LPBYTE pbVarBegin, LPBYTE pbLineEnd)
|
||||
{
|
||||
DWORD dwBuildNumber = 0;
|
||||
@@ -625,10 +633,12 @@ static int FetchAndVerifyConfigFile(TCascStorage * hs, PQUERY_KEY pFileKey, PQUE
|
||||
|
||||
static int ParseInfoFile(TCascStorage * hs, PQUERY_KEY pFileBlob)
|
||||
{
|
||||
QUERY_KEY Active = {NULL, 0};
|
||||
QUERY_KEY TagString = {NULL, 0};
|
||||
QUERY_KEY CdnHost = {NULL, 0};
|
||||
QUERY_KEY CdnPath = {NULL, 0};
|
||||
const char * szLineBegin1 = NULL;
|
||||
const char * szLinePtr1 = NULL;
|
||||
const char * szLineBegin2 = NULL;
|
||||
const char * szLineEnd1 = NULL;
|
||||
const char * szLineEnd2 = NULL;
|
||||
@@ -650,46 +660,57 @@ static int ParseInfoFile(TCascStorage * hs, PQUERY_KEY pFileBlob)
|
||||
szFilePtr++;
|
||||
}
|
||||
|
||||
// Skip the newline character(s)
|
||||
while(szFilePtr < szFileEnd && (szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A))
|
||||
szFilePtr++;
|
||||
|
||||
// Find the second line
|
||||
szLineBegin2 = szFilePtr;
|
||||
while(szFilePtr < szFileEnd)
|
||||
while (szFilePtr < szFileEnd)
|
||||
{
|
||||
// Check for the end of the line
|
||||
if(szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A)
|
||||
szLinePtr1 = szLineBegin1;
|
||||
|
||||
// Skip the newline character(s)
|
||||
while (szFilePtr < szFileEnd && (szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A))
|
||||
szFilePtr++;
|
||||
|
||||
// Find the next line
|
||||
szLineBegin2 = szFilePtr;
|
||||
while (szFilePtr < szFileEnd)
|
||||
{
|
||||
szLineEnd2 = szFilePtr;
|
||||
break;
|
||||
// Check for the end of the line
|
||||
if (szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A)
|
||||
{
|
||||
szLineEnd2 = szFilePtr;
|
||||
break;
|
||||
}
|
||||
|
||||
szFilePtr++;
|
||||
}
|
||||
|
||||
szFilePtr++;
|
||||
}
|
||||
// Find the build key, CDN config key and the URL path
|
||||
while (szLinePtr1 < szLineEnd1)
|
||||
{
|
||||
// Check for variables we need
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "Active", "DEC"))
|
||||
LoadInfoVariable(&Active, szLineBegin2, szLineEnd2, false);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "Build Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnBuildKey, szLineBegin2, szLineEnd2, true);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "CDN Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnConfigKey, szLineBegin2, szLineEnd2, true);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "CDN Hosts", "STRING"))
|
||||
LoadInfoVariable(&CdnHost, szLineBegin2, szLineEnd2, false);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "CDN Path", "STRING"))
|
||||
LoadInfoVariable(&CdnPath, szLineBegin2, szLineEnd2, false);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "Tags", "STRING"))
|
||||
LoadInfoVariable(&TagString, szLineBegin2, szLineEnd2, false);
|
||||
|
||||
// Find the build key, CDN config key and the URL path
|
||||
while(szLineBegin1 < szLineEnd1)
|
||||
{
|
||||
// Check for variables we need
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "Build Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnBuildKey, szLineBegin2, szLineEnd2, true);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "CDN Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnConfigKey, szLineBegin2, szLineEnd2, true);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "CDN Hosts", "STRING"))
|
||||
LoadInfoVariable(&CdnHost, szLineBegin2, szLineEnd2, false);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "CDN Path", "STRING"))
|
||||
LoadInfoVariable(&CdnPath, szLineBegin2, szLineEnd2, false);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "Tags", "STRING"))
|
||||
LoadInfoVariable(&TagString, szLineBegin2, szLineEnd2, false);
|
||||
// Move both line pointers
|
||||
szLinePtr1 = SkipInfoVariable(szLinePtr1, szLineEnd1);
|
||||
if (szLineBegin1 == NULL)
|
||||
break;
|
||||
|
||||
// Move both line pointers
|
||||
szLineBegin1 = SkipInfoVariable(szLineBegin1, szLineEnd1);
|
||||
if(szLineBegin1 == NULL)
|
||||
break;
|
||||
szLineBegin2 = SkipInfoVariable(szLineBegin2, szLineEnd2);
|
||||
if (szLineBegin2 == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
szLineBegin2 = SkipInfoVariable(szLineBegin2, szLineEnd2);
|
||||
if(szLineBegin2 == NULL)
|
||||
// Stop parsing if found active config
|
||||
if (Active.pbData != NULL && *Active.pbData == '1')
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
|
||||
#define CASC_GAME_HOTS 0x00010000 // Heroes of the Storm
|
||||
#define CASC_GAME_WOW6 0x00020000 // World of Warcraft - Warlords of Draenor
|
||||
#define CASC_GAME_DIABLO3 0x00030000 // Diablo 3 Since PTR 2.2.0
|
||||
#define CASC_GAME_MASK 0xFFFF0000 // Mask for getting game ID
|
||||
|
||||
#define CASC_INDEX_COUNT 0x10
|
||||
|
||||
@@ -38,7 +38,7 @@ recastnavigation (Recast is state of the art navigation mesh construction toolse
|
||||
|
||||
CascLib (An open-source implementation of library for reading CASC storage from Blizzard games since 2014)
|
||||
https://github.com/ladislav-zezula/CascLib
|
||||
Version: 4235e5f2033e2de709c83034503d49e532d03630
|
||||
Version: d1d617d4feecd39bae049e19b0e217a1a84bedc6
|
||||
|
||||
zmqpp (C++ binding for 0mq/zmq is a 'high-level' library that hides most of the c-style interface core 0mq provides.)
|
||||
https://github.com/zeromq/zmqpp
|
||||
|
||||
Reference in New Issue
Block a user