📄 ammopickups.cpp
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : AmmoPickups.cpp
//
// PURPOSE : Blood2 Ammunition pickups - implementation
//
// CREATED : 10/24/97
//
// ----------------------------------------------------------------------- //
#include "AmmoPickups.h"
#include "cpp_server_de.h"
#include "SharedDefs.h"
#include "generic_msg_de.h"
#include "ClientRes.h"
// *********************************************************************** //
//
// CLASS: AmmoPickup
//
// PURPOSE: Base Ammo pickup item
//
// *********************************************************************** //
BEGIN_CLASS(AmmoPickup)
END_CLASS_DEFAULT(AmmoPickup, PickupObject, NULL, NULL)
DLink AmmoPickup::m_PUHead;
DDWORD AmmoPickup::m_dwNumPU = 0;
// ----------------------------------------------------------------------- //
//
// ROUTINE: AmmoPickup::EngineMessageFn
//
// PURPOSE: engine msg handler
//
// ----------------------------------------------------------------------- //
DDWORD AmmoPickup::EngineMessageFn(DDWORD messageID, void *pData, float fData)
{
switch(messageID)
{
case MID_INITIALUPDATE:
{
// insert it into the list
dl_Insert( &m_PUHead, &m_Link );
m_Link.m_pData = ( void * )this;
m_dwNumPU++;
if( g_pBloodServerShell->IsMultiplayerGame( ))
{
m_fRespawnTime = ( DFLOAT )g_pBloodServerShell->GetNetGameInfo( )->m_nAmmoRespawn;
if( g_pBloodServerShell->GetNetGameInfo( )->m_nAmmoLevel == LEVEL_NONE )
g_pServerDE->RemoveObject( m_hObject );
else
m_fValueMult = ConvertNetItemMultiplier( g_pBloodServerShell->GetNetGameInfo( )->m_nAmmoLevel );
}
break;
}
}
return PickupObject::EngineMessageFn(messageID, pData, fData);
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: AmmoPickup::ObjectTouch
//
// PURPOSE: handles an object touch
//
// ----------------------------------------------------------------------- //
void AmmoPickup::ObjectTouch(HOBJECT hObject)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return;
HMESSAGEWRITE hMessage = pServerDE->StartMessageToObject(this, hObject, MID_ADDAMMO);
pServerDE->WriteToMessageByte(hMessage, (DBYTE)m_nType);
pServerDE->WriteToMessageFloat(hMessage, m_fValue * m_fValueMult );
pServerDE->EndMessage(hMessage);
}
// *********************************************************************** //
//
// CLASS: BulletAmmoPU
//
// PURPOSE: Bullet
//
// *********************************************************************** //
BEGIN_CLASS(BulletAmmoPU)
END_CLASS_DEFAULT(BulletAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
BulletAmmoPU::BulletAmmoPU() : AmmoPickup()
{
m_nType = AMMO_BULLET;
m_fValue = AMMOCOUNT_BULLET;
m_szFile = "BulletAmmo_pu";
m_szObjectName = "Bullets";
m_nNameID = IDS_AMMO_BULLETS;
}
// *********************************************************************** //
//
// CLASS: ShellAmmoPU
//
// PURPOSE: Shells
//
// *********************************************************************** //
BEGIN_CLASS(ShellAmmoPU)
END_CLASS_DEFAULT(ShellAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
ShellAmmoPU::ShellAmmoPU() : AmmoPickup()
{
m_nType = AMMO_SHELL;
m_fValue = AMMOCOUNT_SHELL;
m_szFile = "ShellAmmo_pu";
m_szObjectName = "Shells";
m_nNameID = IDS_AMMO_SHELLS;
}
// *********************************************************************** //
//
// CLASS: BMGAmmoPU
//
// PURPOSE: Rounds for the sniper rifle
//
// *********************************************************************** //
BEGIN_CLASS(BMGAmmoPU)
END_CLASS_DEFAULT(BMGAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
BMGAmmoPU::BMGAmmoPU() : AmmoPickup()
{
m_nType = AMMO_BMG;
m_fValue = AMMOCOUNT_BMG;
m_szFile = "BMGAmmo_pu";
m_szObjectName = "BMG Rounds";
m_nNameID = IDS_AMMO_BMG;
}
// *********************************************************************** //
//
// CLASS: FlareAmmoPU
//
// PURPOSE: Flares
//
// *********************************************************************** //
BEGIN_CLASS(FlareAmmoPU)
END_CLASS_DEFAULT(FlareAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
FlareAmmoPU::FlareAmmoPU() : AmmoPickup()
{
m_nType = AMMO_FLARE;
m_fValue = AMMOCOUNT_FLARE;
m_szFile = "FlareAmmo_pu";
m_szObjectName = "Flares";
m_nNameID = IDS_AMMO_FLARES;
}
// *********************************************************************** //
//
// CLASS: DieBugDieAmmoPU
//
// PURPOSE: Cans of 'Die Bug Die'
//
// *********************************************************************** //
BEGIN_CLASS(DieBugDieAmmoPU)
END_CLASS_DEFAULT(DieBugDieAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
DieBugDieAmmoPU::DieBugDieAmmoPU() : AmmoPickup()
{
m_nType = AMMO_DIEBUGDIE;
m_fValue = AMMOCOUNT_DIEBUGDIE;
m_szFile = "DieBugDieAmmo_pu";
m_szObjectName = "DieBugDie";
m_nNameID = IDS_AMMO_DIEBUGDIE;
}
// *********************************************************************** //
//
// CLASS: HowitzerAmmoPU
//
// PURPOSE: Grenade/Rocket ammunition
//
// *********************************************************************** //
BEGIN_CLASS(HowitzerAmmoPU)
END_CLASS_DEFAULT(HowitzerAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
HowitzerAmmoPU::HowitzerAmmoPU() : AmmoPickup()
{
m_nType = AMMO_HOWITZER;
m_fValue = AMMOCOUNT_HOWITZER;
m_szFile = "HowitzerAmmo_pu";
m_szObjectName = "Howizter Shells";
m_nNameID = IDS_AMMO_HOWITZER;
}
// *********************************************************************** //
//
// CLASS: FuelAmmoPU
//
// PURPOSE: Fuel tank refill...
//
// *********************************************************************** //
BEGIN_CLASS(FuelAmmoPU)
END_CLASS_DEFAULT(FuelAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
FuelAmmoPU::FuelAmmoPU() : AmmoPickup()
{
m_nType = AMMO_FUEL;
m_fValue = AMMOCOUNT_FUEL;
m_szFile = "FuelAmmo_pu";
m_szObjectName = "FuelTank";
m_nNameID = IDS_AMMO_FUEL;
}
// *********************************************************************** //
//
// CLASS: BatteryAmmoPU
//
// PURPOSE: Chemical Batteries
//
// *********************************************************************** //
BEGIN_CLASS(BatteryAmmoPU)
END_CLASS_DEFAULT(BatteryAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
BatteryAmmoPU::BatteryAmmoPU() : AmmoPickup()
{
m_nType = AMMO_BATTERY;
m_fValue = AMMOCOUNT_BATTERY;
m_szFile = "BatteryAmmo_pu";
m_szObjectName = "Chemical Batteries";
m_nNameID = IDS_AMMO_BATTERY;
}
// *********************************************************************** //
//
// CLASS: ManaAmmoPU
//
// PURPOSE: Mana
//
// *********************************************************************** //
/*
BEGIN_CLASS(ManaAmmoPU)
ADD_REALPROP( Value, 100 )
END_CLASS_DEFAULT(ManaAmmoPU, AmmoPickup, NULL, NULL)
// Constructor
ManaAmmoPU::ManaAmmoPU() : AmmoPickup()
{
m_nType = AMMO_MANA;
m_fValue = 100.0f;
m_szFile = "ManaAmmo_pu";
m_szObjectName = "Mana";
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -