Explorar el Código

登录业务,用户认证登录,获取和保存数据

lvjincheng hace 4 años
padre
commit
f0e86ce764
Se han modificado 27 ficheros con 953 adiciones y 363 borrados
  1. 132 17
      Assets/BowArrow/Resources/Prefabs/Views/MeView.prefab
  2. 394 94
      Assets/BowArrow/Scenes/Home.unity
  3. 21 21
      Assets/BowArrow/Scenes/Login.unity
  4. 2 0
      Assets/BowArrow/Scripts/CommonConfig.cs
  5. 4 4
      Assets/BowArrow/Scripts/Game/GameAssistUI.cs
  6. 7 0
      Assets/BowArrow/Scripts/Manager/HomeMgr.cs
  7. 5 5
      Assets/BowArrow/Scripts/Manager/LoginMgr.cs
  8. 22 8
      Assets/BowArrow/Scripts/Manager/LoginView/LoginView.cs
  9. 23 21
      Assets/BowArrow/Scripts/Manager/LoginView/RegisterView.cs
  10. 1 1
      Assets/BowArrow/Scripts/Network/HttpController.meta
  11. 0 0
      Assets/BowArrow/Scripts/Network/HttpController/CaptchaController.cs
  12. 0 0
      Assets/BowArrow/Scripts/Network/HttpController/CaptchaController.cs.meta
  13. 11 0
      Assets/BowArrow/Scripts/Network/HttpController/LoginController.cs
  14. 0 0
      Assets/BowArrow/Scripts/Network/HttpController/LoginController.cs.meta
  15. 1 1
      Assets/BowArrow/Scripts/Network/SocketComp.meta
  16. 14 0
      Assets/BowArrow/Scripts/Network/SocketComp/UserComp.cs
  17. 11 0
      Assets/BowArrow/Scripts/Network/SocketComp/UserComp.cs.meta
  18. 63 0
      Assets/BowArrow/Scripts/Network/UserPlayer.cs
  19. 11 0
      Assets/BowArrow/Scripts/Network/UserPlayer.cs.meta
  20. 4 3
      Assets/BowArrow/Scripts/View/HomeView.cs
  21. 78 50
      Assets/BowArrow/Scripts/View/MeView.cs
  22. 67 87
      Assets/JC/JCEngine.cs
  23. 1 1
      Assets/JC/Untiy/Picker/DatePicker/DatePickerCanvas.prefab
  24. 69 0
      Assets/JC/Untiy/Picker/LocationPicker/LocationParseComponent.cs
  25. 11 0
      Assets/JC/Untiy/Picker/LocationPicker/LocationParseComponent.cs.meta
  26. 1 1
      Assets/JC/Untiy/Picker/LocationPicker/LocationPickerCanvas.prefab
  27. 0 49
      Assets/JC/Untiy/Picker/LocationPicker/LocationPickerGroup.cs

+ 132 - 17
Assets/BowArrow/Resources/Prefabs/Views/MeView.prefab

@@ -422,7 +422,7 @@ RectTransform:
   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: 153, y: -237.4}
+  m_AnchoredPosition: {x: 153, y: -200}
   m_SizeDelta: {x: 800, y: 40}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &8870289119227001756
@@ -1189,7 +1189,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
   m_Color: {r: 1, g: 1, b: 1, a: 0.5}
-  m_RaycastTarget: 1
+  m_RaycastTarget: 0
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
@@ -1639,7 +1639,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
   m_Color: {r: 1, g: 1, b: 1, a: 0.5}
-  m_RaycastTarget: 1
+  m_RaycastTarget: 0
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
@@ -1895,7 +1895,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
   m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
+  m_RaycastTarget: 0
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
@@ -2243,7 +2243,8 @@ MonoBehaviour:
   nameText: {fileID: 5539318500956679425}
   inputs: {fileID: 5539318499100070871}
   tipText: {fileID: 6997440220645423757}
-  avatarSelectViewInited: 0
+  datePickerPrefab: {fileID: 8259705882647745319, guid: 6dd9c8703bf161b4a915b6bd1b76622d, type: 3}
+  locationPickerPrefab: {fileID: 1734157223177440359, guid: 5414f295b60145b4f9b81e615c27be07, type: 3}
 --- !u!1 &5539318499100070871
 GameObject:
   m_ObjectHideFlags: 0
@@ -2569,6 +2570,7 @@ GameObject:
   - component: {fileID: 5539318499324134765}
   - component: {fileID: 5539318499324134767}
   - component: {fileID: 5539318499324134764}
+  - component: {fileID: 142619022058251510}
   m_Layer: 5
   m_Name: InPhone (6)
   m_TagString: Untagged
@@ -2635,6 +2637,62 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!114 &142619022058251510
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5539318499324134754}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    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: 5539318499324134764}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 5539318499076387634}
+        m_TargetAssemblyTypeName: MeView, Assembly-CSharp
+        m_MethodName: OpenLocationPicker
+        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!1 &5539318499335987472
 GameObject:
   m_ObjectHideFlags: 0
@@ -2646,6 +2704,7 @@ GameObject:
   - component: {fileID: 5539318499335987475}
   - component: {fileID: 5539318499335987485}
   - component: {fileID: 5539318499335987474}
+  - component: {fileID: 3886506098334699387}
   m_Layer: 5
   m_Name: InPhone (4)
   m_TagString: Untagged
@@ -2712,6 +2771,62 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!114 &3886506098334699387
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5539318499335987472}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    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: 5539318499335987474}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 5539318499076387634}
+        m_TargetAssemblyTypeName: MeView, Assembly-CSharp
+        m_MethodName: OpenDatePicker
+        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!1 &5539318499361700519
 GameObject:
   m_ObjectHideFlags: 0
@@ -2808,7 +2923,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &5539318499471306861
 RectTransform:
   m_ObjectHideFlags: 0
@@ -2825,9 +2940,9 @@ RectTransform:
   m_Father: {fileID: 5539318499100070870}
   m_RootOrder: 4
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 266, y: -350.5}
   m_SizeDelta: {x: 532, y: 69}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &5539318499471306863
@@ -3843,7 +3958,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
   m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
+  m_RaycastTarget: 0
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
@@ -4056,7 +4171,7 @@ MonoBehaviour:
     m_PressedTrigger: Pressed
     m_SelectedTrigger: Selected
     m_DisabledTrigger: Disabled
-  m_Interactable: 1
+  m_Interactable: 0
   m_TargetGraphic: {fileID: 5539318500485255466}
   m_TextComponent: {fileID: 5539318500108640757}
   m_Placeholder: {fileID: 8156658704878869021}
@@ -4067,7 +4182,7 @@ MonoBehaviour:
   m_LineType: 0
   m_HideMobileInput: 0
   m_CharacterValidation: 0
-  m_CharacterLimit: 18
+  m_CharacterLimit: 0
   m_OnEndEdit:
     m_PersistentCalls:
       m_Calls: []
@@ -4292,7 +4407,7 @@ MonoBehaviour:
     m_PressedTrigger: Pressed
     m_SelectedTrigger: Selected
     m_DisabledTrigger: Disabled
