VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
DtHostilityManager Class Reference

This class keeps track of which forces are hostile to which other forces in the simulation. It maintains state for each force type, and which other forces types are considered hostile by that force. It can be queried for this data any time during the simulation. Supports force enumerations from 0 to 255.

Public Member Functions

 DtHostilityManager (DtSimulationServices *simManager)
 
virtual ~DtHostilityManager ()
 
virtual bool init ()
 
virtual void setDefaultHostility ()
 
virtual bool addForce (DtString forceName, DtVector forceColor, bool includeInDialogs, int forceType=-1, const DtString &country="")
 
virtual bool removeForce (DtU8 force)
 
virtual bool hasForceNamed (const DtString &) const
 
virtual int forceTypeForForceNamed (const DtString &) const
 
virtual DtString countryTypeForForceNamed (const DtString &) const
 
virtual void setHostility (DtU8 force, DtU8 targetForce, bool hostile)
 
virtual bool hostile (DtU8 force, DtU8 targetForce) const
 
virtual void hostileForces (DtU8 force, std::list< DtU8 > &forceList) const
 
virtual void hostileForces (DtU8 force, std::set< DtU8 > &forceList) const
 
virtual int forceHostileTo (DtU8 force) const
 
virtual void friendlyForces (DtU8 force, std::list< DtU8 > &forceList) const
 
virtual int numForces () const
 
virtual DtU8 nextAvailableForceId ()
 
virtual void getForceDescriptionList (DtRwForceDescriptionList &output)
 
virtual bool readHostilityFile (const DtString &filename, bool clear=true)
 
virtual bool readHostilityFileFromZipFile (const DtFilename &scenarioZipFile, const DtString &filename, bool clear=true)
 
virtual bool processHostilityFile (DtlInputStream *, bool clear)
 
virtual void setDataFromDescriptionList (const DtRwForceDescriptionList &l, bool clear=true)
 
virtual void sendHostilityMatrix ()
 
virtual void sendForces ()
 
virtual void addHostilityChangedCallback (DtHostitliyChangedCallbackFcn fcn, void *usr)
 
virtual void removeHostilityChangedCallback (DtHostitliyChangedCallbackFcn fcn, void *usr)
 
virtual void setName (DtU8 force, DtString forceName)
 
virtual DtString name (DtU8 force) const
 
virtual void setCountry (DtU8 force, DtString forceName)
 
virtual DtString country (DtU8 force) const
 
virtual void setIncludeInDialogs (DtU8 force, bool includeInDialogs)
 
virtual bool includeInDialogs (DtU8 force)
 
virtual void setColor (DtU8 force, DtVector forceColor)
 
virtual DtVector color (DtU8 force)
 
virtual void setForceIsUsed (DtU8 force, bool forceIsUsed)
 
virtual bool forceIsUsed (DtU8 force)
 

Protected Types

typedef DtCallbackList< DtU8 >
::DtCallbackFunctionType 
DtHostitliyChangedCallbackFcn
 
typedef std::vector< boolDtBoolVector
 
typedef std::vector< DtBoolVectorDtBoolVectorVector
 
typedef std::vector< DtStringDtNameVector
 
typedef std::vector< DtVectorDtVectorVector
 

Protected Member Functions

virtual void registerInterfaceMessageCallbacks ()
 
virtual void clearMatrix ()
 

Protected Attributes

DtSimulationServicesmySimulationServices
 
DtBoolVectorVector myHostilityMatrix
 
DtNameVector myNameVector
 
DtNameVector myCountryVector
 
DtBoolVector myIncludeInDialogsVector
 
DtVectorVector myColorVector
 
DtBoolVector myForceIsUsedVector
 
DtCallbackList< DtU8 > myHostilityChangedCallbackList
 

Private Member Functions

 DtHostilityManager (const DtHostilityManager &orig)
 
DtHostilityManageroperator= (const DtHostilityManager &orig)
 
virtual void processRequestHostilityMatrix (DtSimMessage *msg)
 
static void requestHostilityMatrixCallback (DtSimMessage *msg, void *usr)
 
virtual void processRequestForces (DtSimMessage *msg)
 
static void requestForcesCallback (DtSimMessage *msg, void *usr)
 
virtual void processSetHostilityMatrix (DtSimMessage *msg)
 
static void setHostilityMatrixCallback (DtSimMessage *msg, void *usr)
 
virtual void processRequestForceHostility (DtSimMessage *msg)
 
static void requestForceHostilityCallback (DtSimMessage *msg, void *usr)
 
virtual void processSetForceHostility (DtSimMessage *msg)
 
static void setForceHostilityCallback (DtSimMessage *msg, void *usr)
 

Member Typedef Documentation

typedef std::vector<bool> DtHostilityManager::DtBoolVector
protected

Typedefs to make list definitions easier.

typedef std::vector<DtBoolVector> DtHostilityManager::DtBoolVectorVector
protected
typedef std::vector<DtString> DtHostilityManager::DtNameVector
protected
typedef std::vector<DtVector> DtHostilityManager::DtVectorVector
protected

Constructor & Destructor Documentation

DtHostilityManager::DtHostilityManager ( DtSimulationServices simManager)
virtual DtHostilityManager::~DtHostilityManager ( )
virtual
DtHostilityManager::DtHostilityManager ( const DtHostilityManager orig)
private

Not implemented.

Member Function Documentation

DtHostilityManager& DtHostilityManager::operator= ( const DtHostilityManager orig)
private

Not implemented.

virtual bool DtHostilityManager::init ( )
virtual

Initializes the hostility manager defaults. Registers messages to listen for changes to hostility. Registers with cgf for a post-scenario load callback.

virtual void DtHostilityManager::setDefaultHostility ( )
virtual

Sets the default starting hostility setup. This sets DtForceFriendly as hostile toward DtForceOpposing and DtForceOppising as hostile toward DtForceFriendly. All other relationships are friendly.

virtual bool DtHostilityManager::addForce ( DtString  forceName,
DtVector  forceColor,
bool  includeInDialogs,
int  forceType = -1,
const DtString country = "" 
)
virtual

Add a force to the force manager. If forceType is not -1 will add that force name and type, else will add force with the next available id. If the force type would make "holes" in the force list, create forces with no names to fill. The country is the two letter country code if affiliated with a force.

virtual bool DtHostilityManager::removeForce ( DtU8  force)
virtual

Remove a force from the force manager.

virtual bool DtHostilityManager::hasForceNamed ( const DtString ) const
virtual

Returns true if there is a force with the given name (case insensitive)

virtual int DtHostilityManager::forceTypeForForceNamed ( const DtString ) const
virtual

Returns the force type for the force with the given name or 0 if name not found. Case insensitive search.

virtual DtString DtHostilityManager::countryTypeForForceNamed ( const DtString ) const
virtual

Returns the country type for the force with the given name or "" if name not found. Case insensitive search.

virtual void DtHostilityManager::setHostility ( DtU8  force,
DtU8  targetForce,
bool  hostile 
)
virtual

Invokes hostility changed callbacks if the set actually results in a change.

Note
Hostility is not necessarily reciprocal. Setting forceA to be hostile toward forceB does not set forceB to be hostile toward forceA.
virtual bool DtHostilityManager::hostile ( DtU8  force,
DtU8  targetForce 
) const
virtual

Whether force is hostile to targetForce.

virtual void DtHostilityManager::hostileForces ( DtU8  force,
std::list< DtU8 > &  forceList 
) const
virtual

Adds all force types that are hostile to force to forceList.

Note
This may include force itself.
virtual void DtHostilityManager::hostileForces ( DtU8  force,
std::set< DtU8 > &  forceList 
) const
virtual
virtual int DtHostilityManager::forceHostileTo ( DtU8  force) const
virtual

Returns the first force that is hostile to the given force. If no force is available then DtForceOther is returned.

virtual void DtHostilityManager::friendlyForces ( DtU8  force,
std::list< DtU8 > &  forceList 
) const
virtual

Adds all force types that are friendly to force to forceList.

Note
This may include force itself.
virtual void DtHostilityManager::addHostilityChangedCallback ( DtHostitliyChangedCallbackFcn  fcn,
void *  usr 
)
virtual

Callbacks that are called any time the hostility matrix changes. The parameter provided indicates for which force this change is for. i.e. If Force 1 changes to be hostile to force 2, the callback is made with 1 as the parameter.

virtual void DtHostilityManager::removeHostilityChangedCallback ( DtHostitliyChangedCallbackFcn  fcn,
void *  usr 
)
virtual

Callbacks that are called any time the hostility matrix changes. The parameter provided indicates for which force this change is for. i.e. If Force 1 changes to be hostile to force 2, the callback is made with 1 as the parameter.

virtual void DtHostilityManager::setName ( DtU8  force,
DtString  forceName 
)
virtual

Name for a specific force.

virtual DtString DtHostilityManager::name ( DtU8  force) const
virtual

Name for a specific force.

virtual void DtHostilityManager::setCountry ( DtU8  force,
DtString  forceName 
)
virtual

Country for a specific force.

virtual DtString DtHostilityManager::country ( DtU8  force) const
virtual

Country for a specific force.

virtual void DtHostilityManager::setIncludeInDialogs ( DtU8  force,
bool  includeInDialogs 
)
virtual

Whether or not a specific force is included in VRF dialogs.

virtual bool DtHostilityManager::includeInDialogs ( DtU8  force)
virtual

Whether or not a specific force is included in VRF dialogs.

