diff --git a/planet/System.ocg/LanguageDE.txt b/planet/System.ocg/LanguageDE.txt index 3b13fc082..0846e1216 100644 --- a/planet/System.ocg/LanguageDE.txt +++ b/planet/System.ocg/LanguageDE.txt @@ -347,7 +347,7 @@ IDS_DLG_LEAGUESIGNUPON=Liga-Anmeldung auf %s IDS_DLG_LOBBY=Lobby IDS_DLG_LOG=Fehlermeldungen IDS_DLG_MISSIONACCESS=Missionszugang -IDS_DLG_NETRESUME=Du hast soeben ein Spiel im Netzwerkmodus gespeichert.|Es ist unwahschreinlich, dass der Spielstand als Netzwerkspiel fortgesetzt werden kann.|Dies ist ein bekannter Fehler. +IDS_DLG_NETRESUME=Es gibt lokale Spieler, die keinen Spieler aus dem Spielstand weiterverwenden.|Es ist wahschreinlich, dass das Spiel nicht synchron ablaufen wird.|Dies ist ein bekannter Fehler.||Trozdem starten? IDS_DLG_NETSTART=Netzwerkspiel starten IDS_DLG_NETWORK=Netzwerk IDS_DLG_NO=&Nein diff --git a/planet/System.ocg/LanguageUS.txt b/planet/System.ocg/LanguageUS.txt index 1625a145d..7707bbbe3 100644 --- a/planet/System.ocg/LanguageUS.txt +++ b/planet/System.ocg/LanguageUS.txt @@ -347,7 +347,7 @@ IDS_DLG_LEAGUESIGNUPON=League Login on %s IDS_DLG_LOBBY=Lobby IDS_DLG_LOG=Error Log IDS_DLG_MISSIONACCESS=Mission Access -IDS_DLG_NETRESUME=You just saved a game in network mode.|It is unlikely that this save can be resumed as a network game.|This is a known error. +IDS_DLG_NETRESUME=There are local players that do not use an existing savegame player.|It is unlikely that the game will run synchronously.|This is a known error.||Start anyway? IDS_DLG_NETSTART=Start Network Game IDS_DLG_NETWORK=Network IDS_DLG_NO=&No diff --git a/src/game/C4Game.cpp b/src/game/C4Game.cpp index e0b882a7d..6c521c05b 100644 --- a/src/game/C4Game.cpp +++ b/src/game/C4Game.cpp @@ -1981,16 +1981,6 @@ bool C4Game::QuickSave(const char *strFilename, const char *strTitle, bool fForc // Success Log(LoadResStr("IDS_CNS_GAMESAVED")); - - // Warning about network saves - if (Network.isEnabled()) - ::pGUI->ShowMessageModal( - LoadResStr("IDS_DLG_NETRESUME"), - LoadResStr("IDS_CNS_GAMESAVED"), - C4GUI::MessageDialog::btnOK, - C4GUI::Ico_Error - ); - return true; } diff --git a/src/gui/C4GameLobby.cpp b/src/gui/C4GameLobby.cpp index ee6ac1086..3c45c3ee5 100644 --- a/src/gui/C4GameLobby.cpp +++ b/src/gui/C4GameLobby.cpp @@ -407,12 +407,34 @@ namespace C4GameLobby { // network savegame resumes: Warn if not all players have been associated if (Game.C4S.Head.SaveGame) + { if (Game.PlayerInfos.FindUnassociatedRestoreInfo(Game.RestorePlayerInfos)) { StdStrBuf sMsg; sMsg.Ref(LoadResStr("IDS_MSG_NOTALLSAVEGAMEPLAYERSHAVE")); if (!GetScreen()->ShowMessageModal(sMsg.getData(), LoadResStr("IDS_MSG_FREESAVEGAMEPLRS"), C4GUI::MessageDialog::btnYesNo, C4GUI::Ico_SavegamePlayer, &Config.Startup.HideMsgPlrNoTakeOver)) return; } + + // warning about desync bug #1965 + int i=0; C4ClientPlayerInfos *pkInfo; + while ((pkInfo = Game.PlayerInfos.GetIndexedInfo(i++))) { + C4PlayerInfo *pPlrInfo; int32_t iInfo=0; + while ((pPlrInfo = pkInfo->GetPlayerInfo(iInfo++))) + if (!pPlrInfo->GetAssociatedSavegamePlayerID()) + { + bool ignore = GetScreen()->ShowMessageModal( + LoadResStr("IDS_DLG_NETRESUME"), + LoadResStr("IDS_MSG_FREESAVEGAMEPLRS"), + C4GUI::MessageDialog::btnYesNo, + C4GUI::Ico_Error + ); + if (ignore) + break; + else + return; + } + } + } // validate countdown time iCountdownTime = ValidatedCountdownTime(iCountdownTime); // either direct start...