From 4e3f468a4cd5844b6d90db5308689dde7e6dcc87 Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 14 Jun 2013 00:12:11 +0000 Subject: [PATCH] - Multiplayer: Fixed crash/freeze when clicking "Host" in the host screen o It seems the feature "soldier profiles allows defining individual names/bodytypes/hair/skin/traits of soldiers and militia" (revision 6071) makes trouble with multiplayer. So I disabled the feature and initialization of the xml files in a MP game o Removed the re-initialization of the xml files when clicking on the "Multiplayer Game" menu button. Cause I think the re-initialization is not neede. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6121 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameSettings.cpp | 12 +++++++-- Init.cpp | 64 ++++++++++++++++++++++++---------------------- MainMenuScreen.cpp | 3 ++- 3 files changed, 46 insertions(+), 33 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index 7f13c0e7..87a592c4 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -1250,8 +1250,16 @@ void LoadGameExternalOptions() gGameExternalOptions.fEnemyRank = iniReader.ReadBoolean("Tactical Gameplay Settings","INDIVIDUAL_ENEMY_RANK",FALSE); // Flugente: soldier profiles - gGameExternalOptions.fSoldierProfiles_Enemy = iniReader.ReadBoolean("Tactical Gameplay Settings", "SOLDIER_PROFILES_ENEMY", TRUE); - gGameExternalOptions.fSoldierProfiles_Militia = iniReader.ReadBoolean("Tactical Gameplay Settings", "SOLDIER_PROFILES_MILITIA", TRUE); + + if (!is_networked) + gGameExternalOptions.fSoldierProfiles_Enemy = iniReader.ReadBoolean("Tactical Gameplay Settings", "SOLDIER_PROFILES_ENEMY", TRUE); + else + gGameExternalOptions.fSoldierProfiles_Enemy = FALSE; + + if (!is_networked) + gGameExternalOptions.fSoldierProfiles_Militia = iniReader.ReadBoolean("Tactical Gameplay Settings", "SOLDIER_PROFILES_MILITIA", TRUE); + else + gGameExternalOptions.fSoldierProfiles_Militia = FALSE; // *** ddd - BEGIN gGameExternalOptions.fExtMouseKeyEnabled = iniReader.ReadBoolean("Tactical Interface Settings", "ENABLE_EXT_MOUSE_KEYS", FALSE); diff --git a/Init.cpp b/Init.cpp index 88a2c0d5..a2b2a2cb 100644 --- a/Init.cpp +++ b/Init.cpp @@ -83,6 +83,7 @@ #include "Encyclopedia.h" #include "Encyclopedia_Data.h" #include "AimArchives.h" +#include "connect.h" extern INT16 APBPConstants[TOTAL_APBP_VALUES] = {0}; extern INT16 gubMaxActionPoints[28];//MAXBODYTYPES = 28... JUST GETTING IT TO WORK NOW. GOTTHARD 7/2/08 @@ -1013,41 +1014,44 @@ BOOLEAN LoadExternalGameplayData(STR directoryName) #endif // Flugente: soldier profiles - strcpy(fileName, directoryName); - strcat(fileName, ENEMY_ADMIN_PROFILE_FILENAME); - DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); - SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[0], fileName), ENEMY_ADMIN_PROFILE_FILENAME); - num_found_soldier_profiles[0] = num_found_profiles; + if (!is_networked) + { + strcpy(fileName, directoryName); + strcat(fileName, ENEMY_ADMIN_PROFILE_FILENAME); + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[0], fileName), ENEMY_ADMIN_PROFILE_FILENAME); + num_found_soldier_profiles[0] = num_found_profiles; - strcpy(fileName, directoryName); - strcat(fileName, ENEMY_REGULAR_PROFILE_FILENAME); - DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); - SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[1], fileName), ENEMY_REGULAR_PROFILE_FILENAME); - num_found_soldier_profiles[1] = num_found_profiles; + strcpy(fileName, directoryName); + strcat(fileName, ENEMY_REGULAR_PROFILE_FILENAME); + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[1], fileName), ENEMY_REGULAR_PROFILE_FILENAME); + num_found_soldier_profiles[1] = num_found_profiles; - strcpy(fileName, directoryName); - strcat(fileName, ENEMY_ELITE_PROFILE_FILENAME); - DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); - SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[2], fileName), ENEMY_ELITE_PROFILE_FILENAME); - num_found_soldier_profiles[2] = num_found_profiles; + strcpy(fileName, directoryName); + strcat(fileName, ENEMY_ELITE_PROFILE_FILENAME); + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[2], fileName), ENEMY_ELITE_PROFILE_FILENAME); + num_found_soldier_profiles[2] = num_found_profiles; - strcpy(fileName, directoryName); - strcat(fileName, MILITIA_GREEN_PROFILE_FILENAME); - DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); - SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[3], fileName), MILITIA_GREEN_PROFILE_FILENAME); - num_found_soldier_profiles[3] = num_found_profiles; + strcpy(fileName, directoryName); + strcat(fileName, MILITIA_GREEN_PROFILE_FILENAME); + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[3], fileName), MILITIA_GREEN_PROFILE_FILENAME); + num_found_soldier_profiles[3] = num_found_profiles; - strcpy(fileName, directoryName); - strcat(fileName, MILITIA_REGULAR_PROFILE_FILENAME); - DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); - SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[4], fileName), MILITIA_REGULAR_PROFILE_FILENAME); - num_found_soldier_profiles[4] = num_found_profiles; + strcpy(fileName, directoryName); + strcat(fileName, MILITIA_REGULAR_PROFILE_FILENAME); + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[4], fileName), MILITIA_REGULAR_PROFILE_FILENAME); + num_found_soldier_profiles[4] = num_found_profiles; - strcpy(fileName, directoryName); - strcat(fileName, MILITIA_VETERAN_PROFILE_FILENAME); - DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); - SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[5], fileName), MILITIA_VETERAN_PROFILE_FILENAME); - num_found_soldier_profiles[5] = num_found_profiles; + strcpy(fileName, directoryName); + strcat(fileName, MILITIA_VETERAN_PROFILE_FILENAME); + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + SGP_THROW_IFFALSE(ReadInSoldierProfiles(zSoldierProfile[5], fileName), MILITIA_VETERAN_PROFILE_FILENAME); + num_found_soldier_profiles[5] = num_found_profiles; + } LoadIMPPortraitsTEMP(); diff --git a/MainMenuScreen.cpp b/MainMenuScreen.cpp index 183596d5..a15dd30c 100644 --- a/MainMenuScreen.cpp +++ b/MainMenuScreen.cpp @@ -440,8 +440,9 @@ void MenuButtonCallback(GUI_BUTTON *btn,INT32 reason) //if something didnt work, dont even know how to make error code...//hayden } + // WANNE: Removed, cause I don't think it is needed if we only want to play a multiplayer game! // Reload the external gameplay data, because maybe we started a MP game before! - LoadExternalGameplayData(TABLEDATA_DIRECTORY); + //LoadExternalGameplayData(TABLEDATA_DIRECTORY); SetMainMenuExitScreen( MP_JOIN_SCREEN ); // OJW - 20081129 //SetMainMenuExitScreen( GAME_INIT_OPTIONS_SCREEN );