aleksey пре 3 година
родитељ
комит
70aca7aed1
39 измењених фајлова са 2737 додато и 786 уклоњено
  1. 9 657
      Unity3/Assets/2021/Scenes/Main.unity
  2. 55 6
      Unity3/Assets/Core/ServerTime.cs
  3. BIN
      Unity3/Assets/FacebookSDK/Plugins/Facebook.Unity.dll
  4. 59 31
      Unity3/Assets/GameCore/Managers/VideoManager.cs
  5. 8 0
      Unity3/Assets/KeychanIOs.meta
  6. 44 0
      Unity3/Assets/KeychanIOs/Main.cs
  7. 11 0
      Unity3/Assets/KeychanIOs/Main.cs.meta
  8. 231 0
      Unity3/Assets/KeychanIOs/Main.unity
  9. 7 0
      Unity3/Assets/KeychanIOs/Main.unity.meta
  10. 63 0
      Unity3/Assets/KeychanIOs/MainSettings.lighting
  11. 8 0
      Unity3/Assets/KeychanIOs/MainSettings.lighting.meta
  12. 8 0
      Unity3/Assets/KeychanIOs/Plugins.meta
  13. 33 0
      Unity3/Assets/KeychanIOs/Plugins/KeyChain.cs
  14. 11 0
      Unity3/Assets/KeychanIOs/Plugins/KeyChain.cs.meta
  15. 8 0
      Unity3/Assets/KeychanIOs/Plugins/iOS.meta
  16. 0 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.h
  17. 27 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.h.meta
  18. 57 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.mm
  19. 37 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.mm.meta
  20. 281 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.h
  21. 27 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.h.meta
  22. 1392 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.m
  23. 37 0
      Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.m.meta
  24. 6 6
      Unity3/Assets/LivesManager/LivesManager/LivesManager.cs
  25. 1 0
      Unity3/Assets/Resources/BillingMode.json
  26. 7 0
      Unity3/Assets/Resources/BillingMode.json.meta
  27. 39 3
      Unity3/Assets/SocialNetworking/Scripts/SocialPlatform/GameDatabaseManager.cs
  28. 3 2
      Unity3/Assets/SocialNetworking/Scripts/SocialPlatform/Stubs/GameDatabaseManagerStub.cs
  29. 4 6
      Unity3/Assets/SocialNetworking/Scripts/WrapperFB.cs
  30. 1 1
      Unity3/Assets/UI/Scores/HighScoreList.cs
  31. 12 6
      Unity3/Assets/UI/Screens/DownloadVideoFromServer.cs
  32. 3 2
      Unity3/Assets/Unity Technologies/SignInWithApple/Samples/Scripts/SignInWithAppleTest_Callbacks.cs
  33. 221 0
      Unity3/Assets/UnityThread.cs
  34. 11 0
      Unity3/Assets/UnityThread.cs.meta
  35. 1 7
      Unity3/Packages/manifest.json
  36. 7 51
      Unity3/Packages/packages-lock.json
  37. 3 6
      Unity3/ProjectSettings/ProjectSettings.asset
  38. 2 2
      Unity3/ProjectSettings/ProjectVersion.txt
  39. 3 0
      Unity3/UserSettings/EditorUserSettings.asset

+ 9 - 657
Unity3/Assets/2021/Scenes/Main.unity

@@ -2997,141 +2997,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 64741004}
   m_CullTransparentMesh: 1
---- !u!1 &69675598
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 69675599}
-  - component: {fileID: 69675602}
-  - component: {fileID: 69675601}
-  m_Layer: 5
-  m_Name: Label (1)
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &69675599
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 69675598}
-  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: 428868228}
-  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: -172.2}
-  m_SizeDelta: {x: 505.4, y: 246.6}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &69675601
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 69675598}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: LogIn
-  m_isRightToLeft: 0
-  m_fontAsset: {fileID: 11400000, guid: 4b9532a5a34fa454a849f0a5e6a357a0, type: 2}
-  m_sharedMaterial: {fileID: 8245310406705776545, guid: 4b9532a5a34fa454a849f0a5e6a357a0,
-    type: 2}
-  m_fontSharedMaterials: []
-  m_fontMaterial: {fileID: 0}
-  m_fontMaterials: []
-  m_fontColor32:
-    serializedVersion: 2
-    rgba: 4294967295
-  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
-  m_enableVertexGradient: 0
-  m_colorMode: 3
-  m_fontColorGradient:
-    topLeft: {r: 1, g: 1, b: 1, a: 1}
-    topRight: {r: 1, g: 1, b: 1, a: 1}
-    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
-    bottomRight: {r: 1, g: 1, b: 1, a: 1}
-  m_fontColorGradientPreset: {fileID: 0}
-  m_spriteAsset: {fileID: 0}
-  m_tintAllSprites: 0
-  m_StyleSheet: {fileID: 0}
-  m_TextStyleHashCode: -1183493901
-  m_overrideHtmlColors: 0
-  m_faceColor:
-    serializedVersion: 2
-    rgba: 4294967295
-  m_fontSize: 72
-  m_fontSizeBase: 130.9
-  m_fontWeight: 400
-  m_enableAutoSizing: 1
-  m_fontSizeMin: 18
-  m_fontSizeMax: 72
-  m_fontStyle: 0
-  m_HorizontalAlignment: 2
-  m_VerticalAlignment: 256
-  m_textAlignment: 65535
-  m_characterSpacing: 0
-  m_wordSpacing: 0
-  m_lineSpacing: 0
-  m_lineSpacingMax: 0
-  m_paragraphSpacing: 0
-  m_charWidthMaxAdj: 0
-  m_enableWordWrapping: 1
-  m_wordWrappingRatios: 0.4
-  m_overflowMode: 0
-  m_linkedTextComponent: {fileID: 0}
-  parentLinkedComponent: {fileID: 0}
-  m_enableKerning: 1
-  m_enableExtraPadding: 0
-  checkPaddingRequired: 0
-  m_isRichText: 1
-  m_parseCtrlCharacters: 1
-  m_isOrthographic: 1
-  m_isCullingEnabled: 0
-  m_horizontalMapping: 0
-  m_verticalMapping: 0
-  m_uvLineOffset: 0
-  m_geometrySortingOrder: 0
-  m_IsTextObjectScaleStatic: 0
-  m_VertexBufferAutoSizeReduction: 1
-  m_useMaxVisibleDescender: 1
-  m_pageToDisplay: 1
-  m_margin: {x: 0, y: 0, z: 0, w: 0}
-  m_isUsingLegacyAnimationComponent: 0
-  m_isVolumetricText: 0
-  m_hasFontAssetChanged: 0
-  m_baseMaterial: {fileID: 0}
-  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
---- !u!222 &69675602
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 69675598}
-  m_CullTransparentMesh: 1
 --- !u!1 &71374252
 GameObject:
   m_ObjectHideFlags: 0
@@ -5086,6 +4951,7 @@ RectTransform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children:
   - {fileID: 940372783}
+  - {fileID: 815957642}
   m_Father: {fileID: 90653700}
   m_RootOrder: 31
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -17126,169 +16992,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 428113241}
   m_CullTransparentMesh: 1
---- !u!1 &428868227
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 428868228}
-  - component: {fileID: 428868231}
-  - component: {fileID: 428868230}
-  - component: {fileID: 428868229}
-  - component: {fileID: 428868235}
-  - component: {fileID: 428868234}
-  - component: {fileID: 428868232}
-  m_Layer: 5
-  m_Name: ButtonFacebook
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &428868228
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 428868227}
-  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: 69675599}
-  m_Father: {fileID: 1189456005}
-  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.00048828125, y: -0.000076293945}
-  m_SizeDelta: {x: 189, y: 189}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &428868229
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 428868227}
-  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: 428868230}
-  m_OnClick:
-    m_PersistentCalls:
-      m_Calls: []
---- !u!114 &428868230
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 428868227}
-  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: 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_Sprite: {fileID: 21300000, guid: 3db7e2fdd3ee38d4c8e3507f1a7c53b3, type: 3}
-  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 &428868231
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 428868227}
-  m_CullTransparentMesh: 1
---- !u!114 &428868232
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 428868227}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 1a0b1e66489c54ca4a20a80de9bb8701, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  sound: 5
---- !u!114 &428868234
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 428868227}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: e7ecbb8f641714186900f0818e65febe, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  enabledSprite: {fileID: 428868227}
-  disabledSprite: {fileID: 1041052294}
---- !u!114 &428868235
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 428868227}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fa6c16b7207034be9859b7c7655820a8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
 --- !u!1 &431895542
 GameObject:
   m_ObjectHideFlags: 0
@@ -19119,7 +18822,7 @@ MonoBehaviour:
   anchor: {fileID: 1623389440}
   buttonMe: {fileID: 509951360}
   buttonTop10: {fileID: 1254361949}
-  buttonFacebook: {fileID: 1189456004}
+  buttonFacebook: {fileID: 0}
   buttonGlobal: {fileID: 1254361949}
   title: {fileID: 1754528020}
   progressIndicator: {fileID: 122048003}
@@ -29050,12 +28753,12 @@ RectTransform:
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
-  m_Father: {fileID: 940372783}
-  m_RootOrder: 3
+  m_Father: {fileID: 127776005}
+  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 1126.8636, y: 475.25146}
+  m_AnchoredPosition: {x: -153.12341, y: -128.68073}
   m_SizeDelta: {x: 424.273, y: 233.498}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &815957644
