#ifndef __PROBETYPEIGC_H_
#define __PROBETYPEIGC_H_
class CprobeTypeIGC : public IprobeTypeIGC
{
#ifdef _DEBUG_CprobeTypeIGC_AddRef_Release
public:
DWORD __stdcall AddRef(void)
{
DWORD dwRefs = IprobeTypeIGC::AddRef();
debugf("CprobeTypeIGC::AddRef(): m_count = %d\n", dwRefs);
return dwRefs;
}
DWORD __stdcall Release(void)
{
DWORD dwRefs = IprobeTypeIGC::Release();
debugf("CprobeTypeIGC::Release(): m_count = %d\n", dwRefs);
return dwRefs;
}
#endif public:
CprobeTypeIGC(void)
:
m_projectileType(NULL)
{
}
~CprobeTypeIGC(void)
{
assert (m_projectileType == NULL);
}
virtual HRESULT Initialize(ImissionIGC* pMission, Time now, const void* data, int dataSize);
virtual void Terminate(void)
{
if (m_projectileType)
{
m_projectileType->Release();
m_projectileType = NULL;
}
m_pMission->DeleteExpendableType(this);
}
virtual void Update(Time now)
{
}
virtual int Export(void* data) const;
virtual ObjectType GetObjectType(void) const
{
return OT_probeType;
}
virtual ObjectID GetObjectID(void) const
{
return m_data.expendabletypeID;
}
virtual const void* GetData(void) const
{
return &m_data;
}
virtual const LauncherDef* GetLauncherDef(void) const
{
return &(m_data.launcherDef);
}
virtual EquipmentType GetEquipmentType(void) const
{
return ET_Dispenser;
}
virtual float GetLoadTime(void) const
{
return m_data.loadTime;
}
virtual float GetMass(void) const
{
return m_data.launcherDef.mass;
}
virtual float GetLifespan(void) const
{
return m_data.lifespan;
}
virtual float GetSignature(void) const
{
return m_data.signature;
}
virtual HitPoints GetHitPoints(void) const
{
return m_data.hitPoints;
}
virtual DefenseTypeID GetDefenseType(void) const
{
return m_data.defenseType;
}
virtual char const* GetName(void) const
{
return m_data.launcherDef.name;
}
virtual char const* GetModelName(void) const
{
return m_data.modelName;
}
virtual char const* GetModelTexture(void) const
{
return m_data.textureName;
}
virtual float GetRadius(void) const
{
return m_data.radius;
}
virtual ExpendableAbilityBitMask GetCapabilities(void) const
{
return m_data.eabmCapabilities;
}
virtual bool HasCapability(ExpendableAbilityBitMask eabm) const
{
return (m_data.eabmCapabilities & eabm) != 0;
}
virtual float GetScannerRange(void) const
{
return m_data.scannerRange;
}
virtual float GetDtBurst(void) const
{
return m_data.dtimeBurst;
}
virtual float GetDispersion(void) const
{
return m_data.dispersion;
}
virtual float GetAccuracy(void) const
{
return m_data.accuracy;
}
virtual short GetAmmo(void) const
{
return m_data.ammo;
}
virtual IprojectileTypeIGC* GetProjectileType(void) const
{
return m_projectileType;
}
virtual const Vector& GetEmissionPt(void) const
{
return m_emissionPt;
}
virtual float GetRipcordDelay(void) const
{
return m_data.dtRipcord;
}
virtual SoundID GetAmbientSound(void) const
{
return m_data.ambientSound;
}
private:
ImissionIGC* m_pMission;
DataProbeTypeIGC m_data;
Vector m_emissionPt;
IprojectileTypeIGC* m_projectileType;
};
#endif