From 1209fc6508d58ac2be896c099fcddc88464db02f Mon Sep 17 00:00:00 2001
From: baletiballo <75846481+baletiballo@users.noreply.github.com>
Date: Thu, 28 Nov 2024 14:27:43 +0100
Subject: [PATCH] Refactoring ServerSlots, removed IPcheckGeneration

CommunicationEvents now has an Enum for the ServerSlots and a Dictionary to get their data. This e.g. allows iterating over all slots and thus CheckServer is nearly empty now. Most of the other files just had the references adapted.

There seemed to be no use of IPcheckGeneration, as it got decreased if it was to high.
---
 .../Prefabs/UI/NetwMenu/ASMenu_MnCtrl.prefab  | 319 +++++++++++++++++-
 .../UI/NetwMenu/NetwokOptM_MnCtrl 2.prefab    |   2 +-
 .../UI/NetwMenu/OptMenuCrop_1_Can.prefab      |   2 +-
 .../Prefabs/UI/NetwMenu/OptionsM.prefab       |   2 +-
 Assets/Scenes/Menus/LaunchMenu.unity          | 169 +++++++++-
 Assets/Scripts/CheckServer.cs                 | 131 +------
 Assets/Scripts/CheckServerPush.cs             |  23 +-
 .../InteractionEngine/CommunicationEvents.cs  | 157 ++++++---
 .../Scripts/Loading/StreamingAssetLoader.cs   | 156 ++++-----
 Assets/Scripts/UI/NetwMenu/FindIP.cs          |  28 +-
 .../Scripts/UI/NetwMenu/LaunchMenu_mobile.cs  |   6 +-
 .../UI/NetwMenu/SaveNetwAddr_mobile.cs        |  62 ++--
 .../UI/NetwMenu/SelectNetwServer_mobile.cs    | 100 +-----
 .../UI/NetwMenu/SelectedNetwServer_mobile.cs  |  10 +-
 .../NetwMenu/SelectedNewNetwServer_mobile.cs  |  10 +-
 .../Scripts/UI/NetwMenu/StartMenu_mobile.cs   |  11 +-
 Assets/ServerSlotComponent.cs                 |  11 +
 Assets/ServerSlotComponent.cs.meta            |  11 +
 UserSettings/EditorUserSettings.asset         |  18 +-
 19 files changed, 779 insertions(+), 449 deletions(-)
 create mode 100644 Assets/ServerSlotComponent.cs
 create mode 100644 Assets/ServerSlotComponent.cs.meta

diff --git a/Assets/Resources/Prefabs/UI/NetwMenu/ASMenu_MnCtrl.prefab b/Assets/Resources/Prefabs/UI/NetwMenu/ASMenu_MnCtrl.prefab
index ef94bcf7..cd29bb8e 100644
--- a/Assets/Resources/Prefabs/UI/NetwMenu/ASMenu_MnCtrl.prefab
+++ b/Assets/Resources/Prefabs/UI/NetwMenu/ASMenu_MnCtrl.prefab
@@ -2813,9 +2813,9 @@ RectTransform:
   m_LocalScale: {x: 0, y: 0, z: 0}
   m_ConstrainProportionsScale: 0
   m_Children:
-  - {fileID: 5366996316036003392}
-  - {fileID: 5366996315080589335}
   - {fileID: 5366996316012566048}
+  - {fileID: 5366996315080589335}
+  - {fileID: 5366996316036003392}
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -3095,7 +3095,7 @@ RectTransform:
   - {fileID: 1117501623706235904}
   - {fileID: 1117501622783544332}
   m_Father: {fileID: 5366996315580957718}
-  m_RootOrder: 2
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -3203,7 +3203,7 @@ RectTransform:
   - {fileID: 6914020161757597414}
   - {fileID: 8842023094143837814}
   m_Father: {fileID: 5366996315580957718}
-  m_RootOrder: 0
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -5534,6 +5534,31 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 15
       objectReference: {fileID: 0}
