Author SHA1 Message Date
dependabot[bot] 25108a5296 Bump actions/setup-python from 6 to 7 (#4)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-26 12:47:56 +00:00
Nicholas Hastings 71ceb89241 Update auto versioning 2026-07-13 17:55:53 -04:00
Nicholas Hastings f1c9faba45 Fix build 2026-07-13 17:55:04 -04:00
A1m` a86fc4af91 Fix circular includes and include cleanup (#3)
* Fix circular includes and include cleanup

Fixed a bug where other *.h header files would include extension.h, which itself
was already included in those same headers, creating a circular dependency cycle.
This caused build errors and made compilation unpredictable.

To resolve this:
- Moved implementation-only includes to .cpp files where they are actually needed.
- Added forward declarations where possible to avoid pulling in unnecessary headers.
- Ensured extension.h only contains declarations that require full type definitions.

This improves build stability and compilation time.

* Clean up includes and fix build errors

- Replaced full includes with forward declarations where possible
- Moved implementation-only includes from .h to .cpp files
- Added missing includes for stdint.h and Steam interfaces
- This significantly reduces compilation time and prevents future dependency issues

* Switch to SourceMod SDK smsdk_ext instead of local copy
2026-07-13 21:43:05 +00:00
32 changed files with 180 additions and 947 deletions
+24 -5
View File
@@ -7,8 +7,27 @@ on:
branches: [ master ] branches: [ master ]
jobs: jobs:
version:
name: Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.compute.outputs.version }}
steps:
- name: Checkout
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Compute version
id: compute
run: |
base_version=$(grep -oP 'SMEXT_CONF_VERSION\s+"\K[^"]+' Extension/sdk/smsdk_config.h)
build_number=$(git rev-list --count HEAD)
echo "version=${base_version}.${build_number}" >> "$GITHUB_OUTPUT"
build: build:
name: sm${{ matrix.sm.label }}-${{ matrix.target.os_name }}-${{ matrix.target.arch }} name: sm${{ matrix.sm.label }}-${{ matrix.target.os_name }}-${{ matrix.target.arch }}
needs: version
runs-on: ${{ matrix.target.os }} runs-on: ${{ matrix.target.os }}
container: ${{ matrix.target.container }} container: ${{ matrix.target.container }}
strategy: strategy:
@@ -43,7 +62,7 @@ jobs:
- name: Setup Python (Windows) - name: Setup Python (Windows)
if: matrix.target.os_name == 'windows' if: matrix.target.os_name == 'windows'
uses: actions/setup-python@v6 uses: actions/setup-python@v7
with: with:
python-version: '3.12' python-version: '3.12'
@@ -78,6 +97,7 @@ jobs:
--mms-path ../mmsource \ --mms-path ../mmsource \
--steamworks-path ../SteamworksSDK \ --steamworks-path ../SteamworksSDK \
--target ${{ matrix.target.arch }} \ --target ${{ matrix.target.arch }} \
--version "${{ needs.version.outputs.version }}" \
--enable-optimize --enable-optimize
ambuild ambuild
@@ -91,6 +111,7 @@ jobs:
--mms-path ../mmsource \ --mms-path ../mmsource \
--steamworks-path ../SteamworksSDK \ --steamworks-path ../SteamworksSDK \
--target ${{ matrix.target.arch }} \ --target ${{ matrix.target.arch }} \
--version "${{ needs.version.outputs.version }}" \
--enable-optimize --enable-optimize
ambuild ambuild
@@ -138,7 +159,7 @@ jobs:
release: release:
name: Release name: Release
needs: build needs: [version, build]
if: github.event_name == 'push' && github.ref == 'refs/heads/master' if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
@@ -157,9 +178,7 @@ jobs:
- name: Assemble packages - name: Assemble packages
id: package id: package
run: | run: |
base_version=$(grep -oP 'SMEXT_CONF_VERSION\s+"\K[^"]+' Extension/sdk/smsdk_config.h) version="${{ needs.version.outputs.version }}"
build_number=$(git rev-list --count HEAD)
version="${base_version}-git${build_number}"
echo "version=${version}" >> "$GITHUB_OUTPUT" echo "version=${version}" >> "$GITHUB_OUTPUT"
# One package per SourceMod version per OS: Windows as .zip, Linux as # One package per SourceMod version per OS: Windows as .zip, Linux as
+7 -1
View File
@@ -60,8 +60,8 @@ project.sources += [
'swhttp.cpp', 'swhttp.cpp',
'swhttprequest.cpp', 'swhttprequest.cpp',
'swgchooks.cpp', 'swgchooks.cpp',
'sdk/smsdk_ext.cpp',
os.path.join(SteamWorks.sm_root, 'public', 'CDetour', 'detours.cpp'), os.path.join(SteamWorks.sm_root, 'public', 'CDetour', 'detours.cpp'),
os.path.join(SteamWorks.sm_root, 'public', 'smsdk_ext.cpp'),
] ]
binary = SteamWorks.HL2Config(project, builder.cxx, 'SteamWorks.ext') binary = SteamWorks.HL2Config(project, builder.cxx, 'SteamWorks.ext')
@@ -69,6 +69,12 @@ binary = SteamWorks.HL2Config(project, builder.cxx, 'SteamWorks.ext')
# The Steam API headers all come from the SteamWorks SDK; the extension is built # The Steam API headers all come from the SteamWorks SDK; the extension is built
# with META_NO_HL2SDK, so no HL2SDK is required. # with META_NO_HL2SDK, so no HL2SDK is required.
binary.compiler.defines += ['META_NO_HL2SDK', 'SOURCEMOD_BUILD', 'VERSION_SAFE_STEAM_API_INTERFACES'] binary.compiler.defines += ['META_NO_HL2SDK', 'SOURCEMOD_BUILD', 'VERSION_SAFE_STEAM_API_INTERFACES']
# Let CI bake the generated release version into the binary. The value is passed
# as an unquoted token and stringized in smsdk_config.h, avoiding shell-quoting
# differences between MSVC and gcc/clang.
if builder.options.version:
binary.compiler.defines += ['SMEXT_CONF_VERSION_OVERRIDE={0}'.format(builder.options.version)]
binary.compiler.cxxincludes += [os.path.join(SteamWorks.steamworks_root, 'public', 'steam')] binary.compiler.cxxincludes += [os.path.join(SteamWorks.steamworks_root, 'public', 'steam')]
binary.compiler.cxxincludes += [os.path.join(SteamWorks.sm_root, 'public', 'safetyhook', 'include')] binary.compiler.cxxincludes += [os.path.join(SteamWorks.sm_root, 'public', 'safetyhook', 'include')]
+12 -1
View File
@@ -30,7 +30,18 @@
*/ */
#include "extension.h" #include "extension.h"
#include <stdlib.h>
#include "swgamedata.h"
#include "swgameserver.h"
#include "swhttp.h"
#include "swhttprequest.h"
#include "swforwards.h"
#include "gsnatives.h"
#include "swgshooks.h"
#include "swgsdetours.h"
#include "ssnatives.h"
#include "swgchooks.h"
#include "gcnatives.h"
/** /**
* @file extension.cpp * @file extension.cpp
+15 -14
View File
@@ -37,21 +37,21 @@
* @brief Sample extension code header. * @brief Sample extension code header.
*/ */
#include "smsdk_ext.h" #include <smsdk_ext.h>
#include "isteamgameserver.h" #include <isteamgameserver.h>
#include "steam_gameserver.h" #include <steamclientpublic.h>
#include "swgameserver.h" class SteamWorksForwards;
#include "swgamedata.h" class SteamWorksGameData;
class SteamWorksGameServer;
#include "swforwards.h" class SteamWorksGSNatives;
#include "gsnatives.h" class SteamWorksGSHooks;
#include "swgshooks.h" class SteamWorksSSNatives;
#include "swgchooks.h" class SteamWorksGSDetours;
#include "ssnatives.h" class SteamWorksHTTP;
#include "gcnatives.h" class SteamWorksHTTPNatives;
#include "swgsdetours.h" class SteamWorksGCHooks;
#include "swhttp.h" class SteamWorksGCNatives;
/** /**
* @brief Sample implementation of the SDK Extension. * @brief Sample implementation of the SDK Extension.
@@ -149,4 +149,5 @@ public:
}; };
extern SteamWorks g_SteamWorks; extern SteamWorks g_SteamWorks;
#endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_ #endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
+3
View File
@@ -17,6 +17,9 @@
*/ */
#include "gcnatives.h" #include "gcnatives.h"
#include "extension.h"
#include "swgameserver.h"
#include <isteamgamecoordinator.h>
static ISteamGameCoordinator *GetSteamGCPointer(void) static ISteamGameCoordinator *GetSteamGCPointer(void)
{ {
-10
View File
@@ -17,14 +17,6 @@
*/ */
#pragma once #pragma once
#include "steam_gameserver.h"
#include "isteamgamecoordinator.h"
#include "smsdk_ext.h"
#ifdef _WIN32
#undef SendMessage
#endif
class SteamWorksGCNatives class SteamWorksGCNatives
{ {
@@ -32,5 +24,3 @@ class SteamWorksGCNatives
SteamWorksGCNatives(); SteamWorksGCNatives();
~SteamWorksGCNatives(); ~SteamWorksGCNatives();
}; };
#include "extension.h"
+2
View File
@@ -17,6 +17,8 @@
*/ */
#include "gsnatives.h" #include "gsnatives.h"
#include "extension.h"
#include "swgameserver.h"
static bool IsSteamWorksLoaded(void) static bool IsSteamWorksLoaded(void)
{ {
-3
View File
@@ -17,7 +17,6 @@
*/ */
#pragma once #pragma once
#include "smsdk_ext.h"
class SteamWorksGSNatives class SteamWorksGSNatives
{ {
@@ -25,5 +24,3 @@ class SteamWorksGSNatives
SteamWorksGSNatives(); SteamWorksGSNatives();
~SteamWorksGSNatives(); ~SteamWorksGSNatives();
}; };
#include "extension.h"
+12 -1
View File
@@ -40,7 +40,18 @@
/* Basic information exposed publicly */ /* Basic information exposed publicly */
#define SMEXT_CONF_NAME "SteamWorks Extension" #define SMEXT_CONF_NAME "SteamWorks Extension"
#define SMEXT_CONF_DESCRIPTION "Exposes SteamWorks functions to Developers" #define SMEXT_CONF_DESCRIPTION "Exposes SteamWorks functions to Developers"
#define SMEXT_CONF_VERSION "1.2.3" /* The literal below is the MAJOR.MINOR base and the version used by local builds.
CI turns it into a full MAJOR.MINOR.PATCH release version by defining
SMEXT_CONF_VERSION_OVERRIDE at build time as an unquoted token (e.g. 1.2.158,
where the patch is the commit count); it is stringized here so no cross-platform
shell quoting is required. Bump the MAJOR/MINOR here by hand. */
#if defined(SMEXT_CONF_VERSION_OVERRIDE)
#define SMEXT_CONF_VERSION_STR_(x) #x
#define SMEXT_CONF_VERSION_STR(x) SMEXT_CONF_VERSION_STR_(x)
#define SMEXT_CONF_VERSION SMEXT_CONF_VERSION_STR(SMEXT_CONF_VERSION_OVERRIDE)
#else
#define SMEXT_CONF_VERSION "1.2"
#endif
#define SMEXT_CONF_AUTHOR "Kyle Sanderson, AlliedModders" #define SMEXT_CONF_AUTHOR "Kyle Sanderson, AlliedModders"
#define SMEXT_CONF_URL "https://github.com/alliedmodders/SM-SteamWorks" #define SMEXT_CONF_URL "https://github.com/alliedmodders/SM-SteamWorks"
#define SMEXT_CONF_LOGTAG "STEAMWORKS" #define SMEXT_CONF_LOGTAG "STEAMWORKS"
-485
View File
@@ -1,485 +0,0 @@
/**
* vim: set ts=4 sw=4 tw=99 noet:
* =============================================================================
* SourceMod Base Extension Code
* Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
* =============================================================================
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
* As a special exception, AlliedModders LLC gives you permission to link the
* code of this program (as well as its derivative works) to "Half-Life 2," the
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
* by the Valve Corporation. You must obey the GNU General Public License in
* all respects for all other code used. Additionally, AlliedModders LLC grants
* this exception to all derivative works. AlliedModders LLC defines further
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* or <http://www.sourcemod.net/license.php>.
*
* Version: $Id$
*/
#include <stdio.h>
#include <stdlib.h>
#include "smsdk_ext.h"
/**
* @file smsdk_ext.cpp
* @brief Contains wrappers for making Extensions easier to write.
*/
IExtension *myself = NULL; /**< Ourself */
IShareSys *g_pShareSys = NULL; /**< Share system */
IShareSys *sharesys = NULL; /**< Share system */
ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
ISourceMod *smutils = NULL; /**< SourceMod helpers */
#if defined SMEXT_ENABLE_FORWARDSYS
IForwardManager *g_pForwards = NULL; /**< Forward system */
IForwardManager *forwards = NULL; /**< Forward system */
#endif
#if defined SMEXT_ENABLE_HANDLESYS
IHandleSys *g_pHandleSys = NULL; /**< Handle system */
IHandleSys *handlesys = NULL; /**< Handle system */
#endif
#if defined SMEXT_ENABLE_PLAYERHELPERS
IPlayerManager *playerhelpers = NULL; /**< Player helpers */
#endif //SMEXT_ENABLE_PLAYERHELPERS
#if defined SMEXT_ENABLE_DBMANAGER
IDBManager *dbi = NULL; /**< DB Manager */
#endif //SMEXT_ENABLE_DBMANAGER
#if defined SMEXT_ENABLE_GAMECONF
IGameConfigManager *gameconfs = NULL; /**< Game config manager */
#endif //SMEXT_ENABLE_DBMANAGER
#if defined SMEXT_ENABLE_MEMUTILS
IMemoryUtils *memutils = NULL;
#endif //SMEXT_ENABLE_DBMANAGER
#if defined SMEXT_ENABLE_GAMEHELPERS
IGameHelpers *gamehelpers = NULL;
#endif
#if defined SMEXT_ENABLE_TIMERSYS
ITimerSystem *timersys = NULL;
#endif
#if defined SMEXT_ENABLE_ADTFACTORY
IADTFactory *adtfactory = NULL;
#endif
#if defined SMEXT_ENABLE_THREADER
IThreader *threader = NULL;
#endif
#if defined SMEXT_ENABLE_LIBSYS
ILibrarySys *libsys = NULL;
#endif
#if defined SMEXT_ENABLE_PLUGINSYS
SourceMod::IPluginManager *plsys;
#endif
#if defined SMEXT_ENABLE_MENUS
IMenuManager *menus = NULL;
#endif
#if defined SMEXT_ENABLE_ADMINSYS
IAdminSystem *adminsys = NULL;
#endif
#if defined SMEXT_ENABLE_TEXTPARSERS
ITextParsers *textparsers = NULL;
#endif
#if defined SMEXT_ENABLE_USERMSGS
IUserMessages *usermsgs = NULL;
#endif
#if defined SMEXT_ENABLE_TRANSLATOR
ITranslator *translator = NULL;
#endif
#if defined SMEXT_ENABLE_NINVOKE
INativeInterface *ninvoke = NULL;
#endif
#if defined SMEXT_ENABLE_ROOTCONSOLEMENU
IRootConsole *rootconsole = NULL;
#endif
/** Exports the main interface */
PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
{
return g_pExtensionIface;
}
SDKExtension::SDKExtension()
{
#if defined SMEXT_CONF_METAMOD
m_SourceMMLoaded = false;
m_WeAreUnloaded = false;
m_WeGotPauseChange = false;
#endif
}
bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
{
g_pShareSys = sharesys = sys;
myself = me;
#if defined SMEXT_CONF_METAMOD
m_WeAreUnloaded = true;
if (!m_SourceMMLoaded)
{
if (error)
{
snprintf(error, maxlength, "Metamod attach failed");
}
return false;
}
#endif
SM_GET_IFACE(SOURCEMOD, g_pSM);
smutils = g_pSM;
#if defined SMEXT_ENABLE_HANDLESYS
SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
handlesys = g_pHandleSys;
#endif
#if defined SMEXT_ENABLE_FORWARDSYS
SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
forwards = g_pForwards;
#endif
#if defined SMEXT_ENABLE_PLAYERHELPERS
SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
#endif
#if defined SMEXT_ENABLE_DBMANAGER
SM_GET_IFACE(DBI, dbi);
#endif
#if defined SMEXT_ENABLE_GAMECONF
SM_GET_IFACE(GAMECONFIG, gameconfs);
#endif
#if defined SMEXT_ENABLE_MEMUTILS
SM_GET_IFACE(MEMORYUTILS, memutils);
#endif
#if defined SMEXT_ENABLE_GAMEHELPERS
SM_GET_IFACE(GAMEHELPERS, gamehelpers);
#endif
#if defined SMEXT_ENABLE_TIMERSYS
SM_GET_IFACE(TIMERSYS, timersys);
#endif
#if defined SMEXT_ENABLE_ADTFACTORY
SM_GET_IFACE(ADTFACTORY, adtfactory);
#endif
#if defined SMEXT_ENABLE_THREADER
SM_GET_IFACE(THREADER, threader);
#endif
#if defined SMEXT_ENABLE_LIBSYS
SM_GET_IFACE(LIBRARYSYS, libsys);
#endif
#if defined SMEXT_ENABLE_PLUGINSYS
SM_GET_IFACE(PLUGINSYSTEM, plsys);
#endif
#if defined SMEXT_ENABLE_MENUS
SM_GET_IFACE(MENUMANAGER, menus);
#endif
#if defined SMEXT_ENABLE_ADMINSYS
SM_GET_IFACE(ADMINSYS, adminsys);
#endif
#if defined SMEXT_ENABLE_TEXTPARSERS
SM_GET_IFACE(TEXTPARSERS, textparsers);
#endif
#if defined SMEXT_ENABLE_USERMSGS
SM_GET_IFACE(USERMSGS, usermsgs);
#endif
#if defined SMEXT_ENABLE_TRANSLATOR
SM_GET_IFACE(TRANSLATOR, translator);
#endif
#if defined SMEXT_ENABLE_NINVOKE
SM_GET_IFACE(NINVOKE, ninvoke);
#endif
#if defined SMEXT_ENABLE_ROOTCONSOLEMENU
SM_GET_IFACE(ROOTCONSOLE, rootconsole);
#endif
if (SDK_OnLoad(error, maxlength, late))
{
#if defined SMEXT_CONF_METAMOD
m_WeAreUnloaded = true;
#endif
return true;
}
return false;
}
bool SDKExtension::IsMetamodExtension()
{
#if defined SMEXT_CONF_METAMOD
return true;
#else
return false;
#endif
}
void SDKExtension::OnExtensionPauseChange(bool state)
{
#if defined SMEXT_CONF_METAMOD
m_WeGotPauseChange = true;
#endif
SDK_OnPauseChange(state);
}
void SDKExtension::OnExtensionsAllLoaded()
{
SDK_OnAllLoaded();
}
void SDKExtension::OnExtensionUnload()
{
#if defined SMEXT_CONF_METAMOD
m_WeAreUnloaded = true;
#endif
SDK_OnUnload();
}
void SDKExtension::OnDependenciesDropped()
{
SDK_OnDependenciesDropped();
}
const char *SDKExtension::GetExtensionAuthor()
{
return SMEXT_CONF_AUTHOR;
}
const char *SDKExtension::GetExtensionDateString()
{
return SMEXT_CONF_DATESTRING;
}
const char *SDKExtension::GetExtensionDescription()
{
return SMEXT_CONF_DESCRIPTION;
}
const char *SDKExtension::GetExtensionVerString()
{
return SMEXT_CONF_VERSION;
}
const char *SDKExtension::GetExtensionName()
{
return SMEXT_CONF_NAME;
}
const char *SDKExtension::GetExtensionTag()
{
return SMEXT_CONF_LOGTAG;
}
const char *SDKExtension::GetExtensionURL()
{
return SMEXT_CONF_URL;
}
bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
{
return true;
}
void SDKExtension::SDK_OnUnload()
{
}
void SDKExtension::SDK_OnPauseChange(bool paused)
{
}
void SDKExtension::SDK_OnAllLoaded()
{
}
void SDKExtension::SDK_OnDependenciesDropped()
{
}
#if defined SMEXT_CONF_METAMOD
PluginId g_PLID = 0; /**< Metamod plugin ID */
ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
#ifndef META_NO_HL2SDK
IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
#endif
/** Exposes the extension to Metamod */
SMM_API void *PL_EXPOSURE(const char *name, int *code)
{
#if defined METAMOD_PLAPI_VERSION
if (name && !strcmp(name, METAMOD_PLAPI_NAME))
#else
if (name && !strcmp(name, PLAPI_NAME))
#endif
{
if (code)
{
*code = META_IFACE_OK;
}
return static_cast<void *>(g_pExtensionIface);
}
if (code)
{
*code = META_IFACE_FAILED;
}
return NULL;
}
bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
{
PLUGIN_SAVEVARS();
#ifndef META_NO_HL2SDK
#if !defined METAMOD_PLAPI_VERSION
GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
#else
GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
#endif
#endif //META_NO_HL2SDK
m_SourceMMLoaded = true;
return SDK_OnMetamodLoad(ismm, error, maxlen, late);
}
bool SDKExtension::Unload(char *error, size_t maxlen)
{
if (!m_WeAreUnloaded)
{
if (error)
{
snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
}
return false;
}
return SDK_OnMetamodUnload(error, maxlen);
}
bool SDKExtension::Pause(char *error, size_t maxlen)
{
if (!m_WeGotPauseChange)
{
if (error)
{
snprintf(error, maxlen, "This extension must be paused by SourceMod.");
}
return false;
}
m_WeGotPauseChange = false;
return SDK_OnMetamodPauseChange(true, error, maxlen);
}
bool SDKExtension::Unpause(char *error, size_t maxlen)
{
if (!m_WeGotPauseChange)
{
if (error)
{
snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
}
return false;
}
m_WeGotPauseChange = false;
return SDK_OnMetamodPauseChange(false, error, maxlen);
}
const char *SDKExtension::GetAuthor()
{
return GetExtensionAuthor();
}
const char *SDKExtension::GetDate()
{
return GetExtensionDateString();
}
const char *SDKExtension::GetDescription()
{
return GetExtensionDescription();
}
const char *SDKExtension::GetLicense()
{
return SMEXT_CONF_LICENSE;
}
const char *SDKExtension::GetLogTag()
{
return GetExtensionTag();
}
const char *SDKExtension::GetName()
{
return GetExtensionName();
}
const char *SDKExtension::GetURL()
{
return GetExtensionURL();
}
const char *SDKExtension::GetVersion()
{
return GetExtensionVerString();
}
bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
{
return true;
}
bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
{
return true;
}
bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
{
return true;
}
#endif
/* Overload a few things to prevent libstdc++ linking */
#if defined __linux__ || defined __APPLE__
extern "C" void __cxa_pure_virtual(void)
{
}
void *operator new(size_t size)
{
return malloc(size);
}
void *operator new[](size_t size)
{
return malloc(size);
}
void operator delete(void *ptr)
{
free(ptr);
}
void operator delete[](void * ptr)
{
free(ptr);
}
#endif
-358
View File
@@ -1,358 +0,0 @@
/**
* vim: set ts=4 sw=4 tw=99 noet:
* =============================================================================
* SourceMod Base Extension Code
* Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
* =============================================================================
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
* As a special exception, AlliedModders LLC gives you permission to link the
* code of this program (as well as its derivative works) to "Half-Life 2," the
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
* by the Valve Corporation. You must obey the GNU General Public License in
* all respects for all other code used. Additionally, AlliedModders LLC grants
* this exception to all derivative works. AlliedModders LLC defines further
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* or <http://www.sourcemod.net/license.php>.
*
* Version: $Id$
*/
#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
/**
* @file smsdk_ext.h
* @brief Contains wrappers for making Extensions easier to write.
*/
#include "smsdk_config.h"
#include <IExtensionSys.h>
#include <IHandleSys.h>
#include <sp_vm_api.h>
#include <sm_platform.h>
#include <ISourceMod.h>
#if defined SMEXT_ENABLE_FORWARDSYS
#include <IForwardSys.h>
#endif //SMEXT_ENABLE_FORWARDSYS
#if defined SMEXT_ENABLE_PLAYERHELPERS
#include <IPlayerHelpers.h>
#endif //SMEXT_ENABLE_PlAYERHELPERS
#if defined SMEXT_ENABLE_DBMANAGER
#include <IDBDriver.h>
#endif //SMEXT_ENABLE_DBMANAGER
#if defined SMEXT_ENABLE_GAMECONF
#include <IGameConfigs.h>
#endif
#if defined SMEXT_ENABLE_MEMUTILS
#include <IMemoryUtils.h>
#endif
#if defined SMEXT_ENABLE_GAMEHELPERS
#include <IGameHelpers.h>
#endif
#if defined SMEXT_ENABLE_TIMERSYS
#include <ITimerSystem.h>
#endif
#if defined SMEXT_ENABLE_ADTFACTORY
#include <IADTFactory.h>
#endif
#if defined SMEXT_ENABLE_THREADER
#include <IThreader.h>
#endif
#if defined SMEXT_ENABLE_LIBSYS
#include <ILibrarySys.h>
#endif
#if defined SMEXT_ENABLE_PLUGINSYS
#include <IPluginSys.h>
#endif
#if defined SMEXT_ENABLE_MENUS
#include <IMenuManager.h>
#endif
#if defined SMEXT_ENABLE_ADMINSYS
#include <IAdminSystem.h>
#endif
#if defined SMEXT_ENABLE_TEXTPARSERS
#include <ITextParsers.h>
#endif
#if defined SMEXT_ENABLE_USERMSGS
#include <IUserMessages.h>
#endif
#if defined SMEXT_ENABLE_TRANSLATOR
#include <ITranslator.h>
#endif
#if defined SMEXT_ENABLE_NINVOKE
#include <INativeInvoker.h>
#endif
#if defined SMEXT_ENABLE_ROOTCONSOLEMENU
#include <IRootConsoleMenu.h>
#endif
#if defined SMEXT_CONF_METAMOD
#include <ISmmPlugin.h>
#ifndef META_NO_HL2SDK
#include <eiface.h>
#endif // META_NO_HL2SDK
#endif
using namespace SourceMod;
using namespace SourcePawn;
class SDKExtension :
#if defined SMEXT_CONF_METAMOD
public ISmmPlugin,
#endif
public IExtensionInterface
{
public:
/** Constructor */
SDKExtension();
public:
/**
* @brief This is called after the initial loading sequence has been processed.
*
* @param error Error message buffer.
* @param maxlength Size of error message buffer.
* @param late Whether or not the module was loaded after map load.
* @return True to succeed loading, false to fail.
*/
virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
/**
* @brief This is called once the extension unloading process begins.
*/
virtual void SDK_OnUnload();
/**
* @brief This is called once all known extensions have been loaded.
*/
virtual void SDK_OnAllLoaded();
/**
* @brief Called when the pause state is changed.
*/
virtual void SDK_OnPauseChange(bool paused);
/**
* @brief Called after SDK_OnUnload, once all dependencies have been
* removed, and the extension is about to be removed from memory.
*/
virtual void SDK_OnDependenciesDropped();
#if defined SMEXT_CONF_METAMOD
/**
* @brief Called when Metamod is attached, before the extension version is called.
*
* @param error Error buffer.
* @param maxlength Maximum size of error buffer.
* @param late Whether or not Metamod considers this a late load.
* @return True to succeed, false to fail.
*/
virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
/**
* @brief Called when Metamod is detaching, after the extension version is called.
* NOTE: By default this is blocked unless sent from SourceMod.
*
* @param error Error buffer.
* @param maxlength Maximum size of error buffer.
* @return True to succeed, false to fail.
*/
virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
/**
* @brief Called when Metamod's pause state is changing.
* NOTE: By default this is blocked unless sent from SourceMod.
*
* @param paused Pause state being set.
* @param error Error buffer.
* @param maxlength Maximum size of error buffer.
* @return True to succeed, false to fail.
*/
virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
#endif
public: //IExtensionInterface
virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
virtual void OnExtensionUnload();
virtual void OnExtensionsAllLoaded();
/** Returns whether or not this is a Metamod-based extension */
virtual bool IsMetamodExtension();
/**
* @brief Called when the pause state changes.
*
* @param state True if being paused, false if being unpaused.
*/
virtual void OnExtensionPauseChange(bool state);
/** Returns name */
virtual const char *GetExtensionName();
/** Returns URL */
virtual const char *GetExtensionURL();
/** Returns log tag */
virtual const char *GetExtensionTag();
/** Returns author */
virtual const char *GetExtensionAuthor();
/** Returns version string */
virtual const char *GetExtensionVerString();
/** Returns description string */
virtual const char *GetExtensionDescription();
/** Returns date string */
virtual const char *GetExtensionDateString();
/** Called after OnExtensionUnload, once dependencies have been dropped. */
virtual void OnDependenciesDropped();
#if defined SMEXT_CONF_METAMOD
public: //ISmmPlugin
/** Called when the extension is attached to Metamod. */
virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
/** Returns the author to MM */
virtual const char *GetAuthor();
/** Returns the name to MM */
virtual const char *GetName();
/** Returns the description to MM */
virtual const char *GetDescription();
/** Returns the URL to MM */
virtual const char *GetURL();
/** Returns the license to MM */
virtual const char *GetLicense();
/** Returns the version string to MM */
virtual const char *GetVersion();
/** Returns the date string to MM */
virtual const char *GetDate();
/** Returns the logtag to MM */
virtual const char *GetLogTag();
/** Called on unload */
virtual bool Unload(char *error, size_t maxlength);
/** Called on pause */
virtual bool Pause(char *error, size_t maxlength);
/** Called on unpause */
virtual bool Unpause(char *error, size_t maxlength);
private:
bool m_SourceMMLoaded;
bool m_WeAreUnloaded;
bool m_WeGotPauseChange;
#endif
};
extern SDKExtension *g_pExtensionIface;
extern IExtension *myself;
extern IShareSys *g_pShareSys;
extern IShareSys *sharesys; /* Note: Newer name */
extern ISourceMod *g_pSM;
extern ISourceMod *smutils; /* Note: Newer name */
/* Optional interfaces are below */
#if defined SMEXT_ENABLE_FORWARDSYS
extern IForwardManager *g_pForwards;
extern IForwardManager *forwards; /* Note: Newer name */
#endif //SMEXT_ENABLE_FORWARDSYS
#if defined SMEXT_ENABLE_HANDLESYS
extern IHandleSys *g_pHandleSys;
extern IHandleSys *handlesys; /* Note: Newer name */
#endif //SMEXT_ENABLE_HANDLESYS
#if defined SMEXT_ENABLE_PLAYERHELPERS
extern IPlayerManager *playerhelpers;
#endif //SMEXT_ENABLE_PLAYERHELPERS
#if defined SMEXT_ENABLE_DBMANAGER
extern IDBManager *dbi;
#endif //SMEXT_ENABLE_DBMANAGER
#if defined SMEXT_ENABLE_GAMECONF
extern IGameConfigManager *gameconfs;
#endif //SMEXT_ENABLE_DBMANAGER
#if defined SMEXT_ENABLE_MEMUTILS
extern IMemoryUtils *memutils;
#endif
#if defined SMEXT_ENABLE_GAMEHELPERS
extern IGameHelpers *gamehelpers;
#endif
#if defined SMEXT_ENABLE_TIMERSYS
extern ITimerSystem *timersys;
#endif
#if defined SMEXT_ENABLE_ADTFACTORY
extern IADTFactory *adtfactory;
#endif
#if defined SMEXT_ENABLE_THREADER
extern IThreader *threader;
#endif
#if defined SMEXT_ENABLE_LIBSYS
extern ILibrarySys *libsys;
#endif
#if defined SMEXT_ENABLE_PLUGINSYS
extern SourceMod::IPluginManager *plsys;
#endif
#if defined SMEXT_ENABLE_MENUS
extern IMenuManager *menus;
#endif
#if defined SMEXT_ENABLE_ADMINSYS
extern IAdminSystem *adminsys;
#endif
#if defined SMEXT_ENABLE_USERMSGS
extern IUserMessages *usermsgs;
#endif
#if defined SMEXT_ENABLE_TRANSLATOR
extern ITranslator *translator;
#endif
#if defined SMEXT_ENABLE_NINVOKE
extern INativeInterface *ninvoke;
#endif
#if defined SMEXT_ENABLE_ROOTCONSOLEMENU
extern IRootConsole *rootconsole;
#endif
#if defined SMEXT_CONF_METAMOD
PLUGIN_GLOBALVARS();
#ifndef META_NO_HL2SDK
extern IVEngineServer *engine;
extern IServerGameDLL *gamedll;
#endif //META_NO_HL2SDK
#endif
/** Creates a SourceMod interface macro pair */
#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
/** Automates retrieving SourceMod interfaces */
#define SM_GET_IFACE(prefix, addr) \
if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
{ \
if (error != NULL && maxlength) \
{ \
size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
if (len >= maxlength) \
{ \
error[maxlength - 1] = '\0'; \
} \
} \
return false; \
}
/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
#define SM_GET_LATE_IFACE(prefix, addr) \
g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
/** Validates a SourceMod interface pointer */
#define SM_CHECK_IFACE(prefix, addr) \
if (!addr) \
{ \
if (error != NULL && maxlength) \
{ \
size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
if (len >= maxlength) \
{ \
error[maxlength - 1] = '\0'; \
} \
} \
return false; \
}
#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
+3
View File
@@ -17,6 +17,9 @@
*/ */
#include "ssnatives.h" #include "ssnatives.h"
#include "extension.h"
#include <steam_gameserver.h>
#include "swgameserver.h"
static bool IsSteamWorksLoaded(void) static bool IsSteamWorksLoaded(void)
{ {
-3
View File
@@ -17,7 +17,6 @@
*/ */
#pragma once #pragma once
#include "smsdk_ext.h"
class SteamWorksSSNatives class SteamWorksSSNatives
{ {
@@ -25,5 +24,3 @@ class SteamWorksSSNatives
SteamWorksSSNatives(); SteamWorksSSNatives();
~SteamWorksSSNatives(); ~SteamWorksSSNatives();
}; };
#include "extension.h"
+2
View File
@@ -17,6 +17,8 @@
*/ */
#include "swforwards.h" #include "swforwards.h"
#include <smsdk_ext.h>
#include <steam_gameserver.h>
SteamWorksForwards::SteamWorksForwards() : SteamWorksForwards::SteamWorksForwards() :
m_CallbackGSClientApprove(this, &SteamWorksForwards::OnGSClientApprove), m_CallbackGSClientApprove(this, &SteamWorksForwards::OnGSClientApprove),
+13 -9
View File
@@ -17,9 +17,13 @@
*/ */
#pragma once #pragma once
#include "isteamgameserver.h"
#include "steam_gameserver.h" #include <steam_gameserver.h>
#include "smsdk_ext.h"
namespace SourceMod
{
class IForward;
}
typedef uint32_t Account_t; typedef uint32_t Account_t;
@@ -41,10 +45,10 @@ class SteamWorksForwards
STEAM_GAMESERVER_CALLBACK(SteamWorksForwards, OnGroupStatusResult, GSClientGroupStatus_t, m_CallbackGroupStatus); STEAM_GAMESERVER_CALLBACK(SteamWorksForwards, OnGroupStatusResult, GSClientGroupStatus_t, m_CallbackGroupStatus);
private: private:
IForward *pFOVC; /* Forward On Validate Client */ SourceMod::IForward *pFOVC; /* Forward On Validate Client */
IForward *pFOVC_Old; /* OLD Forward On Validate Client */ SourceMod::IForward *pFOVC_Old; /* OLD Forward On Validate Client */
IForward *pFOSSC; /* Forward On Steam Servers Connected */ SourceMod::IForward *pFOSSC; /* Forward On Steam Servers Connected */
IForward *pFOSSCF; /* Forward On Steam Servers Connect Failure */ SourceMod::IForward *pFOSSCF; /* Forward On Steam Servers Connect Failure */
IForward *pFOSSD; /* Forward On Steam Servers Disconnected */ SourceMod::IForward *pFOSSD; /* Forward On Steam Servers Disconnected */
IForward *pFOCGS; /* Forward On Client Group Status */ SourceMod::IForward *pFOCGS; /* Forward On Client Group Status */
}; };
+2
View File
@@ -15,7 +15,9 @@
Author: Kyle Sanderson (KyleS). Author: Kyle Sanderson (KyleS).
*/ */
#include "swgamedata.h" #include "swgamedata.h"
#include <smsdk_ext.h>
SteamWorksGameData::SteamWorksGameData() SteamWorksGameData::SteamWorksGameData()
{ {
+7 -5
View File
@@ -17,7 +17,11 @@
*/ */
#pragma once #pragma once
#include "smsdk_ext.h"
namespace SourceMod
{
class IGameConfig;
}
class SteamWorksGameData class SteamWorksGameData
{ {
@@ -27,10 +31,8 @@ class SteamWorksGameData
public: public:
bool HasGameData(void) const; bool HasGameData(void) const;
IGameConfig *GetGameData(void) const; SourceMod::IGameConfig *GetGameData(void) const;
private: private:
IGameConfig *pGameConf; SourceMod::IGameConfig *pGameConf;
}; };
#include "extension.h"
+13
View File
@@ -17,6 +17,19 @@
*/ */
#include "swgameserver.h" #include "swgameserver.h"
#include "extension.h"
#include "swgamedata.h"
#include <smsdk_ext.h>
#include <isteamclient.h>
#include <isteamgameserver.h>
#include <isteamutils.h>
#include <isteamnetworking.h>
#include <isteamgameserverstats.h>
#include <isteamhttp.h>
#include <isteammatchmaking.h>
#include <isteamgamecoordinator.h>
static void GetGameSpecificConfigInterface(const char *pName, const char *&pVersion) static void GetGameSpecificConfigInterface(const char *pName, const char *&pVersion)
{ {
+4 -5
View File
@@ -17,9 +17,10 @@
*/ */
#pragma once #pragma once
#include "smsdk_ext.h"
#include "steam_gameserver.h" #include <steam_api_common.h>
#include "isteamgamecoordinator.h"
class ISteamGameCoordinator;
#if defined(STEAM_API_INTERNAL_H) || !defined(STEAM_API_EXPORTS) #if defined(STEAM_API_INTERNAL_H) || !defined(STEAM_API_EXPORTS)
S_API ISteamClient *g_pSteamClientGameServer; /* This is awful. */ S_API ISteamClient *g_pSteamClientGameServer; /* This is awful. */
@@ -57,5 +58,3 @@ class SteamWorksGameServer
ISteamGameCoordinator *m_pGC; ISteamGameCoordinator *m_pGC;
bool loaded; bool loaded;
}; };
#include "extension.h"
+7
View File
@@ -17,6 +17,13 @@
*/ */
#include "swgchooks.h" #include "swgchooks.h"
#include "extension.h"
#include "swgameserver.h"
#include <isteamgamecoordinator.h>
#ifdef _WIN32
#undef SendMessage
#endif
enum enum
{ {
+9 -12
View File
@@ -17,15 +17,14 @@
*/ */
#pragma once #pragma once
#include "steam_gameserver.h"
#include "isteamgamecoordinator.h"
#include "smsdk_ext.h" #include <isteamgamecoordinator.h>
#include "sourcehook.h" #include <cstdint>
#ifdef _WIN32 namespace SourceMod
#undef SendMessage {
#endif class IForward;
}
class SteamWorksGCHooks class SteamWorksGCHooks
{ {
@@ -43,12 +42,10 @@ class SteamWorksGCHooks
EGCResults RetrieveMessage(uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize); EGCResults RetrieveMessage(uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize);
private: private:
IForward *pGCSendMsg; SourceMod::IForward *pGCSendMsg;
IForward *pGCMsgAvail; SourceMod::IForward *pGCMsgAvail;
IForward *pGCRetMsg; SourceMod::IForward *pGCRetMsg;
unsigned char uHooked; unsigned char uHooked;
}; };
void OurGCGameFrameHook(bool simulating); void OurGCGameFrameHook(bool simulating);
#include "extension.h"
+5
View File
@@ -17,6 +17,11 @@
*/ */
#include "swgsdetours.h" #include "swgsdetours.h"
#include "extension.h"
#include "swgameserver.h"
#include "swgshooks.h"
#include "swgamedata.h"
#include <steam_gameserver.h>
DETOUR_DECL_STATIC0(SteamAPIShutdown, void) DETOUR_DECL_STATIC0(SteamAPIShutdown, void)
{ {
+4 -5
View File
@@ -17,9 +17,10 @@
*/ */
#pragma once #pragma once
#include "smsdk_ext.h"
#include "steam_gameserver.h" #include <CDetour/detours.h>
#include "CDetour/detours.h"
class CDetour;
/* SourceMod's safetyhook-based CDetour doesn't ship the "fixed address" helper the /* SourceMod's safetyhook-based CDetour doesn't ship the "fixed address" helper the
old vendored copy had, so define it in terms of the address overload it does expose. */ old vendored copy had, so define it in terms of the address overload it does expose. */
@@ -37,5 +38,3 @@ class SteamWorksGSDetours
CDetour *m_pSafeInitDetour; CDetour *m_pSafeInitDetour;
CDetour *m_pShutdownDetour; CDetour *m_pShutdownDetour;
}; };
#include "extension.h"
+5 -1
View File
@@ -17,7 +17,11 @@
*/ */
#include "swgshooks.h" #include "swgshooks.h"
#include "steamtools/ticket.h" #include "extension.h"
//#include <steamtools/ticket.h> // ????
#include <isteamgameserver.h>
#include <smsdk_ext.h>
#include "swgameserver.h"
enum enum
{ {
+10 -9
View File
@@ -17,10 +17,13 @@
*/ */
#pragma once #pragma once
#include "isteamgameserver.h"
#include "steam_gameserver.h" #include <isteamgameserver.h>
#include "smsdk_ext.h"
#include "sourcehook.h" namespace SourceMod
{
class IForward;
}
class SteamWorksGSHooks class SteamWorksGSHooks
{ {
@@ -38,12 +41,10 @@ class SteamWorksGSHooks
EBeginAuthSessionResult BeginAuthSession(const void*, int, CSteamID); EBeginAuthSessionResult BeginAuthSession(const void*, int, CSteamID);
private: private:
IForward *pFORR; /* On Restart Requested. */ SourceMod::IForward *pFORR; /* On Restart Requested. */
IForward *pFOTR; /* On Token Requested. */ SourceMod::IForward *pFOTR; /* On Token Requested. */
IForward *pOBAS; /* On Begin Auth Session. */ SourceMod::IForward *pOBAS; /* On Begin Auth Session. */
unsigned char uHooked; unsigned char uHooked;
}; };
void OurGameFrameHook(bool simulating); void OurGameFrameHook(bool simulating);
#include "extension.h"
+3
View File
@@ -17,6 +17,9 @@
*/ */
#include "swhttp.h" #include "swhttp.h"
#include "extension.h"
#include "swgameserver.h"
#include "swhttprequest.h"
static ISteamHTTP *GetHTTPPointer() static ISteamHTTP *GetHTTPPointer()
{ {
+4 -6
View File
@@ -17,9 +17,10 @@
*/ */
#pragma once #pragma once
#include "isteamgameserver.h"
#include "steam_gameserver.h" #include <steam_gameserver.h>
#include "smsdk_ext.h" #include <isteamhttp.h>
#include <smsdk_ext.h>
#include <unordered_map> #include <unordered_map>
@@ -57,6 +58,3 @@ class SteamWorksHTTP :
HandleType_t typeHTTP; HandleType_t typeHTTP;
std::unordered_map<HTTPRequestHandle, SteamWorksHTTPRequest *> m_Requests; std::unordered_map<HTTPRequestHandle, SteamWorksHTTPRequest *> m_Requests;
}; };
#include "swhttprequest.h"
#include "extension.h"
+3 -2
View File
@@ -17,8 +17,9 @@
*/ */
#include "swhttprequest.h" #include "swhttprequest.h"
#include "extension.h"
#include <cstdio> #include "swgameserver.h"
#include "swhttp.h"
/* SourceMod 1.13 (extension API 9) changed IPluginManager::FindPluginByContext() /* SourceMod 1.13 (extension API 9) changed IPluginManager::FindPluginByContext()
to take an IPluginContext* directly; older SM (API 8) takes the low-level to take an IPluginContext* directly; older SM (API 8) takes the low-level
+6 -8
View File
@@ -17,9 +17,9 @@
*/ */
#pragma once #pragma once
#include "isteamgameserver.h"
#include "steam_gameserver.h" #include <isteamhttp.h>
#include "smsdk_ext.h" #include <smsdk_ext.h> // HTTPRequestHandle, Handle_t, IChangeableForward
class SteamWorksHTTPRequest class SteamWorksHTTPRequest
{ {
@@ -43,9 +43,9 @@ class SteamWorksHTTPRequest
CCallResult<SteamWorksHTTPRequest, HTTPRequestCompleted_t> CompletedCallResult; CCallResult<SteamWorksHTTPRequest, HTTPRequestCompleted_t> CompletedCallResult;
public: public:
IChangeableForward *pCompletedForward; SourceMod::IChangeableForward *pCompletedForward;
IChangeableForward *pHeadersReceivedForward; SourceMod::IChangeableForward *pHeadersReceivedForward;
IChangeableForward *pDataReceivedForward; SourceMod::IChangeableForward *pDataReceivedForward;
}; };
class SteamWorksHTTPNatives class SteamWorksHTTPNatives
@@ -54,5 +54,3 @@ class SteamWorksHTTPNatives
SteamWorksHTTPNatives(); SteamWorksHTTPNatives();
~SteamWorksHTTPNatives(); ~SteamWorksHTTPNatives();
}; };
#include "extension.h"
+1 -1
View File
@@ -16,7 +16,7 @@
Author: Kyle Sanderson (KyleS). Author: Kyle Sanderson (KyleS).
*/ */
#include "swmemutils.h" #include "swmemutils.h"
#include "am-utility.h" #include <am-utility.h>
void *SteamWorksMemUtils::ResolveSymbolInt(void *pBase, const char *pSymbol) void *SteamWorksMemUtils::ResolveSymbolInt(void *pBase, const char *pSymbol)
{ {
+2 -3
View File
@@ -17,7 +17,8 @@
*/ */
#pragma once #pragma once
#include "smsdk_ext.h"
//#include <cstddef>
class SteamWorksMemUtils class SteamWorksMemUtils
{ {
@@ -25,5 +26,3 @@ class SteamWorksMemUtils
void *ResolveSymbolInt(void *pBase, const char *pSymbol); void *ResolveSymbolInt(void *pBase, const char *pSymbol);
size_t GetOffsetFromVTable(void *pInterface, void *pToFindFunc, const char *pClassSig = NULL, size_t version = 0); size_t GetOffsetFromVTable(void *pInterface, void *pToFindFunc, const char *pClassSig = NULL, size_t version = 0);
}; };
#include "extension.h"
+2
View File
@@ -30,4 +30,6 @@ run.options.add_argument('--enable-debug', action='store_const', const='1', dest
run.options.add_argument('--enable-optimize', action='store_const', const='1', dest='opt', run.options.add_argument('--enable-optimize', action='store_const', const='1', dest='opt',
help='Enable optimization') help='Enable optimization')
run.options.add_argument('--target', default=None, help='Override the default build target') run.options.add_argument('--target', default=None, help='Override the default build target')
run.options.add_argument('--version', type=str, dest='version', default=None,
help='Override the version string baked into the binary (defaults to the literal in smsdk_config.h)')
run.Configure() run.Configure()