Merge branch 'develop' into refactor-scripts-stuff

This commit is contained in:
Edo 2022-03-03 15:47:08 +00:00 committed by GitHub
commit 03523cf100
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 70 additions and 61 deletions

View File

@ -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)

View File

@ -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

View File

@ -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)
@ -257,7 +257,10 @@ namespace Assets
if (header.material->techniqueSet == iw4TechSet->asset.header.techniqueSet) if (header.material->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); 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->info.sortKey = header.material->info.sortKey;
asset->techniqueSet = iw4TechSet->asset.header.techniqueSet; asset->techniqueSet = iw4TechSet->asset.header.techniqueSet;
@ -271,7 +274,7 @@ namespace Assets
replacementFound = true; replacementFound = true;
} }
} }
}, false, false); }, false);
if (!replacementFound) if (!replacementFound)
{ {

View File

@ -981,7 +981,7 @@ namespace Components
replacementFound = true; replacementFound = true;
} }
} }
}, false, false); }, false);
if (replacementFound) return ret; if (replacementFound) return ret;
return ""; return "";

View File

@ -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

View File

@ -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);

View File

@ -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