/* ** Copyright (C) 1996, 1997 Microsoft Corporation. All Rights Reserved. ** ** File: afterburnerIGC.h ** ** Author: ** ** Description: ** Header for the CafterburnerIGC class. This file was initially created by ** the ATL wizard. ** ** History: */ // afterburnerIGC.h : Declaration of the CafterburnerIGC #ifndef __AFTERBURNERIGC_H_ #define __AFTERBURNERIGC_H_ ///////////////////////////////////////////////////////////////////////////// // CafterburnerIGC class CafterburnerIGC : public IafterburnerIGC { public: CafterburnerIGC(void); // IbaseIGC virtual HRESULT Initialize(ImissionIGC* pMission, Time now, const void* data, int dataSize); virtual void Terminate(void); virtual void Update(Time now); virtual ObjectType GetObjectType(void) const { return OT_afterburner; } virtual ImissionIGC* GetMission(void) const { return m_pMission; } // IpartIGC virtual EquipmentType GetEquipmentType(void) const { return ET_Afterburner; } virtual IpartTypeIGC* GetPartType(void) const { return m_partType; } virtual IshipIGC* GetShip(void) const { return m_ship; } 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 m_fActive; } virtual void Activate(void) { assert (m_ship); if (!m_fActive) { m_ship->ChangeSignature(m_typeData->signature); m_fActive = true; m_power = 0.0f; } } virtual void Deactivate(void) { assert (m_ship); if (m_fActive) { m_ship->ChangeSignature(-m_typeData->signature); m_fActive = false; m_power = 0.0f; } } virtual void Reset() { } virtual float GetMass(void) const { return m_typeData->mass; } virtual Money GetPrice(void) const { return m_typeData->price; } // IafterburnerIGC virtual float GetFuelConsumption(void) const { return m_typeData->fuelConsumption; } virtual float GetMaxThrust(void) const { return m_typeData->maxThrust; } virtual float GetOnRate(void) const { return m_typeData->onRate; } virtual float GetOffRate(void) const { return m_typeData->offRate; } virtual float GetPower(void) const { return m_power; } virtual void SetPower(float p) { assert (p >= 0.0f); assert (p <= 1.0f); if (p != 0.0f) Activate(); m_power = p; } virtual void IncrementalUpdate(Time lastUpdate, Time now, bool bUseFuel); virtual SoundID GetInteriorSound(void) const { return m_typeData->interiorSound; } virtual SoundID GetExteriorSound(void) const { return m_typeData->exteriorSound; } virtual float GetMountedFraction(void) const { return m_mountedFraction; } virtual void SetMountedFraction(float f) { m_mountedFraction = f; if (f != 1.0f) Deactivate(); } virtual void Arm(void) { m_mountedFraction = 1.0f; } private: ImissionIGC* m_pMission; const DataAfterburnerTypeIGC* m_typeData; IpartTypeIGC* m_partType; IshipIGC* m_ship; float m_power; float m_mountedFraction; Mount m_mountID; bool m_fActive; }; #endif //__AFTERBURNERIGC_H_