@@ -32530,7 +32233,6 @@ RectTransform:
   - {fileID: 1232610255}
   - {fileID: 1891238393}
   - {fileID: 1473559638}
-  - {fileID: 815957642}
   m_Father: {fileID: 127776005}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -35765,7 +35467,6 @@ RectTransform:
   m_Children:
   - {fileID: 49151288}
   - {fileID: 904891309}
-  - {fileID: 1189456005}
   - {fileID: 1300409913}
   m_Father: {fileID: 668813359}
   m_RootOrder: 2
@@ -35850,169 +35551,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1038258558}
   m_CullTransparentMesh: 1
---- !u!1 &1041052294
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1041052295}
-  - component: {fileID: 1041052302}
-  - component: {fileID: 1041052301}
-  - component: {fileID: 1041052300}
-  - component: {fileID: 1041052297}
-  - component: {fileID: 1041052296}
-  - component: {fileID: 1041052298}
-  m_Layer: 5
-  m_Name: ButtonFacebook (1)
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 0
---- !u!224 &1041052295
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1041052294}
-  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: 2039216121}
-  m_Father: {fileID: 1189456005}
-  m_RootOrder: 1
-  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.00048828125, y: -0.000076293945}
-  m_SizeDelta: {x: 189, y: 189}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1041052296
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1041052294}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: e7ecbb8f641714186900f0818e65febe, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  enabledSprite: {fileID: 428868227}
-  disabledSprite: {fileID: 1041052294}
---- !u!114 &1041052297
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1041052294}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fa6c16b7207034be9859b7c7655820a8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
---- !u!114 &1041052298
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1041052294}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 1a0b1e66489c54ca4a20a80de9bb8701, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  sound: 5
---- !u!114 &1041052300
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1041052294}
-  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: 1041052301}
-  m_OnClick:
-    m_PersistentCalls:
-      m_Calls: []
---- !u!114 &1041052301
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1041052294}
-  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: 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_Sprite: {fileID: 21300000, guid: 3db7e2fdd3ee38d4c8e3507f1a7c53b3, type: 3}
-  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 &1041052302
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1041052294}
-  m_CullTransparentMesh: 1
 --- !u!1 &1044625461
 GameObject:
   m_ObjectHideFlags: 0
@@ -41738,58 +41276,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1188811714}
   m_CullTransparentMesh: 1
---- !u!1 &1189456004
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1189456005}
-  - component: {fileID: 1189456006}
-  m_Layer: 5
-  m_Name: Facebook
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 0
---- !u!224 &1189456005
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1189456004}
-  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: 428868228}
-  - {fileID: 1041052295}
-  m_Father: {fileID: 1035055983}
-  m_RootOrder: 2
-  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: -135.90048, y: -243.89992}
-  m_SizeDelta: {x: 100, y: 100}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1189456006
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1189456004}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: a082f73d234794c3dbfb0f0c73251af0, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  hiddenPosition: {x: -165, y: -56, z: 0}
-  fadeInAndOut: 0
 --- !u!1 &1191092254
 GameObject:
   m_ObjectHideFlags: 0
@@ -47047,7 +46533,7 @@ RectTransform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 1035055983}
-  m_RootOrder: 3
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
@@ -47971,8 +47457,8 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 88681bbb484337e428cb0a1e2fde0b55, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  LogoutGop: {fileID: 1041052294}
-  LoginGop: {fileID: 428868227}
+  LogoutGop: {fileID: 0}
+  LoginGop: {fileID: 0}
 --- !u!1 &1325181763
 GameObject:
   m_ObjectHideFlags: 0
@@ -58098,6 +57584,7 @@ MonoBehaviour:
   LogoMainMenuDurexDenmark: {fileID: 0}
   LogoMainMenuDurex: {fileID: 0}
   IsGetLifeInGame: 0
+  UIDIOSMOPUB: 03e1670f699e48d2ae082159f92d785a
   curUIDMopub: 
   ActivateInvate: 1
   CurState: 0
@@ -86465,141 +85952,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2038933785}
   m_CullTransparentMesh: 1
---- !u!1 &2039216120
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 2039216121}
-  - component: {fileID: 2039216124}
-  - component: {fileID: 2039216123}
-  m_Layer: 5
-  m_Name: Label (2)
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &2039216121
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2039216120}
-  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: 1041052295}
-  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: -172.2}
-  m_SizeDelta: {x: 505.4, y: 246.6}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &2039216123
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2039216120}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: LogOut
-  m_isRightToLeft: 0
-  m_fontAsset: {fileID: 11400000, guid: 4b9532a5a34fa454a849f0a5e6a357a0, type: 2}
-  m_sharedMaterial: {fileID: 8245310406705776545, guid: 4b9532a5a34fa454a849f0a5e6a357a0,
-    type: 2}
-  m_fontSharedMaterials: []
-  m_fontMaterial: {fileID: 0}
-  m_fontMaterials: []
-  m_fontColor32:
-    serializedVersion: 2
-    rgba: 4294967295
-  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
-  m_enableVertexGradient: 0
-  m_colorMode: 3
-  m_fontColorGradient:
-    topLeft: {r: 1, g: 1, b: 1, a: 1}
-    topRight: {r: 1, g: 1, b: 1, a: 1}
-    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
-    bottomRight: {r: 1, g: 1, b: 1, a: 1}
-  m_fontColorGradientPreset: {fileID: 0}
-  m_spriteAsset: {fileID: 0}
-  m_tintAllSprites: 0
-  m_StyleSheet: {fileID: 0}
-  m_TextStyleHashCode: -1183493901
-  m_overrideHtmlColors: 0
-  m_faceColor:
-    serializedVersion: 2
-    rgba: 4294967295
-  m_fontSize: 72
-  m_fontSizeBase: 130.9
-  m_fontWeight: 400
-  m_enableAutoSizing: 1
-  m_fontSizeMin: 18
-  m_fontSizeMax: 72
-  m_fontStyle: 0
-  m_HorizontalAlignment: 2
-  m_VerticalAlignment: 256
-  m_textAlignment: 65535
-  m_characterSpacing: 0
-  m_wordSpacing: 0
-  m_lineSpacing: 0
-  m_lineSpacingMax: 0
-  m_paragraphSpacing: 0
-  m_charWidthMaxAdj: 0
-  m_enableWordWrapping: 1
-  m_wordWrappingRatios: 0.4
-  m_overflowMode: 0
-  m_linkedTextComponent: {fileID: 0}
-  parentLinkedComponent: {fileID: 0}
-  m_enableKerning: 1
-  m_enableExtraPadding: 0
-  checkPaddingRequired: 0
-  m_isRichText: 1
-  m_parseCtrlCharacters: 1
-  m_isOrthographic: 1
-  m_isCullingEnabled: 0
-  m_horizontalMapping: 0
-  m_verticalMapping: 0
-  m_uvLineOffset: 0
-  m_geometrySortingOrder: 0
-  m_IsTextObjectScaleStatic: 0
-  m_VertexBufferAutoSizeReduction: 1
-  m_useMaxVisibleDescender: 1
-  m_pageToDisplay: 1
-  m_margin: {x: 0, y: 0, z: 0, w: 0}
-  m_isUsingLegacyAnimationComponent: 0
-  m_isVolumetricText: 0
-  m_hasFontAssetChanged: 0
-  m_baseMaterial: {fileID: 0}
-  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
---- !u!222 &2039216124
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2039216120}
-  m_CullTransparentMesh: 1
 --- !u!1 &2042331356
 GameObject:
   m_ObjectHideFlags: 0

+ 55 - 6
Unity3/Assets/Core/ServerTime.cs

@@ -1,6 +1,11 @@
 using UnityEngine;
 using System.Collections;
 using System;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Threading;
+using UnityEngine.Networking;
 
 public class ServerTime : MonoBehaviour
 {
@@ -49,18 +54,27 @@ public class ServerTime : MonoBehaviour
 		StartCoroutine(RetrieveServerTimeCoroutine(onComplete));
 	}
 
+	private Action<long> _onComplete;
 	IEnumerator RetrieveServerTimeCoroutine(Action<long> onComplete)
 	{
-		WWW www = new WWW(GameConstants.SERVER_BASE_URL + "serverTime.php");
-		yield return www;
-
-		if (www.error != null)
+		_onComplete = onComplete;
+		Debug.Log("Start SEND SERVER TIME");
+		//downloadData();
+		
+		string url = GameConstants.SERVER_BASE_URL + "serverTime.php";
+		UnityWebRequest webrequest = UnityWebRequest.Get(url);
+		yield return webrequest.SendWebRequest();
+		Debug.Log("end SEND SERVER TIME");
+		if (webrequest.isNetworkError || webrequest.isHttpError)
 		{
+			print("Network Error"); // return Unkown Error IOS Mobile
 			onComplete(-1);
-		} else
+		}
+		else
 		{
+			Debug.Log(webrequest.downloadHandler.text);
 			long serverTime;
-			if (long.TryParse(www.text, out serverTime))
+			if (long.TryParse(webrequest.downloadHandler.text, out serverTime))
 			{
 				onComplete(serverTime);
 			} else
@@ -69,4 +83,39 @@ public class ServerTime : MonoBehaviour
 			}
 		}
 	}
