commit 6f13437e4b2e3db8a494df3b07a9b9d657682fa7
Author: kacerekz <zuzana.kacerekova@gmail.com>
Date:   Sun Jun 13 02:00:38 2021 +0200

    Refs #9064, #9042, #9043. Fixed weather bug, started on building tags.

diff --git a/Client/Client/Assets/Resources/Prefabs/Label.prefab b/Client/Client/Assets/Resources/Prefabs/Label.prefab
new file mode 100644
index 0000000..53af5ac
--- /dev/null
+++ b/Client/Client/Assets/Resources/Prefabs/Label.prefab
@@ -0,0 +1,168 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &126668471377354203
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7030452553081407719}
+  - component: {fileID: 961033988929133990}
+  - component: {fileID: 6895459623763151903}
+  m_Layer: 0
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7030452553081407719
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 126668471377354203}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1905424836749658175}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &961033988929133990
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 126668471377354203}
+  m_CullTransparentMesh: 0
+--- !u!114 &6895459623763151903
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 126668471377354203}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: aae49ca92ffb421429b456290adc5d66, type: 3}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: FAV
+--- !u!1 &2200878503183782622
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1905424836749658175}
+  - component: {fileID: 7700059542336991804}
+  - component: {fileID: 8922850810963873980}
+  - component: {fileID: 7691608215586189943}
+  m_Layer: 0
+  m_Name: Label
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1905424836749658175
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2200878503183782622}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 7030452553081407719}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 100, y: 35}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7700059542336991804
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2200878503183782622}
+  m_CullTransparentMesh: 0
+--- !u!114 &8922850810963873980
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2200878503183782622}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.25, g: 0.37053567, b: 0.5, a: 0.6}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 915f428a07576ec41a126a3bb514df20, type: 3}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1.75
+--- !u!114 &7691608215586189943
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2200878503183782622}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b9eadbb4d9cd1094fb9af922b023c6b9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
diff --git a/Client/Client/Assets/Resources/Prefabs/Label.prefab.meta b/Client/Client/Assets/Resources/Prefabs/Label.prefab.meta
new file mode 100644
index 0000000..874088d
--- /dev/null
+++ b/Client/Client/Assets/Resources/Prefabs/Label.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 346106f8583ff85499c5966500ad6102
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Client/Client/Assets/Scenes/WebGL.unity b/Client/Client/Assets/Scenes/WebGL.unity
index e6e6a7a..e063e5e 100644
--- a/Client/Client/Assets/Scenes/WebGL.unity
+++ b/Client/Client/Assets/Scenes/WebGL.unity
@@ -282,21 +282,21 @@ RectTransform:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 11246237}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_LocalScale: {x: 0.9, y: 0.9, z: 1}
   m_Children:
   - {fileID: 997299467}
   - {fileID: 1687080553}
   - {fileID: 45274331}
-  m_Father: {fileID: 345387603}
+  m_Father: {fileID: 2099107657}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 300, y: 35}
-  m_Pivot: {x: 0.5, y: 0.5}
+  m_AnchorMin: {x: 0.5, y: 1}
+  m_AnchorMax: {x: 0.5, y: 1}
+  m_AnchoredPosition: {x: 0, y: -100}
+  m_SizeDelta: {x: 350, y: 40}
+  m_Pivot: {x: 0.5, y: 1}
 --- !u!114 &11246239
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -351,6 +351,14 @@ MonoBehaviour:
       m_Image: {fileID: 0}
     - m_Text: UP
       m_Image: {fileID: 0}
+    - m_Text: UF
+      m_Image: {fileID: 0}
+    - m_Text: OF
+      m_Image: {fileID: 0}
+    - m_Text: UH
+      m_Image: {fileID: 0}
+    - m_Text: OH
+      m_Image: {fileID: 0}
   m_OnValueChanged:
     m_PersistentCalls:
       m_Calls: []
@@ -756,6 +764,81 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 23928214}
   m_CullTransparentMesh: 0
+--- !u!1 &28716928
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 28716929}
+  - component: {fileID: 28716932}
+  - component: {fileID: 28716930}
+  m_Layer: 0
+  m_Name: LabelCanvas
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &28716929
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 28716928}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0, y: 0, z: 0}
+  m_Children: []
+  m_Father: {fileID: 591238600}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
+--- !u!114 &28716930
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 28716928}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!223 &28716932
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 28716928}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: -1
+  m_TargetDisplay: 0
 --- !u!1 &37705500
 GameObject:
   m_ObjectHideFlags: 0
@@ -1185,7 +1268,7 @@ MonoBehaviour:
   m_Elasticity: 0.1
   m_Inertia: 1
   m_DecelerationRate: 0.135
-  m_ScrollSensitivity: 1
+  m_ScrollSensitivity: 50
   m_Viewport: {fileID: 852099711}
   m_HorizontalScrollbar: {fileID: 0}
   m_VerticalScrollbar: {fileID: 1395626029}
@@ -3147,7 +3230,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 1, y: 0.5}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 35}
+  m_SizeDelta: {x: 0, y: 40}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &157328952
 MonoBehaviour:
@@ -5694,82 +5777,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 343797086}
   m_CullTransparentMesh: 0
---- !u!1 &345387602
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 345387603}
-  - component: {fileID: 345387605}
-  - component: {fileID: 345387604}
-  m_Layer: 5
-  m_Name: WeatherSelect
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &345387603
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 345387602}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 0.9, y: 0.9, z: 1}
-  m_Children:
-  - {fileID: 11246238}
-  - {fileID: 466206377}
-  m_Father: {fileID: 2099107657}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: -100}
-  m_SizeDelta: {x: 0, y: 30}
-  m_Pivot: {x: 0.5, y: 1}
---- !u!114 &345387604
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 345387602}
-  m_Enabled: 0
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
-  m_RaycastTarget: 1
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
-  m_Type: 1
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
---- !u!222 &345387605
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 345387602}
-  m_CullTransparentMesh: 0
 --- !u!1 &363153767
 GameObject:
   m_ObjectHideFlags: 0
@@ -6548,8 +6555,8 @@ MonoBehaviour:
     m_FontSize: 14
     m_FontStyle: 0
     m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
