diff -r 4c81256cac43 -r 4e1591dceb8d extensions/tf2/holiday.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/tf2/holiday.cpp Mon Jun 28 17:48:14 2010 -0400 @@ -0,0 +1,77 @@ +/** + * vim: set ts=4 : + * ============================================================================= + * SourceMod Team Fortress 2 Extension + * 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 . + * + * 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 . + * + * Version: $Id$ + */ + +#include "holiday.h" + +CDetour *getHolidayDetour = NULL; + +IForward *g_getHolidayForward = NULL; + +DETOUR_DECL_MEMBER0(GetHoliday, int) +{ + int actualres = DETOUR_MEMBER_CALL(GetHoliday)(); + if (!g_getHolidayForward) + { + g_pSM->LogMessage(myself, "Invalid Forward"); + return actualres; + } + + cell_t result = 0; + int newres = actualres; + + g_getHolidayForward->PushCellByRef(&newres); + g_getHolidayForward->Execute(&result); + + if (result == Pl_Changed) + { + return newres; + } + + return actualres; +} + +void InitialiseGetHolidayDetour() +{ + getHolidayDetour = DETOUR_CREATE_MEMBER(GetHoliday, "GetHoliday"); + + if (!getHolidayDetour) + { + g_pSM->LogError(myself, "GetHoliday detour failed"); + return; + } + + getHolidayDetour->EnableDetour(); +} + +void RemoveGetHolidayDetour() +{ + getHolidayDetour->Destroy(); +} \ No newline at end of file