+    - target: {fileID: 266457293004759893, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457293004759894, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457293004759894, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: Slot
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457293004759894, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument
+      value: 
+      objectReference: {fileID: 4885809082697228742}
+    - target: {fileID: 266457293004759894, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: ServerSlotComponent, Assembly-CSharp
+      objectReference: {fileID: 0}
     - target: {fileID: 266457293017241412, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -5559,6 +5584,16 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 266457293137575364, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_PresetInfoIsWorld
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457293137575369, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_Name
+      value: ServerSlotButtons
+      objectReference: {fileID: 0}
     - target: {fileID: 266457293137575370, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.y
@@ -5594,6 +5629,31 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.x
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 266457293592689185, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457293592689186, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457293592689186, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: Slot
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457293592689186, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument
+      value: 
+      objectReference: {fileID: 8499128799773893550}
+    - target: {fileID: 266457293592689186, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: ServerSlotComponent, Assembly-CSharp
+      objectReference: {fileID: 0}
     - target: {fileID: 266457293592689213, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.y
@@ -5679,6 +5739,31 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 15
       objectReference: {fileID: 0}
+    - target: {fileID: 266457294111085870, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457294111085871, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457294111085871, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: Slot
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457294111085871, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument
+      value: 
+      objectReference: {fileID: 8378414377116276058}
+    - target: {fileID: 266457294111085871, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: ServerSlotComponent, Assembly-CSharp
+      objectReference: {fileID: 0}
     - target: {fileID: 266457294139171630, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -5834,6 +5919,31 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 15
       objectReference: {fileID: 0}
+    - target: {fileID: 266457294444282573, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457294444282574, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457294444282574, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: Slot
+      objectReference: {fileID: 0}
+    - target: {fileID: 266457294444282574, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument
+      value: 
+      objectReference: {fileID: 7712862719212773064}
+    - target: {fileID: 266457294444282574, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: ServerSlotComponent, Assembly-CSharp
+      objectReference: {fileID: 0}
     - target: {fileID: 266457294453969648, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -5904,6 +6014,11 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 1.375
       objectReference: {fileID: 0}
+    - target: {fileID: 1358216817539847721, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 1875362796578346920, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchorMax.y
@@ -5932,7 +6047,27 @@ PrefabInstance:
     - target: {fileID: 2815923836362319388, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: -4.9999847
+      value: -4.9999695
+      objectReference: {fileID: 0}
+    - target: {fileID: 3171689844832372119, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 3171689844832372119, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: Slot
+      objectReference: {fileID: 0}
+    - target: {fileID: 3171689844832372119, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument
+      value: 
+      objectReference: {fileID: 316098368976873463}
+    - target: {fileID: 3171689844832372119, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: ServerSlotComponent, Assembly-CSharp
       objectReference: {fileID: 0}
     - target: {fileID: 3282347303137492915, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
@@ -5954,6 +6089,11 @@ PrefabInstance:
       propertyPath: m_AnchorMax.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 3406104997600660245, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: -5
+      objectReference: {fileID: 0}
     - target: {fileID: 3545168087928552614, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchorMax.x
@@ -5999,6 +6139,11 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 146.10156
       objectReference: {fileID: 0}
+    - target: {fileID: 4298968331658003880, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_Enabled
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 4336276574167657637, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -6012,7 +6157,7 @@ PrefabInstance:
     - target: {fileID: 4579715242862631517, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: -4.9999847
+      value: -4.9999695
       objectReference: {fileID: 0}
     - target: {fileID: 4654362771177702286, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
@@ -6057,12 +6202,12 @@ PrefabInstance:
     - target: {fileID: 7116002430756151160, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: -5.0000153
+      value: -5
       objectReference: {fileID: 0}
     - target: {fileID: 7121850332990498394, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: -4.9999847
+      value: -4.9999695
       objectReference: {fileID: 0}
     - target: {fileID: 7628291294465844033, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
@@ -6124,6 +6269,26 @@ PrefabInstance:
       propertyPath: m_AnchorMax.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 9066730024666877311, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 9066730024666877311, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
+      value: Slot
+      objectReference: {fileID: 0}
+    - target: {fileID: 9066730024666877311, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument
+      value: 
+      objectReference: {fileID: 6894151661689308088}
+    - target: {fileID: 9066730024666877311, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
+      value: ServerSlotComponent, Assembly-CSharp
+      objectReference: {fileID: 0}
     - target: {fileID: 9173739099617212345, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -6131,6 +6296,44 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: c2b1781fb05a3d0478a9fb36c9db98b9, type: 3}
+--- !u!1 &3482856177331069982 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 8762972383231762760, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+    type: 3}
+  m_PrefabInstance: {fileID: 5316996106540909910}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &6894151661689308088
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3482856177331069982}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7a16e25375fcb774d9ea23be50b1f5e3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  serverSlot: 5
+--- !u!1 &5366996314989793403 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 266457294111085869, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+    type: 3}
+  m_PrefabInstance: {fileID: 5316996106540909910}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &8378414377116276058
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5366996314989793403}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7a16e25375fcb774d9ea23be50b1f5e3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  serverSlot: 0
 --- !u!1 &5366996315080589334 stripped
 GameObject:
   m_CorrespondingSourceObject: {fileID: 266457294151353664, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
@@ -6143,6 +6346,106 @@ RectTransform:
     type: 3}
   m_PrefabInstance: {fileID: 5316996106540909910}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &5366996315322992538 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 266457294444282572, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+    type: 3}
+  m_PrefabInstance: {fileID: 5316996106540909910}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &7712862719212773064
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5366996315322992538}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7a16e25375fcb774d9ea23be50b1f5e3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  serverSlot: 2
+--- !u!1 &5366996316098258445 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 266457293004759899, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+    type: 3}
+  m_PrefabInstance: {fileID: 5316996106540909910}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &4885809082697228742
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5366996316098258445}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7a16e25375fcb774d9ea23be50b1f5e3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  serverSlot: 4
+--- !u!1 &5366996316499441823 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 266457293137575369, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+    type: 3}
+  m_PrefabInstance: {fileID: 5316996106540909910}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &7630018522086977791
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5366996316499441823}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ffd50588bd413a942ae5239c62b86c60, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  LPS_B_GObj: {fileID: 5366996314989793403}
+  Slot1_B_GObj: {fileID: 5366996315322992538}
+  Slot2_B_GObj: {fileID: 5366996316686057334}
+  Slot3_B_GObj: {fileID: 5366996316098258445}
+  Slot4_B_GObj: {fileID: 3482856177331069982}
+  Slot5_B_GObj: {fileID: 6969110458773737930}
+--- !u!1 &5366996316686057334 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 266457293592689184, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+    type: 3}
+  m_PrefabInstance: {fileID: 5316996106540909910}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &8499128799773893550
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5366996316686057334}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7a16e25375fcb774d9ea23be50b1f5e3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  serverSlot: 3
+--- !u!1 &6969110458773737930 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 2989970963852596380, guid: c2b1781fb05a3d0478a9fb36c9db98b9,
+    type: 3}
+  m_PrefabInstance: {fileID: 5316996106540909910}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &316098368976873463
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6969110458773737930}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7a16e25375fcb774d9ea23be50b1f5e3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  serverSlot: 6
 --- !u!1001 &5366996315100264232
 PrefabInstance:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/NetwMenu/NetwokOptM_MnCtrl 2.prefab b/Assets/Resources/Prefabs/UI/NetwMenu/NetwokOptM_MnCtrl 2.prefab
index 3099e155..c5d88bb9 100644
--- a/Assets/Resources/Prefabs/UI/NetwMenu/NetwokOptM_MnCtrl 2.prefab	
+++ b/Assets/Resources/Prefabs/UI/NetwMenu/NetwokOptM_MnCtrl 2.prefab	
@@ -2813,7 +2813,7 @@ MonoBehaviour:
   m_FallbackScreenDPI: 96
   m_DefaultSpriteDPI: 96
   m_DynamicPixelsPerUnit: 1
-  m_PresetInfoIsWorld: 1
+  m_PresetInfoIsWorld: 0
 --- !u!114 &6804933134010575744
 MonoBehaviour:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/NetwMenu/OptMenuCrop_1_Can.prefab b/Assets/Resources/Prefabs/UI/NetwMenu/OptMenuCrop_1_Can.prefab
index 6fc3f140..0ac823bf 100644
--- a/Assets/Resources/Prefabs/UI/NetwMenu/OptMenuCrop_1_Can.prefab
+++ b/Assets/Resources/Prefabs/UI/NetwMenu/OptMenuCrop_1_Can.prefab
@@ -83,7 +83,7 @@ MonoBehaviour:
   m_FallbackScreenDPI: 96
   m_DefaultSpriteDPI: 96
   m_DynamicPixelsPerUnit: 1
-  m_PresetInfoIsWorld: 1
+  m_PresetInfoIsWorld: 0
 --- !u!114 &4785433923051044236
 MonoBehaviour:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/UI/NetwMenu/OptionsM.prefab b/Assets/Resources/Prefabs/UI/NetwMenu/OptionsM.prefab
index 2ea00eb0..7f2ee4bb 100644
--- a/Assets/Resources/Prefabs/UI/NetwMenu/OptionsM.prefab
+++ b/Assets/Resources/Prefabs/UI/NetwMenu/OptionsM.prefab
@@ -3937,7 +3937,7 @@ MonoBehaviour:
   m_FallbackScreenDPI: 96
   m_DefaultSpriteDPI: 96
   m_DynamicPixelsPerUnit: 1
-  m_PresetInfoIsWorld: 1
+  m_PresetInfoIsWorld: 0
 --- !u!114 &266457294151353667
 MonoBehaviour:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scenes/Menus/LaunchMenu.unity b/Assets/Scenes/Menus/LaunchMenu.unity
index 4d89792b..cd6872e3 100644
--- a/Assets/Scenes/Menus/LaunchMenu.unity
+++ b/Assets/Scenes/Menus/LaunchMenu.unity
@@ -38,7 +38,7 @@ RenderSettings:
   m_ReflectionIntensity: 1
   m_CustomReflection: {fileID: 0}
   m_Sun: {fileID: 0}
-  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
+  m_IndirectSpecularColor: {r: 0.44631976, g: 0.49611664, b: 0.5744803, a: 1}
   m_UseRadianceAmbientProbe: 0
 --- !u!157 &3
 LightmapSettings:
@@ -1756,7 +1756,7 @@ PrefabInstance:
     - target: {fileID: 166691744853340724, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 390031447492867791, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -1786,7 +1786,7 @@ PrefabInstance:
     - target: {fileID: 675079858708547288, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 703218053416320092, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -1846,7 +1846,7 @@ PrefabInstance:
     - target: {fileID: 1410769580140872472, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 1477939753416378642, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -1856,7 +1856,7 @@ PrefabInstance:
     - target: {fileID: 1482267526274461358, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 1560678675140750681, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -1893,6 +1893,11 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 1662363385525495207, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_PresetInfoIsWorld
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 1662363385579300209, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -1958,6 +1963,11 @@ PrefabInstance:
       propertyPath: m_LocalPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 1662363387204643853, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_PresetInfoIsWorld
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 1662363387338175133, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.y
@@ -2026,7 +2036,7 @@ PrefabInstance:
     - target: {fileID: 2522040357882909789, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 2635809129103053871, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -2051,12 +2061,12 @@ PrefabInstance:
     - target: {fileID: 2869114312252178222, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.x
-      value: 0
+      value: 0.2
       objectReference: {fileID: 0}
     - target: {fileID: 2869114312252178222, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 2973803960881862375, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -2343,6 +2353,11 @@ PrefabInstance:
       propertyPath: m_Name
       value: ResetAll
       objectReference: {fileID: 0}
+    - target: {fileID: 4375886724170725214, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 4577032551960066354, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -2383,6 +2398,11 @@ PrefabInstance:
       propertyPath: m_AnchorMax.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5236334978631190716, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 5348281885926402043, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
@@ -2453,6 +2473,11 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315080589334, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315142305631, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -2463,6 +2488,16 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315147294849, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_PresetInfoIsWorld
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5366996315147294861, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315167334625, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -2478,6 +2513,11 @@ PrefabInstance:
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315187901821, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315190395667, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -2518,11 +2558,26 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315370036593, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315378746484, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315430787855, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 5366996315444529204, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315513376719, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -2693,6 +2748,11 @@ PrefabInstance:
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315780310446, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315782885420, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -2723,6 +2783,11 @@ PrefabInstance:
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315871281050, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315950796513, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -2738,21 +2803,41 @@ PrefabInstance:
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996315967852899, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996315974564467, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
       value: 1.2089844
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316012566051, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316031889720, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316036003404, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316043563538, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316043563551, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316045321875, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -2783,6 +2868,11 @@ PrefabInstance:
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316158688899, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316196955506, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -2853,6 +2943,11 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316499441810, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_PresetInfoIsWorld
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316499441820, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.y
@@ -2903,6 +2998,11 @@ PrefabInstance:
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316643366183, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316655696528, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -2933,16 +3033,31 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316939245616, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316951723385, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316951723386, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316957892898, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 5366996316957892911, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 5366996316996975968, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchoredPosition.x
@@ -3006,7 +3121,7 @@ PrefabInstance:
     - target: {fileID: 6039154815366894334, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 6058631775699974023, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -3121,7 +3236,7 @@ PrefabInstance:
     - target: {fileID: 7475751197872360999, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 7495062022093777435, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
@@ -3163,6 +3278,27 @@ PrefabInstance:
       propertyPath: m_LocalPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 8283851064374197620, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 8283851064374197620, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 8283851064374197620, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
+      value: 
+      objectReference: {fileID: 11500000, guid: baada65e49c925541b0fa8823b27a801,
+        type: 3}
+    - target: {fileID: 8283851064374197620, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
+      value: 2
+      objectReference: {fileID: 0}
     - target: {fileID: 8316488918581824991, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_PresetInfoIsWorld
@@ -3181,28 +3317,33 @@ PrefabInstance:
     - target: {fileID: 8717619082247649776, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.x
-      value: 0
+      value: 0.2
       objectReference: {fileID: 0}
     - target: {fileID: 8717619082247649776, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 8717619082247649776, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMin.x
-      value: 0
+      value: 0.2
       objectReference: {fileID: 0}
     - target: {fileID: 8954018117256822208, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 9137384490485354206, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 9175576502325428455, guid: d55296411d4f39e43804eb54bbc798fc,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 9197739784266985981, guid: d55296411d4f39e43804eb54bbc798fc,
         type: 3}
       propertyPath: m_AnchorMax.y
diff --git a/Assets/Scripts/CheckServer.cs b/Assets/Scripts/CheckServer.cs
index fb57ec8f..99ae058a 100644
--- a/Assets/Scripts/CheckServer.cs
+++ b/Assets/Scripts/CheckServer.cs
@@ -18,137 +18,14 @@ public class CheckServer : MonoBehaviour
     // Start is called before the first frame update
     void Start()
     {
-        //CommunicationEvents.ServerRunning = false;
-        //StartCoroutine(ServerRoutine());
-
-        StartCoroutine(waiter(CommunicationEvents.lastIP, 1, CommunicationEvents.IPcheckGeneration));
-        StartCoroutine(waiter(CommunicationEvents.newIP, 2, CommunicationEvents.IPcheckGeneration));
-        StartCoroutine(waiter(CommunicationEvents.IPslot1, 3, CommunicationEvents.IPcheckGeneration));
-        StartCoroutine(waiter(CommunicationEvents.IPslot2, 4, CommunicationEvents.IPcheckGeneration));
-        StartCoroutine(waiter(CommunicationEvents.IPslot3, 5, CommunicationEvents.IPcheckGeneration));
-        StartCoroutine(waiter(CommunicationEvents.IPslot3, 6, CommunicationEvents.IPcheckGeneration));
-        StartCoroutine(waiter(CommunicationEvents.IPslot4, 7, CommunicationEvents.IPcheckGeneration));
-        StartCoroutine(waiter(CommunicationEvents.IPslot5, 8, CommunicationEvents.IPcheckGeneration));
+        updateAllServers();        
     }
 
-    public void CheckIPAdr()
+    public void updateAllServers()
     {
-        //CommunicationEvents.ServerRunning = false;
-        //StartCoroutine(ServerRoutine());
-
-        //CommunicationEvents.IPcheckGeneration++;
-        //StartCoroutine(waiter(CommunicationEvents.lastIP, 1, CommunicationEvents.IPcheckGeneration));
-        //StartCoroutine(waiter(CommunicationEvents.newIP, 2, CommunicationEvents.IPcheckGeneration));
-        //StartCoroutine(waiter(CommunicationEvents.IPslot1, 3, CommunicationEvents.IPcheckGeneration));
-        //StartCoroutine(waiter(CommunicationEvents.IPslot2, 4, CommunicationEvents.IPcheckGeneration));
-        //StartCoroutine(waiter(CommunicationEvents.IPslot3, 5, CommunicationEvents.IPcheckGeneration));
-    }
-
-
-    IEnumerator waiter(String NetwAddress, int NA_id, double ics)
-    {
-        //while(CommunicationEvents.IPcheckGeneration== ics)
-        while (CheckNetLoop == 1)
+        foreach (ServerSlotData server in ServerSlots.Values)
         {
-            //Wait for 1 seconds
-            yield return new WaitForSecondsRealtime(1f);
-
-            if (CommunicationEvents.CheckServerA[NA_id] == 1)
-            {
-                CommunicationEvents.CheckServerA[NA_id] = 0;
-
-                NetwAddress = NA_id switch
-                {
-                    1 => CommunicationEvents.lastIP,
-                    2 => CommunicationEvents.newIP,
-                    3 => CommunicationEvents.IPslot1,
-                    4 => CommunicationEvents.IPslot2,
-                    5 => CommunicationEvents.IPslot3,
-                    6 => CommunicationEvents.selecIP,
-                    7 => CommunicationEvents.IPslot4,
-                    8 => CommunicationEvents.IPslot5,
-                    _ => NetwAddress,
-                };
-
-                if (string.IsNullOrEmpty(NetwAddress))
-                {
-                    //Wait for 1 seconds
-                    CommunicationEvents.ServerRunningA[NA_id] = 3;
-                    yield return new WaitForSecondsRealtime(1f);
-                }
-                else
-                {
-                    StartCheck(NetwAddress, NA_id, ics);
-                    //Wait for 1,5 seconds
-                    yield return new WaitForSecondsRealtime(1.5f);
-                    if (CommunicationEvents.IPcheckGeneration <= ics || (NA_id != 6))// && NA_id != 2))
-                    {
-                        //if (CommunicationEvents.IPcheckGeneration < ics) { break; }
-                        if (CommunicationEvents.ServerRunningA_test[NA_id] == true)
-                        {
-                            CommunicationEvents.ServerRunningA[NA_id] = 2;
-                        }
-                        else
-                        {
-                            CommunicationEvents.ServerRunningA[NA_id] = 0;
-                        }
-                    }
-                    else
-                    {
-                        CommunicationEvents.IPcheckGeneration--;
-
-                        if (NA_id == 2)
-                        {
-                            CommunicationEvents.ServerRunningA[NA_id] = 1;
-                        }
-
-                    }
-
-                    //Wait for 0,5 seconds
-                    yield return new WaitForSecondsRealtime(0.5f);
-                }
-            }
+            StartCoroutine(server.UpdateServerStatus());
         }
     }
-
-    public void StartCheck(String NetwAddress, int NA_id, double ics)
-    {
-        StartCoroutine(ServerRoutine(NetwAddress, NA_id, ics));
-
-        IEnumerator ServerRoutine(String NetwAddress, int NA_id, double ics)
-        {
-            CommunicationEvents.ServerRunningA_test[NA_id] = false;
-
-            UnityWebRequest request = ping1(NetwAddress);
-            // UnityWebRequest request = UnityWebRequest.Get("http://localhost:8085/fact/list");
-            //UnityEngine.Debug.Log("Req");
-            yield return request.SendWebRequest();
-
-            while (request.result == UnityWebRequest.Result.ConnectionError
-                || request.result == UnityWebRequest.Result.ProtocolError)
-            {
-                UnityEngine.Debug.Log("Wait for Server to Respond: " + request.error);
-                request.Dispose();
-
-                request = ping1(NetwAddress);
-                //request = UnityWebRequest.Get("http://" + NetwAddress + "/fact/list");
-                //request = UnityWebRequest.Get("http://localhost:8085/fact/list");
-                //UnityEngine.Debug.Log("Req");
-                yield return request.SendWebRequest();
-            }
-            request.Dispose();
-
-
-            if (CommunicationEvents.IPcheckGeneration == ics || (NA_id != 6))// && NA_id!=2))
-                CommunicationEvents.ServerRunningA_test[NA_id] = true;
-        }
-    }
-
-
-    public UnityWebRequest ping1(String NetwAddress)
-    {
-        //UnityWebRequest request = UnityWebRequest.Get("http://" + NetwAddress + "/scroll/list");
-        UnityWebRequest request = UnityWebRequest.Get("http://" + NetwAddress + "/fact/list");
-        return request;
-    }
 }
diff --git a/Assets/Scripts/CheckServerPush.cs b/Assets/Scripts/CheckServerPush.cs
index 7fd1a9d3..1dd83e5a 100644
--- a/Assets/Scripts/CheckServerPush.cs
+++ b/Assets/Scripts/CheckServerPush.cs
@@ -5,27 +5,12 @@
 public class CheckServerPush : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
 {
 
-    public int CheckServer_0;
-    public int CheckServer_1;
-    public int CheckServer_2;
-    public int CheckServer_3;
-    public int CheckServer_4;
-    public int CheckServer_5;
-    public int CheckServer_6;
-    public int CheckServer_7;
-    public int CheckServer_8;
-
     public void OnPointerDown(PointerEventData eventData)
     {
-        CheckServerA[0] = CheckServer_0;
-        CheckServerA[1] = CheckServer_1;
-        CheckServerA[2] = CheckServer_2;
-        CheckServerA[3] = CheckServer_3;
-        CheckServerA[4] = CheckServer_4;
-        CheckServerA[5] = CheckServer_5;
-        CheckServerA[6] = CheckServer_6;
-        CheckServerA[7] = CheckServer_7;
-        CheckServerA[8] = CheckServer_8;
+        foreach (ServerSlotData server in ServerSlots.Values)
+        {
+            StartCoroutine(server.UpdateServerStatus());
+        }
 
     }
 
diff --git a/Assets/Scripts/InteractionEngine/CommunicationEvents.cs b/Assets/Scripts/InteractionEngine/CommunicationEvents.cs
index bb0fd649..7ae148c4 100644
--- a/Assets/Scripts/InteractionEngine/CommunicationEvents.cs
+++ b/Assets/Scripts/InteractionEngine/CommunicationEvents.cs
@@ -1,8 +1,10 @@
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
+using System.Linq;
 using UnityEngine;
 using UnityEngine.Events;
+using UnityEngine.Networking;
 
 public static class CommunicationEvents
 {
@@ -43,65 +45,138 @@ public static class CommunicationEvents
     public static int ToolID_new;
     public static int ToolID_selected;//Script
 
-    /*
-     * Put all of the data about a Server into one class
-     */
-    class KnownServer
+    /// <summary>
+    /// The Servers stored in NetworkJSON, as an enum to have consistent names.<br/>
+    /// Why are <see cref="ServerSlot.last"/>,<see cref="ServerSlot.newIP"/> and 
+    /// <see cref="ServerSlot.selecIP"/> in here? Historical Reasons^TM <br/>
+    /// If one wants to optimize things, it is likely advisable to make them variables instead. 
+    /// But this also requires changing the read/write of NetworkJSON, and likely more ...
+    /// </summary>
+    [System.Serializable]
+    public enum ServerSlot
+    {// The numbers are due to legacy code, specifically ServerRunningA indices
+        last  =1,
+        newIP =2,
+        slot1 =3,
+        slot2 =4,
+        slot3 =5,
+        slot4 =7,
+        slot5 =8,
+        selecIP=6 
+    }
+
+    /// <summary>
+    /// The status of a <c>ServerSlot</c> in <see cref="ServerSlots"/>
+    /// </summary>
+    public enum ServerStatus
+    {// The numbers are due to legacy code, specifically ServerRunningA values
+        offline =0,
+        online  =2,
+        checking=1,
+        NoNetworkAddress=3
+    }
+
+    /// <summary>
+    /// All data to a Server stored in a Server
+    /// </summary>
+    public class ServerSlotData
     {
-        public string IP;
+        public string domain;
         public ServerStatus currentStatus = ServerStatus.offline;
-        public bool statusKnown = false;
+        public bool hasBeenChecked = false;
 
-        public enum ServerStatus
-        {
-            offline, 
-            online, 
-            checking, 
-            NoNetworkAddress
-        }
+        //Define constructor via expression body definition
+        public ServerSlotData(string serverURL) => domain = serverURL;
 
-        public void UpdateStatus()
+        /// <summary>
+        /// Ping the server to see if it is online.
+        /// Start as a <c>Coroutine</c>, because this involves a <c>WebRequest</c>
+        /// </summary>
+        public System.Collections.IEnumerator UpdateServerStatus()
         {
+            currentStatus = ServerStatus.checking;
+            if (string.IsNullOrEmpty(domain))
+            {
+                currentStatus = CommunicationEvents.ServerStatus.NoNetworkAddress;
+                yield break;
+            }
+
+            UnityWebRequest request = UnityWebRequest.Get("http://" + domain + "/fact/list");
+            yield return request.SendWebRequest();
+
+            if (request.result == UnityWebRequest.Result.Success)
+            {
+                currentStatus = ServerStatus.online;
+            }
+            else
+            {
+                UnityEngine.Debug.Log("Couldn't connect to Server " + domain + ": " + request.error + "\n");
+                currentStatus = ServerStatus.offline;
+
+                //try again
+                //request.Dispose();
+                //request = pingMMTServer(NetwAddress);
+                //yield return request.SendWebRequest();
+                //request.Dispose();
+
+            }
+            request.Dispose();
+            hasBeenChecked = true;
+
+            // To keep ServerRunningA updated, delete if you saved the world from that abomination
+            ServerSlot myKey = ServerSlots.FirstOrDefault(x => x.Value == this).Key;
+            ServerRunningA[(int)myKey] = (int)currentStatus;
 
         }
     }
-
-    //List of Known Servers
-    public enum KnownServers
+    
+    /// <summary>
+    /// Gather the <see cref="ServerSlotData"/> of all <see cref="ServerSlot"/> in one place, so one can iterate over all of them
+    /// </summary>
+    public static Dictionary<ServerSlot, ServerSlotData> ServerSlots = new()
     {
-        last,
-        newIP,
-        slot1,
-        slot2,
-        slot3,
-        slot4,
-        slot5,
-        selecIP
-    }
+        {ServerSlot.last, new ServerSlotData("")},
+        {ServerSlot.newIP, new ServerSlotData("") },
+        {ServerSlot.slot1, new ServerSlotData("- if you can read this") },
+        {ServerSlot.slot2, new ServerSlotData("- NetworkConfig") },
+        {ServerSlot.slot3, new ServerSlotData("- GO TO -> 'Options'") },
+        {ServerSlot.slot4, new ServerSlotData("-   -> 'Reset Options'") },
+        {ServerSlot.slot5, new ServerSlotData("-   -> PRESS: 'Reset Configurations'") },
+        {ServerSlot.selecIP, new ServerSlotData("") }
+    };
+
 
     //Enum.GetNames(typeof(KnownServers)).Length; //Number of known Server slots, to be able to add more later
 
     /*
      * will be loaded from other config file
+     * ,and I am not going to refactor all of this as well, so just an indirection
+     * 
+     * Also those are domain names (+ port) not IPs
      */
-    public static string lastIP = "";
-    public static string newIP = "";
-    public static string IPslot1 = "- if you can read this";
-    public static string IPslot2 = "- NetworkConfig";
-    public static string IPslot3 = "- not loaded";
-    public static string IPslot4 = "- GO TO -> 'Options'";
-    public static string IPslot5 = "-   -> 'Reset Options'";
-    public static string selecIP = "-   -> PRESS: 'Reset Configurations'";
+    public static string LastIP { get => ServerSlots[ServerSlot.last].domain; set => ServerSlots[ServerSlot.last].domain = value; }
+    public static string NewIP { get => ServerSlots[ServerSlot.newIP].domain; set => ServerSlots[ServerSlot.newIP].domain = value; }
+    public static string IPslot1 { get => ServerSlots[ServerSlot.slot1].domain; set => ServerSlots[ServerSlot.slot1].domain = value; }
+    public static string IPslot2 { get => ServerSlots[ServerSlot.slot2].domain; set => ServerSlots[ServerSlot.slot2].domain = value; }
+    public static string IPslot3 { get => ServerSlots[ServerSlot.slot3].domain; set => ServerSlots[ServerSlot.slot3].domain = value; }
+    public static string IPslot4 { get => ServerSlots[ServerSlot.slot4].domain; set => ServerSlots[ServerSlot.slot4].domain = value; }
+    public static string IPslot5 { get => ServerSlots[ServerSlot.slot5].domain; set => ServerSlots[ServerSlot.slot5].domain = value; }
+    public static string SelecIP { get => ServerSlots[ServerSlot.selecIP].domain; set => ServerSlots[ServerSlot.selecIP].domain = value; }
+
+    /// <summary>
+    /// IF YOU NEED THIS DATA, USE THE <see cref="ServerSlotData.currentStatus"/> OF THE <see cref="ServerSlots"/> MEMBERS.<br/>
+    /// Holds the status of the stored Servers.<br/>
+    /// This is acts like a function <see cref="ServerSlot"/> -> <see cref="ServerStatus"/> with a dont-care value at index 0.<br/>
+    /// There are so many references to this abomination that I will leave it here and just update it, to be consistent with 
+    /// <see cref="ServerSlots"/>.
+    /// </summary>
+    public static int[] ServerRunningA = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 
+    //other, lastIP, newIP, IP1, IP2, IP3, selecIP, IP4, IP5,...} 
+    //0: offline, 1: Checking, 2: online, 3: NoNetworkAddress;
 
     //------
 
-    public static int[] ServerRunningA = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //other, lastIP, newIP, IP1, IP2, IP3, selecIP, IP4, IP5,...} //0: offline, 1: Checking, 2: online, 3: NoNetworkAddress;
-    public static bool[] ServerRunningA_test = new bool[10] { false, false, false, false, false, false, false, false, false, false }; //other, lastIP, newIP, IP1, IP2, IP3, selecIP, IP4, IP5,...}
-    public static double IPcheckGeneration = 0;
-    public static int CheckNetLoop = 1;
-    public static int[] CheckServerA = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // 1 => CommunicationEvents.lastIP, 2 => CommunicationEvents.newIP,3 => CommunicationEvents.IPslot1, 4 => CommunicationEvents.IPslot2,
-                                                                                    // 5 => CommunicationEvents.IPslot3, 6 => CommunicationEvents.selecIP, 7 => CommunicationEvents.IPslot4, 8 => CommunicationEvents.IPslot5,
-
+    
     public static bool autoOSrecognition = true;
 
     public static OperationSystem Opsys = OperationSystem.Windows; //Scripts
diff --git a/Assets/Scripts/Loading/StreamingAssetLoader.cs b/Assets/Scripts/Loading/StreamingAssetLoader.cs
index e8ad2dfa..0fda4dd2 100644
--- a/Assets/Scripts/Loading/StreamingAssetLoader.cs
+++ b/Assets/Scripts/Loading/StreamingAssetLoader.cs
@@ -117,39 +117,39 @@ public static bool checkFileExistence(string sourcepath, string filename)
 
     public static void NetworkJSON_Save()
     {
-        NetworkJSON myObject = new NetworkJSON();
+        NetworkJSON toSave = new NetworkJSON();
 
 
         //MyClass myObject = new MyClass();
-        myObject.newIP = CommunicationEvents.newIP;
-        myObject.lastIP = CommunicationEvents.lastIP;
-        myObject.IPslot1 = CommunicationEvents.IPslot1;
-        myObject.IPslot2 = CommunicationEvents.IPslot2;
-        myObject.IPslot3 = CommunicationEvents.IPslot3;
-        myObject.IPslot4 = CommunicationEvents.IPslot4;
-        myObject.IPslot5 = CommunicationEvents.IPslot5;
-        myObject.selecIP = CommunicationEvents.selecIP;
-        myObject.ControlMode = UIconfig.controlMode.ToString();
-        myObject.TouchMode = UIconfig.touchControlMode;
-        myObject.TAvisibility = UIconfig.TAvisibility;
-        myObject.autoOSrecognition = CommunicationEvents.autoOSrecognition;
-        myObject.autoSettingsAdaption = UIconfig.autoSettingsAdaption;
-        myObject.Opsys = CommunicationEvents.Opsys.ToString();
-        myObject.FrameITUIversion = UIconfig.FrameITUIversion;
-        myObject.InputManagerVersion = UIconfig.InputManagerVersion;
-        myObject.colliderScale_all = UIconfig.colliderScale_all;
-        myObject.cursorSize = UIconfig.cursorSize;
-        myObject.camRotatingSensitivity = UIconfig.camRotatingSensitivity;
-        myObject.MouseKeepingInWindow = UIconfig.MouseKeepingInWindow;
-        myObject.scrolldirection = UIconfig.scrolldirection;
-        myObject.scrollViewVersion = UIconfig.scrollViewVersion;
-
-
-
-    //Data storage
-    SafeCreateDirectory(Path.Combine(Application.persistentDataPath, ConfigDir));
+        toSave.newIP = CommunicationEvents.NewIP;
+        toSave.lastIP = CommunicationEvents.LastIP;
+        toSave.IPslot1 = CommunicationEvents.IPslot1;
+        toSave.IPslot2 = CommunicationEvents.IPslot2;
+        toSave.IPslot3 = CommunicationEvents.IPslot3;
+        toSave.IPslot4 = CommunicationEvents.IPslot4;
+        toSave.IPslot5 = CommunicationEvents.IPslot5;
+        toSave.selecIP = CommunicationEvents.SelecIP;
+        toSave.ControlMode = UIconfig.controlMode.ToString();
+        toSave.TouchMode = UIconfig.touchControlMode;
+        toSave.TAvisibility = UIconfig.TAvisibility;
+        toSave.autoOSrecognition = CommunicationEvents.autoOSrecognition;
+        toSave.autoSettingsAdaption = UIconfig.autoSettingsAdaption;
+        toSave.Opsys = CommunicationEvents.Opsys.ToString();
+        toSave.FrameITUIversion = UIconfig.FrameITUIversion;
+        toSave.InputManagerVersion = UIconfig.InputManagerVersion;
+        toSave.colliderScale_all = UIconfig.colliderScale_all;
+        toSave.cursorSize = UIconfig.cursorSize;
+        toSave.camRotatingSensitivity = UIconfig.camRotatingSensitivity;
+        toSave.MouseKeepingInWindow = UIconfig.MouseKeepingInWindow;
+        toSave.scrolldirection = UIconfig.scrolldirection;
+        toSave.scrollViewVersion = UIconfig.scrollViewVersion;
+
+
+
+        //Data storage
+        SafeCreateDirectory(Path.Combine(Application.persistentDataPath, ConfigDir));
         //string json = JsonUtility.ToJson(date);
-        string json = JsonUtility.ToJson(myObject);
+        string json = JsonUtility.ToJson(toSave);
         StreamWriter Writer = new StreamWriter(Path.Combine(Application.persistentDataPath, ConfigDir, ConfigFile_Network));
         Writer.Write(json);
         Writer.Flush();
@@ -321,167 +321,167 @@ public static void NetworkJSON_Load_x(string path)
         string json = reader.ReadToEnd();
         reader.Close();
 
-        NetworkJSONonlyString myObjsOnlyStrings = JsonUtility.FromJson<NetworkJSONonlyString>(json);
-        NetworkJSON myObjs = JsonUtility.FromJson<NetworkJSON>(json);
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.newIP))
+        NetworkJSONonlyString loadedSettingsOnlyStrings = JsonUtility.FromJson<NetworkJSONonlyString>(json);
+        NetworkJSON loadedSettings = JsonUtility.FromJson<NetworkJSON>(json);
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.newIP))
         {
-            CommunicationEvents.newIP = "";
+            CommunicationEvents.NewIP = "";
         }
         else
         {
-            CommunicationEvents.newIP = myObjs.newIP;
+            CommunicationEvents.NewIP = loadedSettings.newIP;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.lastIP))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.lastIP))
         {
-            CommunicationEvents.lastIP = "";
+            CommunicationEvents.LastIP = "";
         }
         else
         {
-            CommunicationEvents.lastIP = myObjs.lastIP;
+            CommunicationEvents.LastIP = loadedSettings.lastIP;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.IPslot1))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.IPslot1))
         {
             CommunicationEvents.IPslot1 = "";
         }
         else
         {
-            CommunicationEvents.IPslot1 = myObjs.IPslot1;//myObjs.IPslot1;
+            CommunicationEvents.IPslot1 = loadedSettings.IPslot1;//myObjs.IPslot1;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.IPslot2))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.IPslot2))
         {
             CommunicationEvents.IPslot2 = "";//"Empty";
         }
         else
         {
-            CommunicationEvents.IPslot2 = myObjs.IPslot2;
+            CommunicationEvents.IPslot2 = loadedSettings.IPslot2;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.IPslot3))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.IPslot3))
         {
             CommunicationEvents.IPslot3 = "";
         }
         else
         {
-            CommunicationEvents.IPslot3 = myObjs.IPslot3;
+            CommunicationEvents.IPslot3 = loadedSettings.IPslot3;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.IPslot4))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.IPslot4))
         {
             CommunicationEvents.IPslot4= "";
         }
         else
         {
-            CommunicationEvents.IPslot4 = myObjs.IPslot4;
+            CommunicationEvents.IPslot4 = loadedSettings.IPslot4;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.IPslot5))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.IPslot5))
         {
             CommunicationEvents.IPslot5 = "";
         }
         else
         {
-            CommunicationEvents.IPslot5 = myObjs.IPslot5;
+            CommunicationEvents.IPslot5 = loadedSettings.IPslot5;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.selecIP))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.selecIP))
         {
-            CommunicationEvents.selecIP = "";
+            CommunicationEvents.SelecIP = "";
         }
         else
         {
-            CommunicationEvents.selecIP = myObjs.selecIP;
+            CommunicationEvents.SelecIP = loadedSettings.selecIP;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.ControlMode))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.ControlMode))
         {
         }
         else
         {
-            UIconfig.controlMode = (ControlMode)Enum.Parse(typeof(ControlMode), myObjs.ControlMode);
+            UIconfig.controlMode = (ControlMode)Enum.Parse(typeof(ControlMode), loadedSettings.ControlMode);
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.TouchMode))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.TouchMode))
         {
         }
         else
         {
-            UIconfig.touchControlMode = myObjs.TouchMode;
+            UIconfig.touchControlMode = loadedSettings.TouchMode;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.TAvisibility))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.TAvisibility))
         {
         }
         else
         {
-            UIconfig.TAvisibility = myObjs.TAvisibility;
+            UIconfig.TAvisibility = loadedSettings.TAvisibility;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.autoOSrecognition))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.autoOSrecognition))
         {
         }
         else
         {
-            CommunicationEvents.autoOSrecognition = myObjs.autoOSrecognition;
+            CommunicationEvents.autoOSrecognition = loadedSettings.autoOSrecognition;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.autoOSrecognition))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.autoOSrecognition))
         {
         }
         else
         {
-            UIconfig.autoSettingsAdaption = myObjs.autoSettingsAdaption;
+            UIconfig.autoSettingsAdaption = loadedSettings.autoSettingsAdaption;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.Opsys))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.Opsys))
         {
         }
         else
         {
-            CommunicationEvents.Opsys = (OperationSystem)Enum.Parse(typeof(OperationSystem), myObjs.Opsys);
+            CommunicationEvents.Opsys = (OperationSystem)Enum.Parse(typeof(OperationSystem), loadedSettings.Opsys);
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.FrameITUIversion))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.FrameITUIversion))
         {
         }
         else
         {
-            UIconfig.FrameITUIversion = myObjs.FrameITUIversion;
+            UIconfig.FrameITUIversion = loadedSettings.FrameITUIversion;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.InputManagerVersion))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.InputManagerVersion))
         {
         }
         else
         {
-            UIconfig.InputManagerVersion = myObjs.InputManagerVersion;
+            UIconfig.InputManagerVersion = loadedSettings.InputManagerVersion;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.colliderScale_all))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.colliderScale_all))
         {
 
         }
         else
         {
-            UIconfig.colliderScale_all = myObjs.colliderScale_all;
+            UIconfig.colliderScale_all = loadedSettings.colliderScale_all;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.cursorSize))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.cursorSize))
         {
         }
         else
         {
-            UIconfig.cursorSize = myObjs.cursorSize;
+            UIconfig.cursorSize = loadedSettings.cursorSize;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.camRotatingSensitivity))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.camRotatingSensitivity))
         {
         }
         else
         {
-            UIconfig.camRotatingSensitivity = myObjs.camRotatingSensitivity;
+            UIconfig.camRotatingSensitivity = loadedSettings.camRotatingSensitivity;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.MouseKeepingInWindow))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.MouseKeepingInWindow))
         {
         }
         else
         {
-            UIconfig.MouseKeepingInWindow = myObjs.MouseKeepingInWindow;
+            UIconfig.MouseKeepingInWindow = loadedSettings.MouseKeepingInWindow;
         }
