diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/PS3/XML/xmlFilesCallback.h | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/PS3/XML/xmlFilesCallback.h')
| -rw-r--r-- | Minecraft.Client/PS3/XML/xmlFilesCallback.h | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/Minecraft.Client/PS3/XML/xmlFilesCallback.h b/Minecraft.Client/PS3/XML/xmlFilesCallback.h new file mode 100644 index 00000000..b6c1bcf0 --- /dev/null +++ b/Minecraft.Client/PS3/XML/xmlFilesCallback.h @@ -0,0 +1,232 @@ + +#pragma once +#ifndef XMLMOJANGCALLBACK_H +#define XMLMOJANGCALLBACK_H +// xml reading + +using namespace ATG; + +class xmlMojangCallback : public ATG::ISAXCallback +{ +public: + virtual HRESULT StartDocument() { return S_OK; }; + virtual HRESULT EndDocument() { return S_OK; }; + + virtual HRESULT ElementBegin( CONST WCHAR* strName, UINT NameLen, CONST XMLAttribute *pAttributes, UINT NumAttributes ) + { + WCHAR wTemp[35] = L""; + WCHAR wAttName[32] = L""; + WCHAR wNameXUID[32] = L""; + WCHAR wNameSkin[32] = L""; + WCHAR wNameCloak[32] = L""; + PlayerUID xuid=0LL; + + + if (NameLen >31) + return S_FALSE; + else + wcsncpy( wAttName, strName, NameLen); + + if ( _wcsicmp(wAttName,L"root") == 0) + { + return S_OK; + } + else if ( _wcsicmp(wAttName,L"data") == 0) + { + for(UINT i = 0; i < NumAttributes; i++) + { + wcsncpy_s( wAttName, pAttributes[i].strName, pAttributes[i].NameLen); + if (_wcsicmp(wAttName,L"name")==0) + { + if (pAttributes[i].ValueLen <= 32) + wcsncpy_s( wNameXUID, pAttributes[i].strValue, pAttributes[i].ValueLen); + } + else if (_wcsicmp(wAttName,L"xuid")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + ZeroMemory(wTemp,sizeof(WCHAR)*35); + wcsncpy_s( wTemp, pAttributes[i].strValue, pAttributes[i].ValueLen); + xuid=_wcstoui64(wTemp,NULL,10); + } + } + else if (_wcsicmp(wAttName,L"cape")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + wcsncpy_s( wNameCloak, pAttributes[i].strValue, pAttributes[i].ValueLen); + } + } + else if (_wcsicmp(wAttName,L"skin")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + wcsncpy_s( wNameSkin, pAttributes[i].strValue, pAttributes[i].ValueLen); + } + } + + } + + // if the xuid hasn't been defined, then we can't use the data + if(xuid!=0LL) + { + return CConsoleMinecraftApp::RegisterMojangData(wNameXUID , xuid, wNameSkin, wNameCloak ); + } + else return S_FALSE; + } + else + { + return S_FALSE; + } + }; + + virtual HRESULT ElementContent( CONST WCHAR *strData, UINT DataLen, BOOL More ) { return S_OK; }; + + virtual HRESULT ElementEnd( CONST WCHAR *strName, UINT NameLen ){ return S_OK; }; + + virtual HRESULT CDATABegin( ) { return S_OK; }; + + virtual HRESULT CDATAData( CONST WCHAR *strCDATA, UINT CDATALen, BOOL bMore ){ return S_OK; }; + + virtual HRESULT CDATAEnd( ){ return S_OK; }; + + virtual VOID Error( HRESULT hError, CONST CHAR *strMessage ) { app.DebugPrintf("Error when Parsing xuids.XML\n"); }; + +}; + +class xmlDLCInfoCallback : public ATG::ISAXCallback +{ +public: + virtual HRESULT StartDocument() { return S_OK; }; + virtual HRESULT EndDocument() { return S_OK; }; + + virtual HRESULT ElementBegin( CONST WCHAR* strName, UINT NameLen, CONST XMLAttribute *pAttributes, UINT NumAttributes ) + { + WCHAR wTemp[35] = L""; + WCHAR wAttName[32] = L""; + WCHAR wNameBanner[32] = L""; + WCHAR wType[32] = L""; + WCHAR wFirstSkin[32] = L""; + WCHAR wDataFile[32] = L""; + ULONGLONG ullFull=0ll; + ULONGLONG ullTrial=0ll; + int iGender=0; + int iConfig=0; + + if (NameLen >31) + return S_FALSE; + else + wcsncpy_s( wAttName, strName, NameLen); + + if ( _wcsicmp(wAttName,L"root") == 0) + { + return S_OK; + } + else if ( _wcsicmp(wAttName,L"data") == 0) + { + for(UINT i = 0; i < NumAttributes; i++) + { + wcsncpy_s( wAttName, pAttributes[i].strName, pAttributes[i].NameLen); + if (_wcsicmp(wAttName,L"Banner")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + wcsncpy_s( wNameBanner, pAttributes[i].strValue, pAttributes[i].ValueLen); + } + } + else if (_wcsicmp(wAttName,L"Full")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + ZeroMemory(wTemp,sizeof(WCHAR)*35); + wcsncpy_s( wTemp, pAttributes[i].strValue, pAttributes[i].ValueLen); + ullFull=_wcstoui64(wTemp,NULL,16); + } + } + else if (_wcsicmp(wAttName,L"Trial")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + ZeroMemory(wTemp,sizeof(WCHAR)*35); + wcsncpy_s( wTemp, pAttributes[i].strValue, pAttributes[i].ValueLen); + ullTrial=_wcstoui64(wTemp,NULL,16); + } + } + else if (_wcsicmp(wAttName,L"FirstSkin")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + wcsncpy_s( wFirstSkin, pAttributes[i].strValue, pAttributes[i].ValueLen); + } + } + else if (_wcsicmp(wAttName,L"DataFile")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + wcsncpy_s( wDataFile, pAttributes[i].strValue, pAttributes[i].ValueLen); + } + } + else if (_wcsicmp(wAttName,L"Type")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + wcsncpy_s( wType, pAttributes[i].strValue, pAttributes[i].ValueLen); + } + } + else if (_wcsicmp(wAttName,L"Gender")==0) + { + if (_wcsicmp(wAttName,L"Male")==0) + { + iGender=1; + } + else if (_wcsicmp(wAttName,L"Female")==0) + { + iGender=2; + } + else + { + iGender=0; + } + } + else if(_wcsicmp(wAttName,L"Config")==0) + { + if (pAttributes[i].ValueLen <= 32) + { + iConfig=_wtoi(wTemp); + } + } + } + + // if the xuid hasn't been defined, then we can't use the data + if(ullFull!=0LL) + { +#ifdef _DEBUG + wprintf(L"Type - %ls, Name - %ls, ",wType, wNameBanner); +#endif + app.DebugPrintf("Full = %lld, Trial %lld\n",ullFull,ullTrial); + + return CConsoleMinecraftApp::RegisterDLCData(wType, wNameBanner , iGender, ullFull, ullTrial, wFirstSkin, iConfig, wDataFile ); + } + else return S_FALSE; + } + else + { + return S_FALSE; + } + }; + + virtual HRESULT ElementContent( CONST WCHAR *strData, UINT DataLen, BOOL More ) { return S_OK; }; + + virtual HRESULT ElementEnd( CONST WCHAR *strName, UINT NameLen ){ return S_OK; }; + + virtual HRESULT CDATABegin( ) { return S_OK; }; + + virtual HRESULT CDATAData( CONST WCHAR *strCDATA, UINT CDATALen, BOOL bMore ){ return S_OK; }; + + virtual HRESULT CDATAEnd( ){ return S_OK; }; + + virtual VOID Error( HRESULT hError, CONST CHAR *strMessage ) { app.DebugPrintf("Error when Parsing DLC.XML\n"); }; + +}; + +#endif
\ No newline at end of file |
