Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
667 lines
18 KiB
C++
667 lines
18 KiB
C++
#include "MW4Headers.hpp"
|
|
|
|
#include "Objective.hpp"
|
|
|
|
#include <Adept\EntityClassData.hpp>
|
|
#include "ai_userconstants.hpp"
|
|
#include "AI_Statistics.hpp"
|
|
#include "mwguimanager.hpp"
|
|
#include "hudobj.hpp"
|
|
#include "hudhelp.hpp"
|
|
#include "mwapplication.hpp"
|
|
|
|
// MSL 5.05 Objective
|
|
bool g_bObjMode;
|
|
|
|
int CountVisibleObjectives (void)
|
|
{
|
|
int toret,size,j;
|
|
Objective *obj;
|
|
NameTable *table = NameTable::GetInstance();
|
|
|
|
toret = 0;
|
|
Check_Object (table);
|
|
size = table->nameTableArray[NameTable::ObjectiveArray].GetLength ();
|
|
for (j=0;j<size;j++)
|
|
{
|
|
NameTableEntry *data;
|
|
Entity *ent;
|
|
|
|
data = &table->nameTableArray [NameTable::ObjectiveArray][j];
|
|
ent = data->dataPointer->GetCurrent ();
|
|
if (ent)
|
|
{
|
|
Verify (ent->IsDerivedFrom (Objective::DefaultData));
|
|
obj = Cast_Object (Objective *,ent);
|
|
if (obj->Visible ())
|
|
toret++;
|
|
}
|
|
}
|
|
return toret;
|
|
}
|
|
|
|
const char* ObjectiveText (int id)
|
|
{
|
|
int index,size,j;
|
|
Objective *obj;
|
|
NameTable *table = NameTable::GetInstance();
|
|
|
|
index = 0;
|
|
size = table->nameTableArray[NameTable::ObjectiveArray].GetLength ();
|
|
for (j=0;j<size;j++)
|
|
{
|
|
NameTableEntry *data;
|
|
Entity *ent;
|
|
|
|
data = &table->nameTableArray [NameTable::ObjectiveArray][j];
|
|
ent = data->dataPointer->GetCurrent ();
|
|
if (ent)
|
|
{
|
|
Verify (ent->IsDerivedFrom (Objective::DefaultData));
|
|
obj = Cast_Object (Objective *,ent);
|
|
if (obj->Visible ())
|
|
{
|
|
if (index == id)
|
|
return obj->CurrentText ();
|
|
index++;
|
|
}
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
|
|
//#############################################################################
|
|
//############################### Objective #############################
|
|
//#############################################################################
|
|
|
|
Objective::ClassData* Objective::DefaultData = NULL;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void Objective::InitializeClass()
|
|
{
|
|
Verify(!DefaultData);
|
|
DefaultData =
|
|
new ClassData(
|
|
ObjectiveClassID,
|
|
"MechWarrior4::Objective",
|
|
Entity::DefaultData,
|
|
0, NULL,
|
|
(Entity::Factory)Make,
|
|
(Entity::CreateMessage::Factory)CreateMessage::ConstructCreateMessage,
|
|
ExecutionStateEngine::DefaultData,
|
|
(Entity::GameModel::Factory)GameModel::ConstructGameModel,
|
|
NULL,
|
|
(Entity::GameModel::ReadAndVerifier)GameModel::ReadAndVerify,
|
|
(Entity::GameModel::ModelWrite)GameModel::WriteToText,
|
|
(Entity::GameModel::ModelSave)GameModel::SaveGameModel
|
|
);
|
|
Register_Object(DefaultData);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void Objective::TerminateClass()
|
|
{
|
|
Unregister_Object(DefaultData);
|
|
delete DefaultData;
|
|
DefaultData = NULL;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Objective* Objective::Make(CreateMessage *message,ReplicatorID *base_id)
|
|
{
|
|
Check_Object(message);
|
|
gos_PushCurrentHeap(Heap);
|
|
Objective *new_entity = new Objective(DefaultData, message, base_id, NULL);
|
|
gos_PopCurrentHeap();
|
|
Check_Object(new_entity);
|
|
return new_entity;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Objective::Objective(ClassData *class_data,CreateMessage *message,ReplicatorID *base_id,ElementRenderer::Element *element) :
|
|
Entity(class_data, message, base_id, element)
|
|
{
|
|
Check_Pointer(this);
|
|
Check_Object(message);
|
|
m_ObjectiveID = message->objectiveID;
|
|
m_Primary = message->primaryObjective;
|
|
|
|
m_FailText[0] = 0;
|
|
m_SucceedText[0] = 0;
|
|
m_NeutralText[0] = 0;
|
|
m_DescriptionText[0] = 0;
|
|
MWApplication *app;
|
|
|
|
m_FailTextID = message->failtextID;
|
|
m_SucceedTextID = message->succeedtextID;
|
|
m_NeutralTextID = message->neutraltextID;
|
|
m_DescriptionTextID = message->descriptiontextID;
|
|
|
|
char *text;
|
|
app = MWApplication::GetInstance ();
|
|
|
|
Str_Copy (m_LoadedFailText,message->failtext,sizeof (m_LoadedFailText));
|
|
Str_Copy (m_LoadedSucceedText,message->succeedtext,sizeof (m_LoadedSucceedText));
|
|
Str_Copy (m_LoadedNeutralText,message->neutraltext,sizeof (m_LoadedNeutralText));
|
|
Str_Copy (m_LoadedDescriptionText,message->descriptiontext,sizeof (m_LoadedDescriptionText));
|
|
|
|
text = app->GetLocString (m_FailTextID);
|
|
if (m_FailTextID>0 && ((text) || (text[0] == 0)))
|
|
Str_Copy (m_FailText,text,sizeof (m_FailText));
|
|
else
|
|
Str_Copy (m_FailText,message->failtext,sizeof (m_FailText));
|
|
|
|
text = app->GetLocString (m_SucceedTextID);
|
|
if (m_SucceedTextID>0 && ( (text) || (text[0] == 0)))
|
|
Str_Copy (m_SucceedText,text,sizeof (m_SucceedText));
|
|
else
|
|
Str_Copy (m_SucceedText,message->succeedtext,sizeof (m_SucceedText));
|
|
|
|
text = app->GetLocString (m_NeutralTextID);
|
|
if (m_NeutralTextID>0 && ( (text) || (text[0] == 0)))
|
|
Str_Copy (m_NeutralText,text,sizeof (m_NeutralText));
|
|
else
|
|
Str_Copy (m_NeutralText,message->neutraltext,sizeof (m_NeutralText));
|
|
text = app->GetLocString (m_DescriptionTextID);
|
|
if (m_DescriptionTextID>0 && ( (text) || (text[0] == 0)))
|
|
Str_Copy (m_DescriptionText,text,sizeof (m_DescriptionText));
|
|
else
|
|
Str_Copy (m_DescriptionText,message->descriptiontext,sizeof (m_DescriptionText));
|
|
|
|
m_VisibleObjective = message->visibleObjective;
|
|
m_ObjectiveState = message->objectiveState;
|
|
m_Primary = message->primaryObjective;
|
|
m_HelpMessage = message->helpMessage;
|
|
|
|
|
|
// font = gos_LoadFont("Assets\\Graphics\\arial8.tga", 0);
|
|
if (m_VisibleObjective)
|
|
{
|
|
m_VisibleObjective = false;
|
|
Reveal();
|
|
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Objective::~Objective()
|
|
{
|
|
}
|
|
|
|
void Objective::SetName (const char *name,bool resettext)
|
|
{
|
|
m_FailText[0] = 0;
|
|
m_SucceedText[0] = 0;
|
|
m_NeutralText[0] = 0;
|
|
m_DescriptionText[0] = 0;
|
|
|
|
if (m_HelpMessage)
|
|
{
|
|
sprintf (m_FailText,"%s",name);
|
|
sprintf (m_SucceedText,"%s",name);
|
|
sprintf (m_NeutralText,"%s",name);
|
|
sprintf (m_DescriptionText,"%s",name);
|
|
}
|
|
else
|
|
{
|
|
sprintf (m_FailText,"Failed: %s",name);
|
|
sprintf (m_SucceedText,"Succeeded: %s",name);
|
|
sprintf (m_NeutralText,"Incomplete: %s",name);
|
|
sprintf (m_DescriptionText,"Description: %s",name);
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Replicator::CreateMessage* Objective::SaveMakeMessage(MemoryStream *stream, ResourceFile *res_file)
|
|
{
|
|
Check_Object(this);
|
|
Check_Object(stream);
|
|
|
|
//
|
|
//---------------------------------------------------------------------
|
|
// Make sure there is enough room for the factory request on the stream
|
|
//---------------------------------------------------------------------
|
|
//
|
|
stream->AllocateBytes(sizeof(CreateMessage));
|
|
Entity::SaveMakeMessage(stream, res_file);
|
|
CreateMessage *message = Cast_Pointer(CreateMessage*, stream->GetPointer());
|
|
|
|
message->objectiveID = m_ObjectiveID;
|
|
|
|
message->messageLength = sizeof(*message);
|
|
|
|
return message;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void Objective::PreCollisionExecute(Time till)
|
|
{
|
|
Check_Object(this);
|
|
Check_Object(executionState);
|
|
Check_Object(ObjectiveRenderer::Instance);
|
|
PRECOLLISION_LOGIC("Objective");
|
|
|
|
executionState->RequestState(ExecutionStateEngine::NeverExecuteState);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
|
|
void Objective::DrawObjective(Scalar x_loc, Scalar y_loc)
|
|
{
|
|
Check_Object(this);
|
|
int x_location = (int)(x_loc * Environment.screenWidth);
|
|
int y_location = (int)(y_loc * Environment.screenHeight);
|
|
|
|
DisplayText(CurrentText (), x_location, y_location);
|
|
}
|
|
|
|
|
|
bool Objective::HelpMessage (void)
|
|
{
|
|
return m_HelpMessage;
|
|
}
|
|
|
|
void Objective::Succeed (void)
|
|
{
|
|
if (m_ObjectiveState == Objective_Succeeded)
|
|
return;
|
|
m_ObjectiveState = Objective_Succeeded;
|
|
if (!m_VisibleObjective)
|
|
return;
|
|
|
|
ObjectiveRenderer::Instance->ResetTime ();
|
|
|
|
#ifdef LAB_ONLY
|
|
if (MW4AI::Statistics::Enabled() == true)
|
|
{
|
|
MW4AI::Statistics::NotifyObjective(m_DescriptionText,true);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Objective::Fail (void)
|
|
{
|
|
if (m_ObjectiveState == Objective_Failed)
|
|
return;
|
|
m_ObjectiveState = Objective_Failed;
|
|
if (!m_VisibleObjective)
|
|
return;
|
|
|
|
ObjectiveRenderer::Instance->ResetTime ();
|
|
|
|
#ifdef LAB_ONLY
|
|
if (MW4AI::Statistics::Enabled() == true)
|
|
{
|
|
MW4AI::Statistics::NotifyObjective(m_DescriptionText,false);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Objective::Reveal (void)
|
|
{
|
|
if (m_VisibleObjective)
|
|
return;
|
|
|
|
Check_Object(ObjectiveRenderer::Instance);
|
|
m_VisibleObjective = true;
|
|
ObjectiveRenderer::Instance->ResetTime ();
|
|
}
|
|
|
|
void Objective::Hide (void)
|
|
{
|
|
if (!m_VisibleObjective)
|
|
return;
|
|
|
|
Check_Object(executionState);
|
|
Check_Object(ObjectiveRenderer::Instance);
|
|
|
|
m_VisibleObjective = false;
|
|
}
|
|
|
|
int Objective::Status (void)
|
|
{
|
|
return m_ObjectiveState;
|
|
}
|
|
|
|
bool Objective::Visible (void)
|
|
{
|
|
return m_VisibleObjective;
|
|
}
|
|
const char *Objective::CurrentText (bool ignorevisual)
|
|
{
|
|
if (m_HelpMessage)
|
|
return m_SucceedText;
|
|
|
|
if (!m_VisibleObjective && !ignorevisual)
|
|
return NULL;
|
|
|
|
switch (m_ObjectiveState)
|
|
{
|
|
case Objective_Failed:
|
|
return m_FailText;
|
|
break;
|
|
case Objective_Succeeded:
|
|
return m_SucceedText;
|
|
break;
|
|
case Objective_Neutral:
|
|
return m_NeutralText;
|
|
break;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void Objective::ShowHelp (Stuff::Time time)
|
|
{
|
|
Check_Object(ObjectiveRenderer::Instance);
|
|
ObjectiveRenderer::Instance->Help (this,time);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void Objective::DisplayText(const char *text_string, int x_loc, int y_loc)
|
|
{
|
|
#if 0
|
|
if (!text_string)
|
|
return;
|
|
|
|
Check_Object(this);
|
|
Check_Pointer(text_string);
|
|
|
|
gos_TextSetRegion(0, 0, Environment.screenWidth, Environment.screenHeight);
|
|
gos_TextSetAttributes(font,0xFFFFFFFF,1.0f,false,true,false,false);
|
|
gos_TextSetPosition(x_loc, y_loc);
|
|
gos_TextDraw(text_string);
|
|
|
|
#endif
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Objective::DrawTextWindow()
|
|
{
|
|
Check_Object(this);
|
|
|
|
#if 0
|
|
gos_SetRenderState( gos_State_Texture, 0 );
|
|
gos_SetRenderState( gos_State_AlphaMode, gos_Alpha_AlphaInvAlpha );
|
|
gos_SetRenderState( gos_State_Clipping, 0 );
|
|
gos_SetRenderState( gos_State_ZWrite, 0 );
|
|
gos_SetRenderState( gos_State_Filter, gos_FilterNone );
|
|
gos_SetRenderState( gos_State_ZCompare, 0 );
|
|
gos_SetRenderState( gos_State_WireframeMode, 0 );
|
|
gos_SetRenderState( gos_State_Specular, 0 );
|
|
gos_SetRenderState( gos_State_Dither, 0 );
|
|
gos_SetRenderState( gos_State_ShadeMode, gos_ShadeFlat );
|
|
gos_SetRenderState( gos_State_TextureMapBlend, gos_BlendModulate );
|
|
gos_SetRenderState( gos_State_AlphaTest, 0 );
|
|
gos_SetRenderState( gos_State_Fog, 0 );
|
|
#endif
|
|
|
|
//First we need to Draw the Quad for the Window
|
|
gos_VERTEX quad_verticies[4];
|
|
memset(quad_verticies, 0, sizeof(quad_verticies));
|
|
|
|
quad_verticies[0].rhw = 1.0;
|
|
quad_verticies[1].rhw = 1.0;
|
|
quad_verticies[2].rhw = 1.0;
|
|
quad_verticies[3].rhw = 1.0;
|
|
|
|
quad_verticies[0].x = (0.02f * Environment.screenWidth);
|
|
quad_verticies[0].y = (0.02f * Environment.screenHeight);
|
|
quad_verticies[0].z = 0.9f;
|
|
quad_verticies[0].argb = 0x77aaaaaa;
|
|
|
|
quad_verticies[1].x = (0.25f * Environment.screenWidth);
|
|
quad_verticies[1].y = (0.02f * Environment.screenHeight);
|
|
quad_verticies[1].z = 0.9f;
|
|
quad_verticies[1].argb = 0x77aaaaaa;
|
|
|
|
quad_verticies[2].x = (0.25f * Environment.screenWidth);
|
|
quad_verticies[2].y = (0.12f * Environment.screenHeight);
|
|
quad_verticies[2].z = 0.9f;
|
|
quad_verticies[2].argb = 0x77aaaaaa;
|
|
|
|
quad_verticies[3].x = (0.02f * Environment.screenWidth);
|
|
quad_verticies[3].y = (0.12f * Environment.screenHeight);
|
|
quad_verticies[3].z = 0.9f;
|
|
quad_verticies[3].argb = 0x77aaaaaa;
|
|
|
|
gos_DrawQuads(quad_verticies, 4);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void Objective::TestInstance() const
|
|
{
|
|
Verify(IsDerivedFrom(DefaultData));
|
|
}
|
|
|
|
int CountObjectives (void);
|
|
const char* ObjectiveText (int id);
|
|
|
|
|
|
//#############################################################################
|
|
//########################## ObjectiveRenderer #######################
|
|
//#############################################################################
|
|
|
|
ObjectiveRenderer *ObjectiveRenderer::Instance = NULL;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
ObjectiveRenderer::ObjectiveRenderer() :
|
|
Plug(Plug::DefaultData)
|
|
{
|
|
m_HelpStartTime = gos_GetElapsedTime ();
|
|
m_StartTime = gos_GetElapsedTime ();
|
|
MW4AI::UserConstants *data;
|
|
data = MW4AI::UserConstants::Instance ();
|
|
m_ShowHelp = false;
|
|
if (!data)
|
|
{
|
|
m_DelayTime = 10;
|
|
m_HelpDelayTime = 0;
|
|
}
|
|
else
|
|
{
|
|
m_DelayTime = data->Get (MW4AI::UserConstants::objective_display_time);
|
|
m_HelpDelayTime = 0;
|
|
}
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
ObjectiveRenderer::~ObjectiveRenderer()
|
|
{
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void ObjectiveRenderer::Help (Objective *helpmessage,Stuff::Time delay)
|
|
{
|
|
m_HelpStartTime = gos_GetElapsedTime ();
|
|
if (helpmessage == NULL)
|
|
{
|
|
m_HelpDelayTime = 0;
|
|
m_ShowHelp = false;
|
|
MWGUIManager::GetInstance ()->HideHudComponent (MWGUIManager::HUD_HELP);
|
|
return;
|
|
}
|
|
if (delay > 0)
|
|
{
|
|
m_HelpDelayTime = delay;
|
|
// m_DelayTime = delay;
|
|
}
|
|
m_ShowHelp = true;
|
|
HUDComponent *hud = MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_HELP);
|
|
HUDHelp *help = Cast_Object (HUDHelp *,hud);
|
|
help->NewMessage (helpmessage);
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void ObjectiveRenderer::ToggleObjective (void)
|
|
{
|
|
g_bObjMode = !g_bObjMode;
|
|
|
|
/* if ((gos_GetElapsedTime () - m_StartTime) >= m_DelayTime)
|
|
{
|
|
ResetTime ();
|
|
}
|
|
else
|
|
{
|
|
m_StartTime = gos_GetElapsedTime () - m_DelayTime - 1.0;
|
|
}
|
|
*/
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void ObjectiveRenderer::ResetTime (void)
|
|
{
|
|
m_StartTime = gos_GetElapsedTime ();
|
|
MW4AI::UserConstants *data;
|
|
data = MW4AI::UserConstants::Instance ();
|
|
if (!data)
|
|
{
|
|
m_DelayTime = 10;
|
|
}
|
|
else
|
|
{
|
|
m_DelayTime = data->Get (MW4AI::UserConstants::objective_display_time);
|
|
}
|
|
}
|
|
|
|
void ObjectiveRenderer::Execute()
|
|
{
|
|
Check_Object(this);
|
|
|
|
if (g_bObjMode == true)
|
|
{
|
|
MWGUIManager::GetInstance ()->HideHudComponent (MWGUIManager::HUD_OBJECTIVE);
|
|
// MW4AI::UserConstants *data;
|
|
// data = MW4AI::UserConstants::Instance ();
|
|
// if (!data)
|
|
// m_DelayTime = 10;
|
|
// else
|
|
// m_DelayTime = data->Get (MW4AI::UserConstants::objective_display_time);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
MWGUIManager::GetInstance ()->ShowHudComponent (MWGUIManager::HUD_OBJECTIVE);
|
|
}
|
|
/*
|
|
if ((gos_GetElapsedTime () - m_StartTime) >= m_DelayTime)
|
|
{
|
|
MWGUIManager::GetInstance ()->HideHudComponent (MWGUIManager::HUD_OBJECTIVE);
|
|
MW4AI::UserConstants *data;
|
|
data = MW4AI::UserConstants::Instance ();
|
|
if (!data)
|
|
m_DelayTime = 10;
|
|
else
|
|
m_DelayTime = data->Get (MW4AI::UserConstants::objective_display_time);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
MWGUIManager::GetInstance ()->ShowHudComponent (MWGUIManager::HUD_OBJECTIVE);
|
|
}
|
|
*/
|
|
if (((gos_GetElapsedTime () - m_HelpStartTime) >= m_HelpDelayTime) || (!m_ShowHelp))
|
|
{
|
|
m_ShowHelp = false;
|
|
MWGUIManager::GetInstance ()->HideHudComponent (MWGUIManager::HUD_HELP);
|
|
MW4AI::UserConstants *data;
|
|
data = MW4AI::UserConstants::Instance ();
|
|
if (!data)
|
|
m_HelpDelayTime = 10;
|
|
else
|
|
m_HelpDelayTime = data->Get (MW4AI::UserConstants::objective_display_time);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
MWGUIManager::GetInstance ()->ShowHudComponent (MWGUIManager::HUD_HELP);
|
|
}
|
|
}
|
|
|
|
|
|
//#############################################################################
|
|
//########################## ExecutionStateEngine #######################
|
|
//#############################################################################
|
|
|
|
Objective::ExecutionStateEngine::ClassData*
|
|
Objective::ExecutionStateEngine::DefaultData = NULL;
|
|
|
|
const StateEngine::StateEntry
|
|
Objective::ExecutionStateEngine::StateEntries[]=
|
|
{
|
|
STATE_ENTRY(Objective__ExecutionStateEngine, Revealed)
|
|
};
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Objective::ExecutionStateEngine::InitializeClass()
|
|
{
|
|
Check_Object(StateEngine::DefaultData);
|
|
Verify(!DefaultData);
|
|
DefaultData =
|
|
new ClassData(
|
|
Objective__ExecutionStateEngineClassID,
|
|
"Objective::ExecutionStateEngine",
|
|
Entity::ExecutionStateEngine::DefaultData,
|
|
ELEMENTS(StateEntries), StateEntries,
|
|
(Entity::ExecutionStateEngine::Factory)Make,
|
|
(Entity::ExecutionStateEngine::FactoryRequest::Factory)
|
|
&FactoryRequest::ConstructFactoryRequest
|
|
);
|
|
Register_Object(DefaultData);
|
|
}
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Objective::ExecutionStateEngine::TerminateClass()
|
|
{
|
|
Unregister_Object(DefaultData);
|
|
delete DefaultData;
|
|
DefaultData = NULL;
|
|
}
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
Objective::ExecutionStateEngine*
|
|
Objective::ExecutionStateEngine::Make(
|
|
Objective *objective,
|
|
FactoryRequest *request
|
|
)
|
|
{
|
|
Check_Object(objective);
|
|
Check_Object(request);
|
|
gos_PushCurrentHeap(Heap);
|
|
Objective::ExecutionStateEngine *engine =
|
|
new Objective::ExecutionStateEngine(DefaultData, objective, request);
|
|
gos_PopCurrentHeap();
|
|
return engine;
|
|
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
Objective::ExecutionStateEngine::TestInstance() const
|
|
{
|
|
Verify(IsDerivedFrom(DefaultData));
|
|
}
|