-        if (string.IsNullOrEmpty(myObjsOnlyStrings.scrolldirection))
+        if (string.IsNullOrEmpty(loadedSettingsOnlyStrings.scrolldirection))
         {
         }
         else
         {
-            UIconfig.scrolldirection = myObjs.scrolldirection;
+            UIconfig.scrolldirection = loadedSettings.scrolldirection;
         }
-        if (! string.IsNullOrEmpty(myObjsOnlyStrings.scrollViewVersion))
+        if (! string.IsNullOrEmpty(loadedSettingsOnlyStrings.scrollViewVersion))
         {
-            UIconfig.scrollViewVersion = myObjs.scrollViewVersion;
+            UIconfig.scrollViewVersion = loadedSettings.scrollViewVersion;
         }
 
     }
diff --git a/Assets/Scripts/UI/NetwMenu/FindIP.cs b/Assets/Scripts/UI/NetwMenu/FindIP.cs
index a0f5624f..94cb2349 100644
--- a/Assets/Scripts/UI/NetwMenu/FindIP.cs
+++ b/Assets/Scripts/UI/NetwMenu/FindIP.cs
@@ -1,6 +1,7 @@
 using UnityEngine;
 using UnityEngine.UI; //andr
 using static StreamingAssetLoader;
+using static CommunicationEvents;
 
 //[RequireComponent(typeof(Image))]
 //[SerializeField] private UnityEngine.UI.Image image = null;
