Files
firestorm/Gameleap/code/mw4/Code/MW4/objective_tool.cpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
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.
2026-06-24 21:28:16 -05:00

123 lines
4.0 KiB
C++

#include "MW4Headers.hpp"
#include "Objective.hpp"
#include "MWTool.hpp"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void Objective__CreateMessage::ConstructCreateMessage(Script *script)
{
Check_Object(script);
#if defined(_ARMOR)
int stack_level = Tool::Instance->GetStackLevel();
#endif
//
//--------------
// Set up stream
//--------------
//
MemoryStream *message_stream = script->messageStream;
Check_Object(message_stream);
message_stream->AllocateBytes(sizeof(Objective__CreateMessage));
Entity__CreateMessage::ConstructCreateMessage(script);
Objective__CreateMessage *message =
Cast_Pointer(
Objective__CreateMessage*,
message_stream->GetPointer()
);
message->messageLength = sizeof(*message);
//
//---------------------------
// Point at the notation file
//---------------------------
//
Page *page = script->instancePage;
Check_Object(page);
NotationFile *instance_file = page->GetNotationFile();
Check_Object(instance_file);
Check_Object(Tool::Instance);
Tool::Instance->PushFilePath(instance_file);
message->primaryObjective = true;
message->visibleObjective = false;
message->helpMessage = false;
message->objectiveState = Objective::Objective_Neutral;
message->failtextID = 0;
message->succeedtextID = 0;
message->neutraltextID = 0;
message->descriptiontextID = 0;
message->failtext[0] = 0;
message->succeedtext[0] = 0;
message->neutraltext[0] = 0;
message->descriptiontext[0] = 0;
page->GetEntry("Number", &message->objectiveID,true);
page->GetEntry("Primary", &message->primaryObjective,false);
page->GetEntry("Visible", &message->visibleObjective,false);
page->GetEntry("Help", &message->helpMessage,false);
page->GetEntry("State", &message->objectiveState,false);
page->GetEntry("failtext",&message->failtextID,false);
page->GetEntry("succeedtext",&message->succeedtextID,false);
page->GetEntry("neutraltext",&message->neutraltextID,false);
page->GetEntry("descriptext",&message->descriptiontextID,false);
const char *temptext;
if (page->GetEntry("failtextstr",&temptext,false) && temptext)
Str_Copy (message->failtext,temptext,sizeof (message->failtext));
if (page->GetEntry("succeedtextstr",&temptext,false) && temptext)
Str_Copy (message->succeedtext,temptext,sizeof (message->succeedtext));
if (page->GetEntry("neutraltextstr",&temptext,false) && temptext)
Str_Copy (message->neutraltext,temptext,sizeof (message->neutraltext));
if (page->GetEntry("descriptextstr",&temptext,false) && temptext)
Str_Copy (message->descriptiontext,temptext,sizeof (message->descriptiontext));
Tool::Instance->PopFilePath();
Verify(stack_level == Tool::Instance->GetStackLevel());
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void Objective::SaveInstanceText(Page *instance_page)
{
Check_Object(this);
Check_Object(instance_page);
Entity::SaveInstanceText(instance_page);
// Appended by SMJ 10/4/99
instance_page->AppendEntry("Number",m_ObjectiveID);
instance_page->AppendEntry("Primary",m_Primary);
instance_page->AppendEntry("Visible",m_VisibleObjective);
instance_page->AppendEntry("Help",m_HelpMessage);
instance_page->AppendEntry("State",m_ObjectiveState);
instance_page->AppendEntry("failtext",-1);
instance_page->AppendEntry("succeedtext",-1);
instance_page->AppendEntry("neutraltext",-1);
instance_page->AppendEntry("descriptext",-1);
instance_page->AppendEntry("@failtextstr",m_LoadedFailText);
instance_page->AppendEntry("@succeedtextstr",m_LoadedSucceedText);
instance_page->AppendEntry("@neutraltextstr",m_LoadedNeutralText);
instance_page->AppendEntry("@descriptextstr",m_LoadedDescriptionText);
int execution_state = executionState->GetState();
MString execution_state_text;
switch(execution_state)
{
case ExecutionStateEngine::RevealedState:
{
execution_state_text = "RevealedState";
break;
}
}
if (execution_state_text)
{
instance_page->SetEntry("ExecutionState", execution_state_text);
}
}