- Encapsulated and moved ReadExtraGameMsgFiles function call from NewGame2 to MainMenu.

This commit is contained in:
Vennor
2016-05-08 16:11:51 +02:00
parent f9dbbcdca2
commit 07b7e270b8
3 changed files with 48 additions and 40 deletions
+7 -40
View File
@@ -278,44 +278,6 @@ end:
}
}
void ReadExtraGameMsgFiles()
{
int read;
std::string names;
names.resize(256);
while ((read = GetPrivateProfileStringA("Misc", "ExtraGameMsgFileList", "",
(LPSTR)names.data(), names.size(), ".\\ddraw.ini")) == names.size() - 1)
names.resize(names.size() + 256);
if (names.empty())
return;
names.resize(names.find_first_of('\0'));
names.append(",");
int begin = 0;
int end;
int length;
while ((end = names.find_first_of(',', begin)) != std::string::npos)
{
length = end - begin;
if (length > 0)
{
std::string path = "game\\" + names.substr(begin, length) + ".msg";
MSGList* list = new MSGList;
if (LoadMsgList(list, (char*)path.data()) == 1)
gExtraGameMsgLists.insert(std::make_pair(0x2000 + gExtraGameMsgLists.size(), list));
}
begin = end + 1;
}
}
static void NewGame2() {
ResetState(0);
@@ -338,8 +300,6 @@ static void NewGame2() {
*(DWORD*)0x00672E04=1;
}
ReadExtraGameMsgFiles();
LoadGlobalScripts();
CritLoad();
}
@@ -353,11 +313,18 @@ static void __declspec(naked) NewGame() {
}
}
static void ReadExtraGameMsgFilesIfNeeded()
{
if (gExtraGameMsgLists.empty())
ReadExtraGameMsgFiles();
}
static void __declspec(naked) MainMenu() {
__asm {
pushad;
push 0;
call ResetState;
call ReadExtraGameMsgFilesIfNeeded;
call LoadHeroAppearance;
popad;
call main_menu_loop_;
+40
View File
@@ -93,3 +93,43 @@ char* GetMsg(MSGList *MsgList, DWORD msgRef, int msgNum) {
}
return NULL;
}
void ReadExtraGameMsgFiles()
{
int read;
std::string names;
names.resize(256);
while ((read = GetPrivateProfileStringA("Misc", "ExtraGameMsgFileList", "",
(LPSTR)names.data(), names.size(), ".\\ddraw.ini")) == names.size() - 1)
names.resize(names.size() + 256);
if (names.empty())
return;
names.resize(names.find_first_of('\0'));
names.append(",");
int begin = 0;
int end;
int length;
while ((end = names.find_first_of(',', begin)) != std::string::npos)
{
length = end - begin;
if (length > 0)
{
std::string path = "game\\" + names.substr(begin, length) + ".msg";
MSGList* list = new MSGList;
if (LoadMsgList(list, (char*)path.data()) == 1)
gExtraGameMsgLists.insert(std::make_pair(0x2000 + gExtraGameMsgLists.size(), list));
else
delete list;
}
begin = end + 1;
}
}
+1
View File
@@ -54,3 +54,4 @@ int DestroyMsgList(MSGList *MsgList);
//bool GetMsg(MSGList *MsgList, MSGNode *MsgNode, DWORD msgRef);
MSGNode *GetMsgNode(MSGList *MsgList, DWORD msgRef);
char* GetMsg(MSGList *MsgList, DWORD msgRef, int msgNum);
void ReadExtraGameMsgFiles();