+    m_MinSize: 0
+    m_MaxSize: 41
     m_Alignment: 4
     m_AlignByGeometry: 0
     m_RichText: 1
@@ -7045,84 +7052,6 @@ RectTransform:
     type: 3}
   m_PrefabInstance: {fileID: 457534403}
   m_PrefabAsset: {fileID: 0}
---- !u!1 &466206376
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 466206377}
-  - component: {fileID: 466206379}
-  - component: {fileID: 466206378}
-  m_Layer: 5
-  m_Name: Weather
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 0
---- !u!224 &466206377
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 466206376}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_Children: []
-  m_Father: {fileID: 345387603}
-  m_RootOrder: 1
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 30}
-  m_Pivot: {x: 0.5, y: 1}
---- !u!114 &466206378
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 466206376}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 0.15, g: 0.15, b: 0.15, a: 1}
-  m_RaycastTarget: 1
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 12800000, guid: 9481e32b30a71424388dc7fa2f08e2d0, type: 3}
-    m_FontSize: 24
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 2
-    m_MaxSize: 40
-    m_Alignment: 4
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: CLOUDY
---- !u!222 &466206379
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 466206376}
-  m_CullTransparentMesh: 0
 --- !u!1 &469665291
 GameObject:
   m_ObjectHideFlags: 0
@@ -8048,40 +7977,192 @@ MonoBehaviour:
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 547644088}
+  m_GameObject: {fileID: 547644088}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.15, g: 0.15, b: 0.15, a: 1}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 9481e32b30a71424388dc7fa2f08e2d0, type: 3}
+    m_FontSize: 24
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: SET WEATHER MANUALLY
+--- !u!222 &547644091
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 547644088}
+  m_CullTransparentMesh: 0
+--- !u!1 &550097702
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 550097704}
+  - component: {fileID: 550097706}
+  - component: {fileID: 550097705}
+  - component: {fileID: 550097703}
+  m_Layer: 5
+  m_Name: InputField
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &550097703
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 550097702}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 550097705}
+  m_TextComponent: {fileID: 2022364732}
+  m_Placeholder: {fileID: 1220019316}
+  m_ContentType: 0
+  m_InputType: 0
+  m_AsteriskChar: 42
+  m_KeyboardType: 0
+  m_LineType: 0
+  m_HideMobileInput: 0
+  m_CharacterValidation: 0
+  m_CharacterLimit: 0
+  m_OnEndEdit:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 1687476876}
+        m_MethodName: OnInputChanged
+        m_Mode: 1
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
+  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_CustomCaretColor: 0
+  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+  m_Text: 
+  m_CaretBlinkRate: 0.85
+  m_CaretWidth: 1
+  m_ReadOnly: 0
+  m_ShouldActivateOnSelect: 1
+--- !u!224 &550097704
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 550097702}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.9, y: 0.9, z: 1}
+  m_Children:
+  - {fileID: 1220019318}
+  - {fileID: 2022364730}
+  m_Father: {fileID: 2099107657}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 1}
+  m_AnchorMax: {x: 0.5, y: 1}
+  m_AnchoredPosition: {x: 0, y: -100}
+  m_SizeDelta: {x: 350, y: 40}
+  m_Pivot: {x: 0.5, y: 1}
+--- !u!114 &550097705
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 550097702}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0.15, g: 0.15, b: 0.15, a: 1}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
   m_RaycastTarget: 1
   m_Maskable: 1
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 12800000, guid: 9481e32b30a71424388dc7fa2f08e2d0, type: 3}
-    m_FontSize: 24
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 2
-    m_MaxSize: 40
-    m_Alignment: 4
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: SET WEATHER MANUALLY
---- !u!222 &547644091
+  m_Sprite: {fileID: 21300000, guid: 915f428a07576ec41a126a3bb514df20, type: 3}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 2
+--- !u!222 &550097706
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 547644088}
+  m_GameObject: {fileID: 550097702}
   m_CullTransparentMesh: 0
 --- !u!1 &550883723
 GameObject:
@@ -8666,6 +8747,7 @@ Transform:
   m_Children:
   - {fileID: 1827524481}
   - {fileID: 1520560997}
+  - {fileID: 28716929}
   m_Father: {fileID: 0}
   m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -10830,6 +10912,17 @@ MonoBehaviour:
           m_StringArgument: 
           m_BoolArgument: 0
         m_CallState: 2
+      - m_Target: {fileID: 1687476876}
+        m_MethodName: OnExit
+        m_Mode: 1
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
 --- !u!114 &750183184
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -12708,7 +12801,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 0, y: 0.5}
   m_AnchoredPosition: {x: 20, y: 0}
-  m_SizeDelta: {x: 20, y: 20}
+  m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &879555340
 MonoBehaviour:
@@ -12729,7 +12822,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
+  m_Sprite: {fileID: 0}
   m_Type: 0
   m_PreserveAspect: 0
   m_FillCenter: 1
@@ -14077,6 +14170,7 @@ MonoBehaviour:
   weatherIndex: 0
   weatherText: {fileID: 2132748032}
   errorText: {fileID: 935701908}
+  forecastText: {fileID: 1805368153}
   weatherButton: {fileID: 1453444307}
   resetWeatherButton: {fileID: 449427171}
   temperatureAnimator: {fileID: 714623195}
@@ -17782,6 +17876,84 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   builidngName: KLAT
+--- !u!1 &1220019315
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1220019318}
+  - component: {fileID: 1220019317}
+  - component: {fileID: 1220019316}
+  m_Layer: 5
+  m_Name: Placeholder
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1220019316
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1220019315}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 9481e32b30a71424388dc7fa2f08e2d0, type: 3}
+    m_FontSize: 20
+    m_FontStyle: 2
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: Enter text...
+--- !u!222 &1220019317
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1220019315}
+  m_CullTransparentMesh: 0
+--- !u!224 &1220019318
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1220019315}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 550097704}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &1223674621
 GameObject:
   m_ObjectHideFlags: 0
@@ -23345,7 +23517,7 @@ Canvas:
   m_SortingBucketNormalizedSize: 0
   m_AdditionalShaderChannelsFlag: 0
   m_SortingLayerID: 0