virtual void DtHostilityManager::setColor ( DtU8  force,
DtVector  forceColor 
)
virtual

Color for a specific force.

virtual DtVector DtHostilityManager::color ( DtU8  force)
virtual

Color for a specific force.

virtual void DtHostilityManager::setForceIsUsed ( DtU8  force,
bool  forceIsUsed 
)
virtual

Whether force at index is used.

virtual bool DtHostilityManager::forceIsUsed ( DtU8  force)
virtual

Whether force at index is used.

virtual int DtHostilityManager::numForces ( ) const
virtual

Returns the number of forces currently in use (named)

virtual DtU8 DtHostilityManager::nextAvailableForceId ( )
virtual

Returns the next available index for a new force.

virtual void DtHostilityManager::getForceDescriptionList ( DtRwForceDescriptionList output)
virtual

Saves the force hostility info into a force-hostility list. Used when saving a scenario, prior to writing out the .xtr file; the info is used to update the data in the scenario extras manager.

virtual bool DtHostilityManager::readHostilityFile ( const DtString filename,
bool  clear = true 
)
virtual

Reads the Hostility matrix file to the specified name and adds all current hostility from the file. This does not replace force names, colors or the state of includeInDialogs. Currently used only for old scenarios, when there is an .hst file but no .xtr file, or when there is neither and the .mtl file in the SMS is read.

virtual bool DtHostilityManager::readHostilityFileFromZipFile ( const DtFilename &  scenarioZipFile,
const DtString filename,
bool  clear = true 
)
virtual
virtual bool DtHostilityManager::processHostilityFile ( DtlInputStream *  ,
bool  clear 
)
virtual

Read the contents of the hostility file from the given stream.

virtual void DtHostilityManager::setDataFromDescriptionList ( const DtRwForceDescriptionList l,
bool  clear = true 
)
virtual

Loads all of the force-hostility data from a force-hostility list. Used to load the data from info read by the scenario extras manager in scenarios with .xtr files. Takes data from a force-hostility list and saves it in local members.

virtual void DtHostilityManager::sendHostilityMatrix ( )
virtual

Sends the hostility matrix out.

virtual void DtHostilityManager::sendForces ( )
virtual

Sends out the current forces in this matrix.

virtual void DtHostilityManager::registerInterfaceMessageCallbacks ( )
protectedvirtual

Message handlers.

Registers for any interface messages that the manager listens to.

static void DtHostilityManager::requestHostilityMatrixCallback ( DtSimMessage msg,
void *  usr 
)
staticprotected

Handles request for hostility matrix.

virtual void DtHostilityManager::processRequestHostilityMatrix ( DtSimMessage msg)
protectedvirtual

Handles request for hostility matrix.

static void DtHostilityManager::requestForcesCallback ( DtSimMessage msg,
void *  usr 
)
staticprotected

Handles request for current forces.

virtual void DtHostilityManager::processRequestForces ( DtSimMessage msg)
protectedvirtual

Handles request for current forces.

static void DtHostilityManager::setHostilityMatrixCallback ( DtSimMessage msg,
void *  usr 
)
staticprotected

Sets the updated hostility matrix.

virtual void DtHostilityManager::processSetHostilityMatrix ( DtSimMessage msg)
protectedvirtual

Sets the updated hostility matrix.

static void DtHostilityManager::requestForceHostilityCallback ( DtSimMessage msg,
void *  usr 
)
staticprotected

Handles request for hostility for specific force.

virtual void DtHostilityManager::processRequestForceHostility ( DtSimMessage msg)
protectedvirtual

Handles request for hostility for specific force.

static void DtHostilityManager::setForceHostilityCallback ( DtSimMessage msg,
void *  usr 
)
staticprotected

Sets updated hostility for a specific force.

virtual void DtHostilityManager::processSetForceHostility ( DtSimMessage msg)
protectedvirtual

Sets updated hostility for a specific force.

virtual void DtHostilityManager::clearMatrix ( )
protectedvirtual

Utility functions to use while reading data.

Clears the hostility matrix; done before setting hostility relations from data read from a scenario or SMS file.

Member Data Documentation

DtSimulationServices* DtHostilityManager::mySimulationServices
protected

Local members.

DtBoolVectorVector DtHostilityManager::myHostilityMatrix
protected

Tracks which forces are hostile to which other forces. Each force has a vector which contains a boolean for each other force. The bool is set to true for any force that the first force is hostile to.

DtNameVector DtHostilityManager::myNameVector
protected
DtNameVector DtHostilityManager::myCountryVector
protected
DtBoolVector DtHostilityManager::myIncludeInDialogsVector
protected
DtVectorVector DtHostilityManager::myColorVector
protected
DtBoolVector DtHostilityManager::myForceIsUsedVector
protected
DtCallbackList<DtU8> DtHostilityManager::myHostilityChangedCallbackList
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)