#ifndef __PACKIGC_H_
#define __PACKIGC_H_
class CpackIGC : public IpackIGC
{
public:
CpackIGC(void);
~CpackIGC(void);
virtual HRESULT Initialize(ImissionIGC* pMission, Time now, const void* data, int dataSize);
virtual void Terminate(void);
virtual ObjectType GetObjectType(void) const
{
return OT_pack;
}
virtual ImissionIGC* GetMission(void) const
{
return m_pMission;
}
virtual EquipmentType GetEquipmentType(void) const
{
return ET_Pack;
}
virtual IpartTypeIGC* GetPartType(void) const
{
return m_partType;
}
virtual IshipIGC* GetShip(void) const
{
return m_pship;
}
virtual void SetShip(IshipIGC* newVal, Mount mount);
virtual Mount GetMountID(void) const
{
return m_mountID;
}
virtual void SetMountID(Mount newVal);
virtual bool fActive(void) const
{
return false;
}
virtual void Activate(void)
{
}
virtual void Deactivate(void)
{
}
virtual float GetMass(void) const
{
return 0.0f;
}
virtual Money GetPrice(void) const
{
return 0;
}
virtual float GetMountedFraction(void) const
{
return 1.0f;
}
virtual void SetMountedFraction(float f)
{
}
virtual void Arm(void)
{
}
virtual PackType GetPackType(void) const
{
return m_typeData->packType;
}
virtual void SetAmount(short a)
{
if (m_pship)
{
const IhullTypeIGC* pht = m_pship->GetHullType();
short maxAmount;
if (m_typeData->packType == c_packAmmo)
{
maxAmount = pht->GetMaxAmmo();
}
else
{
assert (m_typeData->packType == c_packFuel);
maxAmount = short(pht->GetMaxFuel());
}
if (a > maxAmount)
a = maxAmount;
}
m_amount = a;
}
virtual short GetAmount(void) const
{
return m_amount;
}
private:
ImissionIGC* m_pMission;
const DataPackTypeIGC* m_typeData;
IpartTypeIGC* m_partType;
IshipIGC* m_pship;
short m_amount;
Mount m_mountID;
};
#endif