-  m_SortingOrder: -1
+  m_SortingOrder: -2
   m_TargetDisplay: 0
 --- !u!225 &1520561001
 CanvasGroup:
@@ -23577,7 +23749,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 1, y: 1}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 28}
+  m_SizeDelta: {x: 0, y: 40}
   m_Pivot: {x: 0.5, y: 1}
 --- !u!1001 &1543730015
 PrefabInstance:
@@ -25666,7 +25838,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!224 &1687476873
 RectTransform:
   m_ObjectHideFlags: 0
@@ -25740,6 +25912,8 @@ MonoBehaviour:
   mapRenderer: {fileID: 1827524482}
   panel: {fileID: 1687476872}
   setBuildingButton: {fileID: 244320316}
+  input: {fileID: 550097703}
+  suggestion: {fileID: 11246239}
 --- !u!1 &1687600170
 GameObject:
   m_ObjectHideFlags: 0
@@ -26360,6 +26534,7 @@ RectTransform:
   - {fileID: 1163171920}
   - {fileID: 924234297}
   - {fileID: 2034067900}
+  - {fileID: 1805368152}
   m_Father: {fileID: 423734338}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -27512,6 +27687,84 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1801102822}
   m_CullTransparentMesh: 0
+--- !u!1 &1805368151
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1805368152}
+  - component: {fileID: 1805368154}
+  - component: {fileID: 1805368153}
+  m_Layer: 5
+  m_Name: ForecastType
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1805368152
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1805368151}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1733224993}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -125}
+  m_SizeDelta: {x: 0, y: 30}
+  m_Pivot: {x: 0.5, y: 1}
+--- !u!114 &1805368153
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1805368151}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.85, g: 0.85, b: 0.85, a: 1}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 9481e32b30a71424388dc7fa2f08e2d0, type: 3}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: AUTOMATIC FORECAST
+--- !u!222 &1805368154
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1805368151}
+  m_CullTransparentMesh: 0
 --- !u!1001 &1807483780
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -28058,6 +28311,9 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   sceneManager: {fileID: 1446501678}
+  labelCanvas: {fileID: 28716932}
+  labelPrefab: {fileID: 2200878503183782622, guid: 346106f8583ff85499c5966500ad6102,
+    type: 3}
   underlayTemplate: {fileID: 6353782347770371216, guid: 74b5227b733784b449327a9a52b751a6,
     type: 3}
   overlayTemplate: {fileID: 6177358606749812705, guid: cbae417372ce719448123b88f12d4eec,
@@ -29789,6 +30045,7 @@ MonoBehaviour:
   text: {fileID: 491682258}
   mapLegend: {fileID: 312072052}
   tableLegend: {fileID: 216146134}
+  findBuildingBtn: {fileID: 244320316}
   toTable: TO TABLE
   toMap: TO MAP
 --- !u!1 &1963047962
@@ -31287,6 +31544,84 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2020527456}
   m_CullTransparentMesh: 0
+--- !u!1 &2022364729
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2022364730}
+  - component: {fileID: 2022364731}
+  - component: {fileID: 2022364732}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2022364730
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2022364729}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 550097704}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2022364731
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2022364729}
+  m_CullTransparentMesh: 0
+--- !u!114 &2022364732
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2022364729}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 9481e32b30a71424388dc7fa2f08e2d0, type: 3}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 
 --- !u!1001 &2028450461
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -32503,7 +32838,8 @@ RectTransform:
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children:
-  - {fileID: 345387603}
+  - {fileID: 11246238}
+  - {fileID: 550097704}
   m_Father: {fileID: 1450781057}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Client/Client/Assets/Scripts/MapRenderer.cs b/Client/Client/Assets/Scripts/MapRenderer.cs
index 0c14c7b..0272041 100644
--- a/Client/Client/Assets/Scripts/MapRenderer.cs
+++ b/Client/Client/Assets/Scripts/MapRenderer.cs
@@ -9,6 +9,12 @@ public class MapRenderer : MonoBehaviour
     [SerializeField]
     public SceneManager sceneManager;
 
+    [SerializeField]
+    public Canvas labelCanvas;
+
+    [SerializeField]
+    public GameObject labelPrefab;
+
     [SerializeField]
     private SpriteRenderer underlayTemplate;
 
@@ -100,6 +106,8 @@ public class MapRenderer : MonoBehaviour
                 var name = split[0].Substring(0, split[0].Length - 4);
                 var xoff = float.Parse(split[1]);
                 var yoff = float.Parse(split[2]);
+                var xmed = float.Parse(split[3]);
+                var ymed = float.Parse(split[4]);
 
                 var img = overlay[name];
 
@@ -111,7 +119,22 @@ public class MapRenderer : MonoBehaviour
                     var xshift = -bounds.size.x / 2 + imgbounds.size.x / 2 + bounds.size.x * (xoff / 100);
                     var yshift = -bounds.size.y / 2 + imgbounds.size.y / 2 + bounds.size.y * (yoff / 100);
 
+                    var xmedshift = -bounds.size.x / 2 + imgbounds.size.x / 2 + bounds.size.x * (xmed / 100);
+                    var ymedshift = -bounds.size.y / 2 + imgbounds.size.y / 2 + bounds.size.y * (ymed / 100);
+
                     img.gameObject.transform.position = bounds.center + new Vector3(xshift, yshift, 0);