-  m_Interactable: 1
+  m_Interactable: 0
   m_TargetGraphic: {fileID: 5539318500543726263}
   m_TextComponent: {fileID: 5539318498982424936}
   m_Placeholder: {fileID: 509335891341605891}
@@ -4303,7 +4418,7 @@ MonoBehaviour:
   m_LineType: 0
   m_HideMobileInput: 0
   m_CharacterValidation: 0
-  m_CharacterLimit: 18
+  m_CharacterLimit: 0
   m_OnEndEdit:
     m_PersistentCalls:
       m_Calls: []
@@ -4630,7 +4745,7 @@ RectTransform:
   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: 154.33334, y: -618.6666}
+  m_AnchoredPosition: {x: 154.33334, y: -581.26666}
   m_SizeDelta: {x: 197, y: 61}
   m_Pivot: {x: 0.5, y: 1}
 --- !u!222 &5539318500974275234
@@ -5283,7 +5398,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
   m_Color: {r: 1, g: 0.7058824, b: 0, a: 1}
-  m_RaycastTarget: 1
+  m_RaycastTarget: 0
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
@@ -5607,7 +5722,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
   m_Color: {r: 1, g: 0.7058824, b: 0, a: 1}
-  m_RaycastTarget: 1
+  m_RaycastTarget: 0
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:

+ 394 - 94
Assets/BowArrow/Scenes/Home.unity

@@ -161,6 +161,85 @@ RectTransform:
   m_AnchoredPosition: {x: 160, y: 25}
   m_SizeDelta: {x: -320, y: -50}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &28185197
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 28185198}
+  - component: {fileID: 28185200}
+  - component: {fileID: 28185199}
+  m_Layer: 0
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &28185198
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 28185197}
+  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: 603346563}
+  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: 600, y: 80}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &28185199
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 28185197}
+  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_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 1ad2cf6c2f09744489d8c60b3fe3bab2, type: 3}
+    m_FontSize: 36
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 3
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u6B63\u5728\u8BA4\u8BC1\u767B\u5F55\u3002\u3002\u3002"
+--- !u!222 &28185200
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 28185197}
+  m_CullTransparentMesh: 1
 --- !u!1 &30612077
 GameObject:
   m_ObjectHideFlags: 0
@@ -270,10 +349,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 7
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -277.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &34916896
 MonoBehaviour:
@@ -633,10 +712,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 4
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -178.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &133885130
 MonoBehaviour:
@@ -1057,7 +1136,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 8.461538, y: 0}
+  m_AnchoredPosition: {x: 8.66426, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &219397737
@@ -1598,7 +1677,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!114 &340600847
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -1951,10 +2030,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 15
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -541.49994}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &400383913
 MonoBehaviour:
@@ -3317,10 +3396,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 3
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -145.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &545516415
 MonoBehaviour:
@@ -3400,7 +3479,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
   m_AnchoredPosition: {x: 250, y: -35}
-  m_SizeDelta: {x: 0, y: 0}
+  m_SizeDelta: {x: 153.48997, y: 23.106016}
   m_Pivot: {x: 0, y: 1}
 --- !u!114 &551154240
 MonoBehaviour:
@@ -3490,10 +3569,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 8
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -310.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &569587265
 MonoBehaviour:
@@ -3607,7 +3686,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: 1000
+  m_Text: 
 --- !u!222 &573417279
 CanvasRenderer:
   m_ObjectHideFlags: 0
@@ -3616,6 +3695,82 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 573417276}
   m_CullTransparentMesh: 0
+--- !u!1 &603346562
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 603346563}
+  - component: {fileID: 603346565}
+  - component: {fileID: 603346564}
+  m_Layer: 0
+  m_Name: Image
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &603346563
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 603346562}
+  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: 28185198}
+  m_Father: {fileID: 1554115035}
+  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!114 &603346564
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 603346562}
+  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, g: 0, b: 0, a: 0.60784316}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  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 &603346565
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 603346562}
+  m_CullTransparentMesh: 1
 --- !u!1 &604988221
 GameObject:
   m_ObjectHideFlags: 0
@@ -4163,10 +4318,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 12
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -442.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &669672331
 MonoBehaviour:
@@ -4317,10 +4472,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 19
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -673.49994}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &707330638
 MonoBehaviour:
@@ -4589,10 +4744,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 1
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -79.499985}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &737102754
 MonoBehaviour:
@@ -4743,10 +4898,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 13
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -475.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &781587291
 MonoBehaviour:
@@ -4899,10 +5054,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 11
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -409.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &810407829
 MonoBehaviour:
@@ -5552,10 +5707,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -112.499985}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &908000669
 MonoBehaviour:
@@ -6065,7 +6220,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: 1000
+  m_Text: 
 --- !u!222 &1040363682
 CanvasRenderer:
   m_ObjectHideFlags: 0
@@ -6350,10 +6505,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 16
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -574.49994}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1071940008
 MonoBehaviour:
@@ -6645,10 +6800,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 9
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -343.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1136781347
 MonoBehaviour:
@@ -6724,10 +6879,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 6
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -244.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1146880963
 MonoBehaviour:
@@ -7585,7 +7740,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: 1000
+  m_Text: 
 --- !u!222 &1254713247
 CanvasRenderer:
   m_ObjectHideFlags: 0
@@ -7838,10 +7993,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 10
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -376.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1271523496
 MonoBehaviour:
@@ -8657,6 +8812,50 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1410125621}
   m_CullTransparentMesh: 0
+--- !u!1 &1420232141
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1420232142}
+  - component: {fileID: 1420232143}
+  m_Layer: 0
+  m_Name: LocationParseComponent
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1420232142
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1420232141}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 525.6504, y: 197.62863, z: -134.93796}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 11
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1420232143
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1420232141}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: a3b2b359e4af3104d8e0fa4b317d7a56, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  xmlFileText: {fileID: 4900000, guid: f6df126b41da3c24d878344661585679, type: 3}
 --- !u!1 &1429805979
 GameObject:
   m_ObjectHideFlags: 0
@@ -9391,10 +9590,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 14
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -508.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1552384655
 MonoBehaviour:
@@ -9438,6 +9637,106 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1552384653}
   m_CullTransparentMesh: 1
+--- !u!1 &1554115034
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1554115035}
+  - component: {fileID: 1554115038}
+  - component: {fileID: 1554115037}
+  - component: {fileID: 1554115036}
+  m_Layer: 0
+  m_Name: AuthLoginMask
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &1554115035
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1554115034}
+  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:
+  - {fileID: 603346563}
+  m_Father: {fileID: 2093032505}
+  m_RootOrder: 0
+  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 &1554115036
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1554115034}
+  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!114 &1554115037
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1554115034}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 1
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 1280, y: 720}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!223 &1554115038
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1554115034}
+  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: 1000
+  m_TargetDisplay: 0
 --- !u!1 &1579347865
 GameObject:
   m_ObjectHideFlags: 0
@@ -10203,10 +10502,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 17
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -607.49994}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1664072093
 MonoBehaviour:
