Merge branch 'develop' into refactor-scripts-stuff
This commit is contained in:
commit
03523cf100
@ -3,7 +3,6 @@
|
|||||||
![stars](https://img.shields.io/github/stars/IW4x/iw4x-client.svg)
|
![stars](https://img.shields.io/github/stars/IW4x/iw4x-client.svg)
|
||||||
![issues](https://img.shields.io/github/issues/IW4x/iw4x-client.svg)
|
![issues](https://img.shields.io/github/issues/IW4x/iw4x-client.svg)
|
||||||
[![build](https://github.com/XLabsProject/iw4x-client/workflows/Build/badge.svg)](https://github.com/XLabsProject/iw4x-client/actions)
|
[![build](https://github.com/XLabsProject/iw4x-client/workflows/Build/badge.svg)](https://github.com/XLabsProject/iw4x-client/actions)
|
||||||
[![build status](https://ci.appveyor.com/api/projects/status/rvljq0ooxen0oexm/branch/develop?svg=true)](https://ci.appveyor.com/project/iw4x/iw4x-client/branch/develop)
|
|
||||||
[![discord](https://img.shields.io/endpoint?url=https://momo5502.com/iw4x/members-badge.php)](https://discord.gg/sKeVmR3)
|
[![discord](https://img.shields.io/endpoint?url=https://momo5502.com/iw4x/members-badge.php)](https://discord.gg/sKeVmR3)
|
||||||
[![patreon](https://img.shields.io/badge/patreon-support-blue.svg?logo=patreon)](https://www.patreon.com/xlabsproject)
|
[![patreon](https://img.shields.io/badge/patreon-support-blue.svg?logo=patreon)](https://www.patreon.com/xlabsproject)
|
||||||
|
|
||||||
|
34
appveyor.yml
34
appveyor.yml
@ -1,34 +0,0 @@
|
|||||||
# AppVeyor CI configuration
|
|
||||||
|
|
||||||
version: "#{build} ({branch})"
|
|
||||||
|
|
||||||
environment:
|
|
||||||
matrix:
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
|
|
||||||
PREMAKE_ACTION: vs2022
|
|
||||||
|
|
||||||
configuration:
|
|
||||||
- Debug
|
|
||||||
- Release
|
|
||||||
|
|
||||||
platform: Win32
|
|
||||||
|
|
||||||
install:
|
|
||||||
- ps: |
|
|
||||||
Write-Host "Updating version information..." -ForegroundColor Cyan
|
|
||||||
|
|
||||||
Update-AppveyorBuild -Version $(& tools/premake5.exe version | select -Last 1)
|
|
||||||
- git submodule update --init --recursive
|
|
||||||
- ps: |
|
|
||||||
Write-Host "Generating project files with premake..." -ForegroundColor Cyan
|
|
||||||
& "./tools/premake5.exe" $env:PREMAKE_ACTION
|
|
||||||
Write-Host "Generated" -ForegroundColor Green
|
|
||||||
|
|
||||||
build:
|
|
||||||
project: build/iw4x.sln
|
|
||||||
parallel: true
|
|
||||||
verbosity: minimal
|
|
||||||
|
|
||||||
artifacts:
|
|
||||||
- path: build/bin/**/*.dll
|
|
||||||
- path: build/bin/**/*.pdb
|
|
@ -199,7 +199,7 @@ namespace Assets
|
|||||||
replacementFound = true;
|
replacementFound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, false, false);
|
}, false);
|
||||||
|
|
||||||
if (!replacementFound)
|
if (!replacementFound)
|
||||||
{
|
{
|
||||||
@ -236,7 +236,7 @@ namespace Assets
|
|||||||
replacementFound = true;
|
replacementFound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, false, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!replacementFound && asset->techniqueSet)
|
if (!replacementFound && asset->techniqueSet)
|
||||||
@ -250,28 +250,31 @@ namespace Assets
|
|||||||
if (iw4TechSet)
|
if (iw4TechSet)
|
||||||
{
|
{
|
||||||
Game::DB_EnumXAssetEntries(Game::XAssetType::ASSET_TYPE_MATERIAL, [asset, iw4TechSet](Game::XAssetEntry* entry)
|
Game::DB_EnumXAssetEntries(Game::XAssetType::ASSET_TYPE_MATERIAL, [asset, iw4TechSet](Game::XAssetEntry* entry)
|
||||||
|
{
|
||||||
|
if (!replacementFound)
|
||||||
{
|
{
|
||||||
if (!replacementFound)
|
Game::XAssetHeader header = entry->asset.header;
|
||||||
|
|
||||||
|
if (header.material->techniqueSet == iw4TechSet->asset.header.techniqueSet)
|
||||||
{
|
{
|
||||||
Game::XAssetHeader header = entry->asset.header;
|
Components::Logger::Print("Material %s with techset %s has been mapped to %s (last chance!), taking the sort key of material %s\n",
|
||||||
|
asset->info.name, asset->techniqueSet->name,
|
||||||
|
header.material->techniqueSet->name, header.material->info.name);
|
||||||
|
|
||||||
if (header.material->techniqueSet == iw4TechSet->asset.header.techniqueSet)
|
asset->info.sortKey = header.material->info.sortKey;
|
||||||
{
|
asset->techniqueSet = iw4TechSet->asset.header.techniqueSet;
|
||||||
Components::Logger::Print("Material %s with techset %s has been mapped to %s (last chance!), taking the sort key of material %s\n", asset->info.name, asset->techniqueSet->name, header.material->techniqueSet->name, header.material->info.name);
|
|
||||||
asset->info.sortKey = header.material->info.sortKey;
|
|
||||||
asset->techniqueSet = iw4TechSet->asset.header.techniqueSet;
|
|
||||||
|
|
||||||
// this is terrible!
|
// this is terrible!
|
||||||
asset->stateBitsCount = header.material->stateBitsCount;
|
asset->stateBitsCount = header.material->stateBitsCount;
|
||||||
asset->stateBitsTable = header.material->stateBitsTable;
|
asset->stateBitsTable = header.material->stateBitsTable;
|
||||||
std::memcpy(asset->stateBitsEntry, header.material->stateBitsEntry, 48);
|
std::memcpy(asset->stateBitsEntry, header.material->stateBitsEntry, 48);
|
||||||
asset->constantCount = header.material->constantCount;
|
asset->constantCount = header.material->constantCount;
|
||||||
asset->constantTable = header.material->constantTable;
|
asset->constantTable = header.material->constantTable;
|
||||||
|
|
||||||
replacementFound = true;
|
replacementFound = true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, false, false);
|
}
|
||||||
|
}, false);
|
||||||
|
|
||||||
if (!replacementFound)
|
if (!replacementFound)
|
||||||
{
|
{
|
||||||
|
@ -981,7 +981,7 @@ namespace Components
|
|||||||
replacementFound = true;
|
replacementFound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, false, false);
|
}, false);
|
||||||
|
|
||||||
if (replacementFound) return ret;
|
if (replacementFound) return ret;
|
||||||
return "";
|
return "";
|
||||||
|
@ -349,6 +349,9 @@ namespace Game
|
|||||||
Sys_ListFiles_t Sys_ListFiles = Sys_ListFiles_t(0x45A660);
|
Sys_ListFiles_t Sys_ListFiles = Sys_ListFiles_t(0x45A660);
|
||||||
Sys_Milliseconds_t Sys_Milliseconds = Sys_Milliseconds_t(0x42A660);
|
Sys_Milliseconds_t Sys_Milliseconds = Sys_Milliseconds_t(0x42A660);
|
||||||
Sys_Error_t Sys_Error = Sys_Error_t(0x43D570);
|
Sys_Error_t Sys_Error = Sys_Error_t(0x43D570);
|
||||||
|
Sys_LockWrite_t Sys_LockWrite = Sys_LockWrite_t(0x435880);
|
||||||
|
Sys_TempPriorityAtLeastNormalBegin_t Sys_TempPriorityAtLeastNormalBegin = Sys_TempPriorityAtLeastNormalBegin_t(0x478680);
|
||||||
|
Sys_TempPriorityEnd_t Sys_TempPriorityEnd = Sys_TempPriorityEnd_t(0x4DCF00);
|
||||||
|
|
||||||
TeleportPlayer_t TeleportPlayer = TeleportPlayer_t(0x496850);
|
TeleportPlayer_t TeleportPlayer = TeleportPlayer_t(0x496850);
|
||||||
|
|
||||||
@ -516,8 +519,22 @@ namespace Game
|
|||||||
|
|
||||||
GraphFloat* aaInputGraph = reinterpret_cast<GraphFloat*>(0x7A2FC0);
|
GraphFloat* aaInputGraph = reinterpret_cast<GraphFloat*>(0x7A2FC0);
|
||||||
|
|
||||||
|
FastCriticalSection* db_hashCritSect = reinterpret_cast<FastCriticalSection*>(0x16B8A54);
|
||||||
|
|
||||||
vec3_t* CorrectSolidDeltas = reinterpret_cast<vec3_t*>(0x739BB8); // Count 26
|
vec3_t* CorrectSolidDeltas = reinterpret_cast<vec3_t*>(0x739BB8); // Count 26
|
||||||
|
|
||||||
|
void Sys_LockRead(FastCriticalSection* critSect)
|
||||||
|
{
|
||||||
|
InterlockedIncrement(&critSect->readCount);
|
||||||
|
while (critSect->writeCount) std::this_thread::sleep_for(1ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sys_UnlockRead(FastCriticalSection* critSect)
|
||||||
|
{
|
||||||
|
assert(critSect->readCount > 0);
|
||||||
|
InterlockedDecrement(&critSect->readCount);
|
||||||
|
}
|
||||||
|
|
||||||
XAssetHeader ReallocateAssetPool(XAssetType type, unsigned int newSize)
|
XAssetHeader ReallocateAssetPool(XAssetType type, unsigned int newSize)
|
||||||
{
|
{
|
||||||
int elSize = DB_GetXAssetSizeHandlers[type]();
|
int elSize = DB_GetXAssetSizeHandlers[type]();
|
||||||
@ -632,12 +649,9 @@ namespace Game
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DB_EnumXAssetEntries(XAssetType type, std::function<void(XAssetEntry*)> callback, bool overrides, bool lock)
|
void DB_EnumXAssetEntries(XAssetType type, std::function<void(XAssetEntry*)> callback, bool overrides)
|
||||||
{
|
{
|
||||||
volatile long* lockVar = reinterpret_cast<volatile long*>(0x16B8A54);
|
Sys_LockRead(db_hashCritSect);
|
||||||
if (lock) InterlockedIncrement(lockVar);
|
|
||||||
|
|
||||||
while (lock && *reinterpret_cast<volatile long*>(0x16B8A58)) std::this_thread::sleep_for(1ms);
|
|
||||||
|
|
||||||
const auto pool = Components::Maps::GetAssetEntryPool();
|
const auto pool = Components::Maps::GetAssetEntryPool();
|
||||||
for(auto hash = 0; hash < 37000; hash++)
|
for(auto hash = 0; hash < 37000; hash++)
|
||||||
@ -666,7 +680,7 @@ namespace Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lock) InterlockedDecrement(lockVar);
|
Sys_UnlockRead(db_hashCritSect);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this cant be MessageBox because windows.h has a define that converts it to MessageBoxW. which is just stupid
|
// this cant be MessageBox because windows.h has a define that converts it to MessageBoxW. which is just stupid
|
||||||
|
@ -834,6 +834,15 @@ namespace Game
|
|||||||
typedef int(__cdecl * Sys_Milliseconds_t)();
|
typedef int(__cdecl * Sys_Milliseconds_t)();
|
||||||
extern Sys_Milliseconds_t Sys_Milliseconds;
|
extern Sys_Milliseconds_t Sys_Milliseconds;
|
||||||
|
|
||||||
|
typedef void(__cdecl * Sys_LockWrite_t)(FastCriticalSection* critSect);
|
||||||
|
extern Sys_LockWrite_t Sys_LockWrite;
|
||||||
|
|
||||||
|
typedef void(__cdecl * Sys_TempPriorityAtLeastNormalBegin_t)(TempPriority*);
|
||||||
|
extern Sys_TempPriorityAtLeastNormalBegin_t Sys_TempPriorityAtLeastNormalBegin;
|
||||||
|
|
||||||
|
typedef void(__cdecl * Sys_TempPriorityEnd_t)(TempPriority*);
|
||||||
|
extern Sys_TempPriorityEnd_t Sys_TempPriorityEnd;
|
||||||
|
|
||||||
typedef void(__cdecl * TeleportPlayer_t)(gentity_t* entity, float* pos, float* orientation);
|
typedef void(__cdecl * TeleportPlayer_t)(gentity_t* entity, float* pos, float* orientation);
|
||||||
extern TeleportPlayer_t TeleportPlayer;
|
extern TeleportPlayer_t TeleportPlayer;
|
||||||
|
|
||||||
@ -1064,6 +1073,11 @@ namespace Game
|
|||||||
|
|
||||||
extern vec3_t* CorrectSolidDeltas;
|
extern vec3_t* CorrectSolidDeltas;
|
||||||
|
|
||||||
|
extern FastCriticalSection* db_hashCritSect;
|
||||||
|
|
||||||
|
void Sys_LockRead(FastCriticalSection* critSect);
|
||||||
|
void Sys_UnlockRead(FastCriticalSection* critSect);
|
||||||
|
|
||||||
XAssetHeader ReallocateAssetPool(XAssetType type, unsigned int newSize);
|
XAssetHeader ReallocateAssetPool(XAssetType type, unsigned int newSize);
|
||||||
void Menu_FreeItemMemory(Game::itemDef_s* item);
|
void Menu_FreeItemMemory(Game::itemDef_s* item);
|
||||||
void Menu_SetNextCursorItem(Game::UiContext* ctx, Game::menuDef_t* currentMenu, int unk = 1);
|
void Menu_SetNextCursorItem(Game::UiContext* ctx, Game::menuDef_t* currentMenu, int unk = 1);
|
||||||
@ -1077,7 +1091,7 @@ namespace Game
|
|||||||
XAssetType DB_GetXAssetNameType(const char* name);
|
XAssetType DB_GetXAssetNameType(const char* name);
|
||||||
int DB_GetZoneIndex(const std::string& name);
|
int DB_GetZoneIndex(const std::string& name);
|
||||||
bool DB_IsZoneLoaded(const char* zone);
|
bool DB_IsZoneLoaded(const char* zone);
|
||||||
void DB_EnumXAssetEntries(XAssetType type, std::function<void(XAssetEntry*)> callback, bool overrides, bool lock);
|
void DB_EnumXAssetEntries(XAssetType type, std::function<void(XAssetEntry*)> callback, bool overrides);
|
||||||
XAssetHeader DB_FindXAssetDefaultHeaderInternal(XAssetType type);
|
XAssetHeader DB_FindXAssetDefaultHeaderInternal(XAssetType type);
|
||||||
XAssetEntry* DB_FindXAssetEntry(XAssetType type, const char* name);
|
XAssetEntry* DB_FindXAssetEntry(XAssetType type, const char* name);
|
||||||
|
|
||||||
|
@ -7230,6 +7230,19 @@ namespace Game
|
|||||||
PM_EFF_STANCE_COUNT = 4
|
PM_EFF_STANCE_COUNT = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TempPriority
|
||||||
|
{
|
||||||
|
void* threadHandle;
|
||||||
|
int oldPriority;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FastCriticalSection
|
||||||
|
{
|
||||||
|
volatile long readCount;
|
||||||
|
volatile long writeCount;
|
||||||
|
TempPriority tempPriority;
|
||||||
|
};
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#ifndef IDA
|
#ifndef IDA
|
||||||
|
Loading…
Reference in New Issue
Block a user