diff --git a/r5dev/appframework/engine_launcher_api.h b/r5dev/appframework/engine_launcher_api.h index 1294a84c..1d072963 100644 --- a/r5dev/appframework/engine_launcher_api.h +++ b/r5dev/appframework/engine_launcher_api.h @@ -7,7 +7,7 @@ #ifndef ENGINE_LAUNCHER_APIH #define ENGINE_LAUNCHER_APIH -#include "appframework/iappsystem.h" +#include "public/appframework/IAppSystem.h" struct StartupInfo_t { diff --git a/r5dev/launcher/IApplication.cpp b/r5dev/launcher/IApplication.cpp index 7bd86a4d..8ebd2fce 100644 --- a/r5dev/launcher/IApplication.cpp +++ b/r5dev/launcher/IApplication.cpp @@ -116,6 +116,7 @@ bool CModAppSystemGroup::Create(CModAppSystemGroup* pModAppSystemGroup) return CModAppSystemGroup_Create(pModAppSystemGroup); } + //----------------------------------------------------------------------------- // Purpose: Initialize plugin system //----------------------------------------------------------------------------- diff --git a/r5dev/launcher/IApplication.h b/r5dev/launcher/IApplication.h index 09f19aee..4db6e595 100644 --- a/r5dev/launcher/IApplication.h +++ b/r5dev/launcher/IApplication.h @@ -1,10 +1,11 @@ #pragma once -#include "appframework/iappsystem.h" +#include "public/appframework/IAppSystem.h" +#include "public/appframework/IAppSystemGroup.h" //------------------------------------------------------------------------- // //------------------------------------------------------------------------- -class CModAppSystemGroup +class CModAppSystemGroup : public CAppSystemGroup { public: static int Main(CModAppSystemGroup* pModAppSystemGroup); @@ -19,8 +20,8 @@ public: { m_bServerOnly = true; } + private: - char pad[0xA8]; bool m_bServerOnly; }; diff --git a/r5dev/appframework/iappsystem.h b/r5dev/public/appframework/IAppSystem.h similarity index 100% rename from r5dev/appframework/iappsystem.h rename to r5dev/public/appframework/IAppSystem.h diff --git a/r5dev/public/appframework/IAppSystemGroup.cpp b/r5dev/public/appframework/IAppSystemGroup.cpp new file mode 100644 index 00000000..06386263 --- /dev/null +++ b/r5dev/public/appframework/IAppSystemGroup.cpp @@ -0,0 +1,27 @@ +//===== Copyright � 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: Defines a group of app systems that all have the same lifetime +// that need to be connected/initialized, etc. in a well-defined order +// +// $Revision: $ +// $NoKeywords: $ +//===========================================================================// +#include "core/stdafx.h" +#include "IAppSystemGroup.h" + +//----------------------------------------------------------------------------- +// Purpose: Initialize plugin system +//----------------------------------------------------------------------------- +void CAppSystemGroup::Destroy(CAppSystemGroup* pModAppSystemGroup) +{ + CAppSystemGroup_Destroy(pModAppSystemGroup); +} + +void VAppSystemGroup::Attach(void) const +{ + DetourAttach(&CAppSystemGroup_Destroy, &CAppSystemGroup::Destroy); +} +void VAppSystemGroup::Detach(void) const +{ + DetourDetach(&CAppSystemGroup_Destroy, &CAppSystemGroup::Destroy); +} \ No newline at end of file diff --git a/r5dev/public/appframework/IAppSystemGroup.h b/r5dev/public/appframework/IAppSystemGroup.h new file mode 100644 index 00000000..69997bf7 --- /dev/null +++ b/r5dev/public/appframework/IAppSystemGroup.h @@ -0,0 +1,38 @@ +#ifndef APPSYSTEMGROUP_H +#define APPSYSTEMGROUP_H + +class CAppSystemGroup +{ +public: + static void Destroy(CAppSystemGroup* pAppSystemGroup); + +protected: + char pad[0xA8]; +}; + +inline CMemory p_CAppSystemGroup_Destroy; +inline auto CAppSystemGroup_Destroy = p_CAppSystemGroup_Destroy.RCast<void(*)(CAppSystemGroup* pAppSystemGroup)>(); + +/////////////////////////////////////////////////////////////////////////////// +class VAppSystemGroup : public IDetour +{ + virtual void GetAdr(void) const + { + LogFunAdr("CAppSystemGroup::Destroy", p_CAppSystemGroup_Destroy.GetPtr()); + } + virtual void GetFun(void) const + { +#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) + p_CAppSystemGroup_Destroy = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 41 54 41 55 41 56 41 57 48 83 EC 20 8B 81 ?? ?? ?? ??"); +#elif defined (GAMEDLL_S2) || defined (GAMEDLL_S3) + p_CAppSystemGroup_Destroy = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 74 24 ?? 57 48 83 EC 20 8B 81 ?? ?? ?? ?? 48 8B F9"); +#endif + CAppSystemGroup_Destroy = p_CAppSystemGroup_Destroy.RCast<void(*)(CAppSystemGroup*)>(); + } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const; + virtual void Detach(void) const; +}; + +#endif // APPSYSTEMGROUP_H diff --git a/r5dev/public/ifilesystem.h b/r5dev/public/ifilesystem.h index 483aaab8..9304cf47 100644 --- a/r5dev/public/ifilesystem.h +++ b/r5dev/public/ifilesystem.h @@ -3,8 +3,8 @@ #include <tier0/annotations.h> #include <tier0/threadtools.h> -#include <appframework/iappsystem.h> #include <public/ipackedstore.h> +#include <public/appframework/iappsystem.h> typedef void* FileHandle_t; typedef void* FileNameHandle_t; // !TODO: Check if this is 4 or 8 bytes (model_t was 4 bytes in mem). diff --git a/r5dev/vproj/clientsdk.vcxproj b/r5dev/vproj/clientsdk.vcxproj index a26a7807..da36015f 100644 --- a/r5dev/vproj/clientsdk.vcxproj +++ b/r5dev/vproj/clientsdk.vcxproj @@ -105,6 +105,7 @@ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader> </ClCompile> + <ClCompile Include="..\public\appframework\IAppSystemGroup.cpp" /> <ClCompile Include="..\public\datamap.cpp" /> <ClCompile Include="..\public\dt_recv.cpp" /> <ClCompile Include="..\public\networkvar.cpp" /> @@ -170,7 +171,6 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\appframework\engine_launcher_api.h" /> - <ClInclude Include="..\appframework\iappsystem.h" /> <ClInclude Include="..\bsplib\bsplib.h" /> <ClInclude Include="..\client\cdll_engine_int.h" /> <ClInclude Include="..\client\vengineclient_impl.h" /> @@ -290,6 +290,8 @@ <ClInclude Include="..\protoc\cl_rcon.pb.h" /> <ClInclude Include="..\protoc\sig_map.pb.h" /> <ClInclude Include="..\protoc\sv_rcon.pb.h" /> + <ClInclude Include="..\public\appframework\IAppSystem.h" /> + <ClInclude Include="..\public\appframework\IAppSystemGroup.h" /> <ClInclude Include="..\public\avi\iavi.h" /> <ClInclude Include="..\public\avi\ibik.h" /> <ClInclude Include="..\public\basehandle.h" /> diff --git a/r5dev/vproj/clientsdk.vcxproj.filters b/r5dev/vproj/clientsdk.vcxproj.filters index 1f5a818a..29176260 100644 --- a/r5dev/vproj/clientsdk.vcxproj.filters +++ b/r5dev/vproj/clientsdk.vcxproj.filters @@ -241,6 +241,9 @@ <Filter Include="sdk\public\engine"> <UniqueIdentifier>{c785a075-5583-4bb4-bdac-5f7419ee64ab}</UniqueIdentifier> </Filter> + <Filter Include="sdk\public\appframework"> + <UniqueIdentifier>{87c9d891-5df4-445a-941a-b479d8ce0436}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClCompile Include="..\client\cdll_engine_int.cpp"> @@ -675,6 +678,9 @@ <ClCompile Include="..\tier1\NetAdr.cpp"> <Filter>sdk\tier1</Filter> </ClCompile> + <ClCompile Include="..\public\appframework\IAppSystemGroup.cpp"> + <Filter>sdk\public\appframework</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\client\cdll_engine_int.h"> @@ -1220,9 +1226,6 @@ <ClInclude Include="..\common\netmessages.h"> <Filter>sdk\common</Filter> </ClInclude> - <ClInclude Include="..\appframework\iappsystem.h"> - <Filter>sdk\appframework</Filter> - </ClInclude> <ClInclude Include="..\appframework\engine_launcher_api.h"> <Filter>sdk\appframework</Filter> </ClInclude> @@ -1985,6 +1988,12 @@ <ClInclude Include="..\tier1\NetAdr.h"> <Filter>sdk\tier1</Filter> </ClInclude> + <ClInclude Include="..\public\appframework\IAppSystemGroup.h"> + <Filter>sdk\public\appframework</Filter> + </ClInclude> + <ClInclude Include="..\public\appframework\IAppSystem.h"> + <Filter>sdk\public\appframework</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <Image Include="..\shared\resource\lockedserver.png"> diff --git a/r5dev/vproj/dedicated.vcxproj b/r5dev/vproj/dedicated.vcxproj index 2670e69b..9e3a170e 100644 --- a/r5dev/vproj/dedicated.vcxproj +++ b/r5dev/vproj/dedicated.vcxproj @@ -125,7 +125,6 @@ </ItemDefinitionGroup> <ItemGroup> <ClInclude Include="..\appframework\engine_launcher_api.h" /> - <ClInclude Include="..\appframework\iappsystem.h" /> <ClInclude Include="..\bsplib\bsplib.h" /> <ClInclude Include="..\client\cdll_engine_int.h" /> <ClInclude Include="..\common\igameserverdata.h" /> @@ -237,6 +236,8 @@ <ClInclude Include="..\protoc\cl_rcon.pb.h" /> <ClInclude Include="..\protoc\sig_map.pb.h" /> <ClInclude Include="..\protoc\sv_rcon.pb.h" /> + <ClInclude Include="..\public\appframework\IAppSystem.h" /> + <ClInclude Include="..\public\appframework\IAppSystemGroup.h" /> <ClInclude Include="..\public\basehandle.h" /> <ClInclude Include="..\public\bspflags.h" /> <ClInclude Include="..\public\cmodel.h" /> @@ -609,6 +610,7 @@ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader> </ClCompile> + <ClCompile Include="..\public\appframework\IAppSystemGroup.cpp" /> <ClCompile Include="..\public\datamap.cpp" /> <ClCompile Include="..\public\networkvar.cpp" /> <ClCompile Include="..\public\utility\binstream.cpp" /> diff --git a/r5dev/vproj/dedicated.vcxproj.filters b/r5dev/vproj/dedicated.vcxproj.filters index 35bc8ef8..57421e21 100644 --- a/r5dev/vproj/dedicated.vcxproj.filters +++ b/r5dev/vproj/dedicated.vcxproj.filters @@ -196,6 +196,9 @@ <Filter Include="sdk\public\engine"> <UniqueIdentifier>{3760be6a-7ccb-4ad7-bba8-608dcc60a6b5}</UniqueIdentifier> </Filter> + <Filter Include="sdk\public\appframework"> + <UniqueIdentifier>{55c87120-310f-4eb5-81b9-3d8912b1dfb4}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClInclude Include="..\common\opcodes.h"> @@ -672,9 +675,6 @@ <ClInclude Include="..\common\netmessages.h"> <Filter>sdk\common</Filter> </ClInclude> - <ClInclude Include="..\appframework\iappsystem.h"> - <Filter>sdk\appframework</Filter> - </ClInclude> <ClInclude Include="..\appframework\engine_launcher_api.h"> <Filter>sdk\appframework</Filter> </ClInclude> @@ -1386,6 +1386,12 @@ <ClInclude Include="..\tier1\NetAdr.h"> <Filter>sdk\tier1</Filter> </ClInclude> + <ClInclude Include="..\public\appframework\IAppSystemGroup.h"> + <Filter>sdk\public\appframework</Filter> + </ClInclude> + <ClInclude Include="..\public\appframework\IAppSystem.h"> + <Filter>sdk\public\appframework</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <ClCompile Include="..\common\opcodes.cpp"> @@ -1769,6 +1775,9 @@ <ClCompile Include="..\tier1\NetAdr.cpp"> <Filter>sdk\tier1</Filter> </ClCompile> + <ClCompile Include="..\public\appframework\IAppSystemGroup.cpp"> + <Filter>sdk\public\appframework</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <None Include="..\Dedicated.def" /> diff --git a/r5dev/vproj/gamesdk.vcxproj b/r5dev/vproj/gamesdk.vcxproj index 9521b544..1a0f8965 100644 --- a/r5dev/vproj/gamesdk.vcxproj +++ b/r5dev/vproj/gamesdk.vcxproj @@ -122,6 +122,7 @@ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader> </ClCompile> + <ClCompile Include="..\public\appframework\IAppSystemGroup.cpp" /> <ClCompile Include="..\public\datamap.cpp" /> <ClCompile Include="..\public\dt_recv.cpp" /> <ClCompile Include="..\public\networkvar.cpp" /> @@ -189,7 +190,6 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\appframework\engine_launcher_api.h" /> - <ClInclude Include="..\appframework\iappsystem.h" /> <ClInclude Include="..\bsplib\bsplib.h" /> <ClInclude Include="..\client\cdll_engine_int.h" /> <ClInclude Include="..\client\vengineclient_impl.h" /> @@ -336,6 +336,8 @@ <ClInclude Include="..\protoc\cl_rcon.pb.h" /> <ClInclude Include="..\protoc\sig_map.pb.h" /> <ClInclude Include="..\protoc\sv_rcon.pb.h" /> + <ClInclude Include="..\public\appframework\IAppSystem.h" /> + <ClInclude Include="..\public\appframework\IAppSystemGroup.h" /> <ClInclude Include="..\public\avi\iavi.h" /> <ClInclude Include="..\public\avi\ibik.h" /> <ClInclude Include="..\public\basehandle.h" /> diff --git a/r5dev/vproj/gamesdk.vcxproj.filters b/r5dev/vproj/gamesdk.vcxproj.filters index 99aa7734..993ca819 100644 --- a/r5dev/vproj/gamesdk.vcxproj.filters +++ b/r5dev/vproj/gamesdk.vcxproj.filters @@ -250,6 +250,9 @@ <Filter Include="sdk\public\engine"> <UniqueIdentifier>{027d27a1-089a-4ea1-b764-1b436c6d20a2}</UniqueIdentifier> </Filter> + <Filter Include="sdk\public\appframework"> + <UniqueIdentifier>{0c992b91-3491-4337-a630-c789e2654bc2}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClCompile Include="..\client\vengineclient_impl.cpp"> @@ -741,6 +744,9 @@ <ClCompile Include="..\engine\server\sv_rcon.cpp"> <Filter>sdk\engine\server</Filter> </ClCompile> + <ClCompile Include="..\public\appframework\IAppSystemGroup.cpp"> + <Filter>sdk\public\appframework</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\client\cdll_engine_int.h"> @@ -1292,9 +1298,6 @@ <ClInclude Include="..\common\netmessages.h"> <Filter>sdk\common</Filter> </ClInclude> - <ClInclude Include="..\appframework\iappsystem.h"> - <Filter>sdk\appframework</Filter> - </ClInclude> <ClInclude Include="..\appframework\engine_launcher_api.h"> <Filter>sdk\appframework</Filter> </ClInclude> @@ -2156,6 +2159,12 @@ <ClInclude Include="..\engine\server\sv_rcon.h"> <Filter>sdk\engine\server</Filter> </ClInclude> + <ClInclude Include="..\public\appframework\IAppSystemGroup.h"> + <Filter>sdk\public\appframework</Filter> + </ClInclude> + <ClInclude Include="..\public\appframework\IAppSystem.h"> + <Filter>sdk\public\appframework</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <Image Include="..\shared\resource\lockedserver.png">