ReGameDLL_CS/regamedll/dlls/subs.cpp
2015-08-20 17:24:18 +06:00

418 lines
11 KiB
C++

#include "precompiled.h"
/*
* Globals initialization
*/
#ifndef HOOK_GAMEDLL
TYPEDESCRIPTION CBaseDelay::m_SaveData[] =
{
DEFINE_FIELD(CBaseDelay, m_flDelay, FIELD_FLOAT),
DEFINE_FIELD(CBaseDelay, m_iszKillTarget, FIELD_STRING),
};
TYPEDESCRIPTION CBaseToggle::m_SaveData[] =
{
DEFINE_FIELD(CBaseToggle, m_toggle_state, FIELD_INTEGER),
DEFINE_FIELD(CBaseToggle, m_flActivateFinished, FIELD_TIME),
DEFINE_FIELD(CBaseToggle, m_flMoveDistance, FIELD_FLOAT),
DEFINE_FIELD(CBaseToggle, m_flWait, FIELD_FLOAT),
DEFINE_FIELD(CBaseToggle, m_flLip, FIELD_FLOAT),
DEFINE_FIELD(CBaseToggle, m_flTWidth, FIELD_FLOAT),
DEFINE_FIELD(CBaseToggle, m_flTLength, FIELD_FLOAT),
DEFINE_FIELD(CBaseToggle, m_vecPosition1, FIELD_POSITION_VECTOR),
DEFINE_FIELD(CBaseToggle, m_vecPosition2, FIELD_POSITION_VECTOR),
DEFINE_FIELD(CBaseToggle, m_vecAngle1, FIELD_VECTOR),
DEFINE_FIELD(CBaseToggle, m_vecAngle2, FIELD_VECTOR),
DEFINE_FIELD(CBaseToggle, m_cTriggersLeft, FIELD_INTEGER),
DEFINE_FIELD(CBaseToggle, m_flHeight, FIELD_FLOAT),
DEFINE_FIELD(CBaseToggle, m_hActivator, FIELD_EHANDLE),
DEFINE_FIELD(CBaseToggle, m_pfnCallWhenMoveDone, FIELD_FUNCTION),
DEFINE_FIELD(CBaseToggle, m_vecFinalDest, FIELD_POSITION_VECTOR),
DEFINE_FIELD(CBaseToggle, m_vecFinalAngle, FIELD_VECTOR),
DEFINE_FIELD(CBaseToggle, m_sMaster, FIELD_STRING),
DEFINE_FIELD(CBaseToggle, m_bitsDamageInflict, FIELD_INTEGER),
};
#else // HOOK_GAMEDLL
TYPEDESCRIPTION (*CBaseDelay::pm_SaveData)[2];
TYPEDESCRIPTION (*CBaseToggle::pm_SaveData)[19];
#endif // HOOK_GAMEDLL
/* <1832bc> ../cstrike/dlls/subs.cpp:38 */
NOBODY void CPointEntity::__MAKE_VHOOK(Spawn)(void)
{
}
/* <183417> ../cstrike/dlls/subs.cpp:53 */
NOBODY void CNullEntity::__MAKE_VHOOK(Spawn)(void)
{
}
/* <1838f5> ../cstrike/dlls/subs.cpp:57 */
LINK_ENTITY_TO_CLASS(info_null, CNullEntity);
/* <1839f1> ../cstrike/dlls/subs.cpp:69 */
LINK_ENTITY_TO_CLASS(info_player_deathmatch, CBaseDMStart);
/* <183aed> ../cstrike/dlls/subs.cpp:70 */
LINK_ENTITY_TO_CLASS(info_player_start, CPointEntity);
/* <183bb7> ../cstrike/dlls/subs.cpp:71 */
LINK_ENTITY_TO_CLASS(info_vip_start, CBaseDMStart);
/* <183c81> ../cstrike/dlls/subs.cpp:72 */
LINK_ENTITY_TO_CLASS(info_landmark, CPointEntity);
/* <183d4b> ../cstrike/dlls/subs.cpp:75 */
LINK_ENTITY_TO_CLASS(info_hostage_rescue, CPointEntity);
/* <183e15> ../cstrike/dlls/subs.cpp:77 */
LINK_ENTITY_TO_CLASS(info_bomb_target, CPointEntity);
/* <183647> ../cstrike/dlls/subs.cpp:79 */
NOBODY void CBaseDMStart::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
{
// FStrEq(const char *sz1,
// const char *sz2); // 81
// KeyValue(CBaseEntity *const this,
// KeyValueData *pkvd); // 87
// KeyValue(CBaseDMStart *const this,
// KeyValueData *pkvd); // 79
}
/* <18331c> ../cstrike/dlls/subs.cpp:90 */
NOBODY BOOL CBaseDMStart::__MAKE_VHOOK(IsTriggered)(CBaseEntity *pEntity)
{
// {
// BOOL master; // 92
// }
}
/* <183f03> ../cstrike/dlls/subs.cpp:98 */
void CBaseEntity::UpdateOnRemove(void)
{
if (pev->flags & FL_GRAPHED)
{
for (int i = 0; i < WorldGraph.m_cLinks; i++)
{
if (WorldGraph.m_pLinkPool[i].m_pLinkEnt == pev)
WorldGraph.m_pLinkPool[i].m_pLinkEnt = NULL;
}
}
if (pev->globalname)
{
gGlobalState.EntitySetState(pev->globalname, GLOBAL_DEAD);
}
}
/* <183f38> ../cstrike/dlls/subs.cpp:120 */
void CBaseEntity::SUB_Remove(void)
{
UpdateOnRemove();
if (pev->health > 0)
{
pev->health = 0;
ALERT(at_aiconsole, "SUB_Remove called on entity with health > 0\n");
}
REMOVE_ENTITY(ENT(pev));
}
/* <183f8a> ../cstrike/dlls/subs.cpp:135 */
void CBaseEntity::SUB_DoNothing(void)
{
;
}
/* <183523> ../cstrike/dlls/subs.cpp:147 */
IMPLEMENT_SAVERESTORE(CBaseDelay, CBaseEntity);
/* <18356f> ../cstrike/dlls/subs.cpp:149 */
void CBaseDelay::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
{
if (FStrEq(pkvd->szKeyName, "delay"))
{
m_flDelay = Q_atof(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "killtarget"))
{
m_iszKillTarget = ALLOC_STRING(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else
CBaseEntity::KeyValue(pkvd);
}
/* <1840d5> ../cstrike/dlls/subs.cpp:183 */
void CBaseEntity::SUB_UseTargets(CBaseEntity *pActivator, USE_TYPE useType, float value)
{
if (!FStringNull(pev->target))
FireTargets(STRING(pev->target), pActivator, this, useType, value);
}
/* <183fb0> ../cstrike/dlls/subs.cpp:195 */
void FireTargets(const char *targetName, CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
{
edict_t *pentTarget = NULL;
if (!targetName)
return;
ALERT(at_aiconsole, "Firing: (%s)\n", targetName);
while (1)
{
pentTarget = FIND_ENTITY_BY_TARGETNAME(pentTarget, targetName);
if (FNullEnt(pentTarget))
break;
CBaseEntity *pTarget = CBaseEntity::Instance(pentTarget);
if (pTarget && !(pTarget->pev->flags & FL_KILLME))
{
ALERT(at_aiconsole, "Found: %s, firing (%s)\n", STRING(pTarget->pev->classname), targetName);
pTarget->Use(pActivator, pCaller, useType, value);
}
}
}
/* <1843f8> ../cstrike/dlls/subs.cpp:249 */
LINK_ENTITY_TO_CLASS(DelayedUse, CBaseDelay);
/* <1844c2> ../cstrike/dlls/subs.cpp:252 */
void CBaseDelay::SUB_UseTargets(CBaseEntity *pActivator, USE_TYPE useType, float value)
{
if (!pev->target && !m_iszKillTarget)
return;
if (!m_flDelay)
{
if (m_iszKillTarget)
{
ALERT(at_aiconsole, "KillTarget: %s\n", STRING(m_iszKillTarget));
edict_t *pentKillTarget = FIND_ENTITY_BY_TARGETNAME(NULL, STRING(m_iszKillTarget));
while (!FNullEnt(pentKillTarget))
{
UTIL_Remove(CBaseEntity::Instance(pentKillTarget));
ALERT(at_aiconsole, "killing %s\n", STRING(pentKillTarget->v.classname));
pentKillTarget = FIND_ENTITY_BY_TARGETNAME(pentKillTarget, STRING(m_iszKillTarget));
}
}
if (pev->target)
FireTargets(STRING(pev->target), pActivator, this, useType, value);
}
else
{
CBaseDelay *pTemp = GetClassPtr((CBaseDelay *)NULL);
if (pTemp->pev->classname)
RemoveEntityHashValue(pTemp->pev, STRING(pTemp->pev->classname), CLASSNAME);
MAKE_STRING_CLASS("DelayedUse", pTemp->pev);
AddEntityHashValue(pTemp->pev, STRING(pTemp->pev->classname), CLASSNAME);
pTemp->pev->nextthink = gpGlobals->time + m_flDelay;
pTemp->SetThink(&CBaseDelay::DelayThink);
pTemp->pev->button = (int)useType;
pTemp->m_iszKillTarget = m_iszKillTarget;
pTemp->m_flDelay = 0.0f;
pTemp->pev->target = pev->target;
if (pActivator && pActivator->IsPlayer())
pTemp->pev->owner = pActivator->edict();
else
pTemp->pev->owner = NULL;
}
}
/* <1846d9> ../cstrike/dlls/subs.cpp:335 */
void SetMovedir(entvars_t *pev)
{
if (pev->angles == Vector(0, -1, 0))
pev->movedir = Vector(0, 0, 1);
else if (pev->angles == Vector(0, -2, 0))
pev->movedir = Vector(0, 0, -1);
else
{
UTIL_MakeVectors(pev->angles);
pev->movedir = gpGlobals->v_forward;
}
pev->angles = g_vecZero;
}
/* <184158> ../cstrike/dlls/subs.cpp:357 */
void CBaseDelay::DelayThink(void)
{
CBaseEntity *pActivator = NULL;
if (pev->owner)
pActivator = CBaseEntity::Instance(pev->owner);
SUB_UseTargets(pActivator, (USE_TYPE)pev->button, 0.0f);
REMOVE_ENTITY(ENT(pev));
}
/* <1834d6> ../cstrike/dlls/subs.cpp:394 */
IMPLEMENT_SAVERESTORE(CBaseToggle, CBaseAnimating);
/* <1836dc> ../cstrike/dlls/subs.cpp:397 */
void CBaseToggle::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
{
if (FStrEq(pkvd->szKeyName, "lip"))
{
m_flLip = Q_atof(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "wait"))
{
m_flWait = Q_atof(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "master"))
{
m_sMaster = ALLOC_STRING(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "distance"))
{
m_flMoveDistance = Q_atof(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else
CBaseDelay::KeyValue(pkvd);
}
/* <18474d> ../cstrike/dlls/subs.cpp:431 */
NOBODY void CBaseToggle::LinearMove(Vector vecDest, float flSpeed)
{
// {
// class Vector vecDestDelta; // 446
// float flTravelTime; // 449
// operator==(const class Vector *const this,
// const class Vector &v); // 439
// operator-(const class Vector *const this,
// const class Vector &v); // 446
// Length(const class Vector *const this); // 449
// operator/(const class Vector *const this,
// float fl); // 456
// LinearMoveDone(CBaseToggle *const this); // 441
// }
}
/* <18337e> ../cstrike/dlls/subs.cpp:465 */
NOBODY void CBaseToggle::LinearMoveDone(void)
{
}
/* <184855> ../cstrike/dlls/subs.cpp:474 */
NOBODY BOOL CBaseToggle::IsLockedByMaster(void)
{
}
/* <18487c> ../cstrike/dlls/subs.cpp:491 */
NOBODY void CBaseToggle::AngularMove(Vector vecDestAngle, float flSpeed)
{
// {
// class Vector vecDestDelta; // 506
// float flTravelTime; // 509
// operator==(const class Vector *const this,
// const class Vector &v); // 499
// operator-(const class Vector *const this,
// const class Vector &v); // 506
// Length(const class Vector *const this); // 509
// operator/(const class Vector *const this,
// float fl); // 516
// AngularMoveDone(CBaseToggle *const this); // 501
// }
}
/* <1832fb> ../cstrike/dlls/subs.cpp:525 */
NOBODY void CBaseToggle::AngularMoveDone(void)
{
}
/* <184984> ../cstrike/dlls/subs.cpp:535 */
NOBODY float CBaseToggle::AxisValue(int flags, Vector &angles)
{
}
/* <1849bd> ../cstrike/dlls/subs.cpp:546 */
NOBODY void CBaseToggle::AxisDir(entvars_t *pev)
{
}
/* <1849e3> ../cstrike/dlls/subs.cpp:557 */
NOBODY float CBaseToggle::AxisDelta(int flags, Vector &angle1, Vector &angle2)
{
}
/* <184a30> ../cstrike/dlls/subs.cpp:577 */
NOBODY BOOL FEntIsVisible(entvars_t *pev, entvars_t *pevTarget)
{
// {
// class Vector vecSpot1; // 581
// class Vector vecSpot2; // 582
// TraceResult tr; // 583
// operator+(const class Vector *const this,
// const class Vector &v); // 581
// operator+(const class Vector *const this,
// const class Vector &v); // 582
// }
}
#ifdef HOOK_GAMEDLL
void CNullEntity::Spawn(void)
{
Spawn_();
}
void CPointEntity::Spawn(void)
{
Spawn_();
}
void CBaseDelay::KeyValue(KeyValueData *pkvd)
{
KeyValue_(pkvd);
}
int CBaseDelay::Save(CSave &save)
{
return Save_(save);
}
int CBaseDelay::Restore(CRestore &restore)
{
return Restore_(restore);
}
void CBaseToggle::KeyValue(KeyValueData *pkvd)
{
KeyValue_(pkvd);
}
int CBaseToggle::Save(CSave &save)
{
return Save_(save);
}
int CBaseToggle::Restore(CRestore &restore)
{
return Restore_(restore);
}
void CBaseDMStart::KeyValue(KeyValueData *pkvd)
{
KeyValue_(pkvd);
}
BOOL CBaseDMStart::IsTriggered(CBaseEntity *pEntity)
{
return IsTriggered_(pEntity);
}
#endif // HOOK_GAMEDLL