/* * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * 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, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. * */ #include "precompiled.h" TYPEDESCRIPTION CRevertSaved::m_SaveData[] = { DEFINE_FIELD(CRevertSaved, m_messageTime, FIELD_FLOAT), // These are not actual times, but durations, so save as floats DEFINE_FIELD(CRevertSaved, m_loadTime, FIELD_FLOAT), }; LINK_ENTITY_TO_CLASS(player_loadsaved, CRevertSaved, CCSRevertSaved) IMPLEMENT_SAVERESTORE(CRevertSaved, CPointEntity) void CRevertSaved::KeyValue(KeyValueData *pkvd) { if (FStrEq(pkvd->szKeyName, "duration")) { SetDuration(Q_atof(pkvd->szValue)); pkvd->fHandled = TRUE; } else if (FStrEq(pkvd->szKeyName, "holdtime")) { SetHoldTime(Q_atof(pkvd->szValue)); pkvd->fHandled = TRUE; } else if (FStrEq(pkvd->szKeyName, "messagetime")) { SetMessageTime(Q_atof(pkvd->szValue)); pkvd->fHandled = TRUE; } else if (FStrEq(pkvd->szKeyName, "loadtime")) { SetLoadTime(Q_atof(pkvd->szValue)); pkvd->fHandled = TRUE; } else { CPointEntity::KeyValue(pkvd); } } void CRevertSaved::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value) { UTIL_ScreenFadeAll(pev->rendercolor, Duration(), HoldTime(), int(pev->renderamt), FFADE_OUT); pev->nextthink = gpGlobals->time + MessageTime(); SetThink(&CRevertSaved::MessageThink); } void CRevertSaved::MessageThink() { float flNextThink = LoadTime() - MessageTime(); UTIL_ShowMessageAll(pev->message); if (flNextThink > 0) { pev->nextthink = gpGlobals->time + flNextThink; SetThink(&CRevertSaved::LoadThink); return; } LoadThink(); } void CRevertSaved::LoadThink() { if (!gpGlobals->deathmatch) { SERVER_COMMAND("reload\n"); } }