+
+                    var label = Instantiate(labelPrefab, labelCanvas.transform);
+                    var labelText = label.GetComponentInChildren<Text>();
+                    labelText.text = name.ToUpper();
+                    label.name = labelText.text;
+
+                    PositionUpdater posup = label.GetComponent<PositionUpdater>();
+                    posup.source = img.gameObject;
+
+                    RectTransform rect = label.GetComponent<RectTransform>();
+                    Vector3 newPosition = Camera.main.WorldToScreenPoint(bounds.center + new Vector3(xmedshift, ymedshift, 0));
+                    rect.position = newPosition;
                 }
                 else
                 {
diff --git a/Client/Client/Assets/Scripts/UI/BuildingPanel.cs b/Client/Client/Assets/Scripts/UI/BuildingPanel.cs
index 5bb45de..062dcd9 100644
--- a/Client/Client/Assets/Scripts/UI/BuildingPanel.cs
+++ b/Client/Client/Assets/Scripts/UI/BuildingPanel.cs
@@ -1,15 +1,38 @@
 ﻿using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
+using UnityEngine.EventSystems;
 using UnityEngine.UI;
 
 public class BuildingPanel : PopUpPanel
 {
     public Button setBuildingButton;
+    public InputField input;
+    public Dropdown suggestion;
 
     public void OnSetBuildingButton()
     {
         OnExitButtonClicked();
     }
 
+    public void OnInputChanged()
+    {
+        suggestion.Show();
+        EventSystem.current.SetSelectedGameObject(input.gameObject);
+        if (isActiveAndEnabled) StartCoroutine(MoveCaretToEnd());
+    }
+
+    IEnumerator MoveCaretToEnd()
+    {
+        yield return 0;
+        input.MoveTextEnd(false);
+    }
+
+    public void OnExit()
+    {
+        input.text = "";
+        suggestion.Hide();
+        OnExitButtonClicked();
+    }
+
 }
diff --git a/Client/Client/Assets/Scripts/UI/DatePicker.cs b/Client/Client/Assets/Scripts/UI/DatePicker.cs
index cb532cb..9cde6c6 100644
--- a/Client/Client/Assets/Scripts/UI/DatePicker.cs
+++ b/Client/Client/Assets/Scripts/UI/DatePicker.cs
@@ -1,6 +1,7 @@
 ﻿using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
+using UnityEngine.EventSystems;
 using UnityEngine.UI;
 
 public class DatePicker : MonoBehaviour
@@ -10,6 +11,8 @@ public class DatePicker : MonoBehaviour
     public void ClosePanel()
     {
         // set nothing
+        CalendarDayButton.day = -1;
+        EventSystem.current.SetSelectedGameObject(null);
         this.gameObject.SetActive(false);
     }
 
@@ -18,6 +21,9 @@ public class DatePicker : MonoBehaviour
         toSet.day = CalendarDayButton.day;
         toSet.month = CalendarMonth.month;
         toSet.year = CalendarYear.year;
+
+        CalendarDayButton.day = -1;
+        EventSystem.current.SetSelectedGameObject(null);
         this.gameObject.SetActive(false);
     }
 }
diff --git a/Client/Client/Assets/Scripts/UI/MapSwapper.cs b/Client/Client/Assets/Scripts/UI/MapSwapper.cs
index b3bf6f7..2203e0f 100644
--- a/Client/Client/Assets/Scripts/UI/MapSwapper.cs
+++ b/Client/Client/Assets/Scripts/UI/MapSwapper.cs
@@ -13,6 +13,8 @@ public class MapSwapper : MonoBehaviour
     public GameObject mapLegend;
     public GameObject tableLegend;
 
+    public Button findBuildingBtn;
+
     public string toTable;
     public string toMap;
 
@@ -37,6 +39,7 @@ public class MapSwapper : MonoBehaviour
             canvas.alpha = 1;
             text.text = toMap;
 
+            findBuildingBtn.interactable = false;
             mapLegend.SetActive(false);
             tableLegend.SetActive(true);
 
@@ -56,6 +59,7 @@ public class MapSwapper : MonoBehaviour
             canvas.alpha = 0;
             text.text = toTable;
 
+            findBuildingBtn.interactable = true;
             mapLegend.SetActive(true);
             tableLegend.SetActive(false);
         }
diff --git a/Client/Client/Assets/Scripts/UI/PositionUpdater.cs b/Client/Client/Assets/Scripts/UI/PositionUpdater.cs
new file mode 100644
index 0000000..867891c
--- /dev/null
+++ b/Client/Client/Assets/Scripts/UI/PositionUpdater.cs
@@ -0,0 +1,21 @@
+﻿using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PositionUpdater : MonoBehaviour
+{
+    public GameObject source;
+    private RectTransform rect;
+
+    void Start()
+    {
+        rect = GetComponent<RectTransform>();
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        Vector3 newPosition = Camera.main.WorldToScreenPoint(source.transform.position);
+        rect.position = newPosition;
+    }
+}
diff --git a/Client/Client/Assets/Scripts/UI/PositionUpdater.cs.meta b/Client/Client/Assets/Scripts/UI/PositionUpdater.cs.meta
new file mode 100644
index 0000000..9a487a7
--- /dev/null
+++ b/Client/Client/Assets/Scripts/UI/PositionUpdater.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b9eadbb4d9cd1094fb9af922b023c6b9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Client/Client/Assets/Scripts/UI/WeatherPanel.cs b/Client/Client/Assets/Scripts/UI/WeatherPanel.cs
index 83607ed..58d0ab2 100644
--- a/Client/Client/Assets/Scripts/UI/WeatherPanel.cs
+++ b/Client/Client/Assets/Scripts/UI/WeatherPanel.cs
@@ -15,6 +15,7 @@ public class WeatherPanel : PopUpPanel
 
     public Text weatherText;
     public Text errorText;
+    public Text forecastText;
 
     public Button weatherButton;
     public Button resetWeatherButton;
@@ -114,6 +115,8 @@ public class WeatherPanel : PopUpPanel
             return;
         }
 
+
+        forecastText.text = "MANUAL FORECAST";
         errorText.gameObject.SetActive(false);
         weatherManager.useOwnWeather = true;
         weatherManager.data.SetValues(temperatureValue, windValue, rainValue, weatherValue);
@@ -125,6 +128,7 @@ public class WeatherPanel : PopUpPanel
 
     public void OnResetWeatherButtonPressed()
     {
+        forecastText.text = "AUTOMATIC FORECAST";
         weatherManager.useOwnWeather = false;
         rushManager.ResetRush();
     }
diff --git a/Client/Client/Assets/Scripts/Weather/Parser/JsonParser.cs b/Client/Client/Assets/Scripts/Weather/Parser/JsonParser.cs
index 42ad425..1f09abc 100644
--- a/Client/Client/Assets/Scripts/Weather/Parser/JsonParser.cs
+++ b/Client/Client/Assets/Scripts/Weather/Parser/JsonParser.cs
@@ -1,13 +1,10 @@
 ﻿//
 // Author: A. Konig
 //
-
 using ServerApp.Parser.OutputInfo;
 using System;
 using System.Collections.Generic;
 using System.Globalization;