+	void downloadData()
+	{
+		ThreadPool.QueueUserWorkItem(new WaitCallback(makeRequest));
+	}
+	private void makeRequest(object a)
+	{
+		string url = GameConstants.SERVER_BASE_URL + "serverTime.php";
+		string result = "";
+
+		var request = (HttpWebRequest)WebRequest.Create(url);
+		//Speed up
+		request.Proxy = null;
+		using (var response = (HttpWebResponse)request.GetResponse())
+		{
+			var encoding = Encoding.GetEncoding(response.CharacterSet);
+
+			using (var responseStream = response.GetResponseStream())
+			using (var reader = new StreamReader(responseStream, encoding))
+				result = reader.ReadToEnd();
+		}
+
+		long serverTime = -1;
+		UnityThread.executeInUpdate(() =>
+		{
+			Debug.Log("end SEND SERVER TIME");
+			if (long.TryParse(result, out serverTime))
+			{
+				_onComplete(serverTime);
+			} else
+			{
+				_onComplete(-1); //parse error
+			}
+		});
+		
+	}
 }

BIN
Unity3/Assets/FacebookSDK/Plugins/Facebook.Unity.dll


+ 59 - 31
Unity3/Assets/GameCore/Managers/VideoManager.cs

@@ -4,6 +4,7 @@
 using TMPro;
 using UnityEngine;
 using UnityEngine.Video;
+using System.Collections;
 
 public class VideoManager : MonoBehaviour
 {
@@ -22,37 +23,8 @@ public class VideoManager : MonoBehaviour
         // VideoPlayer automatically targets the camera backplane when it is added
         // to a camera object, no need to change videoPlayer.targetCamera.
         VideoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();
+        StartCoroutine(playVideo());
 
-        // Play on awake defaults to true. Set it to false to avoid the url set
-        // below to auto-start playback since we're in Start().
-        VideoPlayer.playOnAwake = false;
-
-        // By default, VideoPlayers added to a camera will use the far plane.
-        // Let's target the near plane instead.
-        VideoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
-
-        // This will cause our Scene to be visible through the video being played.
-        VideoPlayer.targetCameraAlpha = 0.5F;
-        VideoPlayer.renderMode = VideoRenderMode.RenderTexture;
-        VideoPlayer.targetTexture = VideoRenderTexture;
-        // Set the video to play. URL supports local absolute or relative paths.
-        // Here, using absolute.
-        VideoPlayer.url = "https://game.gamatic.com/iCTS/Video/APT_smokkar hreyfing.mp4";
-
-        // Skip the first 100 frames.
-        VideoPlayer.frame = 0;
-
-        // Restart from beginning when done.
-        VideoPlayer.isLooping = true;
-
-        // Each time we reach the end, we slow down the playback by a factor of 10.
-        VideoPlayer.loopPointReached += EndReached;
-
-        // Start playback. This means the VideoPlayer may have to prepare (reserve
-        // resources, pre-load a few frames, etc.). To better control the delays
-        // associated with this preparation one can use videoPlayer.Prepare() along with
-        // its prepareCompleted event.
-        //VideoPlayer.Play();
     }
     void EndReached(UnityEngine.Video.VideoPlayer vp)
     {
@@ -66,13 +38,15 @@ public class VideoManager : MonoBehaviour
         {
             if (Timer <= 0 && MenuManager._instance.VideoAd.isActiveAndEnabled)
             {
-                MenuManager._instance.OnLeavingViewingAd();
                 NotificationCenter.Post(NotificationType.CelebrityDisappeared);
+                MenuManager._instance.OnLeavingViewingAd();
+                
             }
         }
     }
     public void PlayAd()
     {
+        Debug.Log("PlayAd");
         VideoPlayer.frame = 0;
         VideoPlayer.Play();
     }
@@ -80,4 +54,58 @@ public class VideoManager : MonoBehaviour
     {
         VideoPlayer.Stop();
     }
+    IEnumerator playVideo()
+    {
+        //Disable Play on Awake for both Video and Audio
+        VideoPlayer.playOnAwake = false;
+        
+    
+        //We want to play from video clip not from url
+        VideoPlayer.source = VideoSource.Url;
+        // By default, VideoPlayers added to a camera will use the far plane.
+        // Let's target the near plane instead.
+        VideoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
+
+        // This will cause our Scene to be visible through the video being played.
+        VideoPlayer.targetCameraAlpha = 0.5F;
+        VideoPlayer.renderMode = VideoRenderMode.RenderTexture;
+        VideoPlayer.targetTexture = VideoRenderTexture;
+        // Restart from beginning when done.
+        VideoPlayer.isLooping = true;
+        VideoPlayer.url = "https://game.gamatic.com/iCTS/Video/APT_smokkarHreyfing.mp4";
+        //Set video To Play then prepare Audio to prevent Buffering
+        VideoPlayer.Prepare();
+    
+        //Wait until video is prepared
+        while (!VideoPlayer.isPrepared)
+        {
+            Debug.Log("Preparing Video");
+            yield return null;
+        }
+    
+        Debug.Log("Done Preparing Video");
+    
+        //Set Audio Output to AudioSource
+        //VideoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
+    
+        //Assign the Audio from Video to AudioSource to be played
+        //VideoPlayer.EnableAudioTrack(0, true);
+        //VideoPlayer.SetTargetAudioSource(0, audioSource);
+    
+        //Assign the Texture from Video to RawImage to be displayed
+        //image.texture = videoPlayer.texture;
+    
+        //Play Video
+        VideoPlayer.Play();
+    
+        //Play Sound
+        //audioSource.Play();
+        Debug.Log("Playing Video");
+        while (VideoPlayer.frame < (long)VideoPlayer.frameCount - 1) { //as frame goes upto frameCount - 1
+            yield return null;
+        }
+        
+    
+        Debug.Log("Done Playing Video");
+    }
 }

+ 8 - 0
Unity3/Assets/KeychanIOs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a7e2ccd6a7c234d88a753af8d53a95a2
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 44 - 0
Unity3/Assets/KeychanIOs/Main.cs

@@ -0,0 +1,44 @@
+using UnityEngine;
+using System.Collections;
+
+public class KeyChainIos : MonoBehaviour {
+
+	string currentUUID = "";
+	string saveUUID = "";
+
+	void Update () {}
+
+	void OnGUI () {
+
+		GUILayoutOption[] ops = new GUILayoutOption[]{};
+
+		GUI.skin.label.fontSize = 30;
+		GUI.skin.textArea.fontSize = 30;
+		GUI.skin.button.fontSize = 30;
+
+		if (GUILayout.Button ("UUID", ops)) {
+			currentUUID = SystemInfo.deviceUniqueIdentifier;
+			Debug.Log ("CurrentUUID: [" + currentUUID + "]");
+		}
+		
+		GUILayout.TextArea (currentUUID, ops);
+
+		if (GUILayout.Button ("Load UUID", ops)) {
+			saveUUID = KeyChain.BindGetKeyChainUser ();
+			Debug.Log ("LoadUUID: [" + saveUUID + "]");
+		}
+
+		GUILayout.TextArea (saveUUID, ops);
+
+		if (GUILayout.Button ("Save UUID", ops)) {
+			currentUUID = SystemInfo.deviceUniqueIdentifier;
+			KeyChain.BindSetKeyChainUser ("0", currentUUID);
+			Debug.Log ("SaveUUID: [" + currentUUID + "]");
+		}
+
+		if (GUILayout.Button ("Delete UUID", ops)) {
+			KeyChain.BindDeleteKeyChainUser ();
+		}
+
+	}
+}

+ 11 - 0
Unity3/Assets/KeychanIOs/Main.cs.meta

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

+ 231 - 0
Unity3/Assets/KeychanIOs/Main.unity

@@ -0,0 +1,231 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+  m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+  m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 3
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 0}
+  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &4
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 12
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 1
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 1
+    m_BakeResolution: 50
+    m_AtlasSize: 1024
+    m_AO: 1
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 0
+    m_FinalGather: 0
+    m_FinalGatherFiltering: 1
+    m_FinalGatherRayCount: 256
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 1
+    m_BakeBackend: 0
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 512
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 512
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 0
+    m_PVRDenoiserTypeDirect: 0
+    m_PVRDenoiserTypeIndirect: 0
+    m_PVRDenoiserTypeAO: 0
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 0
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_LightingSettings: {fileID: 4890085278179872738, guid: 67f94d240b8a64c9082360abe90a592c,
+    type: 2}
+--- !u!196 &5
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666666
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    maxJobWorkers: 0
+    preserveTilesOutsideBounds: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &1079584733
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1079584738}
+  - component: {fileID: 1079584737}
+  - component: {fileID: 1079584735}
+  - component: {fileID: 1079584734}
+  - component: {fileID: 1079584739}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &1079584734
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1079584733}
+  m_Enabled: 1
+--- !u!124 &1079584735
+Behaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1079584733}
+  m_Enabled: 1
+--- !u!20 &1079584737
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1079584733}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 1
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 60
+  orthographic: 1
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 3
+  m_HDR: 0
+  m_AllowMSAA: 1
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 1
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &1079584738
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1079584733}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1079584739
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1079584733}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0d7fe30b599e945829db5612e6e4837c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 

+ 7 - 0
Unity3/Assets/KeychanIOs/Main.unity.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 67a41f65b10e442cc93db94f73441d07
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 63 - 0
Unity3/Assets/KeychanIOs/MainSettings.lighting

