Files
2022-10-26 12:25:11 +08:00

107 lines
2.4 KiB
C++

//------------------------------------------------------------------------------
//
// (C) 2005³â 9¿ù 24ÀÏ ÀÓ´ëÁø
//
//------------------------------------------------------------------------------
#include "SunClientPrecompiledHeader.h"
#include <SolarFileReader.h>
#include "HelpMessageParser.h"
HelpMessageParser::HelpMessageParser()
{
}
HelpMessageParser::~HelpMessageParser()
{
if (help_message_data_.empty() == false)
{
Unload();
}
}
VOID HelpMessageParser::Release()
{
Unload();
}
VOID HelpMessageParser::Init(char * pack_filename)
{
SetPackFileName(pack_filename);
}
BOOL HelpMessageParser::LoadScript(eSCRIPT_CODE script_code, BOOL is_reload)
{
int row_size = GetRowSize();
for (int row = 0; row < row_size; ++row)
{
HelpMessage* new_help_message = new HelpMessage;
new_help_message->index = GetDataInt("Index", row);
StrnCopy(new_help_message->help_message, GetDataString("HelpString", row), MAX_MESSAGE_LENGTH);
if (GetHelpMessageByIndex(new_help_message->index) == NULL)
{
help_message_data().push_back(new_help_message);
}
}
ShuffleHelpMessage();
return TRUE;
}
TCHAR *HelpMessageParser::GetHelpMessageByIndex(int Index)
{
if (help_message_data().empty() == true)
{
return NULL;
}
HelpMessageVectorItr help_message_itr = help_message_data().begin();
HelpMessageVectorItr help_message_itr_end = help_message_data().end();
for ( ;help_message_itr != help_message_itr_end; ++help_message_itr)
{
if ((*help_message_itr)->index == Index)
{
return (*help_message_itr)->help_message;
}
}
return NULL;
}
TCHAR* HelpMessageParser::GetHelpMessage()
{
if (help_message_data().empty() == true)
{
return NULL;
}
HelpMessageVectorItr help_message_itr = current_help_message_itr();
TCHAR* help_message = (*help_message_itr)->help_message;
++help_message_itr;
set_current_help_message_itr(help_message_itr);
if (current_help_message_itr() == help_message_data_.end())
{
ShuffleHelpMessage();
}
return help_message;
}
VOID HelpMessageParser::Unload()
{
HelpMessageVectorItr help_message_itr = help_message_data().begin();
HelpMessageVectorItr help_message_itr_end = help_message_data().end();
for( ;help_message_itr != help_message_itr_end; ++help_message_itr)
{
delete (*help_message_itr);
}
help_message_data_.clear();
}