mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
- Encapsulated and moved ReadExtraGameMsgFiles function call from NewGame2 to MainMenu.
This commit is contained in:
+7
-40
@@ -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_;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
Reference in New Issue
Block a user