From b8f61df80fdbbca391842812a731b261dd0f2f09 Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Mon, 30 Apr 2012 14:32:35 +0200
Subject: [PATCH] #734: MP cannot be enabled without 'AI' module Add and
 improve error messages.

---
 src/MultiPlayer/multiplaymgr.cxx | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/MultiPlayer/multiplaymgr.cxx b/src/MultiPlayer/multiplaymgr.cxx
index d034f7a1c..8c7a8d7c5 100644
--- a/src/MultiPlayer/multiplaymgr.cxx
+++ b/src/MultiPlayer/multiplaymgr.cxx
@@ -403,9 +403,16 @@ FGMultiplayMgr::init (void)
     SG_LOG(SG_NETWORK, SG_WARN, "FGMultiplayMgr::init - already initialised");
     return;
   }
-  
+
   fgSetBool("/sim/multiplay/online", false);
-  
+
+  if (!fgGetBool("/sim/ai/enabled"))
+  {
+      SG_LOG(SG_NETWORK, SG_ALERT,
+        "Cannot enable multiplayer mode: AI subsystem is disabled (to enable start with '--enable-ai-models').");
+      return;
+  }
+
   //////////////////////////////////////////////////
   //  Set members from property values
   //////////////////////////////////////////////////
@@ -428,8 +435,8 @@ FGMultiplayMgr::init (void)
     if (strncmp (mServer.getHost(), "0.0.0.0", 8) == 0) {
       mHaveServer = false;
       SG_LOG(SG_NETWORK, SG_ALERT,
-        "FGMultiplayMgr - Could not resolve '"
-        << txAddress << "'. Multiplayer mode disabled.");
+        "Cannot enable multiplayer mode: resolving MP server address '"
+        << txAddress << "' failed.");
       return;
     } else {
       SG_LOG(SG_NETWORK, SG_INFO, "FGMultiplayMgr - have server");
@@ -438,13 +445,13 @@ FGMultiplayMgr::init (void)
     if (rxPort <= 0)
       rxPort = txPort;
   } else {
-    SG_LOG(SG_NETWORK, SG_INFO, "FGMultiplayMgr - no transmission address. Multiplayer mode disabled");
+    SG_LOG(SG_NETWORK, SG_ALERT, "Cannot enable multiplayer mode: missing a valid server address.");
     return;
   }
 
   if (rxPort <= 0) {
-    SG_LOG(SG_NETWORK, SG_INFO,
-      "FGMultiplayMgr - No receiver port. Multiplayer mode disabled.");
+    SG_LOG(SG_NETWORK, SG_ALERT,
+      "Cannot enable multiplayer mode: No receiver port specified.");
     return;
   }
   if (mCallsign.empty())
@@ -457,14 +464,14 @@ FGMultiplayMgr::init (void)
   
   mSocket.reset(new simgear::Socket());
   if (!mSocket->open(false)) {
-    SG_LOG( SG_NETWORK, SG_WARN,
-            "FGMultiplayMgr - Failed to create data socket. Multiplayer mode disabled." );
+    SG_LOG( SG_NETWORK, SG_ALERT,
+            "Cannot enable multiplayer mode: creating data socket failed." );
     return;
   }
   mSocket->setBlocking(false);
   if (mSocket->bind(rxAddress.c_str(), rxPort) != 0) {
     SG_LOG( SG_NETWORK, SG_ALERT,
-            "FGMultiplayMgr - Failed to bind receive socket. Multiplayer mode disabled. "
+            "Cannot enable multiplayer mode: binding receive socket failed. "
             << strerror(errno) << "(errno " << errno << ")");
     return;
   }