-using System.IO;
-using System.Net;
 using System.Text.Json;
 using UnityEngine;
 using static System.Text.Json.JsonElement;
@@ -18,110 +15,142 @@ namespace ServerApp.WeatherPredictionParser
     /// Class representing a parser for json prediction data
     /// </summary>
     /// <author>A. Konig</author>
-    class JsonParser : IJsonParser
+    public class JsonParser
     {
-        /// <summary> Current weather </summary>
-        WeatherInfo current;
-        public new WeatherInfo Current { get => current; }
-        /// <summary> Prediction for today, tommorrow and day after tommorrow </summary>
-        List<WeatherInfo> predictions;
-        public new List<WeatherInfo> Predictions { get => predictions; set => predictions = value; }
-
-        /// <summary> Path to json file </summary>
-        string pathToFile = "http://wttr.in/Plzen,czechia?format=j1";
         /// <summary> Currently parsed day </summary>
         DateTime currParsedDay;
         /// <summary> Sunrise time of currently parsed day </summary>
-        DateTime sunriseTime;
+        List<DateTime> sunriseTime;
         /// <summary> Sunset time of currently parsed day </summary>
-        DateTime sunsetTime;
+        List<DateTime> sunsetTime;
 
+        /// <summary> Current weather </summary>
+        WeatherInfo current;
+        public WeatherInfo Current { get => current; set => current = value; }
+
+        /// <summary> Prediction for today, tommorrow and day after tommorrow (or for days more/less into the future) </summary>
+        List<WeatherInfo> predictions;
+        public List<WeatherInfo> Predictions { get => predictions; set => predictions = value; }
 
-        /// <summary>
-        /// Constructor
-        /// </summary>
-        /// <param name="loader"></param>
-        public JsonParser(string pathToFile)
-        {
-            this.pathToFile = pathToFile;
-        }
 
         /// <summary>
-        /// Downloads json file
+        /// Get predictions from Predictions that are within specified time span
+        /// From-to including
+        /// If from == DateTime.Min then all until to
+        /// If to  == DateTime.Max then all starting from from
         /// </summary>
-        /// <returns> Path to file </returns>
-        private string DownloadWeatherPrediction()
+        /// <param name="from">DateTime from</param>
+        /// <param name="to">DateTime to</param>
+        /// <returns>List of predictions that fit specified criteria or null if incorrect input</returns>
+        public List<WeatherInfo> GetPredictionForTime(DateTime from, DateTime to)
         {
-            //DateTime now = DateTime.Now;
-            //WebClient webClient = new WebClient();
+            if (Predictions == null)
+                return null;
 
-            //if (!Directory.Exists("data"))
-            //    Directory.CreateDirectory("data");
+            List<WeatherInfo> res = new List<WeatherInfo>();
 
-            //webClient.DownloadFile(pathToFile, $"data/{now.Year}{now.Month}{now.Day}.json");
+            if (from == DateTime.MinValue)
+                from = Predictions[0].startTime;
 
-            //return $"data/{now.Year}{now.Month}{now.Day}.json";
+            if (to == DateTime.MaxValue)
+            {
+                DateTime dt = Predictions[Predictions.Count - 1].startTime;
+                int hour = dt.Hour + Predictions[Predictions.Count - 1].intervalLength;
+                bool addDay = false;
+                if (hour >= 24)
+                {
+                    hour -= 24;
+                    addDay = true;
+                }
+                to = new DateTime(dt.Year, dt.Month, dt.Day, hour, dt.Minute, dt.Second);
+                if (addDay)
+                    to = to.AddDays(1);
+            }
+
+            if (from > to)
+                return null;
+
+            // for all parsed weather info
+            foreach (WeatherInfo pred in Predictions)
+            {
+                int hour = pred.startTime.Hour + pred.intervalLength;
+                bool addDay = false;
+                if (hour >= 24)
+                {
+                    hour -= 24;
+                    addDay = true;
+                }
+                DateTime endTime = new DateTime(pred.startTime.Year, pred.startTime.Month, pred.startTime.Day, hour, pred.startTime.Minute, pred.startTime.Second);
+                if (addDay)
+                    endTime = endTime.AddDays(1);
+
+                // if both end and start not outside of interval
+                if (!((pred.startTime < from && endTime <= from) || (pred.startTime > to && endTime > to)))
+                    res.Add(pred);
+            }
 
-            return "";
+            return res;
         }
 
+
         /// <summary>
         /// Parse weather prediction
         /// Results is in attributes current for current weather and pred for weather prediction for today, tommorrow and day after tommorrow
         /// </summary>
-        override public void ParsePrediction(string data)
+        public void ParsePrediction(string data)
         {
-            // TODO ask DataDownloader for download said file and return path to it
-            
-            // get file
-            DateTime now = DateTime.Now;
-            // Console.WriteLine(File.Exists(file));
+            sunriseTime = new List<DateTime>();
+            sunsetTime = new List<DateTime>();
 
-            current = new WeatherInfo();
-            predictions = new List<WeatherInfo>();
+            Current = new WeatherInfo();
+            Predictions = new List<WeatherInfo>();
 
-            // if (!File.Exists(file))
-            //     return;
-            // 
-            // // read file
-            // string data = File.ReadAllText(file);
+            if (data == null || data.Length == 0)
+                return;
 
             // parse
-            JsonDocument doc = JsonDocument.Parse(data);
-            JsonElement root = doc.RootElement;
-            var weatherP = root.EnumerateObject();
-
-            while (weatherP.MoveNext())
+            try
             {
-                string name = weatherP.Current.Name;
-                Console.WriteLine(name);
+                JsonDocument doc = JsonDocument.Parse(data);
+                JsonElement root = doc.RootElement;
+                var weatherP = root.EnumerateObject();
 
-                switch (name)
+                while (weatherP.MoveNext())
                 {
-                    // current weather
-                    case "current_condition":
-                        {
-                            ArrayEnumerator currentWeather = weatherP.Current.Value.EnumerateArray();
-                            current = ParseCurrentWeather(currentWeather);
-
-                            break;
-
-                        }
-                    // weather prediction
-                    case "weather":
-                        {
-                            ArrayEnumerator weather = weatherP.Current.Value.EnumerateArray();
-                            ParseWeatherPredict(weather);
-
-                            break;
-                        }
+                    string name = weatherP.Current.Name;
+
+                    switch (name)
+                    {
+                        // current weather
+                        case "current_condition":
+                            {
+                                ArrayEnumerator currentWeather = weatherP.Current.Value.EnumerateArray();
+                                Current = ParseCurrentWeather(currentWeather);
+
+                                break;
+                            }
+                        // weather prediction
+                        case "weather":
+                            {
+                                ArrayEnumerator weather = weatherP.Current.Value.EnumerateArray();
+                                ParseWeatherPredict(weather);
+
+                                break;
+                            }
+                    }
                 }
-            }
 
-            // sunrise + sunset into data
-            EncompassSunRiseSetTimes();
+                // sunrise + sunset into data
+                EncompassSunRiseSetTimes();
+            }
+            catch
+            {
+                Debug.LogError("Weather prediction file in incorrect format");
+                Current = new WeatherInfo();
+                Predictions = new List<WeatherInfo>();
+            }
 
-            TestConsoleOutput();
+            //TestConsoleOutput();
         }
 
         /// <summary>
