/* ** Copyright (C) 1996, 1997 Microsoft Corporation. All Rights Reserved. ** ** File: stationTypeIGC.h ** ** Author: ** ** Description: ** Header for the CstationTypeIGC class. This file was initially created by ** the ATL wizard. ** ** History: */ // stationTypeIGC.h : Declaration of the CstationTypeIGC #ifndef __STATIONTYPEIGC_H_ #define __STATIONTYPEIGC_H_ ///////////////////////////////////////////////////////////////////////////// // CstationTypeIGC class CstationTypeIGC : public IstationTypeIGC { public: CstationTypeIGC(void) : m_pstSuccessor(NULL) { } ~CstationTypeIGC(void) { } /* DWORD __stdcall AddRef(void) { return IstationTypeIGC::AddRef(); } DWORD __stdcall Release(void) { return IstationTypeIGC::Release(); } */ public: // IbaseIGC virtual HRESULT Initialize(ImissionIGC* pMission, Time now, const void* data, int dataSize); virtual void Terminate(void); virtual int Export(void* data) const; virtual ObjectType GetObjectType(void) const { return OT_stationType; } virtual ObjectID GetObjectID(void) const { return m_data.stationTypeID; } // ItypeIGC virtual const void* GetData(void) const { return &m_data; } // IbuyableIGC virtual const char* GetModelName(void) const { return m_data.modelName; } virtual const char* GetName(void) const { return m_data.name; } virtual const char* GetDescription(void) const { return m_data.description; } virtual Money GetPrice(void) const { return m_data.price; } virtual BuyableGroupID GetGroupID(void) const { return m_data.groupID; }; virtual const TechTreeBitMask& GetRequiredTechs(void) const { return m_data.ttbmRequired; } virtual const TechTreeBitMask& GetEffectTechs(void) const { return m_data.ttbmEffects; } virtual DWORD GetTimeToBuild(void) const { return m_data.timeToBuild; } // IstationTypeIGC virtual float GetSignature(void) const { return m_data.signature; } virtual float GetRadius(void) const { return m_data.radius; } virtual float GetScannerRange(void) const { return m_data.scannerRange; } virtual HitPoints GetMaxArmorHitPoints(void) const { return m_data.maxArmorHitPoints; } virtual DefenseTypeID GetArmorDefenseType(void) const { return m_data.defenseTypeArmor; } virtual HitPoints GetMaxShieldHitPoints(void) const { return m_data.maxShieldHitPoints; } virtual DefenseTypeID GetShieldDefenseType(void) const { return m_data.defenseTypeShield; } virtual float GetArmorRegeneration(void) const { return m_data.armorRegeneration; } virtual float GetShieldRegeneration(void) const { return m_data.shieldRegeneration; } virtual Money GetIncome(void) const { return m_data.income; } virtual const TechTreeBitMask& GetLocalTechs(void) const { return m_data.ttbmLocal; } virtual StationAbilityBitMask GetCapabilities(void) const { return m_data.sabmCapabilities; } bool HasCapability(StationAbilityBitMask sabm) const { return (m_data.sabmCapabilities & sabm) != 0; } virtual const char* GetTextureName(void) const { return m_data.textureName; } virtual const char* GetBuilderName(void) const { return m_data.builderName; } virtual const char* GetIconName(void) const { return m_data.iconName; } virtual IstationTypeIGC* GetSuccessorStationType(const IsideIGC* pside) { //The successor can be built if: // we have one, and // the required bits are a subset of the side tech bits and the required bits for this station // (on the logic that, if we have this station, we had the tech bits at one time) if (m_pstSuccessor != NULL) { if (m_pstSuccessor->GetRequiredTechs() <= (m_data.ttbmRequired | pside->GetDevelopmentTechs())) return m_pstSuccessor->GetSuccessorStationType(pside); } return this; } virtual AsteroidAbilityBitMask GetBuildAABM(void) const { return m_data.aabmBuild; } virtual int GetLaunchSlots(void) const { return m_nLaunchSlots; } virtual const Vector& GetLaunchPosition(int slotID) const { assert (slotID >= 0); assert (slotID < m_nLaunchSlots); return m_positionLaunches[slotID]; } virtual const Vector& GetLaunchDirection(int slotID) const { assert (slotID >= 0); assert (slotID < m_nLaunchSlots); return m_directionLaunches[slotID]; } virtual int GetLandSlots(void) const { return m_nLandSlots; } virtual int GetCapLandSlots(void) const { return m_nCapLandSlots; } virtual int GetLandPlanes(int slotID) const { assert (slotID >= 0); assert (slotID < m_nLandSlots); return m_nLandPlanes[slotID]; } virtual const Vector& GetLandPosition(int slotID, int planeID) const { assert (slotID >= 0); assert (slotID < m_nLandSlots); assert (planeID >= 0); assert (planeID <= m_nLandPlanes[slotID]); return m_positionLandPlanes[slotID][planeID]; } virtual const Vector& GetLandDirection(int slotID, int planeID) const { assert (slotID >= 0); assert (slotID < m_nLandSlots); assert (planeID >= 0); assert (planeID <= m_nLandPlanes[slotID]); return m_directionLandPlanes[slotID][planeID]; } virtual SoundID GetInteriorSound() const { return m_data.interiorSound; } virtual SoundID GetInteriorAlertSound() const { return m_data.interiorAlertSound; } virtual SoundID GetExteriorSound() const { return m_data.exteriorSound; } virtual SoundID GetConstructorNeedRockSound() const { return m_data.constructorNeedRockSound; } virtual SoundID GetConstructorUnderAttackSound() const { return m_data.constructorUnderAttackSound; } virtual SoundID GetConstructorDestroyedSound() const { return m_data.constructorDestroyedSound; } virtual SoundID GetCompletionSound() const { return m_data.completionSound; } virtual SoundID GetUnderAttackSound() const { return m_data.underAttackSound; } virtual SoundID GetCriticalSound() const { return m_data.criticalSound; } virtual SoundID GetDestroyedSound() const { return m_data.destroyedSound; } virtual SoundID GetCapturedSound() const { return m_data.capturedSound; } virtual SoundID GetEnemyCapturedSound() const { return m_data.enemyCapturedSound; } virtual SoundID GetEnemyDestroyedSound() const { return m_data.enemyDestroyedSound; } virtual StationClassID GetClassID() const { return m_data.classID; } virtual IdroneTypeIGC* GetConstructionDroneType(void) const { return m_pdtConstruction; } private: ImissionIGC* m_pMission; DataStationTypeIGC m_data; IdroneTypeIGC* m_pdtConstruction; IstationTypeIGC* m_pstSuccessor; int m_nLaunchSlots; Vector m_positionLaunches[c_maxLaunchSlots]; Vector m_directionLaunches[c_maxLaunchSlots]; int m_nLandSlots; int m_nCapLandSlots; int m_nLandPlanes[c_maxLandSlots]; Vector m_positionLandPlanes[c_maxLandSlots][c_maxLandPlanes]; Vector m_directionLandPlanes[c_maxLandSlots][c_maxLandPlanes]; }; #endif //__STATIONTYPEIGC_H_