@@ -10399,7 +10698,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 95.38462, y: 0}
+  m_AnchoredPosition: {x: 95.99278, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1698308730
@@ -10876,10 +11175,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 18
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -640.49994}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1718070228
 MonoBehaviour:
@@ -11602,10 +11901,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 5
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -211.49997}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1803005725
 MonoBehaviour:
@@ -12162,10 +12461,10 @@ RectTransform:
   m_Father: {fileID: 1603936814}
   m_RootOrder: 0
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 165, y: -46.499996}
+  m_SizeDelta: {x: 270, y: 32.999992}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1876296680
 MonoBehaviour:
@@ -12898,7 +13197,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!114 &2012199174
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -13355,7 +13654,8 @@ Transform:
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 179.83585, y: 314.60135, z: -21.005032}
   m_LocalScale: {x: 1, y: 1, z: 1}
-  m_Children: []
+  m_Children:
+  - {fileID: 1554115035}
   m_Father: {fileID: 0}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -13872,7 +14172,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 21300000, guid: 80f06e979bad243429dfbced2ebf26bd, type: 3}
+  m_Sprite: {fileID: 0}
   m_Type: 0
   m_PreserveAspect: 0
   m_FillCenter: 1
@@ -14504,7 +14804,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: "\u795E\u5F13"
+  m_Text: "\u53CD\u66F2\u5F13"
 --- !u!224 &1815605618599967249
 RectTransform:
   m_ObjectHideFlags: 0
@@ -14634,7 +14934,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: "\u73A9\u5BB6\u6635\u79F0"
+  m_Text: 
 --- !u!224 &2042949644429700093
 RectTransform:
   m_ObjectHideFlags: 0
@@ -14850,7 +15150,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 55.384617, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 0, y: 40}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &2473343858706513567
@@ -17849,7 +18149,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: b7cbfcb0916cf694fb3d059ea4b4c1da, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textID: 18
+  textID: 200000
   layoutRebuildObject: {fileID: 0}
   textFormatArgs: []
   languageFontSizes: []

+ 21 - 21
Assets/BowArrow/Scenes/Login.unity

@@ -3625,9 +3625,9 @@ RectTransform:
   m_Father: {fileID: 72404927}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 34.553993, y: -34.553993}
+  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.5, y: 0.5}
 --- !u!114 &355551584
@@ -4962,9 +4962,9 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 239919975}
-        m_TargetAssemblyTypeName: LoginMgr, Assembly-CSharp
-        m_MethodName: login
+      - m_Target: {fileID: 894239525}
+        m_TargetAssemblyTypeName: LoginView, Assembly-CSharp
+        m_MethodName: Login
         m_Mode: 1
         m_Arguments:
           m_ObjectArgument: {fileID: 0}
@@ -5758,9 +5758,9 @@ RectTransform:
   m_Father: {fileID: 681531955}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 113.873245, y: -15}
+  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.5, y: 0.5}
 --- !u!114 &750604318
@@ -10316,9 +10316,9 @@ RectTransform:
   m_Father: {fileID: 681531955}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 242.81691, y: -15}
+  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.5, y: 0.5}
 --- !u!114 &1549087752
@@ -10676,9 +10676,9 @@ RectTransform:
   m_Father: {fileID: 681531955}
   m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 365.49298, y: -15}
+  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.5, y: 0.5}
 --- !u!114 &1628073323
@@ -12309,9 +12309,9 @@ RectTransform:
   m_Father: {fileID: 72404927}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 112.67606, y: -28.544601}
+  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.5, y: 0.5}
 --- !u!114 &1847328316
@@ -12737,9 +12737,9 @@ RectTransform:
   m_Father: {fileID: 681531955}
   m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 304.15494, y: -15}
+  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.5, y: 0.5}
 --- !u!114 &1900702359

+ 2 - 0
Assets/BowArrow/Scripts/CommonConfig.cs

@@ -13,4 +13,6 @@ public class CommonConfig
     public static float arrowWeight = 75; 
     //业务服务端访问地址
     public static string businessServerURI = "http://127.0.0.1:11332/SmartBowBusinessServer";
+    //业务服务端WS访问地址
+    public static string businessServerWsURI = "ws://192.168.101.14:11333/SmartBowBusinessServerSK";
 }

+ 4 - 4
Assets/BowArrow/Scripts/Game/GameAssistUI.cs

@@ -142,14 +142,14 @@ public class GameAssistUI : MonoBehaviour
         int myPlayerIndex = GetMyPlayerIndex();
         bool isScaleAimOpen = playerScaleAimRecords[myPlayerIndex];
         bool isScaleShootOpen = playerScaleShootRecords[myPlayerIndex];
-        PlayerPrefs.SetInt("ScaleAim," + gameType + "," + LoginMgr.myUserInfo.user, isScaleAimOpen ? 1 : 0);
-        PlayerPrefs.SetInt("ScaleShoot," + gameType + "," + LoginMgr.myUserInfo.user, isScaleShootOpen ? 1 : 0);
+        PlayerPrefs.SetInt("ScaleAim," + gameType + "," + LoginMgr.myUserInfo.id, isScaleAimOpen ? 1 : 0);
+        PlayerPrefs.SetInt("ScaleShoot," + gameType + "," + LoginMgr.myUserInfo.id, isScaleShootOpen ? 1 : 0);
     }
 
     void LoadMyRecord() {
         int gameType = 0; //多种模式共用记录
-        bool isScaleAimOpen = PlayerPrefs.GetInt("ScaleAim," + gameType + "," + LoginMgr.myUserInfo.user, 0) == 1 ? true : false;
-        bool isScaleShootOpen = PlayerPrefs.GetInt("ScaleShoot," + gameType + "," + LoginMgr.myUserInfo.user, 0) == 1 ? true : false;
+        bool isScaleAimOpen = PlayerPrefs.GetInt("ScaleAim," + gameType + "," + LoginMgr.myUserInfo.id, 0) == 1 ? true : false;
+        bool isScaleShootOpen = PlayerPrefs.GetInt("ScaleShoot," + gameType + "," + LoginMgr.myUserInfo.id, 0) == 1 ? true : false;
         if (isScaleAimOpen && GetPropScaleAimValue() == 0) {
             isScaleAimOpen = false;
         }

+ 7 - 0
Assets/BowArrow/Scripts/Manager/HomeMgr.cs

@@ -13,6 +13,7 @@ public class HomeMgr : MonoBehaviour
 
     void Start() {
         ResumeCacheViews();
+        UserPlayer.ConnectServer();
     }
 
     void OnDestroy()
@@ -40,4 +41,10 @@ public class HomeMgr : MonoBehaviour
             foreach (var item in curCacheViews)  item.gameObject.SetActive(true);
         }
     #endregion
+
+
+    //登录认证的Mask
+    public void ShowAuthLoginMask(bool visiable) {
+        transform.Find("AuthLoginMask").gameObject.SetActive(visiable);
+    }
 }

+ 5 - 5
Assets/BowArrow/Scripts/Manager/LoginMgr.cs