@@ -129,13 +158,11 @@ namespace ServerApp.WeatherPredictionParser
         /// </summary>
         private void TestConsoleOutput()
         {
-            //Debug.Log(current);
-            //foreach (WeatherInfo w in predictions)
-                //Debug.Log(w);
+            Console.WriteLine(Current);
+            foreach (WeatherInfo w in Predictions)
+                Console.WriteLine(w);
         }
 
-        
-
         /// <summary>
         /// Change data in a way that they now reflect sunrise and sunset times
         /// If current time under sunrise or over sunset -> WeatherConditions is Dark
@@ -143,70 +170,100 @@ namespace ServerApp.WeatherPredictionParser
         /// </summary>
         private void EncompassSunRiseSetTimes()
         {
+            if (sunsetTime.Count < 1 || sunriseTime.Count < 0)
+                return;
+
             // change current weather
-            if ((current.startTime.TimeOfDay > sunsetTime.TimeOfDay) || (current.startTime.TimeOfDay < sunriseTime.TimeOfDay))
-                current.condition = WeatherConditions.Dark;
+            if ((Current.startTime.TimeOfDay > sunsetTime[0].TimeOfDay) || (Current.startTime.TimeOfDay < sunriseTime[0].TimeOfDay))
+                Current.condition = WeatherConditions.Dark;
 
             // change prediction
-            for (int i = 0; i < predictions.Count - 1; i++)
+            int index = 0;
+            for (int i = 0; i < Predictions.Count - 1; i++)
             {
-                WeatherInfo w = predictions[i];
-                WeatherInfo wNext = predictions[i + 1];
+                WeatherInfo w = Predictions[i];
+                WeatherInfo wNext = Predictions[i + 1];
+                DateTime sunrise = sunriseTime[index];
+                DateTime sunset = sunsetTime[index];
+
 
                 // if wNext time < than w time then it is prediction from the next day -> add 24 to correctly calculate timespan
                 int timespan = wNext.startTime.Hour - w.startTime.Hour;
+                bool intoTwo = false;
                 if (wNext.startTime.Hour < w.startTime.Hour)
-                    timespan = (wNext.startTime.Hour+24) - w.startTime.Hour;
-                
+                {
+                    intoTwo = true;
+                    timespan = (wNext.startTime.Hour + 24) - w.startTime.Hour;
+                }
+
                 w.intervalLength = timespan;
+                TimeSpan endTime = new TimeSpan(w.startTime.TimeOfDay.Hours + timespan, w.startTime.TimeOfDay.Minutes, 0);
 
                 // if start under sunset
-                if (w.startTime.TimeOfDay > sunsetTime.TimeOfDay)
-                    w.condition = WeatherConditions.Dark;
+                if (w.startTime.TimeOfDay > sunsetTime[index].TimeOfDay)
+                {
+                    // when is end - if end after next sunrise need to compute the extent of dark
+                    if (intoTwo && endTime > sunriseTime[index + 1].TimeOfDay)
+                    {
+                        double howMuch = ((endTime.Hours * 60 + endTime.Minutes) - (sunriseTime[index + 1].Hour * 60 + sunriseTime[index + 1].Minute)) / 60.0;
+                        howMuch = w.intervalLength - howMuch;
+
+                        if (howMuch >= timespan / 2.0)
+                            w.condition = WeatherConditions.Dark;
+                    }
+                    else
+                        w.condition = WeatherConditions.Dark;
+                }
 
                 // if start under sunrise
-                if (w.startTime.TimeOfDay < sunriseTime.TimeOfDay)
+                if (w.startTime.TimeOfDay < sunriseTime[index].TimeOfDay)
                 {
-                    double howMuch = ((sunriseTime.Hour * 60 + sunriseTime.Minute) - (w.startTime.Hour * 60 + w.startTime.Minute)) / 60.0;
+                    double howMuch = ((sunriseTime[index].Hour * 60 + sunriseTime[index].Minute) - (w.startTime.Hour * 60 + w.startTime.Minute)) / 60.0;
+                    if (endTime > sunset.TimeOfDay)
+                        howMuch += ((w.startTime.Hour * 60 + w.startTime.Minute) - (sunset.Hour * 60 + sunset.Minute)) / 60.0;
 
                     if (howMuch >= timespan / 2.0)
                         w.condition = WeatherConditions.Dark;
                 }
 
-                // if start under sunrise
-                TimeSpan endTime = new TimeSpan(w.startTime.TimeOfDay.Hours + timespan, w.startTime.TimeOfDay.Minutes, 0);
-                if (endTime > sunsetTime.TimeOfDay)
+                // if end over sunset
+                else if (endTime > sunsetTime[index].TimeOfDay)
                 {
-                    double howMuch = ((endTime.Hours * 60 + endTime.Minutes) - (sunsetTime.Hour * 60 + sunsetTime.Minute)) / 60.0;
+                    double howMuch = ((endTime.Hours * 60 + endTime.Minutes) - (sunsetTime[index].Hour * 60 + sunsetTime[index].Minute)) / 60.0;
 
                     if (howMuch >= timespan / 2.0)
                         w.condition = WeatherConditions.Dark;
                 }
+
+                if (Predictions[i].startTime.Date != Predictions[i + 1].startTime.Date)
+                    index++;
             }
 
             // last prediction
-            WeatherInfo wLast = predictions[predictions.Count - 1];
-            TimeSpan endTimeW = new TimeSpan(24, 0, 0);
-            int timespanLast = endTimeW.Hours - wLast.startTime.Hour;
+            WeatherInfo wLast = Predictions[Predictions.Count - 1];
+            TimeSpan endTimeW = new TimeSpan(23, 59, 59);
+            int timespanLast = 24 - wLast.startTime.Hour;
             wLast.intervalLength = timespanLast;
 
             // if start under sunset
-            if (wLast.startTime.TimeOfDay > sunsetTime.TimeOfDay)
+            if (wLast.startTime.TimeOfDay > sunsetTime[sunsetTime.Count - 1].TimeOfDay)
                 wLast.condition = WeatherConditions.Dark;
 
             // if start under sunrise
-            if (wLast.startTime.TimeOfDay < sunriseTime.TimeOfDay)
+            if (wLast.startTime.TimeOfDay < sunriseTime[sunriseTime.Count - 1].TimeOfDay)
             {
-                double howMuch = ((sunriseTime.Hour * 60 + sunriseTime.Minute) - (wLast.startTime.Hour * 60 + wLast.startTime.Minute)) / 60.0;
+                double howMuch = ((sunriseTime[sunriseTime.Count - 1].Hour * 60 + sunriseTime[sunriseTime.Count - 1].Minute) - (wLast.startTime.Hour * 60 + wLast.startTime.Minute)) / 60.0;
+                if (endTimeW > sunsetTime[sunriseTime.Count - 1].TimeOfDay)
+                    howMuch += ((wLast.startTime.Hour * 60 + wLast.startTime.Minute) - (sunsetTime[sunriseTime.Count - 1].Hour * 60 + sunsetTime[sunriseTime.Count - 1].Minute)) / 60.0;
 
                 if (howMuch >= timespanLast / 2.0)
                     wLast.condition = WeatherConditions.Dark;
             }
 
             // if start under sunrise
-            if (endTimeW > sunsetTime.TimeOfDay)
+            if (endTimeW > sunsetTime[sunsetTime.Count - 1].TimeOfDay)
             {
-                double howMuch = ((endTimeW.Hours * 60 + endTimeW.Minutes) - (sunsetTime.Hour * 60 + sunsetTime.Minute)) / 60.0;
+                double howMuch = ((endTimeW.Hours * 60 + endTimeW.Minutes) - (sunsetTime[sunsetTime.Count - 1].Hour * 60 + sunsetTime[sunsetTime.Count - 1].Minute)) / 60.0;
 
                 if (howMuch >= timespanLast / 2.0)
                     wLast.condition = WeatherConditions.Dark;
@@ -259,21 +316,23 @@ namespace ServerApp.WeatherPredictionParser
             while (astronomy.MoveNext())
             {
                 var astrInfo = astronomy.Current.EnumerateObject();
-                
+
                 while (astrInfo.MoveNext())
                 {
                     switch (astrInfo.Current.Name)
                     {
                         case "sunrise":
                             {
-                                DateTime.TryParseExact(astrInfo.Current.Value.GetString(), "hh:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out sunriseTime);
-                                Console.WriteLine("\t sunrise time : " + sunriseTime + " " + astrInfo.Current.Value.GetString());
+                                DateTime newSunrise = new DateTime();
+                                DateTime.TryParseExact(astrInfo.Current.Value.GetString(), "hh:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out newSunrise);
+                                sunriseTime.Add(newSunrise);
                                 break;
                             }
                         case "sunset":
                             {
-                                DateTime.TryParseExact(astrInfo.Current.Value.GetString(), "hh:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out sunsetTime);
-                                Console.WriteLine("\t sunset time : " + sunsetTime + " " + astrInfo.Current.Value.GetString());
+                                DateTime newSunset = new DateTime();
+                                DateTime.TryParseExact(astrInfo.Current.Value.GetString(), "hh:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out newSunset);
+                                sunsetTime.Add(newSunset);
                                 break;
                             }
                     }
@@ -307,6 +366,7 @@ namespace ServerApp.WeatherPredictionParser
                                 int cloudCover;
                                 Int32.TryParse(oneH.Current.Value.GetString(), out cloudCover);
                                 weather.condition = ValueToConditions.CloudCoverToConditions(cloudCover);
+                                weather.lum = ValueToConditions.TransferConditionsToLux(weather.condition);
                                 break;
                             }
                         // take into account highest value from "chanceofrain" and "chaceofsnow"
@@ -325,11 +385,11 @@ namespace ServerApp.WeatherPredictionParser
                                 break;
                             }
                         // wind kmph has to be translated to mps
-                        case "WindGustKmph":
+                        case "windspeedKmph":
                             {
                                 double windkmh;
                                 Double.TryParse(oneH.Current.Value.GetString(), out windkmh);
-                                weather.wind= windkmh * 1000 / (60.0*60.0);
+                                weather.wind = windkmh * 1000 / (60.0 * 60.0);
                                 break;
                             }
                         case "time":
@@ -344,9 +404,7 @@ namespace ServerApp.WeatherPredictionParser
                     }
                 }
 
-                // Console.WriteLine(weather.ToString());
-                predictions.Add(weather);
-
+                Predictions.Add(weather);
             }
 
         }
@@ -359,6 +417,7 @@ namespace ServerApp.WeatherPredictionParser
         private WeatherInfo ParseCurrentWeather(ArrayEnumerator currentWeather)
         {
             WeatherInfo res = new WeatherInfo();
+            res.intervalLength = 0;
             //res.current = true;
 
             while (currentWeather.MoveNext())
@@ -405,8 +464,10 @@ namespace ServerApp.WeatherPredictionParser
 
             }
 
+            res.lum = ValueToConditions.TransferConditionsToLux(res.condition);
             return res;
         }
 
+
     }
 }
