From 26cf98ccfc70909be916d29f0cc480f6929cbb08 Mon Sep 17 00:00:00 2001
From: Craig Robbins <kde.psych@gmail.com>
Date: Mon, 24 Nov 2014 13:52:27 +1000
Subject: [PATCH] Fix client "double saving" simple singleplayer local maps

---
 src/client.cpp | 4 +++-
 src/client.h   | 1 +
 src/game.cpp   | 8 +++++---
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/client.cpp b/src/client.cpp
index c1806df99..074ac9ba6 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -219,6 +219,7 @@ Client::Client(
 		IrrlichtDevice *device,
 		const char *playername,
 		std::string password,
+		bool is_simple_singleplayer_game,
 		MapDrawControl &control,
 		IWritableTextureSource *tsrc,
 		IWritableShaderSource *shsrc,
@@ -280,7 +281,8 @@ Client::Client(
 		m_env.addPlayer(player);
 	}
 
-	if (g_settings->getBool("enable_local_map_saving")) {
+	if (g_settings->getBool("enable_local_map_saving")
+			&& !is_simple_singleplayer_game) {
 		const std::string world_path = porting::path_user + DIR_DELIM + "worlds"
 				+ DIR_DELIM + "server_" + g_settings->get("address")
 				+ "_" + g_settings->get("remote_port");
diff --git a/src/client.h b/src/client.h
index e41410f14..e871dee93 100644
--- a/src/client.h
+++ b/src/client.h
@@ -305,6 +305,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
 			IrrlichtDevice *device,
 			const char *playername,
 			std::string password,
+			bool is_simple_singleplayer_game,
 			MapDrawControl &control,
 			IWritableTextureSource *tsrc,
 			IWritableShaderSource *shsrc,
diff --git a/src/game.cpp b/src/game.cpp
index 4518c1612..70d526a9d 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -2103,9 +2103,11 @@ bool Game::connectToServer(const std::string &playername,
 		return false;
 	}
 
-	client = new Client(device, playername.c_str(), password, *draw_control,
-		    texture_src, shader_src, itemdef_manager, nodedef_manager, sound,
-			eventmgr, connect_address.isIPv6());
+	client = new Client(device,
+			playername.c_str(), password, simple_singleplayer_mode,
+			*draw_control, texture_src, shader_src,
+			itemdef_manager, nodedef_manager, sound, eventmgr,
+			connect_address.isIPv6());
 
 	if (!client)
 		return false;
-- 
GitLab