@@ -35,14 +35,14 @@ public class LoginMgr : MonoBehaviour
 }
 public class UserInfo {
     public int id;
-    public string user = "";
     public int avatarID = 0;
     public string nickname = "超级射手";
-    public int gender = 0;
+    public int gender = 1;
     public string phone = "";
     public string birthday = "";
-    public string national = "";
-    public string region = "";
+    public string country = "";
+    public string state = "";
+    public string city = "";
     public int integral = 0;
     public int coin = 0;
     public int diamond = 1000;
@@ -54,7 +54,7 @@ public class UserInfo {
     public Dictionary<int, int> challengeLevels = new Dictionary<int, int>();
     public void Save()
     {
-        
+        UserComp.ins.saveUserInfo(this);
     }
     public void SetChallengeLevelPass(int gameType, int level) {
         if (gameType != 3 && gameType != 4 && gameType != 5) return;

+ 22 - 8
Assets/BowArrow/Scripts/Manager/LoginView/LoginView.cs

@@ -2,6 +2,7 @@ using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
+using UnityEngine.SceneManagement;
 using System.Text.RegularExpressions;
 
 public class LoginView : MonoBehaviour
@@ -100,7 +101,7 @@ public class LoginView : MonoBehaviour
         return inputNode.transform.Find("InputField").GetComponent<InputField>();
     }
 
-    public void login() {
+    public void Login() {
         if (loginMode == 1) {
             LoginNormal(); 
         } else if (loginMode == 2) {
@@ -121,12 +122,25 @@ public class LoginView : MonoBehaviour
             loginTip.GetComponent<TextAutoLanguage>().SetText(42);
             return;
         }
-        // InputField captcha = GetInputField(loginInCaptcha1);
-        // if (captcha.text.Trim().Length == 0) {
-        //     loginTip.color = Color.yellow;
-        //     loginTip.GetComponent<TextAutoLanguage>().SetText(42);
-        //     return;
-        // }
+        InputField captcha = GetInputField(loginInCaptcha1);
+        if (!captcha.text.Equals(CaptchaController.ins.captcha_Login.ToString())) {
+            Debug.Log("验证码错误");
+            return;
+        }
+        if (!agreementTF.Find("Toggle").GetComponent<Toggle>().isOn) {
+            Debug.Log("登录需要勾选同意App协议");
+            return;
+        }
+        StartCoroutine(LoginController.ins.LoginNormal(
+            user.text, pwd.text, (res) => {
+                Debug.Log(res.msg);
+                if (res.code == 0) {
+                    string IdAndToken = (string)res.data;
+                    PlayerPrefs.SetString("IdAndToken", IdAndToken);
+                    SceneManager.LoadScene("Home", LoadSceneMode.Single);
+                }
+            }
+        ));
         // UserInfos userInfos = GetUserInfos();
         // foreach (var userInfo in userInfos.list)
         // {
@@ -137,7 +151,7 @@ public class LoginView : MonoBehaviour
         //             myUserInfo = userInfo;
         //             PlayerPrefs.SetString("LoginRecord_User_" + userInfo_version, userInfo.user);
         //             PlayerPrefs.SetString("LoginRecord_PWD_" + userInfo_version, userInfo.pwd);
-        //             SceneManager.LoadScene("Home", LoadSceneMode.Single);               
+        //                            
         //         } else {
         //             loginTip.color = Color.red;
         //             loginTip.GetComponent<TextAutoLanguage>().SetText(44);

+ 23 - 21
Assets/BowArrow/Scripts/Manager/LoginView/RegisterView.cs

@@ -183,26 +183,28 @@ public class RegisterView : MonoBehaviour
         ));
     }
 
-    [SerializeField] GameObject datePickerPrefab;
-    public void OpenDatePicker() {
-        GameObject o = GameObject.Instantiate(datePickerPrefab);
-        o.GetComponentInChildren<JC.Unity.Picker.DatePickerGroup>().onEnter += (JC.Unity.Picker.DatePickerGroup picker) => {
-            GetInputField(registerInBirthday).text = picker.GetSelectDateStr();
-        };
-    }
+    #region Picker
+        [SerializeField] GameObject datePickerPrefab;
+        public void OpenDatePicker() {
+            GameObject o = GameObject.Instantiate(datePickerPrefab);
+            o.GetComponentInChildren<JC.Unity.Picker.DatePickerGroup>().onEnter += (JC.Unity.Picker.DatePickerGroup picker) => {
+                GetInputField(registerInBirthday).text = picker.GetSelectDateStr();
+            };
+        }
 
-    [SerializeField] GameObject locationPickerPrefab;
-    private String countryCode = "", stateCode = "", cityCode = "";
-    public void OpenLocationPicker() {
-        GameObject o = GameObject.Instantiate(locationPickerPrefab);
-        o.GetComponentInChildren<JC.Unity.Picker.LocationPickerGroup>().onEnter += (JC.Unity.Picker.LocationInfo info) => {
-            countryCode = info.GetCountryRegion().Item2;
-            stateCode = info.GetState().Item2;
-            cityCode = info.GetCity().Item2;
-            GetInputField(registerInLocation).text = 
-                info.GetCountryRegion().Item1 + " " + 
-                info.GetState().Item1 + " " + 
-                info.GetCity().Item1;
-        };
-    }
+        [SerializeField] GameObject locationPickerPrefab;
+        private string countryCode = "", stateCode = "", cityCode = "";
+        public void OpenLocationPicker() {
+            GameObject o = GameObject.Instantiate(locationPickerPrefab);
+            o.GetComponentInChildren<JC.Unity.Picker.LocationPickerGroup>().onEnter += (JC.Unity.Picker.LocationInfo info) => {
+                countryCode = info.GetCountryRegion().Item2;
+                stateCode = info.GetState().Item2;
+                cityCode = info.GetCity().Item2;
+                GetInputField(registerInLocation).text = 
+                    info.GetCountryRegion().Item1 + " " + 
+                    info.GetState().Item1 + " " + 
+                    info.GetCity().Item1;
+            };
+        }
+    #endregion
 }

+ 1 - 1
Assets/BowArrow/Scripts/Network/Captcha.meta → Assets/BowArrow/Scripts/Network/HttpController.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 1f666136c5a747444853632e78da37c2
+guid: 10ccf44780d665140bbaefef8194e291
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 0 - 0
Assets/BowArrow/Scripts/Network/Captcha/CaptchaController.cs → Assets/BowArrow/Scripts/Network/HttpController/CaptchaController.cs


+ 0 - 0
Assets/BowArrow/Scripts/Network/Captcha/CaptchaController.cs.meta → Assets/BowArrow/Scripts/Network/HttpController/CaptchaController.cs.meta


+ 11 - 0
Assets/BowArrow/Scripts/Network/Login/LoginController.cs → Assets/BowArrow/Scripts/Network/HttpController/LoginController.cs