diff --git a/Client/Client/Assets/Scripts/Weather/Parser/WeatherInfo.cs b/Client/Client/Assets/Scripts/Weather/Parser/WeatherInfo.cs
index 52d70cd..8ba044b 100644
--- a/Client/Client/Assets/Scripts/Weather/Parser/WeatherInfo.cs
+++ b/Client/Client/Assets/Scripts/Weather/Parser/WeatherInfo.cs
@@ -11,7 +11,7 @@ namespace ServerApp.Parser.OutputInfo
     /// - shortest possible interval is 1h
     /// </summary>
     /// <author>A. Konig</author>
-    class WeatherInfo
+    public class WeatherInfo
     {
         /// <summary> Temperature in °C </summary>
         public double temp;
diff --git a/Client/Client/Assets/Scripts/Weather/WeatherManager.cs b/Client/Client/Assets/Scripts/Weather/WeatherManager.cs
index 1715f3e..b8ff4bb 100644
--- a/Client/Client/Assets/Scripts/Weather/WeatherManager.cs
+++ b/Client/Client/Assets/Scripts/Weather/WeatherManager.cs
@@ -72,7 +72,12 @@ public class WeatherManager : MonoBehaviour, WeatherObserver
     {
         if (!useOwnWeather)
         {
-            provider.Load(dateTime);
+            //Debug.Log($"SetDateTime {dateTime.day}  {dateTime.month}  {dateTime.year}  {dateTime.hour}");
+            
+            if (!provider.Load(dateTime)){
+
+                data.SetValues(0, 0, 0, WeatherConditions.Dark);
+            }
         }
     }
 
diff --git a/Client/Client/Assets/Scripts/Weather/WeatherProvider.cs b/Client/Client/Assets/Scripts/Weather/WeatherProvider.cs
index 3b0c192..ef2db58 100644
--- a/Client/Client/Assets/Scripts/Weather/WeatherProvider.cs
+++ b/Client/Client/Assets/Scripts/Weather/WeatherProvider.cs
@@ -1,5 +1,6 @@
 ﻿using ServerApp.Parser.OutputInfo;
 using ServerApp.WeatherPredictionParser;
+using System;
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
@@ -16,7 +17,7 @@ public class WeatherProvider
     {
         this.data = data;
         this.networkingManager = networkingManager;
-        parser = new JsonParser(uri);
+        parser = new JsonParser();
     }
 
     public void Load()
@@ -27,26 +28,40 @@ public class WeatherProvider
     public void LoadFromResponse(string response)
     {
         parser.ParsePrediction(response);
-        var current = parser.Current;
 
-        if (current != null)
-        {
-            var temperature = current.temp;
-            var rain = current.rain;
-            var wind = current.wind;
-            var weather = current.condition;
+        int day = DateTime.Now.Day;
+        int month = DateTime.Now.Month;
+        int year = DateTime.Now.Year;
+        int hour = DateTime.Now.Hour;
 
-            Debug.Log($"Wanna set: tmp={temperature}, wind={wind}, rain={rain}, weather={weather}");
+        var date = new Date();
+        date.day = day;
+        date.month = month;
+        date.year = year;
+        date.hour = hour;
 
-            data.SetValues(temperature, wind, rain, weather);
-        }
-        else
-        {
-            Debug.LogError("Error loading weather.");
-        }
+        Load(date);
+
+        //var current = parser.Current;
+
+        //if (current != null)
+        //{
+        //    var temperature = current.temp;
+        //    var rain = current.rain;
+        //    var wind = current.wind;
+        //    var weather = current.condition;
+
+        //    Debug.Log($"Wanna set: tmp={temperature}, wind={wind}, rain={rain}, weather={weather}");
+
+        //    data.SetValues(temperature, wind, rain, weather);
+        //}
+        //else
+        //{
+        //    Debug.LogError("Error loading weather.");
+        //}
     }
 
-    public void Load(Date dateTime)
+    public bool Load(Date dateTime)
     {
         var predictions = parser.Predictions;
 
@@ -55,14 +70,23 @@ public class WeatherProvider
             for (int i = 0; i < predictions.Count; i++)
             {
                 var prediction = predictions[i];
+                var nextPrediction = (i + 1 < predictions.Count) ? predictions[i+1] : null;
 
-                if (
-                    prediction.startTime.Day == dateTime.day &&
-                    prediction.startTime.Month == dateTime.month &&
-                    prediction.startTime.Year == dateTime.year &&
-                    dateTime.hour >= prediction.startTime.Hour &&
-                    ( i == predictions.Count - 1 || dateTime.hour < predictions[i+1].startTime.Hour)
-                    )
+                if (nextPrediction == null)
+                {
+                    nextPrediction = new WeatherInfo();
+                    nextPrediction.startTime = prediction.startTime;
+                    nextPrediction.startTime.AddHours(prediction.intervalLength);
+                }
+
+                 var currentTime = new System.DateTime(dateTime.year, dateTime.month, dateTime.day, dateTime.hour, 0, 0);
+
+                //Debug.Log($"Day={prediction.startTime.Day} {prediction.startTime.Month} {prediction.startTime.Year} {prediction.startTime.Hour}");
+                //Debug.Log($"{nextPrediction.startTime.Day} {nextPrediction.startTime.Month} {nextPrediction.startTime.Year} {nextPrediction.startTime.Hour}");
+                //Debug.Log($"{currentTime.Day} {currentTime.Month} {currentTime.Year} {currentTime.Hour}");
+                //Debug.Log($"Current: tmp={parser.Current.temp} wind={parser.Current.wind} rain={parser.Current.rain} cond={parser.Current.condition}");
+
+                if (currentTime >= prediction.startTime && currentTime < nextPrediction.startTime)
                 {
                     var current = prediction;
                     var temperature = current.temp;
@@ -70,7 +94,10 @@ public class WeatherProvider
                     var wind = current.wind;
                     var weather = current.condition;
                     data.SetValues(temperature, wind, rain, weather);
-                    break;
+
+                    //Debug.Log($"Setting {temperature} {wind} {rain} {weather}");
+
+                    return true;
                 }
             }
         }
@@ -78,5 +105,7 @@ public class WeatherProvider
         {
             Debug.LogError("Error loading weather.");
         }
+
+        return false;
     }
 }
