From 787328c1deeaf3c62f4a30c928e4d2dfd4dd9f4f Mon Sep 17 00:00:00 2001
From: nehalmistry <>
Date: Wed, 27 Nov 2002 07:36:45 +0000
Subject: [PATCH] fixed bug: [ 618086 ] bugs when without network

---
 src/game/game.cpp           |  2 ++
 src/include/menus.h         |  3 +++
 src/stratagus/stratagus.cpp |  5 ++++-
 src/ui/menus.cpp            | 18 +++++++++++++-----
 4 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/game/game.cpp b/src/game/game.cpp
index 5d38553d0..877125438 100644
--- a/src/game/game.cpp
+++ b/src/game/game.cpp
@@ -298,6 +298,8 @@ global void CreateGame(char* filename, WorldMap* map)
     if( NetworkFildes!=-1 ) {		// Prepare network play
 	DebugLevel0Fn("Client setup: Calling InitNetwork2\n");
 	InitNetwork2();
+    } else {
+	ThisPlayer = &Players[0];
     }
 
     if( GameIntro.Title ) {
diff --git a/src/include/menus.h b/src/include/menus.h
index cf51dfe51..65228936f 100644
--- a/src/include/menus.h
+++ b/src/include/menus.h
@@ -345,6 +345,9 @@ extern int EditorSave(void);
     /// Error menu
 extern void ErrorMenu(char *);
 
+    /// Menu Loop
+extern void MenuLoop(char *filename, WorldMap *map);
+
 //@}
 
 #endif	// !__MENUS_H__
diff --git a/src/stratagus/stratagus.cpp b/src/stratagus/stratagus.cpp
index 08a37e24a..28f7e9080 100644
--- a/src/stratagus/stratagus.cpp
+++ b/src/stratagus/stratagus.cpp
@@ -1023,7 +1023,10 @@ global void MenuLoop(char* filename, WorldMap* map)
 	    }
 	    EnableRedraw=RedrawMenu;
 	    if( EditorRunning ) {
+		QuitToMenu = 0;
 		ProcessMenu("menu-editor-select", 1);
+		if (QuitToMenu)
+		    return;
 	    } else {
 		ProcessMenu("menu-program-start", 1);
 	    }
@@ -1040,7 +1043,7 @@ global void MenuLoop(char* filename, WorldMap* map)
 	//
 	if( EditorRunning ) {
 	    EditorMainLoop();
-	} else {
+	} else if (GameRunning) {
 	    //
 	    //	Create the game.
 	    //
diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index 00eb6db99..f26b52638 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -242,6 +242,7 @@ local void NetConnectingCancel(void);
 local void TerminateNetConnect(void);
 
 local void StartEditor(void);
+local void CancelEditorSelect(void);
 local void EditorNewMap(void);
 local void EditorNewDrawFunc(Menuitem *mi);
 local void EditorNewMapDescriptionEnterAction(Menuitem *mi, int key);
@@ -565,6 +566,7 @@ global void InitMenuFuncHash(void) {
     HASHADD(FcDeleteCancel,"fc-delete-cancel");
 
 // Editor select
+    HASHADD(CancelEditorSelect,"cancel-editor-select");
     HASHADD(EditorNewMap,"editor-new-map");
     HASHADD(EditorMainLoadMap,"editor-main-load-map");
 
@@ -4654,7 +4656,14 @@ local void StartEditor(void)
 	*ScenSelectDisplayPath = '\0';
     }
 
-    ProcessMenu("menu-editor-select", 1);
+    EditorRunning = 1;
+    MenuLoop(NULL, &TheMap);
+}
+
+local void CancelEditorSelect(void)
+{
+    QuitToMenu = 1;
+    EndMenu();
 }
 
 /**
@@ -4712,8 +4721,6 @@ local void EditorNewMap(void)
 
     *CurrentMapPath = '\0';
 
-    // FIXME: Use EditorRunning and main-loop.
-    EditorMainLoop();
     EndMenu();
 }
 
@@ -6149,8 +6156,9 @@ local void EditorSaveConfirmCancel(void)
 */
 local void EditorQuitMenu(void)
 {
-    EditorRunning = 0;
-    GameMenuReturn();
+    QuitToMenu = 1;
+    EditorRunning = 0;    
+    EndMenu();
 }
 
 /**