@@ -7,6 +7,17 @@ using Newtonsoft.Json;
 
 public class LoginController : Singleton<LoginController>
 {
+    public IEnumerator LoginNormal(string username, string password, Action<RequestResult> callback) {
+        string url = CommonConfig.businessServerURI + "/gameLogin/loginNormal";
+        WWWForm form = new WWWForm();
+        form.AddField("username", username);
+        form.AddField("password", password);
+        UnityWebRequest request = UnityWebRequest.Post(url, form);
+        yield return request.SendWebRequest();
+        RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
+        if (callback != null) callback(requestResult);
+    }
+
     public IEnumerator Register(string username, string password, Action<RequestResult> callback) {
         string url = CommonConfig.businessServerURI + "/gameLogin/register";
         WWWForm form = new WWWForm();

+ 0 - 0
Assets/BowArrow/Scripts/Network/Login/LoginController.cs.meta → Assets/BowArrow/Scripts/Network/HttpController/LoginController.cs.meta


+ 1 - 1
Assets/BowArrow/Scripts/Network/Login.meta → Assets/BowArrow/Scripts/Network/SocketComp.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: dd49075531a907943bbc740d621c4ae7
+guid: d015c71033fecc748a031011ec4c5c1a
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 14 - 0
Assets/BowArrow/Scripts/Network/SocketComp/UserComp.cs

@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UserComp : Singleton<UserComp>
+{
+    public void getUserInfo(System.Action<UserInfo> cb) {
+        UserPlayer.ins.call("userComp.getUserInfo", null, cb);
+    }
+
+    public void saveUserInfo(UserInfo userInfo) {
+        UserPlayer.ins.call("userComp.saveUserInfo", userInfo);
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Network/SocketComp/UserComp.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b41d7490e80cab14b99a55ccd11a6c35
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 63 - 0
Assets/BowArrow/Scripts/Network/UserPlayer.cs

@@ -0,0 +1,63 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using JCEngineCore;
+
+public class UserPlayer : JCEntity
+{
+    public static UserPlayer ins;
+    public UserPlayer() {
+        ins = this;
+    }
+    public static void ConnectServer() {
+        if (ins != null) return;
+        if (HomeMgr.ins) HomeMgr.ins.ShowAuthLoginMask(true);
+        JCEngine.boot(CommonConfig.businessServerWsURI, new UserPlayer());
+    }
+
+    public override void onLoad() {
+        Debug.Log("UserPlayer onLoad()");
+        authToken();
+    }
+
+    public override void onReload() {
+        Debug.Log("UserPlayer onReload()");
+    }
+
+    public override void onDestroy() {
+        Debug.Log("UserPlayer onDestroy()");
+    }
+
+    public override void onMiss() {
+        Debug.Log("UserPlayer onMiss()");
+    }
+
+    //向服务端发送的请求
+    public void authToken() {
+        string p0 = PlayerPrefs.GetString("IdAndToken", "");
+        #if UNITY_EDITOR
+            if (string.IsNullOrEmpty(p0)) {
+                p0 = "10&185fa8f92dfe4a55bf35e7ff604c519b";
+            } 
+        #endif
+        call("authToken", p0);
+    }
+
+    //被服务端调用的函数
+    public void onAuthRes(bool res) {
+        Debug.Log("onAuthRes," + res);
+        if (res) {
+            UserComp.ins.getUserInfo(delegate(UserInfo userInfo) {
+                LoginMgr.myUserInfo = userInfo;
+                if (HomeView.ins) {
+                    HomeView.ins.RenderMyAvatarSprite();
+                    HomeView.ins.RenderNameOrGender();
+                    HomeView.ins.RenderDeviceNames();
+                }
+                if (HomeMgr.ins) {
+                    HomeMgr.ins.ShowAuthLoginMask(false);
+                }
+            });            
+        }
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Network/UserPlayer.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b56194d2a0546fd4e9048343c1ca4a45
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 4 - 3
Assets/BowArrow/Scripts/View/HomeView.cs

@@ -21,10 +21,11 @@ public class HomeView : MonoBehaviour
         AudioMgr.Init();
         if (ShootCheck.ins) ShootCheck.ins.AdjustNormalOrHightMode();
 
-        RenderNameOrGender();
-        RenderMyAvatarSprite();
         InitBtnForConnect();
-        RenderDeviceNames();
+
+        // RenderNameOrGender();
+        // RenderMyAvatarSprite();
+        // RenderDeviceNames();
     }
 
     void FixedUpdate()

+ 78 - 50
Assets/BowArrow/Scripts/View/MeView.cs

@@ -45,12 +45,12 @@ public class MeView : MonoBehaviour
         LoginMgr.myUserInfo.phone = texts[1];
         LoginMgr.myUserInfo.gender = int.Parse(texts[2]);
         LoginMgr.myUserInfo.birthday = texts[3];
-        LoginMgr.myUserInfo.national = texts[4];
-        LoginMgr.myUserInfo.region = texts[5];
+        LoginMgr.myUserInfo.country = countryCode;
+        LoginMgr.myUserInfo.state = stateCode;
+        LoginMgr.myUserInfo.city = cityCode;
         LoginMgr.myUserInfo.Save();
         tipText.color = Color.green;
         tipText.GetComponent<TextAutoLanguage>().SetText(12);
-        HomeView.ins.RenderNameOrGender();
         RenderAfterSave();
     }
 
@@ -78,11 +78,12 @@ public class MeView : MonoBehaviour
             else if (i == 3) {
                 inputField.text = LoginMgr.myUserInfo.birthday;
             }
-            else if (i == 4) {
-                inputField.text = LoginMgr.myUserInfo.national;
-            }
             else if (i == 5) {
-                inputField.text = LoginMgr.myUserInfo.region;
+                countryCode = LoginMgr.myUserInfo.country;
+                stateCode = LoginMgr.myUserInfo.state;
+                cityCode = LoginMgr.myUserInfo.city;
+                System.Tuple<string, string, string> xxx = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(countryCode, stateCode, cityCode);
+                inputField.text = xxx.Item1 + " " + xxx.Item2 + " " + xxx.Item3;
             }
         }
         nameText.text = LoginMgr.myUserInfo.nickname;
@@ -90,52 +91,79 @@ public class MeView : MonoBehaviour
         HomeView.ins.RenderNameOrGender();
     }
 
-    public bool avatarSelectViewInited = false;
-    int curAvatarSelectID = 0;
-    public void ShowAvatarSelectView() {
-        AudioMgr.ins.PlayBtn();
-        Transform avatarSelectView = this.transform.Find("AvatarSelectView");
-        avatarSelectView.gameObject.SetActive(true);
-        if (avatarSelectViewInited) {
+    #region Picker
+        [SerializeField] GameObject datePickerPrefab;
+        public void OpenDatePicker() {
+            GameObject o = GameObject.Instantiate(datePickerPrefab);
+            o.GetComponentInChildren<JC.Unity.Picker.DatePickerGroup>().onEnter += (JC.Unity.Picker.DatePickerGroup picker) => {
+                GetInputField(inputs.transform.GetChild(3)).text = picker.GetSelectDateStr();
+            };
+        }
+
+        [SerializeField] GameObject locationPickerPrefab;
+        private string countryCode = "", stateCode = "", cityCode = "";
+        public void OpenLocationPicker() {
+            GameObject o = GameObject.Instantiate(locationPickerPrefab);
+            o.GetComponentInChildren<JC.Unity.Picker.LocationPickerGroup>().onEnter += (JC.Unity.Picker.LocationInfo info) => {
+                countryCode = info.GetCountryRegion().Item2;
+                stateCode = info.GetState().Item2;
+                cityCode = info.GetCity().Item2;
+                GetInputField(inputs.transform.GetChild(5)).text = 
+                    info.GetCountryRegion().Item1 + " " + 
+                    info.GetState().Item1 + " " + 
+                    info.GetCity().Item1;
+            };
+        }
+    #endregion
 
-        } else {
-            avatarSelectViewInited = true;
-            curAvatarSelectID = LoginMgr.myUserInfo.avatarID;
-            avatarSelectView.Find("FrameBox/BtnClose").GetComponent<Button>().onClick.AddListener(CloseAvatarSelectView);
-            GridLayoutGroup gridLayoutGroup = this.transform.GetComponentInChildren<GridLayoutGroup>();
-            GameObject avatarPrefab = gridLayoutGroup.transform.Find("Avatar").gameObject;
-            for (int id = 0; id < RoleMgr.GetAvatarListLen(); id++) {
-                if (RoleMgr.IsRoleAvatar(id)) continue;
-                GameObject avatar = GameObject.Instantiate(avatarPrefab, gridLayoutGroup.transform);
-                avatar.transform.Find("Mask/Sprite").GetComponent<Image>().sprite = RoleMgr.GetAvatar(id);
-                avatar.transform.Find("Check").gameObject.SetActive(id == curAvatarSelectID);
-                avatar.gameObject.name = id.ToString();
-                int aid = id; //记录该值
-                avatar.GetComponent<Button>().onClick.AddListener(() => {
-                    AudioMgr.ins.PlayBtn();
-                    curAvatarSelectID = aid;
-                    for (int i = 0; i < gridLayoutGroup.transform.childCount; i++) {
-                        Transform item = gridLayoutGroup.transform.GetChild(i);
-                        int theAvatarID = int.Parse(item.gameObject.name); 
-                        item.Find("Check").gameObject.SetActive(theAvatarID == curAvatarSelectID);
-                    }
-                });
+    #region 头像选择
+        bool avatarSelectViewInited = false;
+        int curAvatarSelectID = 0;
+        public void ShowAvatarSelectView() {
+            AudioMgr.ins.PlayBtn();
+            Transform avatarSelectView = this.transform.Find("AvatarSelectView");
+            avatarSelectView.gameObject.SetActive(true);
+            if (avatarSelectViewInited) {
+
+            } else {
+                avatarSelectViewInited = true;
+                curAvatarSelectID = LoginMgr.myUserInfo.avatarID;
+                avatarSelectView.Find("FrameBox/BtnClose").GetComponent<Button>().onClick.AddListener(CloseAvatarSelectView);
+                GridLayoutGroup gridLayoutGroup = this.transform.GetComponentInChildren<GridLayoutGroup>();
+                GameObject avatarPrefab = gridLayoutGroup.transform.Find("Avatar").gameObject;
+                for (int id = 0; id < RoleMgr.GetAvatarListLen(); id++) {
+                    if (RoleMgr.IsRoleAvatar(id)) continue;
+                    GameObject avatar = GameObject.Instantiate(avatarPrefab, gridLayoutGroup.transform);
+                    avatar.transform.Find("Mask/Sprite").GetComponent<Image>().sprite = RoleMgr.GetAvatar(id);
+                    avatar.transform.Find("Check").gameObject.SetActive(id == curAvatarSelectID);
+                    avatar.gameObject.name = id.ToString();
+                    int aid = id; //记录该值
+                    avatar.GetComponent<Button>().onClick.AddListener(() => {
+                        AudioMgr.ins.PlayBtn();
+                        curAvatarSelectID = aid;
+                        for (int i = 0; i < gridLayoutGroup.transform.childCount; i++) {
+                            Transform item = gridLayoutGroup.transform.GetChild(i);
+                            int theAvatarID = int.Parse(item.gameObject.name); 
+                            item.Find("Check").gameObject.SetActive(theAvatarID == curAvatarSelectID);
+                        }
+                    });
+                }
+                Destroy(avatarPrefab);
+                LayoutRebuilder.ForceRebuildLayoutImmediate(gridLayoutGroup.transform.parent.GetComponent<RectTransform>());
             }
-            Destroy(avatarPrefab);
-            LayoutRebuilder.ForceRebuildLayoutImmediate(gridLayoutGroup.transform.parent.GetComponent<RectTransform>());
         }
-    }
 
-    public void CloseAvatarSelectView() {
-        AudioMgr.ins.PlayBtn();
-        this.transform.Find("AvatarSelectView").gameObject.SetActive(false);
-        if (curAvatarSelectID != LoginMgr.myUserInfo.avatarID) {
-            LoginMgr.myUserInfo.avatarID = curAvatarSelectID;
-            //render
-            avatarImage.sprite = RoleMgr.GetAvatar(curAvatarSelectID);
-            HomeView.ins.RenderMyAvatarSprite();
-            //save data
-            LoginMgr.myUserInfo.Save();
+        public void CloseAvatarSelectView() {
+            AudioMgr.ins.PlayBtn();
+            this.transform.Find("AvatarSelectView").gameObject.SetActive(false);
+            if (curAvatarSelectID != LoginMgr.myUserInfo.avatarID) {
+                LoginMgr.myUserInfo.avatarID = curAvatarSelectID;
+                //render
+                avatarImage.sprite = RoleMgr.GetAvatar(curAvatarSelectID);
+                HomeView.ins.RenderMyAvatarSprite();
+                //save data
+                LoginMgr.myUserInfo.Save();
+            }
         }
-    }
+    #endregion
 }

+ 67 - 87
Assets/JC/JCEngine.cs

@@ -2,77 +2,62 @@ using System;
 using System.Collections.Generic;
 using BestHTTP.WebSocket;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 
-public class JCEngine {
-    public static string url;
-    public static Type entityClass;
-
-    public static void boot(string url, Type entityClass) {
-        JCEngine.url = url;
-        JCEngine.entityClass = entityClass;
-        new JCEngineCore.WebSocketServer(url, null);
-    }
-
-    public static void reBoot(JCEntity entity) {
-        new JCEngineCore.WebSocketServer(url, entity);
-    }
-}
-
-public class JCEntity {
-    public int id;
-    public JCEngineCore.Channel channel;
-    public bool isValid;
-    public bool loaded;
-    public Dictionary<string, object> components = new Dictionary<string, object>();
-
-    public virtual void onLoad() {}
-
-    public virtual void onReload() {}
-
-    public virtual void onDestroy() {}
-
-    public virtual void onMiss() {}
-
-    public bool call(string func, params object[] args) {
-        return call(func, args, null);
+namespace JCEngineCore {
+    public class JCEngine {
+        private static string url;
+        public static void boot(string url, JCEntity entity) {
+            JCEngine.url = url;
+            new JCEngineCore.WebSocketServer(url, entity);
+        }
+        public static void reboot(JCEntity entity) {
+            new JCEngineCore.WebSocketServer(url, entity);
+        }
     }
-
-    public bool call(string func, object[] args = null, Delegate callback = null) {
-        if (this.isValid) {
-            string uuid = "";
-            int type = Convert.ToInt32(JCEngineCore.DataType.FUNCTION);
-            if (func.IndexOf(".") > -1) {
-                type = Convert.ToInt32(JCEngineCore.DataType.METHOD);
-                uuid = JCEngineCore.CallbackHandler.addCallback(callback);
-            }
-            if (args == null) {
-                args = new object[]{};
+    public class JCEntity {
+        public int id;
+        public JCEngineCore.Channel channel;
+        public bool isValid;
+        public bool loaded;
+        public Dictionary<string, object> components = new Dictionary<string, object>();
+        public virtual void onLoad() {}
+        public virtual void onReload() {}
+        public virtual void onDestroy() {}
+        public virtual void onMiss() {}
+        public bool call(string func, params object[] args) {
+            return call(func, args, null);
+        }
+        public bool call(string func, object[] args = null, Delegate callback = null) {
+            if (this.isValid) {
+                string uuid = "";
+                int type = Convert.ToInt32(JCEngineCore.DataType.FUNCTION);
+                if (func.IndexOf(".") > -1) {
+                    type = Convert.ToInt32(JCEngineCore.DataType.METHOD);
+                    uuid = JCEngineCore.CallbackHandler.addCallback(callback);
+                }
+                if (args == null) {
+                    args = new object[]{};
+                }
+                JCEngineCore.Data data = new JCEngineCore.Data();
+                data.uuid = uuid;
+                data.type = type;
+                data.func = func;
+                data.args = args;
+                this.channel.writeAndFlush(JsonConvert.SerializeObject(data));
+                return true;
             }
-            JCEngineCore.Data data = new JCEngineCore.Data();
-            data.uuid = uuid;
-            data.type = type;
-            data.func = func;
-            data.args = args;
-            this.channel.writeAndFlush(JsonConvert.SerializeObject(data));
-            return true;
+            return false;
         }
-        return false;
     }
-}
-
-namespace JCEngineCore {
-    
     public class Channel {
         private WebSocket webSocket;
-
         public Channel (WebSocket webSocket) {
             this.webSocket = webSocket;
         }
-
         public void writeAndFlush(string text) {
             this.webSocket.Send(text);
         }
-
         public void close() {
             this.webSocket.Close();
         }
@@ -80,31 +65,24 @@ namespace JCEngineCore {
     class WebSocketServer {
         private WebSocket webSocket;
         private JCEntity tempEntity;
-    
         public WebSocketServer(string url, JCEntity entity) {
             this.webSocket = new WebSocket(new Uri(url));
             this.webSocket.StartPingThread = true;
-            this.tempEntity = entity != null ? entity : JCEngine.entityClass.Assembly.CreateInstance(JCEngine.entityClass.FullName) as JCEntity;
-
+            this.tempEntity = entity;
             this.webSocket.OnOpen += delegate(WebSocket webSocket) {
                 this.call("loadTempEntity");
             };
-    
-            this.webSocket.OnClosed = delegate(WebSocket webSocket, UInt16 code, string message) {
+            this.webSocket.OnClosed += delegate(WebSocket webSocket, UInt16 code, string message) {
                 this.destroyTempEntity();
             };
-
-            this.webSocket.OnError = delegate(WebSocket webSocket, Exception ex) {
+            this.webSocket.OnError += delegate(WebSocket webSocket, Exception ex) {
                 this.destroyTempEntity();
             };
-    
-            this.webSocket.OnMessage = delegate(WebSocket webSocket, string message) {
+            this.webSocket.OnMessage += delegate(WebSocket webSocket, string message) {
                 this.invoke(JsonConvert.DeserializeObject<Data>(message));            
             };
-
             this.webSocket.Open();
         }
-    
         private void call(string func, object[] args = null) {
             if (args == null) {
                 args = new object[]{};
@@ -116,12 +94,11 @@ namespace JCEngineCore {
             data.args = args;
             this.webSocket.Send(JsonConvert.SerializeObject(data));
         }
-    
         private void invoke(Data data) {
             DataType dataType = (DataType) data.type;
             if (dataType == DataType.EVENT) {
                 System.Reflection.MethodInfo method = this.GetType().GetMethod(data.func);
-                Utility.formatArgsType(data.args, method.GetParameters());
+                Utility.FormatArgsType(data.args, method.GetParameters());
                 method.Invoke(this, data.args);
                 return;
             }
@@ -136,14 +113,13 @@ namespace JCEngineCore {
                         object matchContext;
                         this.tempEntity.components.TryGetValue(key, out matchContext);
                         if (matchContext != null) {
-                            string[] arr = func.Split(new char[]{'.'});
-                            func = arr[arr.Length - 1];
+                            func = func.Substring(pointIndex + 1);
                             context = matchContext;
                         }
                     }
                     if (context != null) {
                         System.Reflection.MethodInfo method = context.GetType().GetMethod(func);
-                        Utility.formatArgsType(data.args, method.GetParameters());
+                        Utility.FormatArgsType(data.args, method.GetParameters());
                         method.Invoke(context, data.args);
                     }
                 }
@@ -153,7 +129,6 @@ namespace JCEngineCore {
                 CallbackHandler.handleCallback(data);
             }
         }
-    
         public void loadTempEntity(int id) {
             this.tempEntity.id = id;
             this.tempEntity.channel = new Channel(this.webSocket);
@@ -167,7 +142,6 @@ namespace JCEngineCore {
             } catch (Exception) {}
             this.tempEntity.loaded = true;
         }
-    
         public void destroyTempEntity() {
             if (this.tempEntity.isValid) {
                 this.tempEntity.isValid = false;
@@ -177,16 +151,13 @@ namespace JCEngineCore {
             }
         }
     }
-
     class CallbackHandler {
         private static int nextID = 0;
         private static Dictionary<string, CallbackInfo> mapper = new Dictionary<string, CallbackInfo>();
-    
         private static string uuid() {
             nextID++;
             return nextID.ToString();
         }
-    
         public static string addCallback(Delegate callback) {
             string uuid = CallbackHandler.uuid();
             if (callback != null) {
@@ -197,7 +168,6 @@ namespace JCEngineCore {
             }
             return uuid;
         }
-    
         public static void handleCallback(Data data) {
             if (mapper.Count > 10) {
                 long now = Utility.GetTimestamp();
@@ -217,38 +187,48 @@ namespace JCEngineCore {
                 mapper.Remove(data.uuid);
                 object target = callbackInfo.callback.Target;
                 System.Reflection.MethodInfo method = callbackInfo.callback.Method;
-                Utility.formatArgsType(data.args, method.GetParameters());
+                Utility.FormatArgsType(data.args, method.GetParameters());
                 method.Invoke(target, data.args);
             }
         }
     }
-
     class Utility {
         public static long GetTimestamp() {
             TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);
             return (long)ts.TotalMilliseconds;
         }
-        public static void formatArgsType(object[] args, System.Reflection.ParameterInfo[] parameters) {
+        public static void FormatArgsType(object[] args, System.Reflection.ParameterInfo[] parameters) {
             int i = 0;
             foreach (var param in parameters) {
-                args[i] = Convert.ChangeType(args[i], param.ParameterType);
+                Type type = param.ParameterType;
+                if (IsBaseType(type)) {
+                    args[i] = Convert.ChangeType(args[i], type);
+                } else if (args[i].GetType().IsSubclassOf(typeof(JContainer))) {
+                    args[i] = ((JContainer)args[i]).ToObject(type);
+                }
                 i++;
             }
         }
+        public static bool IsBaseType(Type type) {
+            if (typeof(System.Int32).Equals(type)) return true;
+            if (typeof(System.Int64).Equals(type)) return true;
+            if (typeof(System.Single).Equals(type)) return true;
+            if (typeof(System.Double).Equals(type)) return true;
+            if (typeof(System.String).Equals(type)) return true;
+            if (typeof(System.Boolean).Equals(type)) return true;
+            return false;
+        }
     }
-
     class CallbackInfo {
         public Delegate callback;
         public long deadTime;
     }
-    
     class Data {
         public string uuid;
         public int type;
         public string func;
         public object[] args;
     }
-    
     enum DataType {
         EVENT,
         FUNCTION,

+ 1 - 1
Assets/JC/Untiy/Picker/DatePicker/DatePickerCanvas.prefab

@@ -873,7 +873,7 @@ Canvas:
   m_SortingBucketNormalizedSize: 0
   m_AdditionalShaderChannelsFlag: 0
   m_SortingLayerID: 0
-  m_SortingOrder: 0
+  m_SortingOrder: 100
   m_TargetDisplay: 0
 --- !u!114 &8259705882647745313
 MonoBehaviour:

+ 69 - 0
Assets/JC/Untiy/Picker/LocationPicker/LocationParseComponent.cs

@@ -0,0 +1,69 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Xml;
+
+namespace JC.Unity.Picker {
+    public class LocationParseComponent : MonoBehaviour {
+        [SerializeField] TextAsset xmlFileText;
+        LocationParser locationParser;
+        public static LocationParseComponent ins;
+        void Awake() {
+            ins = this;
+            locationParser = new LocationParser(xmlFileText);
+        }
+        void OnDestroy() {
+            if (ins == this) ins = null;
+        }
+        public Tuple<string, string, string> ParseNameByCode(string countryCode, string stateCode, string cityCode) {
+            string countryName = "";
+            string stateName = "";
+            string cityName = "";
+            XmlNodeList stateNodeList = null;
+            XmlNodeList cityNodeList = null;
+            foreach (var countryNode in locationParser.CountryRegionList) {
+                if (countryNode.Attributes["Code"].Value == countryCode) {
+                    countryName = countryNode.Attributes["Name"].Value;
+                    stateNodeList = countryNode.SelectNodes("State");
+                    break;
+                }
+            }
+            if (stateNodeList != null) {
+                for (int i = 0; i < stateNodeList.Count; i++) {
+                    XmlNode stateNode = stateNodeList[i];
+                    XmlAttribute CodeAtb = stateNode.Attributes["Code"];
+                    if (CodeAtb != null) {
+                        if (stateCode == CodeAtb.Value) {
+                            XmlAttribute NameAtb = stateNode.Attributes["Name"];
+                            if (NameAtb != null) {
+                                stateName = NameAtb.Value;
+                                cityNodeList = stateNode.SelectNodes("City");
+                                break;
+                            }
+                        }
+                    } else if (CodeAtb == null && string.IsNullOrEmpty(stateCode)) {
+                        cityNodeList = stateNode.SelectNodes("City");
+                        break;
+                    }
+                }
+            }
+            if (cityNodeList != null) {
+                for (int i = 0; i < cityNodeList.Count; i++) {
+                    XmlNode cityNode = cityNodeList[i];
+                    XmlAttribute CodeAtb = cityNode.Attributes["Code"];
+                    if (CodeAtb != null) {
+                        if (cityCode == CodeAtb.Value) {
+                            XmlAttribute NameAtb = cityNode.Attributes["Name"];
+                            if (NameAtb != null) {
+                                cityName = NameAtb.Value;
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+            return new Tuple<string, string, string>(countryName, stateName, cityName);
+        }
+    }
+}

+ 11 - 0
Assets/JC/Untiy/Picker/LocationPicker/LocationParseComponent.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a3b2b359e4af3104d8e0fa4b317d7a56
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 1
Assets/JC/Untiy/Picker/LocationPicker/LocationPickerCanvas.prefab

@@ -1605,7 +1605,7 @@ Canvas:
   m_SortingBucketNormalizedSize: 0
   m_AdditionalShaderChannelsFlag: 0
   m_SortingLayerID: 0
-  m_SortingOrder: 0
+  m_SortingOrder: 100
   m_TargetDisplay: 0
 --- !u!114 &1734157223177440353
 MonoBehaviour:

+ 0 - 49
Assets/JC/Untiy/Picker/LocationPicker/LocationPickerGroup.cs

@@ -81,55 +81,6 @@ namespace JC.Unity.Picker {
         //         locationInfo.CountryRegionIndex++;
         //     }
         // }
-        public Tuple<string, string, string> ParseNameByCode(string countryCode, string stateCode, string cityCode) {
-            string countryName = "";
-            string stateName = "";
-            string cityName = "";
-            XmlNodeList stateNodeList = null;
-            XmlNodeList cityNodeList = null;
-            foreach (var countryNode in locationParser.CountryRegionList) {
-                if (countryNode.Attributes["Code"].Value == countryCode) {
-                    countryName = countryNode.Attributes["Name"].Value;
-                    stateNodeList = countryNode.SelectNodes("State");
-                    break;
-                }
-            }
-            if (stateNodeList != null) {
-                for (int i = 0; i < stateNodeList.Count; i++) {
-                    XmlNode stateNode = stateNodeList[i];
-                    XmlAttribute CodeAtb = stateNode.Attributes["Code"];
-                    if (CodeAtb != null) {
-                        if (stateCode == CodeAtb.Value) {
-                            XmlAttribute NameAtb = stateNode.Attributes["Name"];
-                            if (NameAtb != null) {
-                                stateName = NameAtb.Value;
-                                cityNodeList = stateNode.SelectNodes("City");
-                                break;
-                            }
-                        }
-                    } else if (CodeAtb == null && string.IsNullOrEmpty(stateCode)) {
-                        cityNodeList = stateNode.SelectNodes("City");
-                        break;
-                    }
-                }
-            }
-            if (cityNodeList != null) {
-                for (int i = 0; i < cityNodeList.Count; i++) {
-                    XmlNode cityNode = cityNodeList[i];
-                    XmlAttribute CodeAtb = cityNode.Attributes["Code"];
-                    if (CodeAtb != null) {
-                        if (cityCode == CodeAtb.Value) {
-                            XmlAttribute NameAtb = cityNode.Attributes["Name"];
-                            if (NameAtb != null) {
-                                cityName = NameAtb.Value;
-                                break;
-                            }
-                        }
-                    }
-                }
-            }
-            return new Tuple<string, string, string>(countryName, stateName, cityName);
-        }
     }
     public class LocationParser {
         public List<XmlNode> CountryRegionList = new List<XmlNode>();