@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!850595691 &4890085278179872738
+LightingSettings:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: MainSettings
+  serializedVersion: 3
+  m_GIWorkflowMode: 1
+  m_EnableBakedLightmaps: 1
+  m_EnableRealtimeLightmaps: 0
+  m_RealtimeEnvironmentLighting: 1
+  m_BounceScale: 1
+  m_AlbedoBoost: 1
+  m_IndirectOutputScale: 1
+  m_UsingShadowmask: 0
+  m_BakeBackend: 0
+  m_LightmapMaxSize: 1024
+  m_BakeResolution: 50
+  m_Padding: 2
+  m_TextureCompression: 0
+  m_AO: 1
+  m_AOMaxDistance: 1
+  m_CompAOExponent: 1
+  m_CompAOExponentDirect: 0
+  m_ExtractAO: 0
+  m_MixedBakeMode: 1
+  m_LightmapsBakeMode: 1
+  m_FilterMode: 1
+  m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+  m_ExportTrainingData: 0
+  m_TrainingDataDestination: TrainingData
+  m_RealtimeResolution: 1
+  m_ForceWhiteAlbedo: 0
+  m_ForceUpdates: 0
+  m_FinalGather: 0
+  m_FinalGatherRayCount: 256
+  m_FinalGatherFiltering: 1
+  m_PVRCulling: 1
+  m_PVRSampling: 1
+  m_PVRDirectSampleCount: 32
+  m_PVRSampleCount: 512
+  m_PVREnvironmentSampleCount: 512
+  m_PVREnvironmentReferencePointCount: 2048
+  m_LightProbeSampleCountMultiplier: 4
+  m_PVRBounces: 2
+  m_PVRMinBounces: 2
+  m_PVREnvironmentMIS: 0
+  m_PVRFilteringMode: 0
+  m_PVRDenoiserTypeDirect: 0
+  m_PVRDenoiserTypeIndirect: 0
+  m_PVRDenoiserTypeAO: 0
+  m_PVRFilterTypeDirect: 0
+  m_PVRFilterTypeIndirect: 0
+  m_PVRFilterTypeAO: 0
+  m_PVRFilteringGaussRadiusDirect: 1
+  m_PVRFilteringGaussRadiusIndirect: 5
+  m_PVRFilteringGaussRadiusAO: 2
+  m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+  m_PVRFilteringAtrousPositionSigmaIndirect: 2
+  m_PVRFilteringAtrousPositionSigmaAO: 1

+ 8 - 0
Unity3/Assets/KeychanIOs/MainSettings.lighting.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 67f94d240b8a64c9082360abe90a592c
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 4890085278179872738
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Unity3/Assets/KeychanIOs/Plugins.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cc8a62a71ee08420fa5b2020ac7e9ab7
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 33 - 0
Unity3/Assets/KeychanIOs/Plugins/KeyChain.cs

@@ -0,0 +1,33 @@
+using UnityEngine;
+using System.Runtime.InteropServices;
+
+public class KeyChain {
+	
+	#if UNITY_IPHONE || UNITY_STANDALONE_OSX
+	
+	[DllImport("__Internal")]
+	private static extern string getKeyChainUser();
+	
+	public static string BindGetKeyChainUser()
+	{
+		return getKeyChainUser();
+	}
+	
+	[DllImport("__Internal")]
+	private static extern void setKeyChainUser(string userId, string uuid);
+	
+	public static void BindSetKeyChainUser(string userId, string uuid)
+	{
+		setKeyChainUser(userId, uuid);
+	}
+	
+	[DllImport("__Internal")]
+	private static extern void deleteKeyChainUser();
+	
+	public static void BindDeleteKeyChainUser()
+	{
+		deleteKeyChainUser();
+	}
+	
+	#endif
+}

+ 11 - 0
Unity3/Assets/KeychanIOs/Plugins/KeyChain.cs.meta

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

+ 8 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5b209b9dec29f45ebbb8d75fd674d7a0
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 0 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.h


+ 27 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.h.meta

@@ -0,0 +1,27 @@
+fileFormatVersion: 2
+guid: 3f139be1d1fd8417b98e7b9ec4736c0e
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 1
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 57 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.mm

@@ -0,0 +1,57 @@
+#import "KeyChainPlugin.h"
+#import "UICKeyChainStore.h"
+NSString *_keyForID = @"UserID";
+NSString *_keyForUUID = @"UserUUID";
+@implementation KeyChainPlugin
+extern "C" {
+    char* getKeyChainUser();
+    void setKeyChainUser(const char* userId, const char* uuid);
+    void deleteKeyChainUser();
+}
+char* getKeyChainUser()
+{
+    NSString *userId = [UICKeyChainStore stringForKey:_keyForID];
+    NSString *userUUID = [UICKeyChainStore stringForKey:_keyForUUID];
+    if (userId == nil || [userId isEqualToString:@""]) {
+        NSLog(@"No user information");
+        userId = @"";
+        userUUID = @"";
+    }
+    NSString* json = [NSString stringWithFormat:@"{\"userId\":\"%@\",\"uuid\":\"%@\"}",userId,userUUID];
+    return makeStringCopy([json UTF8String]);
+}
+void setKeyChainUser(const char* userId, const char* uuid)
+{
+    NSString *nsUseId = [NSString stringWithCString: userId encoding:NSUTF8StringEncoding];
+    NSString *nsUUID = [NSString stringWithCString: uuid encoding:NSUTF8StringEncoding];
+    [UICKeyChainStore setString:nsUseId forKey:_keyForID];
+    [UICKeyChainStore setString:nsUUID forKey:_keyForUUID];
+}
+void deleteKeyChainUser()
+{
+    [UICKeyChainStore removeItemForKey:_keyForID];
+    [UICKeyChainStore removeItemForKey:_keyForUUID];
+}
+char* makeStringCopy(const char* str)
+{
+    if (str == NULL) {
+        return NULL;
+    }
+    char* res = (char*)malloc(strlen(str) + 1);
+    strcpy(res, str);
+    return res;
+}
+@end

+ 37 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/KeyChainPlugin.mm.meta

@@ -0,0 +1,37 @@
+fileFormatVersion: 2
+guid: 7cd4f70c51bc745c59c91093e3f879e6
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  - first:
+      iPhone: iOS
+    second:
+      enabled: 1
+      settings: {}
+  - first:
+      tvOS: tvOS
+    second:
+      enabled: 1
+      settings: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 281 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.h

