mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
More code cleanup
- Set character set to multi-byte (this is because the game is also build with it). - Utility function 'FileExists' now takes a raw string pointer, this avoids having to construct a fs::path each time its getting called (which is quite a lot!). - Performed overall cleanup to code containing logic to override load paths. Mostly removing unnecessary copy constructions.
This commit is contained in:
parent
22f68ff22a
commit
f6f3c7f9a2
@ -81,9 +81,6 @@ macro( add_module MODULE_TYPE MODULE_NAME REUSE_PCH FOLDER_NAME WARNINGS_AS_ERRO
|
|||||||
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/GS->
|
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/GS->
|
||||||
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Gy>
|
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Gy>
|
||||||
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/fp:fast>
|
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/fp:fast>
|
||||||
|
|
||||||
$<$<CXX_COMPILER_ID:MSVC>:/D_UNICODE>
|
|
||||||
$<$<CXX_COMPILER_ID:MSVC>:/DUNICODE>
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@ -273,9 +273,7 @@ void QuerySystemInfo()
|
|||||||
|
|
||||||
if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) // Only log the primary device.
|
if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) // Only log the primary device.
|
||||||
{
|
{
|
||||||
char szDeviceName[128];
|
DevMsg(eDLL_T::NONE, "%-25s: '%s'\n", "GPU model identifier", dd.DeviceString);
|
||||||
wcstombs(szDeviceName, dd.DeviceString, sizeof(szDeviceName));
|
|
||||||
DevMsg(eDLL_T::NONE, "%-25s: '%s'\n", "GPU model identifier", szDeviceName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // !DEDICATED
|
#endif // !DEDICATED
|
||||||
|
@ -446,7 +446,7 @@ void Mod_PreloadLevelPaks(const char* pszLevelName)
|
|||||||
if (nPakId == INVALID_PAK_HANDLE)
|
if (nPakId == INVALID_PAK_HANDLE)
|
||||||
Error(eDLL_T::ENGINE, NO_ERROR, "%s: unable to load pak '%s' results '%d'\n", __FUNCTION__, szPathBuffer, nPakId);
|
Error(eDLL_T::ENGINE, NO_ERROR, "%s: unable to load pak '%s' results '%d'\n", __FUNCTION__, szPathBuffer, nPakId);
|
||||||
else
|
else
|
||||||
g_vLoadedPakHandle.push_back(nPakId);
|
g_vLoadedPakHandle.AddToTail(nPakId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -462,7 +462,7 @@ void Mod_UnloadPakFile(void)
|
|||||||
g_pakLoadApi->UnloadPak(it);
|
g_pakLoadApi->UnloadPak(it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_vLoadedPakHandle.clear();
|
g_vLoadedPakHandle.Purge();
|
||||||
g_vBadMDLHandles.clear();
|
g_vBadMDLHandles.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,29 +38,23 @@ bool CBaseFileSystem::VCheckDisk(const char* pszFilePath)
|
|||||||
{
|
{
|
||||||
// Only load material files from the disk if the mode isn't zero,
|
// Only load material files from the disk if the mode isn't zero,
|
||||||
// use -novpk to load valve materials from the disk.
|
// use -novpk to load valve materials from the disk.
|
||||||
if (FileSystem()->CheckVPKMode(0) && strstr(pszFilePath, ".vmt"))
|
if (FileSystem()->CheckVPKMode(0) && V_strstr(pszFilePath, ".vmt"))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string svFilePath = ConvertToWinPath(pszFilePath);
|
if (V_IsAbsolutePath(pszFilePath))
|
||||||
if (svFilePath.find("\\*\\") != string::npos)
|
|
||||||
{
|
|
||||||
// Erase '//*/'.
|
|
||||||
svFilePath.erase(0, 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
fs::path filePath(svFilePath);
|
|
||||||
if (filePath.is_absolute())
|
|
||||||
{
|
{
|
||||||
// Skip absolute file paths.
|
// Skip absolute file paths.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: obtain 'mod' SearchPath's instead.
|
CUtlString filePath;
|
||||||
svFilePath.insert(0, "platform\\");
|
filePath.Format("platform/%s", pszFilePath);
|
||||||
|
filePath.FixSlashes();
|
||||||
|
filePath = filePath.Replace("\\*\\", "");
|
||||||
|
|
||||||
if (::FileExists(svFilePath) /*|| ::FileExists(pszFilePath)*/)
|
if (::FileExists(filePath.Get()))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Internals
|
// Internals
|
||||||
BOOL IsBadReadPtrV2(void* ptr);
|
BOOL IsBadReadPtrV2(void* ptr);
|
||||||
BOOL FileExists(const fs::path& svFilePath);
|
BOOL FileExists(LPCTSTR szPath);
|
||||||
BOOL FileEmpty(ifstream& pFile);
|
BOOL FileEmpty(ifstream& pFile);
|
||||||
MODULEINFO GetModuleInfo(const char* szModule);
|
MODULEINFO GetModuleInfo(const char* szModule);
|
||||||
|
|
||||||
|
@ -10,7 +10,11 @@
|
|||||||
#include "rtech/rtech_game.h"
|
#include "rtech/rtech_game.h"
|
||||||
#include "rtech/rtech_utils.h"
|
#include "rtech/rtech_utils.h"
|
||||||
|
|
||||||
vector<RPakHandle_t> g_vLoadedPakHandle;
|
// Pak handles that have been loaded with the level
|
||||||
|
// from within the level settings KV (located in
|
||||||
|
// scripts/levels/settings/*.kv). On level unload,
|
||||||
|
// each pak listed in this vector gets unloaded.
|
||||||
|
CUtlVector<RPakHandle_t> g_vLoadedPakHandle;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: load user-requested pak files on-demand
|
// Purpose: load user-requested pak files on-demand
|
||||||
@ -23,10 +27,14 @@ vector<RPakHandle_t> g_vLoadedPakHandle;
|
|||||||
RPakHandle_t CPakFile::LoadAsync(const char* szPakFileName, CAlignedMemAlloc* pMalloc, int nIdx, bool bUnk)
|
RPakHandle_t CPakFile::LoadAsync(const char* szPakFileName, CAlignedMemAlloc* pMalloc, int nIdx, bool bUnk)
|
||||||
{
|
{
|
||||||
RPakHandle_t pakHandle = INVALID_PAK_HANDLE;
|
RPakHandle_t pakHandle = INVALID_PAK_HANDLE;
|
||||||
string svPakFileModPath = "paks\\Win32\\" + string(szPakFileName);
|
|
||||||
string svPakFilePathBase = "paks\\Win64\\" + string(szPakFileName);
|
|
||||||
|
|
||||||
if (FileExists(svPakFileModPath) || FileExists(svPakFilePathBase))
|
CUtlString pakBasePath;
|
||||||
|
CUtlString pakOverridePath;
|
||||||
|
|
||||||
|
pakBasePath.Format(PLATFORM_PAK_PATH "%s", szPakFileName);
|
||||||
|
pakOverridePath.Format(PLATFORM_PAK_OVERRIDE_PATH "%s", szPakFileName);
|
||||||
|
|
||||||
|
if (FileExists(pakOverridePath.Get()) || FileExists(pakBasePath.Get()))
|
||||||
{
|
{
|
||||||
DevMsg(eDLL_T::RTECH, "Loading pak file: '%s'\n", szPakFileName);
|
DevMsg(eDLL_T::RTECH, "Loading pak file: '%s'\n", szPakFileName);
|
||||||
pakHandle = CPakFile_LoadAsync(szPakFileName, pMalloc, nIdx, bUnk);
|
pakHandle = CPakFile_LoadAsync(szPakFileName, pMalloc, nIdx, bUnk);
|
||||||
|
@ -47,7 +47,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern CPakFile* g_pakLoadApi;
|
extern CPakFile* g_pakLoadApi;
|
||||||
extern vector<RPakHandle_t> g_vLoadedPakHandle;
|
extern CUtlVector<RPakHandle_t> g_vLoadedPakHandle;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class V_RTechGame : public IDetour
|
class V_RTechGame : public IDetour
|
||||||
|
@ -498,28 +498,27 @@ void** RTech::LoadShaderSet(void** VTablePtr)
|
|||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
int32_t RTech::OpenFile(const CHAR* szFilePath, void* unused, LONGLONG* fileSizeOut)
|
int32_t RTech::OpenFile(const CHAR* szFilePath, void* unused, LONGLONG* fileSizeOut)
|
||||||
{
|
{
|
||||||
string svModFile = szFilePath;
|
const CHAR* szFileToLoad = szFilePath;
|
||||||
string svBaseFile = szFilePath;
|
CUtlString pakBasePath(szFilePath);
|
||||||
const string svModDir = "paks\\Win32\\";
|
|
||||||
const string svBaseDir = "paks\\Win64\\";
|
|
||||||
|
|
||||||
if (strstr(ConvertToWinPath(szFilePath).c_str(), svBaseDir.c_str()))
|
if (pakBasePath.Find(PLATFORM_PAK_PATH) != -1)
|
||||||
{
|
{
|
||||||
svBaseFile.erase(0, 11); // Erase 'base_dir'.
|
pakBasePath = pakBasePath.Replace(PLATFORM_PAK_PATH, PLATFORM_PAK_OVERRIDE_PATH);
|
||||||
svModFile = svModDir + svBaseFile; // Prepend 'mod_dir'.
|
|
||||||
|
|
||||||
if (!FileExists(svModFile))
|
if (FileExists(pakBasePath.Get()))
|
||||||
{
|
{
|
||||||
svModFile = szFilePath;
|
szFileToLoad = pakBasePath.Get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const HANDLE hFile = CreateFileA(svModFile.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_SUPPORTS_GHOSTING, 0);
|
const HANDLE hFile = CreateFileA(szFileToLoad, GENERIC_READ,
|
||||||
|
FILE_SHARE_READ | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_SUPPORTS_GHOSTING, 0);
|
||||||
|
|
||||||
if (hFile == INVALID_HANDLE_VALUE)
|
if (hFile == INVALID_HANDLE_VALUE)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (rtech_debug->GetBool())
|
if (rtech_debug->GetBool())
|
||||||
DevMsg(eDLL_T::RTECH, "Opened file: '%s'\n", svModFile.c_str());
|
DevMsg(eDLL_T::RTECH, "Opened file: '%s'\n", szFileToLoad);
|
||||||
|
|
||||||
if (fileSizeOut)
|
if (fileSizeOut)
|
||||||
{
|
{
|
||||||
|
@ -181,9 +181,7 @@ void CCrashHandler::FormatSystemInfo()
|
|||||||
|
|
||||||
if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) // The primary device is the only relevant device.
|
if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) // The primary device is the only relevant device.
|
||||||
{
|
{
|
||||||
char szDeviceName[128];
|
m_svBuffer.append(Format("\tgpu_model = \"%s\"\n", dd.DeviceString));
|
||||||
wcstombs(szDeviceName, dd.DeviceString, sizeof(szDeviceName));
|
|
||||||
m_svBuffer.append(Format("\tgpu_model = \"%s\"\n", szDeviceName));
|
|
||||||
m_svBuffer.append(Format("\tgpu_flags = 0x%08X // primary device\n", dd.StateFlags));
|
m_svBuffer.append(Format("\tgpu_flags = 0x%08X // primary device\n", dd.StateFlags));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,12 @@
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// For checking if a specific file exists.
|
// For checking if a specific file exists.
|
||||||
BOOL FileExists(const fs::path& svFilePath)
|
BOOL FileExists(LPCTSTR szPath)
|
||||||
{
|
{
|
||||||
return fs::exists(svFilePath);
|
DWORD dwAttrib = GetFileAttributes(szPath);
|
||||||
|
|
||||||
|
return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
|
||||||
|
!(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -108,11 +108,8 @@ void CNetAdr::ToAdrinfo(addrinfo* pHint) const
|
|||||||
|
|
||||||
if (results != 0)
|
if (results != 0)
|
||||||
{
|
{
|
||||||
WCHAR* wszError = gai_strerror(results);
|
CHAR* wszError = gai_strerror(results);
|
||||||
_bstr_t bStr(wszError);
|
Warning(eDLL_T::ENGINE, "Address info translation failed: (%s)\n", wszError);
|
||||||
const char* pszError = bStr;
|
|
||||||
|
|
||||||
Warning(eDLL_T::ENGINE, "Address info translation failed: (%s)\n", pszError);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user