/*
** Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
**
** File: trainingmission.h
**
** Author:
**
** Description:
** Header file for the training library "trainingmission" interface.
**
** History:
*/
#ifndef _TRAINING_MISSION_H_
#define _TRAINING_MISSION_H_
#ifndef _GOAL_H_
#include "Goal.h"
#endif //_GOAL_H_
namespace Training
{
//------------------------------------------------------------------------------
// class definitions
//------------------------------------------------------------------------------
class TrainingMission
{
public:
/* void */ TrainingMission (void);
virtual /* void */ ~TrainingMission (void);
virtual int GetMissionID (void) = 0;
virtual SectorID GetStartSectorID (void) = 0;
virtual void SetupShipAndCamera (void);
void Start (void);
bool Frame (void);
void Terminate (void);
void AddWaitCondition (Condition* pWaitCondition);
virtual bool RecordKeyPress (TrekKey key);
void AddKeyCondition (Condition* pKeyCondition);
void RecordChat (ChatTarget recipient);
void SetChatCondition (Condition* pChatCondition);
virtual bool ShipLanded (void);
virtual void ShipDied (ImodelIGC* pLauncher);
virtual bool RestoreShip (void);
IshipIGC* GetCommanderShip (void) const;
void AddPartToShip (IshipIGC* pShip, PartID part, Mount mount, short ammo = 0);
void AddPartToShip (PartID part, Mount mount, short ammo = 0);
IshipIGC* CreateDrone (const ZString& name, ShipID shipID, HullID hullID, SideID sideID, PilotType pilotType);
void SetSkipPostSlideshow (void);
protected:
virtual void CreateUniverse (void) = 0;
virtual Condition* CreateMission (void) = 0;
void LoadUniverse (const ZString& name, HullID hullID, StationID homeStationID);
void DefaultLoadout (IshipIGC* pShip);
void CreatePlayerInfo (IshipIGC* pShip, SideID side, ShipID shipID);
Goal* CreatePlaySoundGoal (SoundID sound);
Condition* CreateTooCloseCondition (TRef<ImodelIGC> place);
Condition* CreateTooLongCondition (float fDelay, SoundID sound);
protected:
Condition* m_pCondition;
Condition* m_pDeadCondition;
std::list<Condition*> m_WaitConditionList;
std::list<Condition*> m_KeyConditionList;
Condition* m_pChatCondition;
bool m_bMusicWasOn;
float m_fHUDStyle;
ObjectID m_commanderID;
SectorID m_deadSectorID;
TrekWindow::ViewMode m_deadViewMode;
TrekWindow::CameraMode m_deadCameraMode;
bool m_bSkipPostSlideShow;
};
//------------------------------------------------------------------------------
}
#endif //_TRAINING_MISSION_H_