crimson@3151: /** crimson@3151: * vim: set ts=4 : crimson@3151: * ============================================================================= crimson@3151: * SourceMod Team Fortress 2 Extension crimson@3151: * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved. crimson@3151: * ============================================================================= crimson@3151: * crimson@3151: * This program is free software; you can redistribute it and/or modify it under crimson@3151: * the terms of the GNU General Public License, version 3.0, as published by the crimson@3151: * Free Software Foundation. crimson@3151: * crimson@3151: * This program is distributed in the hope that it will be useful, but WITHOUT crimson@3151: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS crimson@3151: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more crimson@3151: * details. crimson@3151: * crimson@3151: * You should have received a copy of the GNU General Public License along with crimson@3151: * this program. If not, see . crimson@3151: * crimson@3151: * As a special exception, AlliedModders LLC gives you permission to link the crimson@3151: * code of this program (as well as its derivative works) to "Half-Life 2," the crimson@3151: * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software crimson@3151: * by the Valve Corporation. You must obey the GNU General Public License in crimson@3151: * all respects for all other code used. Additionally, AlliedModders LLC grants crimson@3151: * this exception to all derivative works. AlliedModders LLC defines further crimson@3151: * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), crimson@3151: * or . crimson@3151: * crimson@3151: * Version: $Id$ crimson@3151: */ crimson@3151: crimson@3151: #include "gameplayrules.h" crimson@3151: crimson@3151: CDetour *setInWaitingForPlayersDetour = NULL; crimson@3151: crimson@3151: IForward *g_waitingPlayersStartForward = NULL; crimson@3151: IForward *g_waitingPlayersEndForward = NULL; crimson@3151: crimson@3151: DETOUR_DECL_MEMBER1(SetInWaitingForPlayers, void, bool, bWaitingForPlayers) crimson@3151: { crimson@3151: DETOUR_MEMBER_CALL(SetInWaitingForPlayers)(bWaitingForPlayers); crimson@3151: crimson@3151: if (bWaitingForPlayers) crimson@3151: { crimson@3151: if (!g_waitingPlayersStartForward) crimson@3151: { crimson@3151: g_pSM->LogMessage(myself, "Invalid Forward"); crimson@3151: } crimson@3151: else crimson@3151: { crimson@3151: g_waitingPlayersStartForward->Execute(NULL); crimson@3151: } crimson@3151: } crimson@3151: else crimson@3151: { crimson@3151: if (!g_waitingPlayersEndForward) crimson@3151: { crimson@3151: g_pSM->LogMessage(myself, "Invalid Forward"); crimson@3151: } crimson@3151: else crimson@3151: { crimson@3151: g_waitingPlayersEndForward->Execute(NULL); crimson@3151: } crimson@3151: } crimson@3151: } crimson@3151: skamonkey@3159: bool InitialiseRulesDetours() crimson@3151: { crimson@3151: setInWaitingForPlayersDetour = DETOUR_CREATE_MEMBER(SetInWaitingForPlayers, "SetInWaitingForPlayers"); crimson@3151: crimson@3151: if (setInWaitingForPlayersDetour != NULL) crimson@3151: { crimson@3151: setInWaitingForPlayersDetour->EnableDetour(); skamonkey@3159: return true; crimson@3151: } crimson@3151: crimson@3151: g_pSM->LogError(myself, "No Gameplay Rules detours could be initialized - Disabled Gameplay Rules functions"); skamonkey@3159: return false; crimson@3151: } crimson@3151: crimson@3151: void RemoveRulesDetours() crimson@3151: { crimson@3151: setInWaitingForPlayersDetour->Destroy(); pred@3154: }