123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707 |
- #ifndef OBJECTIVE_H
- #define OBJECTIVE_H
- /*************************************************************************************************\
- Objective.h : Interface for the Objective component.
- //---------------------------------------------------------------------------//
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- //===========================================================================//
- \*************************************************************************************************/
- #include "elist.h"
- #include "EString.h"
- #include "tchar.h"
- class EditorObject;
- class Unit;
- class FitIniFile;
- //*************************************************************************************************
- /**************************************************************************************************
- CLASS DESCRIPTION
- CObjectiveCondition:
- **************************************************************************************************/
- enum condition_species_type {
- DESTROY_ALL_ENEMY_UNITS,
- DESTROY_NUMBER_OF_ENEMY_UNITS,
- DESTROY_ENEMY_UNIT_GROUP,
- DESTROY_SPECIFIC_ENEMY_UNIT,
- DESTROY_SPECIFIC_STRUCTURE,
- CAPTURE_OR_DESTROY_ALL_ENEMY_UNITS,
- CAPTURE_OR_DESTROY_NUMBER_OF_ENEMY_UNITS,
- CAPTURE_OR_DESTROY_ENEMY_UNIT_GROUP,
- CAPTURE_OR_DESTROY_SPECIFIC_ENEMY_UNIT,
- CAPTURE_OR_DESTROY_SPECIFIC_STRUCTURE,
- DEAD_OR_FLED_ALL_ENEMY_UNITS,
- DEAD_OR_FLED_NUMBER_OF_ENEMY_UNITS,
- DEAD_OR_FLED_ENEMY_UNIT_GROUP,
- DEAD_OR_FLED_SPECIFIC_ENEMY_UNIT,
- CAPTURE_UNIT,
- CAPTURE_STRUCTURE,
- GUARD_SPECIFIC_UNIT,
- GUARD_SPECIFIC_STRUCTURE,
- MOVE_ANY_UNIT_TO_AREA,
- MOVE_ALL_UNITS_TO_AREA,
- MOVE_ALL_SURVIVING_UNITS_TO_AREA,
- MOVE_ALL_SURVIVING_MECHS_TO_AREA,
- BOOLEAN_FLAG_IS_SET,
- ELAPSED_MISSION_TIME,
- NUM_CONDITION_SPECIES
- };
- static const char *g_conditionSpeciesStringArray[] = {
- "DestroyAllEnemyUnits",
- "DestroyNumberOfEnemyUnits",
- "DestroyEnemyUnitGroup",
- "DestroySpecificEnemyUnit",
- "DestroySpecificStructure",
- "CaptureOrDestroyAllEnemyUnits",
- "CaptureOrDestroyNumberOfEnemyUnits",
- "CaptureOrDestroyEnemyUnitGroup",
- "CaptureOrDestroySpecificEnemyUnit",
- "CaptureOrDestroySpecificStructure",
- "DeadOrFledAllEnemyUnits",
- "DeadOrFledNumberOfEnemyUnits",
- "DeadOrFledEnemyUnitGroup",
- "DeadOrFledSpecificEnemyUnit",
- "CaptureSpecificUnit",
- "CaptureSpecificStructure",
- "GuardSpecificUnit",
- "GuardSpecificStructure",
- "MoveAnyUnitToArea",
- "MoveAllUnitsToArea",
- "MoveAllSurvivingUnitsToArea",
- "MoveAllSurvivingMechsToArea",
- "BooleanFlagIsSet",
- "ElapsedMissionTime",
- };
- class CObjectiveCondition {
- private:
- int m_alignment;
- public:
- CObjectiveCondition(int alignment) { m_alignment = alignment; }
- virtual ~CObjectiveCondition() {}
- virtual bool operator==(const CObjectiveCondition &rhs) const;
- int Alignment() { return m_alignment; }
- void Alignment(int alignment) { m_alignment = alignment; }
- bool DoCommonEditDialog() {}
- virtual condition_species_type Species() const = 0;
- virtual bool Init() { return true; }
- virtual bool Read( FitIniFile* missionFile ) { return true; }
- virtual bool Save( FitIniFile* file ) { return true; }
- virtual bool EditDialog() { return true; }
- virtual void WriteAbl() {}
- virtual EString Description() = 0;
- virtual EString InstanceDescription() { EString retval; return retval; }
- virtual void CastAndCopy(const CObjectiveCondition *pMaster) { (*this) = (*pMaster); }
- virtual bool RefersTo(const EditorObject *pObj) { return false; }
- virtual bool NoteThePositionsOfObjectsReferenced() { return true; }
- virtual bool RestoreObjectPointerReferencesFromNotedPositions() { return true; }
- };
- class CDestroyAllEnemyUnits: public CObjectiveCondition {
- public:
- CDestroyAllEnemyUnits(int alignment) : CObjectiveCondition(alignment) {}
- condition_species_type Species() const { return DESTROY_ALL_ENEMY_UNITS; }
- EString Description();
- };
- class CNumberOfEnemyUnitsObjectiveCondition: public CObjectiveCondition { /*abstract class*/
- protected:
- int m_num;
- public:
- CNumberOfEnemyUnitsObjectiveCondition(int alignment) : CObjectiveCondition(alignment) { m_num = 0; }
- virtual bool operator==(const CObjectiveCondition &rhs) const;
- virtual bool Read( FitIniFile* missionFile );
- virtual bool Save( FitIniFile* file );
- virtual bool EditDialog();
- virtual EString InstanceDescription();
- virtual void CastAndCopy(const CObjectiveCondition *pMaster) { (*this) = (*(dynamic_cast<const CNumberOfEnemyUnitsObjectiveCondition *>(pMaster))); }
- };
- class CDestroyNumberOfEnemyUnits: public CNumberOfEnemyUnitsObjectiveCondition {
- public:
- CDestroyNumberOfEnemyUnits(int alignment) : CNumberOfEnemyUnitsObjectiveCondition(alignment) {}
- condition_species_type Species() const { return DESTROY_NUMBER_OF_ENEMY_UNITS; }
- EString Description();
- };
- class CSpecificUnitObjectiveCondition: public CObjectiveCondition { /*abstract class*/
- protected:
- Unit *m_pUnit;
- float m_LastNotedPositionX;
- float m_LastNotedPositionY;
- public:
- CSpecificUnitObjectiveCondition(int alignment) : CObjectiveCondition(alignment) { m_pUnit = 0; m_LastNotedPositionX = m_LastNotedPositionY = 0.0; }
- virtual bool operator==(const CObjectiveCondition &rhs) const;
- virtual bool Read( FitIniFile* missionFile );
- virtual bool Save( FitIniFile* file );
- virtual bool EditDialog();
- virtual EString InstanceDescription();
- virtual void CastAndCopy(const CObjectiveCondition *pMaster) { (*this) = (*(dynamic_cast<const CSpecificUnitObjectiveCondition *>(pMaster))); }
- virtual bool RefersTo(const EditorObject *pObj) { return (pObj == ((const EditorObject *)m_pUnit)); }
- virtual bool NoteThePositionsOfObjectsReferenced();
- virtual bool RestoreObjectPointerReferencesFromNotedPositions();
- };
- class CSpecificEnemyUnitObjectiveCondition: public CSpecificUnitObjectiveCondition { /*abstract class*/
- public:
- CSpecificEnemyUnitObjectiveCondition(int alignment) : CSpecificUnitObjectiveCondition(alignment) {}
- virtual bool EditDialog();
- };
- class CSpecificAlliedUnitObjectiveCondition: public CSpecificUnitObjectiveCondition { /*abstract class*/
- public:
- CSpecificAlliedUnitObjectiveCondition(int alignment) : CSpecificUnitObjectiveCondition(alignment) {}
- //virtual bool EditDialog();
- };
- class CDestroySpecificEnemyUnit: public CSpecificEnemyUnitObjectiveCondition {
- public:
- CDestroySpecificEnemyUnit(int alignment) : CSpecificEnemyUnitObjectiveCondition(alignment) {}
- condition_species_type Species() const { return DESTROY_SPECIFIC_ENEMY_UNIT; }
- EString Description();
- };
- class CSpecificStructureObjectiveCondition: public CObjectiveCondition { /*abstract class*/
- protected:
- EditorObject *m_pBuilding;
- float m_LastNotedPositionX;
- float m_LastNotedPositionY;
- public:
- CSpecificStructureObjectiveCondition(int alignment) : CObjectiveCondition(alignment) { m_pBuilding = 0; m_LastNotedPositionX = m_LastNotedPositionY = 0.0; }
- virtual bool operator==(const CObjectiveCondition &rhs) const;
- virtual bool Read( FitIniFile* missionFile );
- virtual bool Save( FitIniFile* file );
- virtual bool EditDialog();
- virtual EString InstanceDescription();
- virtual void CastAndCopy(const CObjectiveCondition *pMaster) { (*this) = (*(dynamic_cast<const CSpecificStructureObjectiveCondition *>(pMaster))); }
- virtual bool RefersTo(const EditorObject *pObj) { return (pObj == m_pBuilding); }
- virtual bool NoteThePositionsOfObjectsReferenced();
- virtual bool RestoreObjectPointerReferencesFromNotedPositions();
- };
- class CSpecificEnemyStructureObjectiveCondition: public CSpecificStructureObjectiveCondition { /*abstract class*/
- public:
- CSpecificEnemyStructureObjectiveCondition(int alignment) : CSpecificStructureObjectiveCondition(alignment) {}
- //virtual bool EditDialog();
- };
- class CSpecificAlliedStructureObjectiveCondition: public CSpecificStructureObjectiveCondition { /*abstract class*/
- public:
- CSpecificAlliedStructureObjectiveCondition(int alignment) : CSpecificStructureObjectiveCondition(alignment) {}
- //virtual bool EditDialog();
- };
- class CDestroySpecificStructure: public CSpecificEnemyStructureObjectiveCondition {
- public:
- CDestroySpecificStructure(int alignment) : CSpecificEnemyStructureObjectiveCondition(alignment) {}
- condition_species_type Species() const { return DESTROY_SPECIFIC_STRUCTURE; }
- EString Description();
- };
- class CCaptureOrDestroyAllEnemyUnits: public CObjectiveCondition {
- /* The CaptureOrDestroyAllEnemyUnits condition should not set the units to be
- capturable. */
- public:
- CCaptureOrDestroyAllEnemyUnits(int alignment) : CObjectiveCondition(alignment) {}
- condition_species_type Species() const { return CAPTURE_OR_DESTROY_ALL_ENEMY_UNITS; }
- EString Description();
- };
- class CCaptureOrDestroyNumberOfEnemyUnits: public CNumberOfEnemyUnitsObjectiveCondition {
- /* The CaptureOrDestroyAllEnemyUnits condition should not set the units to be
- capturable. */
- public:
- CCaptureOrDestroyNumberOfEnemyUnits(int alignment) : CNumberOfEnemyUnitsObjectiveCondition(alignment) {}
- condition_species_type Species() const { return CAPTURE_OR_DESTROY_NUMBER_OF_ENEMY_UNITS; }
- EString Description();
- };
- class CCaptureOrDestroySpecificEnemyUnit: public CSpecificEnemyUnitObjectiveCondition {
- public:
- CCaptureOrDestroySpecificEnemyUnit(int alignment) : CSpecificEnemyUnitObjectiveCondition(alignment) {}
- condition_species_type Species() const { return CAPTURE_OR_DESTROY_SPECIFIC_ENEMY_UNIT; }
- EString Description();
- };
- class CCaptureOrDestroySpecificStructure: public CSpecificEnemyStructureObjectiveCondition {
- public:
- CCaptureOrDestroySpecificStructure(int alignment) : CSpecificEnemyStructureObjectiveCondition(alignment) {}
- condition_species_type Species() const { return CAPTURE_OR_DESTROY_SPECIFIC_STRUCTURE; }
- EString Description();
- };
- class CDeadOrFledAllEnemyUnits: public CObjectiveCondition {
- public:
- CDeadOrFledAllEnemyUnits(int alignment) : CObjectiveCondition(alignment) {}
- condition_species_type Species() const { return DEAD_OR_FLED_ALL_ENEMY_UNITS; }
- EString Description();
- };
- class CDeadOrFledNumberOfEnemyUnits: public CNumberOfEnemyUnitsObjectiveCondition {
- public:
- CDeadOrFledNumberOfEnemyUnits(int alignment) : CNumberOfEnemyUnitsObjectiveCondition(alignment) {}
- condition_species_type Species() const { return DEAD_OR_FLED_NUMBER_OF_ENEMY_UNITS; }
- EString Description();
- };
- class CDeadOrFledSpecificEnemyUnit: public CSpecificEnemyUnitObjectiveCondition {
- public:
- CDeadOrFledSpecificEnemyUnit(int alignment) : CSpecificEnemyUnitObjectiveCondition(alignment) {}
- condition_species_type Species() const { return DEAD_OR_FLED_SPECIFIC_ENEMY_UNIT; }
- EString Description();
- };
- class CCaptureUnit: public CSpecificEnemyUnitObjectiveCondition {
- public:
- CCaptureUnit(int alignment) : CSpecificEnemyUnitObjectiveCondition(alignment) {}
- condition_species_type Species() const { return CAPTURE_UNIT; }
- EString Description();
- };
- class CCaptureStructure: public CSpecificEnemyStructureObjectiveCondition {
- public:
- CCaptureStructure(int alignment) : CSpecificEnemyStructureObjectiveCondition(alignment) {}
- condition_species_type Species() const { return CAPTURE_STRUCTURE; }
- EString Description();
- };
- class CGuardSpecificUnit: public CSpecificAlliedUnitObjectiveCondition {
- public:
- CGuardSpecificUnit(int alignment) : CSpecificAlliedUnitObjectiveCondition(alignment) {}
- condition_species_type Species() const { return GUARD_SPECIFIC_UNIT; }
- EString Description();
- };
- class CGuardSpecificStructure: public CSpecificAlliedStructureObjectiveCondition {
- public:
- CGuardSpecificStructure(int alignment) : CSpecificAlliedStructureObjectiveCondition(alignment) {}
- condition_species_type Species() const { return GUARD_SPECIFIC_STRUCTURE; }
- EString Description();
- };
- class CAreaObjectiveCondition: public CObjectiveCondition { /*abstract class*/
- private:
- float m_targetCenterX;
- float m_targetCenterY;
- float m_targetRadius;
- public:
- CAreaObjectiveCondition(int alignment) : CObjectiveCondition(alignment) { m_targetCenterX = 0.0; m_targetCenterY = 0.0; m_targetRadius = 0.0; }
- virtual bool operator==(const CObjectiveCondition &rhs) const;
- virtual bool Read( FitIniFile* missionFile );
- virtual bool Save( FitIniFile* file );
- virtual bool EditDialog();
- virtual EString InstanceDescription();
- virtual void CastAndCopy(const CObjectiveCondition *pMaster) { (*this) = (*(dynamic_cast<const CAreaObjectiveCondition *>(pMaster))); }
- };
- class CMoveAnyUnitToArea: public CAreaObjectiveCondition {
- public:
- CMoveAnyUnitToArea(int alignment) : CAreaObjectiveCondition(alignment) {}
- condition_species_type Species() const { return MOVE_ANY_UNIT_TO_AREA; }
- EString Description();
- };
- class CMoveAllUnitsToArea: public CAreaObjectiveCondition {
- public:
- CMoveAllUnitsToArea(int alignment) : CAreaObjectiveCondition(alignment) {}
- condition_species_type Species() const { return MOVE_ALL_UNITS_TO_AREA; }
- EString Description();
- };
- class CMoveAllSurvivingUnitsToArea: public CAreaObjectiveCondition {
- public:
- CMoveAllSurvivingUnitsToArea(int alignment) : CAreaObjectiveCondition(alignment) {}
- condition_species_type Species() const { return MOVE_ALL_SURVIVING_UNITS_TO_AREA; }
- EString Description();
- };
- class CMoveAllSurvivingMechsToArea: public CAreaObjectiveCondition {
- public:
- CMoveAllSurvivingMechsToArea(int alignment) : CAreaObjectiveCondition(alignment) {}
- condition_species_type Species() const { return MOVE_ALL_SURVIVING_MECHS_TO_AREA; }
- EString Description();
- };
- class CBooleanFlagIsSet: public CObjectiveCondition {
- protected:
- EString m_flagID;
- bool m_value;
- public:
- CBooleanFlagIsSet(int alignment) : CObjectiveCondition(alignment) { m_flagID = _TEXT("flag0"); m_value = true; }
- bool operator==(const CObjectiveCondition &rhs) const;
- condition_species_type Species() const { return BOOLEAN_FLAG_IS_SET; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveCondition *pMaster) { (*this) = (*(dynamic_cast<const CBooleanFlagIsSet *>(pMaster))); }
- };
- class CElapsedMissionTime: public CObjectiveCondition {
- protected:
- float m_time;
- public:
- CElapsedMissionTime(int alignment) : CObjectiveCondition(alignment) { m_time = 0.0; }
- bool operator==(const CObjectiveCondition &rhs) const;
- condition_species_type Species() const { return ELAPSED_MISSION_TIME; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveCondition *pMaster) { (*this) = (*(dynamic_cast<const CElapsedMissionTime *>(pMaster))); }
- };
- enum action_species_type {
- PLAY_BIK,
- PLAY_WAV,
- DISPLAY_TEXT_MESSAGE,
- DISPLAY_RESOURCE_TEXT_MESSAGE,
- SET_BOOLEAN_FLAG,
- MAKE_NEW_TECHNOLOGY_AVAILABLE,
- NUM_ACTION_SPECIES
- };
- static const char *g_actionSpeciesStringArray[] = {
- "PlayBIK",
- "PlayWAV",
- "DisplayTextMessage",
- "DisplayResourceTextMessage",
- "SetBooleanFlag",
- "MakeNewTechnologyAvailable",
- };
- class CObjectiveAction {
- private:
- int m_alignment;
- public:
- CObjectiveAction(int alignment) { m_alignment = alignment; }
- virtual ~CObjectiveAction() {}
- virtual bool operator==(const CObjectiveAction &rhs) const;
- int Alignment() { return m_alignment; }
- void Alignment(int alignment) { m_alignment = alignment; }
- bool DoCommonEditDialog() {}
- virtual action_species_type Species() const = 0;
- virtual bool Init() = 0;
- virtual bool Read( FitIniFile* missionFile ) = 0;
- virtual bool Save( FitIniFile* file ) = 0;
- virtual bool EditDialog() = 0;
- virtual void WriteAbl() = 0;
- virtual EString Description() = 0;
- virtual EString InstanceDescription() { EString retval; return retval; }
- virtual void CastAndCopy(const CObjectiveAction *pMaster) { (*this) = (*pMaster); }
- };
- class CPlayBIK: public CObjectiveAction {
- private:
- EString m_pathname;
- public:
- CPlayBIK(int alignment) : CObjectiveAction(alignment) {}
- bool operator==(const CObjectiveAction &rhs) const;
- action_species_type Species() const { return PLAY_BIK; }
- bool Init() { return true; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- void WriteAbl() {};
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveAction *pMaster) { (*this) = (*(dynamic_cast<const CPlayBIK *>(pMaster))); }
- };
- class CPlayWAV: public CObjectiveAction {
- private:
- EString m_pathname;
- public:
- CPlayWAV(int alignment) : CObjectiveAction(alignment) {}
- bool operator==(const CObjectiveAction &rhs) const;
- action_species_type Species() const { return PLAY_WAV; }
- bool Init() { return true; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- void WriteAbl() {};
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveAction *pMaster) { (*this) = (*(dynamic_cast<const CPlayWAV *>(pMaster))); }
- };
- class CDisplayTextMessage: public CObjectiveAction {
- private:
- EString m_message;
- public:
- CDisplayTextMessage(int alignment) : CObjectiveAction(alignment) {}
- bool operator==(const CObjectiveAction &rhs) const;
- action_species_type Species() const { return DISPLAY_TEXT_MESSAGE; }
- bool Init() { return true; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- void WriteAbl() {};
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveAction *pMaster) { (*this) = (*(dynamic_cast<const CDisplayTextMessage *>(pMaster))); }
- };
- class CDisplayResourceTextMessage: public CObjectiveAction {
- private:
- int m_resourceStringID;
- public:
- CDisplayResourceTextMessage(int alignment) : CObjectiveAction(alignment) {}
- bool operator==(const CObjectiveAction &rhs) const;
- action_species_type Species() const { return DISPLAY_RESOURCE_TEXT_MESSAGE; }
- bool Init() { return true; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- void WriteAbl() {};
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveAction *pMaster) { (*this) = (*(dynamic_cast<const CDisplayResourceTextMessage *>(pMaster))); }
- };
- class CSetBooleanFlag: public CObjectiveAction {
- private:
- EString m_flagID;
- bool m_value;
- public:
- CSetBooleanFlag(int alignment) : CObjectiveAction(alignment) { m_flagID = _TEXT("flag0"); m_value = true; }
- bool operator==(const CObjectiveAction &rhs) const;
- action_species_type Species() const { return SET_BOOLEAN_FLAG; }
- bool Init() { return true; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- void WriteAbl() {};
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveAction *pMaster) { (*this) = (*(dynamic_cast<const CSetBooleanFlag *>(pMaster))); }
- };
- class CMakeNewTechnologyAvailable: public CObjectiveAction {
- private:
- EString m_purchaseFilePathname;
- public:
- CMakeNewTechnologyAvailable(int alignment) : CObjectiveAction(alignment) {}
- bool operator==(const CObjectiveAction &rhs) const;
- action_species_type Species() const { return MAKE_NEW_TECHNOLOGY_AVAILABLE; }
- bool Init() { return true; }
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- void WriteAbl() {};
- EString Description();
- EString InstanceDescription();
- void CastAndCopy(const CObjectiveAction *pMaster) { (*this) = (*(dynamic_cast<const CMakeNewTechnologyAvailable *>(pMaster))); }
- };
- class CObjectiveConditionList : public EList <CObjectiveCondition *, CObjectiveCondition *> {
- public:
- virtual ~CObjectiveConditionList() { Clear(); }
- virtual CObjectiveConditionList &operator=(const CObjectiveConditionList &master);
- virtual bool operator==(const CObjectiveConditionList &rhs) const;
- virtual void Clear();
- };
- class CObjectiveActionList : public EList <CObjectiveAction *, CObjectiveAction *> {
- public:
- virtual ~CObjectiveActionList() { Clear(); }
- virtual CObjectiveActionList &operator=(const CObjectiveActionList &master);
- virtual bool operator==(const CObjectiveActionList &rhs) const;
- virtual void Clear();
- };
- class CObjective : public/*maybe protected*/ CObjectiveConditionList {
- private:
- typedef CObjectiveConditionList inherited;
- int m_alignment;
- EString m_title;
- bool m_titleUseResourceString;
- int m_titleResourceStringID;
- EString m_description;
- bool m_descriptionUseResourceString;
- int m_descriptionResourceStringID;
- int m_priority;
- int m_resourcePoints;
- bool m_previousPrimaryObjectiveMustBeComplete;
- bool m_allPreviousPrimaryObjectivesMustBeComplete;
- bool m_displayMarker;
- float m_markerX;
- float m_markerY;
- bool m_isHiddenTrigger;
- bool m_activateOnFlag;
- EString m_activateFlagID;
- bool m_resetStatusOnFlag;
- EString m_resetStatusFlagID;
- long m_modelID;
- long m_baseColor;
- long m_highlightColor;
- long m_highlightColor2;
- public: /* we could make this protected if only the editdialog is to acces these functions */
- static CObjectiveCondition *new_CObjectiveCondition(condition_species_type conditionSpecies, int alignment);
- static EString DescriptionOfConditionSpecies(condition_species_type conditionSpecies);
- static CObjectiveAction *new_CObjectiveAction(action_species_type actionSpecies, int alignment);
- static EString DescriptionOfActionSpecies(action_species_type actionSpecies);
- public:
- typedef CObjectiveConditionList condition_list_type;
- typedef CObjectiveActionList action_list_type;
- action_list_type m_actionList;
- condition_list_type m_failureConditionList;
- action_list_type m_failureActionList;
- void Construct(int alignment);
- CObjective() { Construct(0); }
- CObjective(int alignment) { Construct(alignment); }
- CObjective(const CObjective &master) { (*this) = master; }
- ~CObjective() { Clear(); }
- CObjective &operator=(const CObjective &master);
- bool operator==(const CObjective &rhs) const;
- void Init() {}
- void Clear();
- int Alignment() { return m_alignment; }
- void Alignment(int alignment);
- bool Read( FitIniFile* missionFile, int objectiveNum, int version = 0);
- bool Save( FitIniFile* file, int objectiveNum);
- bool EditDialog();
- bool NoteThePositionsOfObjectsReferenced();
- bool RestoreObjectPointerReferencesFromNotedPositions();
- bool ThisObjectiveHasNoConditions() { return ((0 == Count()) && (0 == m_failureConditionList.Count())); }
- EString Title() const { return m_title; }
- void Title(EString title) { m_title = title; }
- bool TitleUseResourceString() const { return m_titleUseResourceString; }
- void TitleUseResourceString(bool titleUseResourceString) { m_titleUseResourceString = titleUseResourceString; }
- int TitleResourceStringID() const { return m_titleResourceStringID; }
- void TitleResourceStringID(int titleResourceStringID) { m_titleResourceStringID = titleResourceStringID; }
- EString LocalizedTitle() const;
- EString Description() const { return m_description; }
- void Description(EString description) { m_description = description; }
- bool DescriptionUseResourceString() const { return m_descriptionUseResourceString; }
- void DescriptionUseResourceString(bool descriptionUseResourceString) { m_descriptionUseResourceString = descriptionUseResourceString; }
- int DescriptionResourceStringID() const { return m_descriptionResourceStringID; }
- void DescriptionResourceStringID(int descriptionResourceStringID) { m_descriptionResourceStringID = descriptionResourceStringID; }
- EString LocalizedDescription() const;
- int Priority() { return m_priority; }
- void Priority(int priority) { m_priority = priority; }
- int ResourcePoints() { return m_resourcePoints; }
- void ResourcePoints(int resourcePoints) { m_resourcePoints = resourcePoints; }
- bool PreviousPrimaryObjectiveMustBeComplete() { return m_previousPrimaryObjectiveMustBeComplete; }
- void PreviousPrimaryObjectiveMustBeComplete(bool previousPrimaryObjectiveMustBeComplete) { m_previousPrimaryObjectiveMustBeComplete = previousPrimaryObjectiveMustBeComplete; }
- bool AllPreviousPrimaryObjectivesMustBeComplete() { return m_allPreviousPrimaryObjectivesMustBeComplete; }
- void AllPreviousPrimaryObjectivesMustBeComplete(bool allPreviousPrimaryObjectivesMustBeComplete) { m_allPreviousPrimaryObjectivesMustBeComplete = allPreviousPrimaryObjectivesMustBeComplete; }
- bool DisplayMarker() { return m_displayMarker; }
- void DisplayMarker(bool displayMarker) { m_displayMarker = displayMarker; }
- float MarkerX() { return m_markerX; }
- void MarkerX(float markerX) { m_markerX = markerX; }
- float MarkerY() { return m_markerY; }
- void MarkerY(float markerY) { m_markerY = markerY; }
- void IsHiddenTrigger(bool isHiddenTrigger) { m_isHiddenTrigger = isHiddenTrigger; }
- bool IsHiddenTrigger() { return m_isHiddenTrigger; }
- void ActivateOnFlag(bool activateOnFlag) { m_activateOnFlag = activateOnFlag; }
- bool ActivateOnFlag() { return m_activateOnFlag; }
- void ActivateFlagID(EString activateFlagId) { m_activateFlagID = activateFlagId; }
- EString ActivateFlagID() { return m_activateFlagID; }
- void ResetStatusOnFlag(bool resetStatusOnFlag) { m_resetStatusOnFlag = resetStatusOnFlag; }
- bool ResetStatusOnFlag() { return m_resetStatusOnFlag; }
- void ResetStatusFlagID(EString resetStatusFlagID) { m_resetStatusFlagID = resetStatusFlagID; }
- EString ResetStatusFlagID() { return m_resetStatusFlagID; }
- int BaseColor( ) const { return m_baseColor; }
- void BaseColor( int newColor ) { m_baseColor = newColor; }
- int HighlightColor( ) const { return m_highlightColor; }
- void HighlightColor( int newColor ) { m_highlightColor = newColor; }
- int HighlightColor2( ) const { return m_highlightColor2; }
- void HighlightColor2( int newColor ) { m_highlightColor2 = newColor; }
- long ModelID() const { return m_modelID; }
- void ModelID( int newID ) { m_modelID = newID; }
- };
- class CObjectives : public/*maybe protected*/ EList <CObjective *, CObjective *> {
- private:
- typedef EList <CObjective *, CObjective *> inherited;
- int m_alignment;
- public:
- CObjectives() { m_alignment = 0; }
- CObjectives(int alignment) { m_alignment = alignment; }
- CObjectives(const CObjectives &master) { (*this) = master; }
- ~CObjectives() { Clear(); }
- CObjectives &operator=(const CObjectives &master);
- bool operator==(const CObjectives &rhs) const;
- void Init();
- void Clear();
- int Alignment() { return m_alignment; }
- void Alignment(int alignment);
- bool Read( FitIniFile* missionFile );
- bool Save( FitIniFile* file );
- bool EditDialog();
- bool WriteMissionScript(const char *Name, const char *OutputPath);
- void handleObjectInvalidation(const EditorObject *pObj);
- bool NoteThePositionsOfObjectsReferenced();
- bool RestoreObjectPointerReferencesFromNotedPositions();
- bool ThereAreObjectivesWithNoConditions();
- };
- class CObjectivesEditState {
- public:
- int alignment;
- CObjectives ModifiedObjectives;
- enum objective_function_id_type {
- ADD,
- EDIT
- };
- objective_function_id_type objectiveFunction;
- int nSelectionIndex;
- CObjective ModifiedObjective;
- enum list_id_type {
- SUCCESS_CONDITION,
- FAILURE_CONDITION
- };
- list_id_type listID;
- int nConditionSpeciesSelectionIndex;
- int nActionSpeciesSelectionIndex;
- int nFailureConditionSpeciesSelectionIndex;
- int nFailureActionSpeciesSelectionIndex;
- void *pModifiedUnitPtr;
- void *pModifiedBuildingPtr;
- CObjectivesEditState() {
- Clear();
- }
- void Clear() {
- alignment = 0;
- ModifiedObjectives.Clear();
- objectiveFunction = ADD;
- nSelectionIndex = -1;
- ModifiedObjective.Clear();
- listID = SUCCESS_CONDITION;
- nConditionSpeciesSelectionIndex = -1;
- nActionSpeciesSelectionIndex = -1;
- nFailureConditionSpeciesSelectionIndex = -1;
- nFailureActionSpeciesSelectionIndex = -1;
- pModifiedUnitPtr = 0;
- pModifiedBuildingPtr = 0;
- }
- };
- //*************************************************************************************************
- #endif // end of file ( Objective.h )
|