@@ -91,12 +92,12 @@ void UpdateUI_2_f()
         //tempColB = GameObject.Find("NewServerSt").GetComponent<Button>().colors;
         //tempColB.pressedColor = colPressed;
         //tempColB.selectedColor = colSelect;
-        if (CommunicationEvents.ServerRunningA[2] == 0)
+        if (ServerSlots[ServerSlot.newIP].currentStatus == ServerStatus.offline)
         {
 
             //tempColB.normalColor = colOffline;
             NewServerSt_GObj.GetComponent<Text>().color = Color.black;
-            if (string.IsNullOrEmpty(CommunicationEvents.newIP))// || CommunicationEvents.lastIP.Length < 4)
+            if (string.IsNullOrEmpty(CommunicationEvents.NewIP))// || CommunicationEvents.lastIP.Length < 4)
             {
                 NewServerSt_GObj.GetComponent<Text>().text = "Status: no network address";
             }
@@ -107,7 +108,7 @@ void UpdateUI_2_f()
         }
         else
         {
-            if (CommunicationEvents.ServerRunningA[2] == 2)
+            if (ServerSlots[ServerSlot.newIP].currentStatus == ServerStatus.online)
             {
 
                 NewServerSt_GObj.GetComponent<Text>().color = Color.green;
@@ -117,7 +118,7 @@ void UpdateUI_2_f()
             else
             {
                 NewServerSt_GObj.GetComponent<Text>().color = Color.black;
-                if (string.IsNullOrEmpty(CommunicationEvents.newIP))// || CommunicationEvents.lastIP.Length < 4)
+                if (string.IsNullOrEmpty(CommunicationEvents.NewIP))// || CommunicationEvents.lastIP.Length < 4)
                 {
                     NewServerSt_GObj.GetComponent<Text>().text = "Status: no network address";
                 }
@@ -132,7 +133,7 @@ void UpdateUI_2_f()
         //GameObject.Find("NewServerSt"fff).GetComponent<Button>().colors = tempColB;
         //Text txt = transform.Find("InFieldIP_Text").GetComponent<Text>();
         //txt.text = mainInputField.text;
-        CommunicationEvents.newIP = mainInputField.text;
+        CommunicationEvents.NewIP = mainInputField.text;
 
         //CommunicationEvents.newIP = transform.Find("InFieldIP_Text").GetComponent<Text>().text;
     }
@@ -140,25 +141,12 @@ void UpdateUI_2_f()
 
     public void SetText(string text)
     {
+        CommunicationEvents.SelecIP = CommunicationEvents.NewIP;
+        StartCoroutine(CommunicationEvents.ServerSlots[CommunicationEvents.ServerSlot.selecIP].UpdateServerStatus());
 
-
-
-
-
-
-
-        CommunicationEvents.ServerRunningA[6] = 1;
-        CommunicationEvents.selecIP = CommunicationEvents.newIP;
-
-        CommunicationEvents.IPcheckGeneration++;
         //Safefieldmenu();
         goBackButtonOPTM();
 
-
-
-
-
-
     }
 
 
diff --git a/Assets/Scripts/UI/NetwMenu/LaunchMenu_mobile.cs b/Assets/Scripts/UI/NetwMenu/LaunchMenu_mobile.cs
index 34c0521a..c48f5865 100644
--- a/Assets/Scripts/UI/NetwMenu/LaunchMenu_mobile.cs
+++ b/Assets/Scripts/UI/NetwMenu/LaunchMenu_mobile.cs
@@ -3,7 +3,7 @@
 using UnityEngine.EventSystems;
 using UnityEngine.SceneManagement;
 //using static CheckServer;
-///using static CommunicationEvents;
+using static CommunicationEvents;
 using static StreamingAssetLoader;
 
 
@@ -42,7 +42,7 @@ private void Update()
     public void StartWithLastServerButton()
     {
 
-        if (CommunicationEvents.ServerRunningA[6] == 2)
+        if (ServerSlots[ServerSlot.selecIP].currentStatus == ServerStatus.online)
         {
             startNextSceneFunctionNewGame();
         }
@@ -83,7 +83,7 @@ private void ClearUIC()
     public static void startNextSceneFunctionNewGame()
     {
         NetworkJSON_Save();
-        CommunicationEvents.ServerAdress = "http://" + CommunicationEvents.selecIP;
+        CommunicationEvents.ServerAdress = "http://" + CommunicationEvents.SelecIP;
         CommunicationEvents.ServerRunning = true;
         //UnityEngine.Debug.Log("StartMainMenu");
         //UnityEngine.Debug.Log("CommunicationEvents.ServerAdress = " + CommunicationEvents.ServerAdress);
diff --git a/Assets/Scripts/UI/NetwMenu/SaveNetwAddr_mobile.cs b/Assets/Scripts/UI/NetwMenu/SaveNetwAddr_mobile.cs
index 2d398b00..e9239b93 100644
--- a/Assets/Scripts/UI/NetwMenu/SaveNetwAddr_mobile.cs
+++ b/Assets/Scripts/UI/NetwMenu/SaveNetwAddr_mobile.cs
@@ -69,7 +69,7 @@ void UpdateUI_3_f()
         tempColB.pressedColor = colPressed;
         tempColB.selectedColor = colSelect;
 
-        if (CommunicationEvents.ServerRunningA[3] == 0)
+        if (ServerSlots[ServerSlot.slot1].currentStatus == ServerStatus.offline)
         {
             tempColB.normalColor = colOffline;
             if (string.IsNullOrEmpty(CommunicationEvents.IPslot1))// || CommunicationEvents.IPslot1.Length < 1)
@@ -93,7 +93,7 @@ void UpdateUI_3_f()
         }
         else
         {
-            if (CommunicationEvents.ServerRunningA[3] == 2)
+            if (ServerSlots[ServerSlot.slot1].currentStatus == ServerStatus.online)
             {
                 print("test" + Ip1_sup);
                 if (Ip1_sup.Equals(CommunicationEvents.IPslot1))
@@ -132,7 +132,7 @@ void UpdateUI_4_f()
         tempColB = SaveSlot2_B_GObj.GetComponent<Button>().colors;
         tempColB.pressedColor = colPressed;
         tempColB.selectedColor = colSelect;
-        if (CommunicationEvents.ServerRunningA[4] == 0)
+        if (ServerSlots[ServerSlot.slot2].currentStatus == ServerStatus.offline)
         {
             tempColB.normalColor = colOffline;
             if (string.IsNullOrEmpty(CommunicationEvents.IPslot2))// || CommunicationEvents.IPslot2.Length<1)
@@ -153,7 +153,7 @@ void UpdateUI_4_f()
         }
         else
         {
-            if (CommunicationEvents.ServerRunningA[4] == 2)
+            if (ServerSlots[ServerSlot.slot2].currentStatus == ServerStatus.online)
             {
                 if (Ip2_sup.Equals(CommunicationEvents.IPslot2))
                 {
@@ -182,7 +182,7 @@ void UpdateUI_5_f()
         tempColB = SaveSlot3_B_GObj.GetComponent<Button>().colors;
         tempColB.pressedColor = colPressed;
         tempColB.selectedColor = colSelect;
-        if (CommunicationEvents.ServerRunningA[5] == 0)
+        if (ServerSlots[ServerSlot.slot3].currentStatus == ServerStatus.offline)
         {
             tempColB.normalColor = colOffline;
             if (string.IsNullOrEmpty(CommunicationEvents.IPslot3))// || CommunicationEvents.IPslot3.Length < 1)
@@ -203,7 +203,7 @@ void UpdateUI_5_f()
         }
         else
         {
-            if (CommunicationEvents.ServerRunningA[5] == 2)
+            if (ServerSlots[ServerSlot.slot3].currentStatus == ServerStatus.online)
             {
                 if (Ip3_sup.Equals(CommunicationEvents.IPslot3))
                 {
@@ -232,7 +232,7 @@ void UpdateUI_7_f()
         tempColB = SaveSlot4_B_GObj.GetComponent<Button>().colors;
         tempColB.pressedColor = colPressed;
         tempColB.selectedColor = colSelect;
-        if (CommunicationEvents.ServerRunningA[7] == 0)
+        if (ServerSlots[ServerSlot.slot4].currentStatus == ServerStatus.offline)
         {
             tempColB.normalColor = colOffline;
             if (string.IsNullOrEmpty(CommunicationEvents.IPslot4))// || CommunicationEvents.IPslot3.Length < 1)
@@ -253,7 +253,7 @@ void UpdateUI_7_f()
         }
         else
         {
-            if (CommunicationEvents.ServerRunningA[7] == 2)
+            if (ServerSlots[ServerSlot.slot1].currentStatus == ServerStatus.online)
             {
                 if (Ip4_sup.Equals(CommunicationEvents.IPslot4))
                 {
@@ -282,7 +282,7 @@ void UpdateUI_8_f()
         tempColB = SaveSlot3_B_GObj.GetComponent<Button>().colors;
         tempColB.pressedColor = colPressed;
         tempColB.selectedColor = colSelect;
-        if (CommunicationEvents.ServerRunningA[8] == 0)
+        if (ServerSlots[ServerSlot.slot5].currentStatus == ServerStatus.offline)
         {
             tempColB.normalColor = colOffline;
             if (string.IsNullOrEmpty(CommunicationEvents.IPslot5))// || CommunicationEvents.IPslot3.Length < 1)
@@ -303,7 +303,7 @@ void UpdateUI_8_f()
         }
         else
         {
-            if (CommunicationEvents.ServerRunningA[8] == 2)
+            if (ServerSlots[ServerSlot.slot5].currentStatus == ServerStatus.offline)
             {
                 if (Ip5_sup.Equals(CommunicationEvents.IPslot5))
                 {
@@ -326,13 +326,30 @@ void UpdateUI_8_f()
 
     }
 
+    /// <summary>
+    /// All the Functions below can be consolidated into this one. 
+    /// But changing every button to do so is annoying, and I am refactoring other stuff.
+    /// </summary>
+    /// <param name="slot"> The ServerSlot to replace with the new IP </param>
+    public void SaveIntoSlot(ServerSlot slot)
+    {
+        ServerSlots[slot].domain = NewIP;
+        //CommunicationEvents.ServerAdress = "http://" +  CommunicationEvents.ServerAddress1;
+        StartCoroutine(ServerSlots[slot].UpdateServerStatus());
+        Update();
+        NetworkJSON_Save();
+        Refresh_pressed();
+
+        //CSform.CheckIPAdr();
+
+    }
 
     public void Slot1_s()
     {
-        CommunicationEvents.IPslot1 = CommunicationEvents.newIP;
+        CommunicationEvents.IPslot1 = CommunicationEvents.NewIP;
         //CommunicationEvents.ServerAdress = "http://" +  CommunicationEvents.ServerAddress1;
         Update();
-        CheckServerA[3] = 1;
+        StartCoroutine(ServerSlots[ServerSlot.slot1].UpdateServerStatus());
         NetworkJSON_Save();
         Refresh_pressed();
 
@@ -344,11 +361,9 @@ public void Slot2_s()
     {
 
         //CommunicationEvents.ServerAdress = "http://" +  CommunicationEvents.ServerAddress2;
-        CommunicationEvents.IPslot2 = CommunicationEvents.newIP;
+        CommunicationEvents.IPslot2 = CommunicationEvents.NewIP;
         Update();
-
-        CheckServerA[4] = 1;
-
+        StartCoroutine(ServerSlots[ServerSlot.slot2].UpdateServerStatus());
         NetworkJSON_Save();
         Refresh_pressed();
         //CSform.CheckIPAdr();
@@ -360,10 +375,9 @@ public void Slot3_s()
     {
         //CheckServer ani = new CheckServer();//= obj.AddComponent<CheckServer>();
         // ani.StartCheck();
-        CommunicationEvents.IPslot3 = CommunicationEvents.newIP;
+        CommunicationEvents.IPslot3 = CommunicationEvents.NewIP;
         Update();
-        CheckServerA[5] = 1;
-
+        StartCoroutine(ServerSlots[ServerSlot.slot3].UpdateServerStatus());
         Refresh_pressed();
 
         NetworkJSON_Save();
@@ -374,10 +388,9 @@ public void Slot4_s()
     {
         //CheckServer ani = new CheckServer();//= obj.AddComponent<CheckServer>();
         // ani.StartCheck();
-        CommunicationEvents.IPslot4 = CommunicationEvents.newIP;
+        CommunicationEvents.IPslot4 = CommunicationEvents.NewIP;
         Update();
-        CheckServerA[7] = 1;
-
+        StartCoroutine(ServerSlots[ServerSlot.slot4].UpdateServerStatus());
         Refresh_pressed();
 
         NetworkJSON_Save();
@@ -388,10 +401,9 @@ public void Slot5_s()
     {
         //CheckServer ani = new CheckServer();//= obj.AddComponent<CheckServer>();
         // ani.StartCheck();
-        CommunicationEvents.IPslot5 = CommunicationEvents.newIP;
+        CommunicationEvents.IPslot5 = CommunicationEvents.NewIP;
         Update();
-        CheckServerA[8] = 1;
-
+        StartCoroutine(ServerSlots[ServerSlot.slot5].UpdateServerStatus());
         Refresh_pressed();
 
         NetworkJSON_Save();
diff --git a/Assets/Scripts/UI/NetwMenu/SelectNetwServer_mobile.cs b/Assets/Scripts/UI/NetwMenu/SelectNetwServer_mobile.cs
index 3f924d0f..8955e33f 100644
--- a/Assets/Scripts/UI/NetwMenu/SelectNetwServer_mobile.cs
+++ b/Assets/Scripts/UI/NetwMenu/SelectNetwServer_mobile.cs
@@ -2,6 +2,7 @@
 using UnityEngine.UI; //andr
 using static StreamingAssetLoader;
 using static UIconfig;
+using static CommunicationEvents;
 
 public class SelectNetwServer_mobile : MonoBehaviour
 {
@@ -22,6 +23,9 @@ void Start()
         Update();
     }
 
+    /// <summary>
+    /// All of this could be way more generic now using <see cref="CommunicationEvents.ServerSlots"/> and friends.
+    /// </summary>
     private void Update()
     {
 
@@ -35,91 +39,15 @@ private void Update()
         UpdateUI_8_f();
     }
 
-    public void SlotLPS()
+    /// <summary>
+    /// There once was a version for every slot here. Since they were all unused I collapsed them
+    /// into this generic form. Sould you need this, consider turning 
+    /// <see cref="ServerSlot.selecIP"/> into a <see cref="ServerSlot"/> variable instead. 
+    /// </summary>
+    public void Slot(ServerSlotComponent slot)
     {
-
-        //CommunicationEvents.ServerAdress = "http://" +  CommunicationEvents.ServerAddress1;
-
-
-        CommunicationEvents.ServerRunningA[6] = CommunicationEvents.ServerRunningA[1];
-        CommunicationEvents.selecIP = CommunicationEvents.lastIP;
-        CommunicationEvents.IPcheckGeneration++;
-        NetworkJSON_Save();
-
-        //SceneManager.LoadScene("Andr_TreeWorld");       
-        //SceneManager.LoadScene("MainMenu");
-
-
-    }
-
-    public void Slot1()
-    {
-
-        //CommunicationEvents.ServerAdress = "http://" +  CommunicationEvents.ServerAddress1;
-
-        CommunicationEvents.ServerRunningA[6] = CommunicationEvents.ServerRunningA[3];
-        CommunicationEvents.selecIP = CommunicationEvents.IPslot1;
-        CommunicationEvents.IPcheckGeneration++;
-        NetworkJSON_Save();
-
-        //SceneManager.LoadScene("Andr_TreeWorld");       
-        //SceneManager.LoadScene("MainMenu");
-
-
-    }
-
-    public void Slot2()
-    {
-
-        //CommunicationEvents.ServerAdress = "http://" +  CommunicationEvents.ServerAddress2;
-
-        CommunicationEvents.ServerRunningA[6] = CommunicationEvents.ServerRunningA[4];
-        CommunicationEvents.selecIP = CommunicationEvents.IPslot2;
-        CommunicationEvents.IPcheckGeneration++;
-
+        ServerSlots[ServerSlot.selecIP] = ServerSlots[slot.serverSlot];
         NetworkJSON_Save();
-
-        //SceneManager.LoadScene("Andr_TreeWorld");       
-        //SceneManager.LoadScene("MainMenu");
-    }
-
-    public void Slot3()
-    {
-        //CheckServer ani = new CheckServer();//= obj.AddComponent<CheckServer>();
-        // ani.StartCheck();
-
-        CommunicationEvents.ServerRunningA[6] = CommunicationEvents.ServerRunningA[5];
-        CommunicationEvents.selecIP = CommunicationEvents.IPslot3;
-        CommunicationEvents.IPcheckGeneration++;
-        NetworkJSON_Save();
-
-
-    }
-
-    public void Slot4()
-    {
-        //CheckServer ani = new CheckServer();//= obj.AddComponent<CheckServer>();
-        // ani.StartCheck();
-
-        CommunicationEvents.ServerRunningA[6] = CommunicationEvents.ServerRunningA[7];
-        CommunicationEvents.selecIP = CommunicationEvents.IPslot4;
-        CommunicationEvents.IPcheckGeneration++;
-        NetworkJSON_Save();
-
-
-    }
-
-    public void Slot5()
-    {
-        //CheckServer ani = new CheckServer();//= obj.AddComponent<CheckServer>();
-        // ani.StartCheck();
-
-        CommunicationEvents.ServerRunningA[6] = CommunicationEvents.ServerRunningA[8];
-        CommunicationEvents.selecIP = CommunicationEvents.IPslot5;
-        CommunicationEvents.IPcheckGeneration++;
-        NetworkJSON_Save();
-
-
     }
 
     void UpdateUI_1_f()
@@ -133,13 +61,13 @@ void UpdateUI_1_f()
             tempColB.normalColor = colOffline;
 
             LPS_B_GObj.GetComponent<Button>().colors = tempColB; // new Color(148, 229, 156);
-            if (string.IsNullOrEmpty(CommunicationEvents.lastIP))// || CommunicationEvents.lastIP.Length < 4)
+            if (string.IsNullOrEmpty(CommunicationEvents.LastIP))// || CommunicationEvents.lastIP.Length < 4)
             {
                 LPS_B_GObj.GetComponentInChildren<Text>().text = "No game played before";
             }
             else
             {
-                LPS_B_GObj.GetComponentInChildren<Text>().text = "Last played on (offline) \n" + CommunicationEvents.lastIP;
+                LPS_B_GObj.GetComponentInChildren<Text>().text = "Last played on (offline) \n" + CommunicationEvents.LastIP;
             }
         }
         else
@@ -148,7 +76,7 @@ void UpdateUI_1_f()
             if (CommunicationEvents.ServerRunningA[1] == 2)
             {
                 tempColB.normalColor = colOnline;
-                LPS_B_GObj.GetComponentInChildren<Text>().text = "Last played on (online) \n" + CommunicationEvents.lastIP;
+                LPS_B_GObj.GetComponentInChildren<Text>().text = "Last played on (online) \n" + CommunicationEvents.LastIP;
             }
             else
             {
diff --git a/Assets/Scripts/UI/NetwMenu/SelectedNetwServer_mobile.cs b/Assets/Scripts/UI/NetwMenu/SelectedNetwServer_mobile.cs
index 06cd8b69..9a62a306 100644
--- a/Assets/Scripts/UI/NetwMenu/SelectedNetwServer_mobile.cs
+++ b/Assets/Scripts/UI/NetwMenu/SelectedNetwServer_mobile.cs
@@ -42,7 +42,7 @@ void UpdateUI_6_f()
             SSstGame.GetComponentInChildren<Text>().color = colClear;
             //GameObject.Find("StartGwoS").GetComponent<Image>().color = colClear;
             //GameObject.Find("SGwoST").GetComponent<Text>().color = colClear;
-            if (string.IsNullOrEmpty(CommunicationEvents.selecIP))//; || ())
+            if (string.IsNullOrEmpty(CommunicationEvents.SelecIP))//; || ())
             {
                 SelNAddrTI.GetComponent<Text>().text = "< empty >";
                 //GameObject.Find("newNAddrTI").GetComponent<Text>().text = "< empty >";
@@ -53,7 +53,7 @@ void UpdateUI_6_f()
             }
             else
             {
-                SelNAddrTI.GetComponent<Text>().text = CommunicationEvents.selecIP;
+                SelNAddrTI.GetComponent<Text>().text = CommunicationEvents.SelecIP;
                 //GameObject.Find("newNAddrTI").GetComponent<Text>().text = CommunicationEvents.selecIP;
 
                 if (CommunicationEvents.ServerRunningA[6] == 0)
@@ -75,7 +75,7 @@ void UpdateUI_6_f()
             if (CommunicationEvents.ServerRunningA[6] == 2)
             {
                 SelNAddrW.GetComponent<Image>().color = colOnline;
-                SelNAddrTI.GetComponent<Text>().text = CommunicationEvents.selecIP;
+                SelNAddrTI.GetComponent<Text>().text = CommunicationEvents.SelecIP;
                 SelNAddrTS.GetComponent<Text>().text = "Status: Online";
                 SSstGame.GetComponent<Image>().color = Color.white;
                 SSstGame.GetComponentInChildren<Text>().color = Color.black;
@@ -88,7 +88,7 @@ void UpdateUI_6_f()
                 SSstGame.GetComponentInChildren<Text>().color = colClear;
                 SelNAddrW.GetComponent<Image>().color = colOffline;
 
-                if (string.IsNullOrEmpty(CommunicationEvents.selecIP))//; || ())
+                if (string.IsNullOrEmpty(CommunicationEvents.SelecIP))//; || ())
                 {
                     SelNAddrTI.GetComponent<Text>().text = "< empty >";
 
@@ -100,7 +100,7 @@ void UpdateUI_6_f()
 
 
 
-                    SelNAddrTI.GetComponent<Text>().text = CommunicationEvents.selecIP;
+                    SelNAddrTI.GetComponent<Text>().text = CommunicationEvents.SelecIP;
                     SelNAddrTS.GetComponent<Text>().text = "Status: checking";
 
                 }
diff --git a/Assets/Scripts/UI/NetwMenu/SelectedNewNetwServer_mobile.cs b/Assets/Scripts/UI/NetwMenu/SelectedNewNetwServer_mobile.cs
index bf0014ae..dcbdfc66 100644
--- a/Assets/Scripts/UI/NetwMenu/SelectedNewNetwServer_mobile.cs
+++ b/Assets/Scripts/UI/NetwMenu/SelectedNewNetwServer_mobile.cs
@@ -42,14 +42,14 @@ void UpdateUI_6_f()
             StartGwoS.GetComponentInChildren<Text>().color = colClear;
             //GameObject.Find("StartGwoS").GetComponent<Image>().color = colClear;
             //GameObject.Find("SGwoST").GetComponent<Text>().color = colClear;
-            if (string.IsNullOrEmpty(CommunicationEvents.selecIP))//; || ())
+            if (string.IsNullOrEmpty(CommunicationEvents.SelecIP))//; || ())
             {
                 NewNAddrTI.GetComponent<Text>().text = "< empty >";
                 NewNAddrTS.GetComponent<Text>().text = "Status: no ip-address";
             }
             else
             {
-                NewNAddrTI.GetComponent<Text>().text = CommunicationEvents.selecIP;
+                NewNAddrTI.GetComponent<Text>().text = CommunicationEvents.SelecIP;
 
 
                 if (CommunicationEvents.ServerRunningA[6] == 0)
@@ -71,7 +71,7 @@ void UpdateUI_6_f()
             if (CommunicationEvents.ServerRunningA[6] == 2)
             {
                 NewNAddrW.GetComponent<Image>().color = colOnline;
-                NewNAddrTI.GetComponent<Text>().text = CommunicationEvents.selecIP;
+                NewNAddrTI.GetComponent<Text>().text = CommunicationEvents.SelecIP;
                 NewNAddrTS.GetComponent<Text>().text = "Status: Online";
                 StartGwoS.GetComponent<Image>().color = Color.white;
                 StartGwoS.GetComponentInChildren<Text>().color = Color.black;
@@ -83,7 +83,7 @@ void UpdateUI_6_f()
                 StartGwoS.GetComponentInChildren<Text>().color = colClear;
                 NewNAddrW.GetComponent<Image>().color = colOffline;
 
-                if (string.IsNullOrEmpty(CommunicationEvents.selecIP))//; || ())
+                if (string.IsNullOrEmpty(CommunicationEvents.SelecIP))//; || ())
                 {
                     NewNAddrTI.GetComponent<Text>().text = "< empty >";
 
@@ -94,7 +94,7 @@ void UpdateUI_6_f()
                 {
 
 
-                    NewNAddrTI.GetComponent<Text>().text = CommunicationEvents.selecIP;
+                    NewNAddrTI.GetComponent<Text>().text = CommunicationEvents.SelecIP;
                     NewNAddrTS.GetComponent<Text>().text = "Status: unknown";//"Status: checking";
                 }
 
diff --git a/Assets/Scripts/UI/NetwMenu/StartMenu_mobile.cs b/Assets/Scripts/UI/NetwMenu/StartMenu_mobile.cs
index 264b5dd9..a2da1cc8 100644
--- a/Assets/Scripts/UI/NetwMenu/StartMenu_mobile.cs
+++ b/Assets/Scripts/UI/NetwMenu/StartMenu_mobile.cs
@@ -25,6 +25,7 @@ public class StartMenu_mobile : MonoBehaviour
 
     private void Awake()
     {
+        CommunicationEvents.LastIP = CommunicationEvents.SelecIP;
         ScreenOptimization();
         //GObj_text.text = "1: "+  Application.streamingAssetsPath + " " + Application.persistentDataPath + " " + Application.dataPath;
         toChild1();
@@ -36,12 +37,11 @@ private void Awake()
         GObj_text.text = Application.platform + " -> " + CommunicationEvents.Opsys + "";
         //GObj_text.text = "2: " + Application.streamingAssetsPath + " " + Application.persistentDataPath + " " + Application.dataPath;
         //Debug.Log(Application.streamingAssetsPath);
-        //CheckServerA[1] = 1;
-        //CheckServerA[2] = 1;
-        //CheckServerA[3] = 1;
-        for(int i=0; i<CheckServerA.Length; i++)
+
+        //Check for all stored Servers, whether they are online
+        foreach (ServerSlotData server in ServerSlots.Values)
         {
-            CheckServerA[i] = 1;
+            StartCoroutine(server.UpdateServerStatus());
         }
 
 
@@ -242,7 +242,6 @@ void ScreenOptimization()
 
         UIconfig.screHeight = Screen.height;
         UIconfig.screWidth = Screen.width;
-        CommunicationEvents.lastIP = CommunicationEvents.selecIP;
 
 
         /* //ScreenMatchMode.MatchWidthOrHeight:
diff --git a/Assets/ServerSlotComponent.cs b/Assets/ServerSlotComponent.cs
new file mode 100644
index 00000000..b49310bf
--- /dev/null
+++ b/Assets/ServerSlotComponent.cs
@@ -0,0 +1,11 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ServerSlotComponent : MonoBehaviour
+{
+    /// <summary>
+    /// Unity cannot just deal with Enums as values for buttons, so this is the workaround
+    /// </summary>
+    public CommunicationEvents.ServerSlot serverSlot;
+}
diff --git a/Assets/ServerSlotComponent.cs.meta b/Assets/ServerSlotComponent.cs.meta
new file mode 100644
index 00000000..e069cd1f
--- /dev/null
+++ b/Assets/ServerSlotComponent.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7a16e25375fcb774d9ea23be50b1f5e3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset
index 4818e890..d771e60b 100644
--- a/UserSettings/EditorUserSettings.asset
+++ b/UserSettings/EditorUserSettings.asset
@@ -6,31 +6,31 @@ EditorUserSettings:
   serializedVersion: 4
   m_ConfigSettings:
     RecentlyUsedSceneGuid-0:
-      value: 5354015500565a0f5458597740265c4441164c2e7b7072637f7e4e35b5b5643d
+      value: 01550655000d5008580a5e7412710e44464e4129787125667a7a1f37e0e66d39
       flags: 0
     RecentlyUsedSceneGuid-1:
-      value: 01550655000d5008580a5e7412710e44464e4129787125667a7a1f37e0e66d39
+      value: 5a530c5653060c0a0c0b5f2140770f4443154979297a76347c2a1e30b5b33068
       flags: 0
     RecentlyUsedSceneGuid-2:
-      value: 5a530c5653060c0a0c0b5f2140770f4443154979297a76347c2a1e30b5b33068
+      value: 530055020302595d550a0e7447220b4415161a7c2f782432282a4f31e6b93068
       flags: 0
     RecentlyUsedSceneGuid-3:
-      value: 530055020302595d550a0e7447220b4415161a7c2f782432282a4f31e6b93068
+      value: 0702005254070d5d5d5a5d7145210f444116487c282d7f357e7a1e66b6b0313a
       flags: 0
     RecentlyUsedSceneGuid-4:
-      value: 0702005254070d5d5d5a5d7145210f444116487c282d7f357e7a1e66b6b0313a
+      value: 00540c020302515f0b0f5f2711265c44171519797e7c7463787d4d63e1b8303c
       flags: 0
     RecentlyUsedSceneGuid-5:
-      value: 00540c020302515f0b0f5f2711265c44171519797e7c7463787d4d63e1b8303c
+      value: 0709560454055c0d0c5e5c2444740b4413154a72792d22627c714963e0b6373d
       flags: 0
     RecentlyUsedSceneGuid-6:
-      value: 520107035d0c510c080d547215760b4413154d2e7a2c226129281c65e3b63768
+      value: 5b01035553515d0e0b0f5b7415725d444e4f1d2b2e782332757f4863e4e6673c
       flags: 0
     RecentlyUsedSceneGuid-7:
-      value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e
+      value: 520107035d0c510c080d547215760b4413154d2e7a2c226129281c65e3b63768
       flags: 0
     RecentlyUsedSceneGuid-8:
-      value: 0709560454055c0d0c5e5c2444740b4413154a72792d22627c714963e0b6373d
+      value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e
       flags: 0
     RecentlyUsedSceneGuid-9:
       value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c
-- 
GitLab