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: }