@@ -0,0 +1,281 @@
+//
+//  UICKeyChainStore.h
+//  UICKeyChainStore
+//
+//  Created by Kishikawa Katsumi on 11/11/20.
+//  Copyright (c) 2011 Kishikawa Katsumi. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#if !__has_feature(nullability)
+#define NS_ASSUME_NONNULL_BEGIN
+#define NS_ASSUME_NONNULL_END
+#define nullable
+#define nonnull
+#define null_unspecified
+#define null_resettable
+#define __nullable
+#define __nonnull
+#define __null_unspecified
+#endif
+
+#if __has_extension(objc_generics)
+#define UIC_KEY_TYPE <NSString *>
+#define UIC_CREDENTIAL_TYPE <NSDictionary <NSString *, NSString *>*>
+#else
+#define UIC_KEY_TYPE
+#define UIC_CREDENTIAL_TYPE
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+extern NSString * const UICKeyChainStoreErrorDomain;
+
+typedef NS_ENUM(NSInteger, UICKeyChainStoreErrorCode) {
+    UICKeyChainStoreErrorInvalidArguments = 1,
+};
+
+typedef NS_ENUM(NSInteger, UICKeyChainStoreItemClass) {
+    UICKeyChainStoreItemClassGenericPassword = 1,
+    UICKeyChainStoreItemClassInternetPassword,
+};
+
+typedef NS_ENUM(NSInteger, UICKeyChainStoreProtocolType) {
+    UICKeyChainStoreProtocolTypeFTP = 1,
+    UICKeyChainStoreProtocolTypeFTPAccount,
+    UICKeyChainStoreProtocolTypeHTTP,
+    UICKeyChainStoreProtocolTypeIRC,
+    UICKeyChainStoreProtocolTypeNNTP,
+    UICKeyChainStoreProtocolTypePOP3,
+    UICKeyChainStoreProtocolTypeSMTP,
+    UICKeyChainStoreProtocolTypeSOCKS,
+    UICKeyChainStoreProtocolTypeIMAP,
+    UICKeyChainStoreProtocolTypeLDAP,
+    UICKeyChainStoreProtocolTypeAppleTalk,
+    UICKeyChainStoreProtocolTypeAFP,
+    UICKeyChainStoreProtocolTypeTelnet,
+    UICKeyChainStoreProtocolTypeSSH,
+    UICKeyChainStoreProtocolTypeFTPS,
+    UICKeyChainStoreProtocolTypeHTTPS,
+    UICKeyChainStoreProtocolTypeHTTPProxy,
+    UICKeyChainStoreProtocolTypeHTTPSProxy,
+    UICKeyChainStoreProtocolTypeFTPProxy,
+    UICKeyChainStoreProtocolTypeSMB,
+    UICKeyChainStoreProtocolTypeRTSP,
+    UICKeyChainStoreProtocolTypeRTSPProxy,
+    UICKeyChainStoreProtocolTypeDAAP,
+    UICKeyChainStoreProtocolTypeEPPC,
+    UICKeyChainStoreProtocolTypeNNTPS,
+    UICKeyChainStoreProtocolTypeLDAPS,
+    UICKeyChainStoreProtocolTypeTelnetS,
+    UICKeyChainStoreProtocolTypeIRCS,
+    UICKeyChainStoreProtocolTypePOP3S,
+};
+
+typedef NS_ENUM(NSInteger, UICKeyChainStoreAuthenticationType) {
+    UICKeyChainStoreAuthenticationTypeNTLM = 1,
+    UICKeyChainStoreAuthenticationTypeMSN,
+    UICKeyChainStoreAuthenticationTypeDPA,
+    UICKeyChainStoreAuthenticationTypeRPA,
+    UICKeyChainStoreAuthenticationTypeHTTPBasic,
+    UICKeyChainStoreAuthenticationTypeHTTPDigest,
+    UICKeyChainStoreAuthenticationTypeHTMLForm,
+    UICKeyChainStoreAuthenticationTypeDefault,
+};
+
+typedef NS_ENUM(NSInteger, UICKeyChainStoreAccessibility) {
+    UICKeyChainStoreAccessibilityWhenUnlocked = 1,
+    UICKeyChainStoreAccessibilityAfterFirstUnlock,
+    UICKeyChainStoreAccessibilityAlways,
+    UICKeyChainStoreAccessibilityWhenPasscodeSetThisDeviceOnly
+    __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0),
+    UICKeyChainStoreAccessibilityWhenUnlockedThisDeviceOnly,
+    UICKeyChainStoreAccessibilityAfterFirstUnlockThisDeviceOnly,
+    UICKeyChainStoreAccessibilityAlwaysThisDeviceOnly,
+}
+__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_4_0);
+
+typedef NS_ENUM(NSInteger, UICKeyChainStoreAuthenticationPolicy) {
+    UICKeyChainStoreAuthenticationPolicyUserPresence = kSecAccessControlUserPresence,
+};
+
+@interface UICKeyChainStore : NSObject
+
+@property (nonatomic, readonly) UICKeyChainStoreItemClass itemClass;
+
+@property (nonatomic, readonly, nullable) NSString *service;
+@property (nonatomic, readonly, nullable) NSString *accessGroup;
+
+@property (nonatomic, readonly, nullable) NSURL *server;
+@property (nonatomic, readonly) UICKeyChainStoreProtocolType protocolType;
+@property (nonatomic, readonly) UICKeyChainStoreAuthenticationType authenticationType;
+
+@property (nonatomic) UICKeyChainStoreAccessibility accessibility;
+@property (nonatomic, readonly) UICKeyChainStoreAuthenticationPolicy authenticationPolicy
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+
+@property (nonatomic) BOOL synchronizable;
+
+@property (nonatomic, nullable) NSString *authenticationPrompt
+__OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
+
+@property (nonatomic, readonly, nullable) NSArray UIC_KEY_TYPE *allKeys;
+@property (nonatomic, readonly, nullable) NSArray *allItems;
+
++ (NSString *)defaultService;
++ (void)setDefaultService:(NSString *)defaultService;
+
++ (UICKeyChainStore *)keyChainStore;
++ (UICKeyChainStore *)keyChainStoreWithService:(nullable NSString *)service;
++ (UICKeyChainStore *)keyChainStoreWithService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
+
++ (UICKeyChainStore *)keyChainStoreWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType;
++ (UICKeyChainStore *)keyChainStoreWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType authenticationType:(UICKeyChainStoreAuthenticationType)authenticationType;
+
+- (instancetype)init;
+- (instancetype)initWithService:(nullable NSString *)service;
+- (instancetype)initWithService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
+
+- (instancetype)initWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType;
+- (instancetype)initWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType authenticationType:(UICKeyChainStoreAuthenticationType)authenticationType;
+
++ (nullable NSString *)stringForKey:(NSString *)key;
++ (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service;
++ (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
+
++ (nullable NSData *)dataForKey:(NSString *)key;
++ (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service;
++ (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
+
+- (BOOL)contains:(nullable NSString *)key;
+
+- (BOOL)setString:(nullable NSString *)string forKey:(nullable NSString *)key;
+- (BOOL)setString:(nullable NSString *)string forKey:(nullable NSString *)key label:(nullable NSString *)label comment:(nullable NSString *)comment;
+- (nullable NSString *)stringForKey:(NSString *)key;
+
+- (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key;
+- (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key label:(nullable NSString *)label comment:(nullable NSString *)comment;
+- (nullable NSData *)dataForKey:(NSString *)key;
+
++ (BOOL)removeItemForKey:(NSString *)key;
++ (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service;
++ (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
+
++ (BOOL)removeAllItems;
++ (BOOL)removeAllItemsForService:(nullable NSString *)service;
++ (BOOL)removeAllItemsForService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
+
+- (BOOL)removeItemForKey:(NSString *)key;
+
+- (BOOL)removeAllItems;
+
+- (nullable NSString *)objectForKeyedSubscript:(NSString<NSCopying> *)key;
+- (void)setObject:(nullable NSString *)obj forKeyedSubscript:(NSString<NSCopying> *)key;
+
++ (nullable NSArray UIC_KEY_TYPE *)allKeysWithItemClass:(UICKeyChainStoreItemClass)itemClass;
+- (nullable NSArray UIC_KEY_TYPE *)allKeys;
+
++ (nullable NSArray *)allItemsWithItemClass:(UICKeyChainStoreItemClass)itemClass;
+- (nullable NSArray *)allItems;
+
+- (void)setAccessibility:(UICKeyChainStoreAccessibility)accessibility authenticationPolicy:(UICKeyChainStoreAuthenticationPolicy)authenticationPolicy
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+
+#if TARGET_OS_IOS
+- (void)sharedPasswordWithCompletion:(nullable void (^)(NSString * __nullable account, NSString * __nullable password, NSError * __nullable error))completion;
+- (void)sharedPasswordForAccount:(NSString *)account completion:(nullable void (^)(NSString * __nullable password, NSError * __nullable error))completion;
+
+- (void)setSharedPassword:(nullable NSString *)password forAccount:(NSString *)account completion:(nullable void (^)(NSError * __nullable error))completion;
+- (void)removeSharedPasswordForAccount:(NSString *)account completion:(nullable void (^)(NSError * __nullable error))completion;
+
++ (void)requestSharedWebCredentialWithCompletion:(nullable void (^)(NSArray UIC_CREDENTIAL_TYPE *credentials, NSError * __nullable error))completion;
++ (void)requestSharedWebCredentialForDomain:(nullable NSString *)domain account:(nullable NSString *)account completion:(nullable void (^)(NSArray UIC_CREDENTIAL_TYPE *credentials, NSError * __nullable error))completion;
+
++ (NSString *)generatePassword;
+#endif
+
+@end
+
+@interface UICKeyChainStore (ErrorHandling)
+
++ (nullable NSString *)stringForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (nullable NSData *)dataForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
+
+- (BOOL)setString:(nullable NSString *)string forKey:(NSString * )key error:(NSError * __nullable __autoreleasing * __nullable)error;
+- (BOOL)setString:(nullable NSString *)string forKey:(NSString * )key label:(nullable NSString *)label comment:(nullable NSString *)comment error:(NSError * __nullable __autoreleasing * __nullable)error;
+
+- (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
+- (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key label:(nullable NSString *)label comment:(nullable NSString *)comment error:(NSError * __nullable __autoreleasing * __nullable)error;
+
+- (nullable NSString *)stringForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
+- (nullable NSData *)dataForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)removeItemForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)removeAllItemsWithError:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)removeAllItemsForService:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
++ (BOOL)removeAllItemsForService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
+
+- (BOOL)removeItemForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
+- (BOOL)removeAllItemsWithError:(NSError * __nullable __autoreleasing * __nullable)error;
+
+@end
+
+@interface UICKeyChainStore (ForwardCompatibility)
+
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute;
++ (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute;
++ (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
+- (BOOL)setString:(nullable NSString *)string forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
+- (BOOL)setString:(nullable NSString *)string forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
+- (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
+- (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
+
+@end
+
+@interface UICKeyChainStore (Deprecation)
+
+- (void)synchronize __attribute__((deprecated("calling this method is no longer required")));
+- (BOOL)synchronizeWithError:(NSError * __nullable __autoreleasing * __nullable)error __attribute__((deprecated("calling this method is no longer required")));
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 27 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.h.meta

@@ -0,0 +1,27 @@
+fileFormatVersion: 2
+guid: e64fb75b56dd94fd1ac1f20dd5324695
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 1
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

Разлика између датотеке није приказан због своје велике величине
+ 1392 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.m


+ 37 - 0
Unity3/Assets/KeychanIOs/Plugins/iOS/UICKeyChainStore.m.meta

@@ -0,0 +1,37 @@
+fileFormatVersion: 2
+guid: fe2c92b31791a43028779152f23990fb
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 0
+      settings: {}
+  - first:
+      Editor: Editor
+    second:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  - first:
+      iPhone: iOS
+    second:
+      enabled: 1
+      settings: {}
+  - first:
+      tvOS: tvOS
+    second:
+      enabled: 1
+      settings: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 6 - 6
Unity3/Assets/LivesManager/LivesManager/LivesManager.cs

@@ -94,7 +94,7 @@ public class LivesManager : MonoBehaviour
 		DebugViewManager.OnDebugView += OnDebugView;
 		CoreNotificationCenter.AddListener(OnPurchaseSuccessful, CoreNotificationType.PurchaseSuccessful);
         var countLifeInDay = PlayerPrefs.GetInt("CounterLifeInDay");
-        StartLoad();
+        //StartLoad();
 	}
     void Save(double time)
     {
@@ -151,7 +151,7 @@ public class LivesManager : MonoBehaviour
 
     private IEnumerator UpdateServerTime(DateTime savedDateTime)
     {
-        string loadServerTime = "http://game.gamatic.com/app_condom_dk/DbScripts/ServerTime.php";
+        string loadServerTime = GameConstants.SERVER_BASE_URL + "serverTime.php";
 
 
         WWW w = new WWW(loadServerTime);
@@ -166,8 +166,8 @@ public class LivesManager : MonoBehaviour
         else
         {
             var timeStan = JsonReader.Deserialize<ServerTime>(w.text);
-            double dateTimeLong;
-            double.TryParse(PlayerPrefs.GetString("DateTime"), out dateTimeLong);
+            long dateTimeLong;
+            long.TryParse(PlayerPrefs.GetString("DateTime"), out dateTimeLong);
             Debug.Log(dateTimeLong);
             var hOld = ConvertFromUnixTimestamp(dateTimeLong);
             var h = ConvertFromUnixTimestamp(timeStan.time);
@@ -182,7 +182,7 @@ public class LivesManager : MonoBehaviour
 
     private IEnumerator LoadServerTimeFirst()
     {
-        string loadServerTime = "http://game.gamatic.com/app_condom_dk/DbScripts/ServerTime.php";
+        string loadServerTime = GameConstants.SERVER_BASE_URL + "serverTime.php";
 
 
         WWW w = new WWW(loadServerTime);
@@ -448,7 +448,7 @@ public class LivesManager : MonoBehaviour
         Timer = Timer - Time.deltaTime;
         if (Timer <= 0)
         {
-            StartLoad();
+            //StartLoad();
             Timer = DefoultTimer;
         }
     }

+ 1 - 0
Unity3/Assets/Resources/BillingMode.json

@@ -0,0 +1 @@
+{"androidStore":"GooglePlay"}

+ 7 - 0
Unity3/Assets/Resources/BillingMode.json.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: c9a4ef7425c9949c7948d1fdfc709dcf
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 39 - 3
Unity3/Assets/SocialNetworking/Scripts/SocialPlatform/GameDatabaseManager.cs

@@ -1,10 +1,12 @@
 using UnityEngine;
 using System;
 using System.Collections;
+using System.Net.NetworkInformation;
 using System.Security.Cryptography;
 using System.Text;
 using JsonFx;
 using JsonFx.Json;
+using UnityEngine.iOS;
 
 //Address for local server http://avtechprojects.net:8080/FbSocial/DbScripts/
 //Address for deploy server http://game.gamatic.com/DbScripts/
@@ -30,7 +32,17 @@ public class User
 		return string.Format("{0}, {1}, {2}, {3}, {4}", id, name, surname, username, usermail, device, gender, ageRange);
 	}
 }
-
+[Serializable]
+public class Device
+{
+	public string userId;
+	public string uuid;
+	
+	public Device()
+	{
+		//Required for JSON serialization and deserialization
+	}
+}
 [Serializable]
 public class Challenge
 {
@@ -233,7 +245,7 @@ public class GameDatabaseManager : MonoBehaviour
 		
 		_instance = this;
 		DontDestroyOnLoad(gameObject);
-		CheckDeviceID(SystemInfo.deviceUniqueIdentifier, OnCheckDevice);
+		CheckDeviceID(GameDatabaseManager.Instance.GetDevice() , OnCheckDevice);
 	}
 
     private void OnCheckDevice(bool arg1, User arg2)
@@ -291,6 +303,29 @@ public class GameDatabaseManager : MonoBehaviour
 			}
 		}
 	}
+
+	public string GetDevice()
+	{
+	//KeyChain.BindDeleteKeyChainUser();
+		string result = "";
+		string saveUUID = KeyChain.BindGetKeyChainUser();
+		Debug.Log("BindGetKeyChainUser " + saveUUID);
+		var dev = JsonReader.Deserialize<Device>(saveUUID);
+		Debug.Log("BindGetKeyChainUser " + dev);
+		if (string.IsNullOrEmpty(dev.uuid))
+		{
+			KeyChain.BindSetKeyChainUser ("0", SystemInfo.deviceUniqueIdentifier);
+			result = SystemInfo.deviceUniqueIdentifier;
+			Debug.Log("SET " + saveUUID);
+		}
+		if (!string.IsNullOrEmpty(dev.uuid))
+		{
+			result = dev.uuid;
+			Debug.Log("GET " + saveUUID);
+		}
+		
+		return result;
+	}
 	public void CheckDeviceID(string deviceID, Action<bool, User> onComplete)
 	{
 		StartCoroutine(CheckDeviceCoroutine(deviceID, onComplete));
@@ -299,7 +334,7 @@ public class GameDatabaseManager : MonoBehaviour
 	private IEnumerator CheckDeviceCoroutine(string deviceID, Action<bool, User> onComplete)
 	{
 		string loadDeviceUrl = URL + "RequestCheckDeviceID.php";
-
+		Debug.Log("ID " + GetDevice());
 		WWWForm form = new WWWForm();
 		form.AddField("userDeviceId", deviceID);
 
@@ -318,6 +353,7 @@ public class GameDatabaseManager : MonoBehaviour
 			try
 			{
 				User user = JsonReader.Deserialize<User>(w.text);
+				//
 				onComplete(true, user);
 			}
 			catch (JsonDeserializationException ex)

+ 3 - 2
Unity3/Assets/SocialNetworking/Scripts/SocialPlatform/Stubs/GameDatabaseManagerStub.cs

@@ -1,5 +1,6 @@
 using UnityEngine;
 using System.Collections;
+using UnityEngine.iOS;
 
 public class GameDatabaseManagerStub : MonoBehaviour {
 	
@@ -44,7 +45,7 @@ public class GameDatabaseManagerStub : MonoBehaviour {
 	{		
 		if(GUILayout.Button("Register User", GUILayout.Width(200), GUILayout.Height(80)))
 		{
-			GameDatabaseManager.Instance.RegisterUser(_userId, _firstName, _lastName, _username, _usermail, SystemInfo.deviceUniqueIdentifier,(success, errorReason) => {
+			GameDatabaseManager.Instance.RegisterUser(_userId, _firstName, _lastName, _username, _usermail, GameDatabaseManager.Instance.GetDevice(),(success, errorReason) => {
 				AVDebug.Log(success ? "Successful" : "Failed");
 			});
 		}
@@ -53,7 +54,7 @@ public class GameDatabaseManagerStub : MonoBehaviour {
 		{
 			foreach(User u in _challengeParticipants)
 			{
-				GameDatabaseManager.Instance.RegisterUser(u.id, u.name, u.surname, u.username,u.usermail, SystemInfo.deviceUniqueIdentifier,(success, errorReason) => { 
+				GameDatabaseManager.Instance.RegisterUser(u.id, u.name, u.surname, u.username,u.usermail, GameDatabaseManager.Instance.GetDevice(),(success, errorReason) => { 
 					AVDebug.Log(success ? "Successful" : "Failed");
 				});
 			}

+ 4 - 6
Unity3/Assets/SocialNetworking/Scripts/WrapperFB.cs

@@ -29,9 +29,8 @@ public class WrapperFB : MonoBehaviour
     {
         LoginGo = LoginGop;
         LogoutGo = LogoutGop;
-        ID = PlayerPrefs.GetString("UserID");
         SocialManager.Instance.userID = ID;
-        if (PlayerPrefs.GetInt("Login") == 1)
+        /*if (PlayerPrefs.GetInt("Login") == 1)
         {
             LogoutGo.SetActive(false);
             LoginGo.SetActive(false);
@@ -40,9 +39,8 @@ public class WrapperFB : MonoBehaviour
         {
             LogoutGo.SetActive(false);
             LoginGo.SetActive(true);
-        }
+        }*/
         Go = gameObject;
-        Debug.Log("ID " + ID);
          Name = PlayerPrefs.GetString("FB_USER_NAME", "");
 #if UNITY_EDITOR
        
@@ -61,7 +59,7 @@ public class WrapperFB : MonoBehaviour
         });
     }
 
-    void Update()
+   /* void Update()
     {
         if (WrapperFB.IsLoggedIn)
         {
@@ -73,7 +71,7 @@ public class WrapperFB : MonoBehaviour
             WrapperFB.LogoutGo.SetActive(false);
             WrapperFB.LoginGo.SetActive(true);
         }
-    }
+    }*/
     public static void LoggedIn(GameObject unit)
     {
         if (OnLoggedIn != null)

+ 1 - 1
Unity3/Assets/UI/Scores/HighScoreList.cs

@@ -40,7 +40,7 @@ public class HighScoreList : MonoBehaviour
 
 	void OnEnable()
 	{
-		SwitchToGlobalListView();
+		//SwitchToGlobalListView();
 		if(HighScoreUIManager.Instance.scoreViewMode == HighScoreUIManager.ScoreViewMode.CombinedLeaderboard)
 		{
 			RetrieveScores();

+ 12 - 6
Unity3/Assets/UI/Screens/DownloadVideoFromServer.cs

@@ -31,7 +31,7 @@ public class DownloadVideoFromServer : MonoBehaviour
         HasVideo,
     }
 
-    private List<ConfigUnit> _configs = new List<ConfigUnit>();
+    public List<ConfigUnit> _configs = new List<ConfigUnit>();
 
     public class ConfigUnit
     {
@@ -95,12 +95,14 @@ public class DownloadVideoFromServer : MonoBehaviour
             yield return www;
             if (string.IsNullOrEmpty(www.error))
             {
+                Debug.Log("!!!");
                 IsLoaded = true;
                 www.Dispose();
                 parent.State = States.LoadDone;
             }
             else
             {
+                Debug.LogError("!!");
                 Debug.LogError("Banner:[" + www.error + "|" + www.url + "]");
                 parent.State = States.LoadFailed;
                 Broken = true;
@@ -112,6 +114,7 @@ public class DownloadVideoFromServer : MonoBehaviour
 
                 if (string.IsNullOrEmpty(www.error))
                 {
+                    Debug.LogError("!");
                     DownloadVideoFromServer.Instance.listVideoBanner.Add(www.url);
                     parent.State = States.HasVideo;
                 }
@@ -163,7 +166,7 @@ public class DownloadVideoFromServer : MonoBehaviour
         {
 
             var source = www.text;
-            //Debug.Log(source);
+            Debug.Log(source);
             var json = SimpleJSON.JSON.Parse(www.text)["Config"].AsArray;
             foreach (JSONNode media in json)
             {
@@ -208,7 +211,7 @@ public class DownloadVideoFromServer : MonoBehaviour
         }
         else
         {
-         
+         Debug.Log("!!!!!!!!!!!!!!!");
             _configs = new List<ConfigUnit>();
             Instance = this;
             StartCoroutine(LoadConfig());
@@ -237,10 +240,13 @@ public class DownloadVideoFromServer : MonoBehaviour
 
     public void GetVideo()
     {
-        if (listVideoBanner.Count > 0)
+        Debug.Log(_configs.Count);
+        if (_configs.Count > 0)
         {
-            currentAdIndex = UnityEngine.Random.Range(0, listVideoBanner.Count - 1);
-            VideoManager.Instance.VideoPlayer.url = listVideoBanner[currentAdIndex];
+            currentAdIndex = UnityEngine.Random.Range(0, _configs.Count - 1);
+            Debug.Log(_configs[currentAdIndex].VideoUrl);
+            //VideoManager.Instance.VideoPlayer.url = _configs[currentAdIndex].VideoUrl;
+            
         }
     }
     public Texture texture;

+ 3 - 2
Unity3/Assets/Unity Technologies/SignInWithApple/Samples/Scripts/SignInWithAppleTest_Callbacks.cs

@@ -1,5 +1,6 @@
 using System;
 using UnityEngine;
+using UnityEngine.iOS;
 using UnityEngine.SignInWithApple;
 
 public class SignInWithAppleTest_Callbacks : MonoBehaviour
@@ -53,11 +54,11 @@ public class SignInWithAppleTest_Callbacks : MonoBehaviour
         SocialManager.Instance._surname = _surname;
         SocialManager.Instance._usermail= userInfo.email;
         SocialManager.Instance._username = userInfo.userId;
-        SocialManager.Instance._deviceId = SystemInfo.deviceUniqueIdentifier;
+        SocialManager.Instance._deviceId = GameDatabaseManager.Instance.GetDevice();
         PlayerPrefs.SetString("UserID", userInfo.userId);
         PlayerPrefs.SetInt("Login", 1);
         PlayerPrefs.Save();
-        GameDatabaseManager.Instance.RegisterUser(userInfo.userId, _name, _surname, userInfo.displayName, userInfo.email, SystemInfo.deviceUniqueIdentifier, OnLoginCompleted);
+        GameDatabaseManager.Instance.RegisterUser(userInfo.userId, _name, _surname, userInfo.displayName, userInfo.email, GameDatabaseManager.Instance.GetDevice(), OnLoginCompleted);
         Debug.Log(
             string.Format("Display Name: {0}\nEmail: {1}\nUser ID: {2}\nID Token: {3}", userInfo.displayName ?? "",
                 userInfo.email ?? "", userInfo.userId ?? "", userInfo.idToken ?? ""));

+ 221 - 0
Unity3/Assets/UnityThread.cs

@@ -0,0 +1,221 @@
+#define ENABLE_UPDATE_FUNCTION_CALLBACK
+#define ENABLE_LATEUPDATE_FUNCTION_CALLBACK
+#define ENABLE_FIXEDUPDATE_FUNCTION_CALLBACK
+
+using System;
+using System.Collections;
+using UnityEngine;
+using System.Collections.Generic;
+
+
+public class UnityThread : MonoBehaviour
+{
+    //our (singleton) instance
+    private static UnityThread instance = null;
+
+
+    ////////////////////////////////////////////////UPDATE IMPL////////////////////////////////////////////////////////
+    //Holds actions received from another Thread. Will be coped to actionCopiedQueueUpdateFunc then executed from there
+    private static List<System.Action> actionQueuesUpdateFunc = new List<Action>();
+
+    //holds Actions copied from actionQueuesUpdateFunc to be executed
+    List<System.Action> actionCopiedQueueUpdateFunc = new List<System.Action>();
+
+    // Used to know if whe have new Action function to execute. This prevents the use of the lock keyword every frame
+    private volatile static bool noActionQueueToExecuteUpdateFunc = true;
+
+
+    ////////////////////////////////////////////////LATEUPDATE IMPL////////////////////////////////////////////////////////
+    //Holds actions received from another Thread. Will be coped to actionCopiedQueueLateUpdateFunc then executed from there
+    private static List<System.Action> actionQueuesLateUpdateFunc = new List<Action>();
+
+    //holds Actions copied from actionQueuesLateUpdateFunc to be executed
+    List<System.Action> actionCopiedQueueLateUpdateFunc = new List<System.Action>();
+
+    // Used to know if whe have new Action function to execute. This prevents the use of the lock keyword every frame
+    private volatile static bool noActionQueueToExecuteLateUpdateFunc = true;
+
+
+
+    ////////////////////////////////////////////////FIXEDUPDATE IMPL////////////////////////////////////////////////////////
+    //Holds actions received from another Thread. Will be coped to actionCopiedQueueFixedUpdateFunc then executed from there
+    private static List<System.Action> actionQueuesFixedUpdateFunc = new List<Action>();
+
+    //holds Actions copied from actionQueuesFixedUpdateFunc to be executed
+    List<System.Action> actionCopiedQueueFixedUpdateFunc = new List<System.Action>();
+
+    // Used to know if whe have new Action function to execute. This prevents the use of the lock keyword every frame
+    private volatile static bool noActionQueueToExecuteFixedUpdateFunc = true;
+
+
+    //Used to initialize UnityThread. Call once before any function here
+    public static void initUnityThread(bool visible = false)
+    {
+        if (instance != null)
+        {
+            return;
+        }
+
+        if (Application.isPlaying)
+        {
+            // add an invisible game object to the scene
+            GameObject obj = new GameObject("MainThreadExecuter");
+            if (!visible)
+            {
+                obj.hideFlags = HideFlags.HideAndDontSave;
+            }
+
+            DontDestroyOnLoad(obj);
+            instance = obj.AddComponent<UnityThread>();
+        }
+    }
+
+    public void Awake()
+    {
+        DontDestroyOnLoad(gameObject);
+    }
+
+    //////////////////////////////////////////////COROUTINE IMPL//////////////////////////////////////////////////////
+#if (ENABLE_UPDATE_FUNCTION_CALLBACK)
+    public static void executeCoroutine(IEnumerator action)
+    {
+        if (instance != null)
+        {
+            executeInUpdate(() => instance.StartCoroutine(action));
+        }
+    }
+
+    ////////////////////////////////////////////UPDATE IMPL////////////////////////////////////////////////////
+    public static void executeInUpdate(System.Action action)
+    {
+        if (action == null)
+        {
+            throw new ArgumentNullException("action");
+        }
+
+        lock (actionQueuesUpdateFunc)
+        {
+            actionQueuesUpdateFunc.Add(action);
+            noActionQueueToExecuteUpdateFunc = false;
+        }
+    }
+
+    public void Update()
+    {
+        if (noActionQueueToExecuteUpdateFunc)
+        {
+            return;
+        }
+
+        //Clear the old actions from the actionCopiedQueueUpdateFunc queue
+        actionCopiedQueueUpdateFunc.Clear();
+        lock (actionQueuesUpdateFunc)
+        {
+            //Copy actionQueuesUpdateFunc to the actionCopiedQueueUpdateFunc variable
+            actionCopiedQueueUpdateFunc.AddRange(actionQueuesUpdateFunc);
+            //Now clear the actionQueuesUpdateFunc since we've done copying it
+            actionQueuesUpdateFunc.Clear();
+            noActionQueueToExecuteUpdateFunc = true;
+        }
+
+        // Loop and execute the functions from the actionCopiedQueueUpdateFunc
+        for (int i = 0; i < actionCopiedQueueUpdateFunc.Count; i++)
+        {
+            actionCopiedQueueUpdateFunc[i].Invoke();
+        }
+    }
+#endif
+
+    ////////////////////////////////////////////LATEUPDATE IMPL////////////////////////////////////////////////////
+#if (ENABLE_LATEUPDATE_FUNCTION_CALLBACK)
+    public static void executeInLateUpdate(System.Action action)
+    {
+        if (action == null)
+        {
+            throw new ArgumentNullException("action");
+        }
+
+        lock (actionQueuesLateUpdateFunc)
+        {
+            actionQueuesLateUpdateFunc.Add(action);
+            noActionQueueToExecuteLateUpdateFunc = false;
+        }
+    }
+
+
+    public void LateUpdate()
+    {
+        if (noActionQueueToExecuteLateUpdateFunc)
+        {
+            return;
+        }
+
+        //Clear the old actions from the actionCopiedQueueLateUpdateFunc queue
+        actionCopiedQueueLateUpdateFunc.Clear();
+        lock (actionQueuesLateUpdateFunc)
+        {
+            //Copy actionQueuesLateUpdateFunc to the actionCopiedQueueLateUpdateFunc variable
+            actionCopiedQueueLateUpdateFunc.AddRange(actionQueuesLateUpdateFunc);
+            //Now clear the actionQueuesLateUpdateFunc since we've done copying it
+            actionQueuesLateUpdateFunc.Clear();
+            noActionQueueToExecuteLateUpdateFunc = true;
+        }
+
+        // Loop and execute the functions from the actionCopiedQueueLateUpdateFunc
+        for (int i = 0; i < actionCopiedQueueLateUpdateFunc.Count; i++)
+        {
+            actionCopiedQueueLateUpdateFunc[i].Invoke();
+        }
+    }
+#endif
+
+    ////////////////////////////////////////////FIXEDUPDATE IMPL//////////////////////////////////////////////////
+#if (ENABLE_FIXEDUPDATE_FUNCTION_CALLBACK)
+    public static void executeInFixedUpdate(System.Action action)
+    {
+        if (action == null)
+        {
+            throw new ArgumentNullException("action");
+        }
+
+        lock (actionQueuesFixedUpdateFunc)
+        {
+            actionQueuesFixedUpdateFunc.Add(action);
+            noActionQueueToExecuteFixedUpdateFunc = false;
+        }
+    }
+
+    public void FixedUpdate()
+    {
+        if (noActionQueueToExecuteFixedUpdateFunc)
+        {
+            return;
+        }
+
+        //Clear the old actions from the actionCopiedQueueFixedUpdateFunc queue
+        actionCopiedQueueFixedUpdateFunc.Clear();
+        lock (actionQueuesFixedUpdateFunc)
+        {
+            //Copy actionQueuesFixedUpdateFunc to the actionCopiedQueueFixedUpdateFunc variable
+            actionCopiedQueueFixedUpdateFunc.AddRange(actionQueuesFixedUpdateFunc);
+            //Now clear the actionQueuesFixedUpdateFunc since we've done copying it
+            actionQueuesFixedUpdateFunc.Clear();
+            noActionQueueToExecuteFixedUpdateFunc = true;
+        }
+
+        // Loop and execute the functions from the actionCopiedQueueFixedUpdateFunc
+        for (int i = 0; i < actionCopiedQueueFixedUpdateFunc.Count; i++)
+        {
+            actionCopiedQueueFixedUpdateFunc[i].Invoke();
+        }
+    }
+#endif
+
+    public void OnDisable()
+    {
+        if (instance == this)
+        {
+            instance = null;
+        }
+    }
+}

+ 11 - 0
Unity3/Assets/UnityThread.cs.meta

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

+ 1 - 7
Unity3/Packages/manifest.json

@@ -1,19 +1,13 @@
 {
   "dependencies": {
-    "com.unity.2d.sprite": "1.0.0",
-    "com.unity.2d.tilemap": "1.0.0",
-    "com.unity.ads": "3.6.1",
-    "com.unity.analytics": "3.5.3",
     "com.unity.collab-proxy": "1.3.9",
     "com.unity.ide.rider": "2.0.7",
-    "com.unity.ide.visualstudio": "2.0.7",
+    "com.unity.ide.visualstudio": "2.0.5",
     "com.unity.ide.vscode": "1.2.3",
-    "com.unity.purchasing": "2.2.2",
     "com.unity.test-framework": "1.1.22",
     "com.unity.textmeshpro": "3.0.1",
     "com.unity.timeline": "1.4.6",
     "com.unity.ugui": "1.0.0",
-    "com.unity.xr.legacyinputhelpers": "2.1.7",
     "com.unity.modules.ai": "1.0.0",
     "com.unity.modules.androidjni": "1.0.0",
     "com.unity.modules.animation": "1.0.0",

+ 7 - 51
Unity3/Packages/packages-lock.json

@@ -1,35 +1,5 @@
 {
   "dependencies": {
-    "com.unity.2d.sprite": {
-      "version": "1.0.0",
-      "depth": 0,
-      "source": "builtin",
-      "dependencies": {}
-    },
-    "com.unity.2d.tilemap": {
-      "version": "1.0.0",
-      "depth": 0,
-      "source": "builtin",
-      "dependencies": {}
-    },
-    "com.unity.ads": {
-      "version": "3.6.1",
-      "depth": 0,
-      "source": "registry",
-      "dependencies": {
-        "com.unity.ugui": "1.0.0"
-      },
-      "url": "https://packages.unity.com"
-    },
-    "com.unity.analytics": {
-      "version": "3.5.3",
-      "depth": 0,
-      "source": "registry",
-      "dependencies": {
-        "com.unity.ugui": "1.0.0"
-      },
-      "url": "https://packages.unity.com"
-    },
     "com.unity.collab-proxy": {
       "version": "1.3.9",
       "depth": 0,
@@ -67,15 +37,6 @@
       "dependencies": {},
       "url": "https://packages.unity.com"
     },
-    "com.unity.purchasing": {
-      "version": "2.2.2",
-      "depth": 0,
-      "source": "registry",
-      "dependencies": {
-        "com.unity.ugui": "1.0.0"
-      },
-      "url": "https://packages.unity.com"
-    },
     "com.unity.test-framework": {
       "version": "1.1.22",
       "depth": 0,
@@ -97,10 +58,15 @@
       "url": "https://packages.unity.com"
     },
     "com.unity.timeline": {
-      "version": "1.2.6",
+      "version": "1.4.6",
       "depth": 0,
       "source": "registry",
-      "dependencies": {},
+      "dependencies": {
+        "com.unity.modules.director": "1.0.0",
+        "com.unity.modules.animation": "1.0.0",
+        "com.unity.modules.audio": "1.0.0",
+        "com.unity.modules.particlesystem": "1.0.0"
+      },
       "url": "https://packages.unity.com"
     },
     "com.unity.ugui": {
@@ -112,16 +78,6 @@
         "com.unity.modules.imgui": "1.0.0"
       }
     },
-    "com.unity.xr.legacyinputhelpers": {
-      "version": "2.1.7",
-      "depth": 0,
-      "source": "registry",
-      "dependencies": {
-        "com.unity.modules.vr": "1.0.0",
-        "com.unity.modules.xr": "1.0.0"
-      },
-      "url": "https://packages.unity.com"
-    },
     "com.unity.modules.ai": {
       "version": "1.0.0",
       "depth": 0,

+ 3 - 6
Unity3/ProjectSettings/ProjectSettings.asset

@@ -56,7 +56,7 @@ PlayerSettings:
   iosShowActivityIndicatorOnLoading: -1
   androidShowActivityIndicatorOnLoading: -1
   iosUseCustomAppBackgroundBehavior: 0
-  iosAllowHTTPDownload: 1
+  iosAllowHTTPDownload: 0
   allowedAutorotateToPortrait: 0
   allowedAutorotateToPortraitUpsideDown: 0
   allowedAutorotateToLandscapeRight: 1
@@ -571,7 +571,6 @@ PlayerSettings:
   switchTitleNames_12: 
   switchTitleNames_13: 
   switchTitleNames_14: 
-  switchTitleNames_15: 
   switchPublisherNames_0: 
   switchPublisherNames_1: 
   switchPublisherNames_2: 
@@ -587,7 +586,6 @@ PlayerSettings:
   switchPublisherNames_12: 
   switchPublisherNames_13: 
   switchPublisherNames_14: 
-  switchPublisherNames_15: 
   switchIcons_0: {fileID: 0}
   switchIcons_1: {fileID: 0}
   switchIcons_2: {fileID: 0}
@@ -603,7 +601,6 @@ PlayerSettings:
   switchIcons_12: {fileID: 0}
   switchIcons_13: {fileID: 0}
   switchIcons_14: {fileID: 0}
-  switchIcons_15: {fileID: 0}
   switchSmallIcons_0: {fileID: 0}
   switchSmallIcons_1: {fileID: 0}
   switchSmallIcons_2: {fileID: 0}
@@ -619,7 +616,6 @@ PlayerSettings:
   switchSmallIcons_12: {fileID: 0}
   switchSmallIcons_13: {fileID: 0}
   switchSmallIcons_14: {fileID: 0}
-  switchSmallIcons_15: {fileID: 0}
   switchManualHTML: 
   switchAccessibleURLs: 
   switchLegalInformation: 
@@ -805,7 +801,8 @@ PlayerSettings:
   gcIncremental: 1
   assemblyVersionValidation: 1
   gcWBarrierValidation: 0
-  apiCompatibilityLevelPerPlatform: {}
+  apiCompatibilityLevelPerPlatform:
+    iPhone: 6
   m_RenderingPath: 1
   m_MobileRenderingPath: 1
   metroPackageName: Controls

+ 2 - 2
Unity3/ProjectSettings/ProjectVersion.txt

@@ -1,2 +1,2 @@
-m_EditorVersion: 2020.2.5f1
-m_EditorVersionWithRevision: 2020.2.5f1 (e2c53f129de5)
+m_EditorVersion: 2020.2.4f1
+m_EditorVersionWithRevision: 2020.2.4f1 (becced5a802b)

+ 3 - 0
Unity3/UserSettings/EditorUserSettings.asset

@@ -21,6 +21,9 @@ EditorUserSettings:
       value: 224247031146466e0307183b50175a131e191726232f2f353e662e3ae5ee1d36d5ee22e1c62a2f303c4ddc3d092e0d3ae1453a08f3050f185e3df4091fd61e2418d110e40ad81319f42a1dc3dd11d4dcf6d7d8e6daeae4d3cd91b5fcfde4f7
       flags: 0
     RecentlyUsedScenePath-5:
+      value: 224247031146467008170f2a112d763f0558352b252668252320092a
+      flags: 0
+    RecentlyUsedScenePath-6:
       value: 22424703114646095d5c5d6d23205a1e130457072d21287e38271427fb
       flags: 0
     vcSharedLogLevel: