Просмотр исходного кода

Mer online settings.. acceptera neka inbjudningar

Axel Nordh 6 лет назад
Родитель
Сommit
30d789e9dc

BIN
Assets/Images/check-mark-8-128.png


+ 91 - 0
Assets/Images/check-mark-8-128.png.meta

@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: 43c2693555401c8469caa1027a66ff40
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 10
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -100
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Images/x-mark-5-128.png


+ 91 - 0
Assets/Images/x-mark-5-128.png.meta

@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: e5c71c3784d578c40a141b3d867c9d64
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 10
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -100
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

Разница между файлами не показана из-за своего большого размера
+ 913 - 87
Assets/MainMenu.unity


+ 67 - 21
Assets/Prefab/OnlineGame.prefab

@@ -179,7 +179,6 @@ GameObject:
   m_Component:
   - component: {fileID: 4443270113229645986}
   - component: {fileID: 4443270113229645999}
-  - component: {fileID: 4443270113229645984}
   - component: {fileID: 4443270113229645985}
   m_Layer: 5
   m_Name: StatusValueText
@@ -215,19 +214,6 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 4443270113229645987}
   m_CullTransparentMesh: 0
---- !u!114 &4443270113229645984
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4443270113229645987}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 539bd096d40d9934d916d02e161ee660, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  key: ONLINE_GAME_STATUS_VALUE_PENDING
 --- !u!114 &4443270113229645985
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -261,7 +247,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: Paceholder Text
+  m_Text: Placeholder Text
 --- !u!1 &4443270113283690094
 GameObject:
   m_ObjectHideFlags: 0
@@ -275,6 +261,8 @@ GameObject:
   - component: {fileID: 4443270113283690091}
   - component: {fileID: 4443270113283690092}
   - component: {fileID: 4443270113283690089}
+  - component: {fileID: 8384964256862483610}
+  - component: {fileID: 1023584018781346570}
   m_Layer: 5
   m_Name: OnlineGame
   m_TagString: Untagged
@@ -301,7 +289,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: -30, y: 0}
+  m_SizeDelta: {x: -30, y: 60}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &4443270113283690090
 CanvasRenderer:
@@ -378,9 +366,67 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 5a8c4824064d7f14db5b1b8c2d0f5f24, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  gameStatusText: {fileID: 4443270112465168295}
-  gameTitleText: {fileID: 4443270113439902654}
+  gameStatusText: {fileID: 4443270113439902654}
+  gameTitleText: {fileID: 4443270112465168295}
   gameStatus: 
+--- !u!114 &8384964256862483610
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4443270113283690094}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 4443270113283690091}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, Unity.ugui, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+--- !u!114 &1023584018781346570
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4443270113283690094}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 78e7dcec242b8e54db8994e443fcf679, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  key: 
 --- !u!1 &4443270113439902640
 GameObject:
   m_ObjectHideFlags: 0
@@ -391,7 +437,7 @@ GameObject:
   m_Component:
   - component: {fileID: 4443270113439902655}
   - component: {fileID: 4443270113439902652}
-  - component: {fileID: 4443270113439902653}
+  - component: {fileID: 4142617177063521080}
   - component: {fileID: 4443270113439902654}
   m_Layer: 5
   m_Name: OnlineGameStatusText
@@ -427,7 +473,7 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 4443270113439902640}
   m_CullTransparentMesh: 0
---- !u!114 &4443270113439902653
+--- !u!114 &4142617177063521080
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -439,7 +485,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 539bd096d40d9934d916d02e161ee660, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  key: ONLINE_GAME_STATUS_TEXT
+  key: TEMP_KEY
 --- !u!114 &4443270113439902654
 MonoBehaviour:
   m_ObjectHideFlags: 0

+ 904 - 0
Assets/Prefab/OnlineGamePlayerInfo.prefab

@@ -0,0 +1,904 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &19169673239921731
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2309553677284932256}
+  - component: {fileID: 2085956339603742460}
+  - component: {fileID: 7367016314319767251}
+  - component: {fileID: 5728626527124731275}
+  m_Layer: 5
+  m_Name: AcceptButton
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2309553677284932256
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 19169673239921731}
+  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: 6199810951909333521}
+  m_Father: {fileID: 7939081406837507707}
+  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.5, y: 0.5}
+--- !u!222 &2085956339603742460
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 19169673239921731}
+  m_CullTransparentMesh: 0
+--- !u!114 &7367016314319767251
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 19169673239921731}
+  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_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 21300000, guid: 43c2693555401c8469caa1027a66ff40, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 1
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5728626527124731275
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 19169673239921731}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 7367016314319767251}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, Unity.ugui, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+--- !u!1 &733526124466213112
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1207950007378033945}
+  - component: {fileID: 4825166074162738828}
+  - component: {fileID: 4968074237383639744}
+  m_Layer: 5
+  m_Name: StatusPanel
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1207950007378033945
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 733526124466213112}
+  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: 5899404474515124229}
+  - {fileID: 7939081406837507707}
+  m_Father: {fileID: 5899404473167054275}
+  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_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4825166074162738828
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 733526124466213112}
+  m_CullTransparentMesh: 0
+--- !u!114 &4968074237383639744
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 733526124466213112}
+  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: 0}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &990469533635722383
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8759050238619854661}
+  - component: {fileID: 2427253673183139493}
+  - component: {fileID: 251447804801866711}
+  - component: {fileID: 7422723397548199713}
+  m_Layer: 5
+  m_Name: DeclineButton
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8759050238619854661
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 990469533635722383}
+  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: 6222834468854370647}
+  m_Father: {fileID: 7939081406837507707}
+  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_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2427253673183139493
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 990469533635722383}
+  m_CullTransparentMesh: 0
+--- !u!114 &251447804801866711
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 990469533635722383}
+  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_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 21300000, guid: e5c71c3784d578c40a141b3d867c9d64, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 1
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &7422723397548199713
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 990469533635722383}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 251447804801866711}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, Unity.ugui, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+--- !u!1 &1272758750496627887
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6199810951909333521}
+  - component: {fileID: 3111565842126740235}
+  - component: {fileID: 5512589339894746143}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6199810951909333521
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1272758750496627887}
+  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: 2309553677284932256}
+  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: -539, y: -619}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3111565842126740235
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1272758750496627887}
+  m_CullTransparentMesh: 0
+--- !u!114 &5512589339894746143
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1272758750496627887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: Button
+--- !u!1 &4165945703854802821
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6222834468854370647}
+  - component: {fileID: 484606926090599571}
+  - component: {fileID: 871168219531329437}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6222834468854370647
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4165945703854802821}
+  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: 8759050238619854661}
+  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: -539, y: -619}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &484606926090599571
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4165945703854802821}
+  m_CullTransparentMesh: 0
+--- !u!114 &871168219531329437
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4165945703854802821}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: Button
+--- !u!1 &5563620494663147297
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7939081406837507707}
+  - component: {fileID: 1997598337191944859}
+  - component: {fileID: 1789723340349604890}
+  - component: {fileID: 7389196216641441777}
+  - component: {fileID: 564873689378600213}
+  m_Layer: 5
+  m_Name: ButtonsPanel
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7939081406837507707
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5563620494663147297}
+  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: 2309553677284932256}
+  - {fileID: 8759050238619854661}
+  m_Father: {fileID: 1207950007378033945}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1997598337191944859
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5563620494663147297}
+  m_CullTransparentMesh: 0
+--- !u!114 &1789723340349604890
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5563620494663147297}
+  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: 0.392}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!225 &7389196216641441777
+CanvasGroup:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5563620494663147297}
+  m_Enabled: 1
+  m_Alpha: 0
+  m_Interactable: 0
+  m_BlocksRaycasts: 0
+  m_IgnoreParentGroups: 0
+--- !u!114 &564873689378600213
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5563620494663147297}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 15
+    m_Right: 15
+    m_Top: 2
+    m_Bottom: 2
+  m_ChildAlignment: 0
+  m_Spacing: 15
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 1
+  m_ChildControlHeight: 1
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+--- !u!1 &5899404472618114243
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5899404472618114240}
+  - component: {fileID: 5899404472618114366}
+  - component: {fileID: 5899404472618114241}
+  m_Layer: 5
+  m_Name: PlayerName
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5899404472618114240
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404472618114243}
+  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: 5899404473167054275}
+  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.5, y: 0.5}
+--- !u!222 &5899404472618114366
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404472618114243}
+  m_CullTransparentMesh: 0
+--- !u!114 &5899404472618114241
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404472618114243}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 1
+    m_MinSize: 10
+    m_MaxSize: 28
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: New Text
+--- !u!1 &5899404473167054274
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5899404473167054275}
+  - component: {fileID: 5899404473167054398}
+  - component: {fileID: 5899404473167054273}
+  - component: {fileID: 5899404473167054272}
+  - component: {fileID: 3645399546216617269}
+  m_Layer: 5
+  m_Name: OnlineGamePlayerInfo
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5899404473167054275
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404473167054274}
+  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: 5899404472618114240}
+  - {fileID: 1207950007378033945}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 30}
+  m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &5899404473167054398
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404473167054274}
+  m_CullTransparentMesh: 0
+--- !u!114 &5899404473167054273
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404473167054274}
+  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: 0.392}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5899404473167054272
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404473167054274}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 0
+  m_Spacing: 0
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 1
+  m_ChildControlHeight: 1
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+--- !u!114 &3645399546216617269
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404473167054274}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5ca8458b8693e394698498cf18e14b63, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  playerName: {fileID: 5899404472618114241}
+  playerStatus: {fileID: 5899404474515124226}
+  acceptButton: {fileID: 5728626527124731275}
+  declineButton: {fileID: 7422723397548199713}
+  buttonPanel: {fileID: 7939081406837507707}
+  statusPanel: {fileID: 5899404474515124229}
+--- !u!1 &5899404474515124228
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5899404474515124229}
+  - component: {fileID: 5899404474515124227}
+  - component: {fileID: 4797250185070531786}
+  - component: {fileID: 5899404474515124226}
+  - component: {fileID: 6581969705129895909}
+  m_Layer: 5
+  m_Name: PlayerStatus
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5899404474515124229
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404474515124228}
+  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: 1207950007378033945}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5899404474515124227
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404474515124228}
+  m_CullTransparentMesh: 0
+--- !u!114 &4797250185070531786
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404474515124228}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 539bd096d40d9934d916d02e161ee660, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  key: ONLINE_PLAYER_INFO_PLACEHOLDER
+--- !u!114 &5899404474515124226
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404474515124228}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, Unity.ugui,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 1
+    m_MinSize: 10
+    m_MaxSize: 28
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: New Text
+--- !u!225 &6581969705129895909
+CanvasGroup:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5899404474515124228}
+  m_Enabled: 1
+  m_Alpha: 1
+  m_Interactable: 0
+  m_BlocksRaycasts: 0
+  m_IgnoreParentGroups: 0

+ 7 - 0
Assets/Prefab/OnlineGamePlayerInfo.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 319bef5d3ccbd8e49b80e5cf2bf6f919
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 54 - 12
Assets/Scripts/Database.cs

@@ -57,10 +57,8 @@ public class Database : MonoBehaviour {
     internal void SetupNewOnlineGame(int limitPerQuestion, int limitPerPlayer, int toWin, List<InviteSearchResult> inviteUsers) {
         List<int> playerIds = new List<int>();
         inviteUsers.ForEach(i => playerIds.Add(i.GetId()));
-        Debug.Log(playerIds);
-        int currentUser = Database.Instance.GetSignedInUser();
+        int currentUser = Database.Instance.GetSignedInUser().Key;
         playerIds.Add(currentUser);
-        Debug.Log(inviteUsers);
 
         var form = new WWWForm();
         form.AddField("currentUser", currentUser);
@@ -228,22 +226,25 @@ public class Database : MonoBehaviour {
         return res == 1;
     }
 
-    internal int GetSignedInUser() {
-        string sql = "SELECT userId FROM userSettings";
+    internal KeyValuePair<int, string> GetSignedInUser() {
+        string sql = "SELECT userId, username FROM userSettings";
         IDbCommand cmd = GetConnection();
         cmd.CommandText = sql;
         int userId = -1;
+        string username = "";
         IDataReader reader = cmd.ExecuteReader();
         while (reader.Read()) {
             userId = reader.GetInt32(0);
+            username = reader.GetString(1);
         }
 
         CloseConnection();
-        return userId;
+        return new KeyValuePair<int, string>(userId, username);
     }
 
     internal void LogoutUser() {
-        string sql = "UPDATE userSettings SET keepSignedIn = 0";
+        // string sql = "UPDATE userSettings SET keepSignedIn = 0";
+        string sql = "DELETE FROM userSettings";
         IDbCommand cmd = GetConnection();
         cmd.CommandText = sql;
 
@@ -273,13 +274,40 @@ public class Database : MonoBehaviour {
         return this.questionTimer;
     }
 
-    internal List<OnlineGameScript> GetOnlineGames(int userId, GameObject prefab) {
+    internal void DeclineOnlineGame(string userName, int gameId) {
+        WWWForm formData = new WWWForm();
+        formData.AddField("userId", -1);
+        formData.AddField("f", "decline");
+        formData.AddField("gameId", gameId);
+        formData.AddField("userName", userName);
+
+        CallDatabase("OnlineGames.php", formData);
+    }
+
+    internal void AcceptOnlineGame(string userName, int gameId) {
+        WWWForm formData = new WWWForm();
+        formData.AddField("userId", -1);
+        formData.AddField("f", "accept");
+        formData.AddField("gameId",  gameId);
+        formData.AddField("userName", userName);
+
+        CallDatabase("OnlineGames.php", formData);
+    }
+
+    internal List<OnlineGameScript> GetOnlineGames(int userId, string userName, GameObject prefab) {
 
         WWWForm formData = new WWWForm();
         formData.AddField("userId", userId);
+        formData.AddField("f", "list");
+        formData.AddField("gameId", -1);
+        formData.AddField("userName", userName);
 
         string response = CallOnlineDatabaseWithResponse("OnlineGames.php", formData);
 
+        if (response.Equals("No games found for user")) {
+            return null;
+        }
+
         response = "{\"onlineGamesList\" :  " + response + " }";
 
         OnlineGames og = new OnlineGames();
@@ -292,23 +320,37 @@ public class Database : MonoBehaviour {
             onlineGameObject = Instantiate(prefab, new Vector2(0, 0), Quaternion.identity) as GameObject;
             ogs = onlineGameObject.GetComponent<OnlineGameScript>();
             ogs.SetGameStatus(game.status);
+            Int32.TryParse(game.id, out int gameId);
+            List<KeyValuePair<string, string>> playerInfos = GetGameInfo(gameId);
             if (game.status.Equals("PENDING")) {
-                Int32.TryParse(game.id, out int gameId);
-                List<KeyValuePair<string, string>> playerInfos = GetGameInfo(gameId);
                 string extraInfo = "";
                 foreach (KeyValuePair<string, string> s in playerInfos) {
-                    if (s.Value.Equals("WAITING")) {
+                    if (s.Value.Equals("WAITING") && s.Key.Equals(userName)) {
+                        ogs.SetGameStatus("INVITED");
+                        extraInfo += s.Key + ",";
+                    } else if (s.Value.EndsWith("WAITING")) {
                         extraInfo += s.Key + ",";
                     }
                 }
                 extraInfo = extraInfo.TrimEnd(',');
                 ogs.SetGameStatusText(extraInfo);
-            } else if (game.status.Equals("OTHERS_TURN")) {
+
+            } else if (game.status.Equals("OTHERS_TURN")) { // Wont work
                 ogs.SetGameStatusText(game.currentPlayer);
             } else {
                 ogs.SetGameStatusText();
             }
+
+            ogs.SetId(game.id);
+            ogs.SetWinNumber(game.winNumber);
+            ogs.SetAnswerTimer(game.answerTimer);
+            ogs.SetRoundTimeLimit(game.roundTimeLimit);
+            ogs.CurrentPlayer = game.currentPlayer;
+            ogs.SetRound(game.round);
+            ogs.StartDate = game.startDate;
+
             games.Add(ogs);
+           ogs.PlayerInfos = playerInfos;
         }
 
         return games;

+ 72 - 0
Assets/Scripts/GameInfoScript.cs

@@ -0,0 +1,72 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class GameInfoScript : MonoBehaviour {
+
+    public Button cancelButton;
+    public Button acceptButton;
+
+    public GameObject playerInfoPrefab;
+
+    public Transform playersPanel;
+    public Transform gameSettingsPanel;
+
+    // Start is called before the first frame update
+    void Start() {
+        cancelButton.onClick.AddListener(Hide);
+    }
+
+    // Update is called once per frame
+    void Update() {
+
+    }
+
+    internal void SetOnlineData(OnlineGameScript onlineGameScript) {
+        String currentPlayer = Database.Instance.GetSignedInUser().Value;
+
+        foreach (KeyValuePair<string, string> player in onlineGameScript.PlayerInfos) {
+            GameObject slp = Instantiate(playerInfoPrefab, new Vector2(0, 0), Quaternion.identity) as GameObject;
+            OnlinePlayerInfoScript opi = slp.GetComponent<OnlinePlayerInfoScript>();
+            opi.GameId = onlineGameScript.GetId();
+            opi.SetPlayerName(player.Key);
+            if (currentPlayer.Equals(player.Key) && player.Value.Equals("WAITING")) {
+                opi.ShowDecitionButtons();
+            } else {
+                opi.SetPlayerStatus(player.Value);
+            }
+
+            opi.transform.SetParent(playersPanel, false);
+        }
+
+        acceptButton.enabled = false;
+        acceptButton.interactable = false;
+        if ("YOUR_TURN".Equals(onlineGameScript.GameStatus)) {
+            acceptButton.enabled = true;
+            acceptButton.interactable = true;
+        }
+    }
+
+    public void Show() {
+        CanvasGroup cg = this.GetComponent<CanvasGroup>();
+        cg.alpha = 1;
+        cg.interactable = true;
+        cg.blocksRaycasts = true;
+    }
+
+    public void Hide() {
+        CanvasGroup cg = this.GetComponent<CanvasGroup>();
+        cg.alpha = 0;
+        cg.interactable = false;
+        cg.blocksRaycasts = false;
+
+        foreach (OnlinePlayerInfoScript opis in playersPanel.GetComponentsInChildren<OnlinePlayerInfoScript>()) {
+            Destroy(opis);
+            Destroy(opis.gameObject);
+        }
+
+        GameObject.Find("Main Panel").GetComponent<MainMenu>().UpdateOnlineGamesLists();
+    }
+}

+ 11 - 0
Assets/Scripts/GameInfoScript.cs.meta

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

+ 6 - 4
Assets/Scripts/InformationPanelScript.cs

@@ -21,10 +21,12 @@ public class InformationPanelScript : MonoBehaviour
         quitButton.onClick.AddListener(quitButtonAction);
         swedishButton.onClick.AddListener(() => SwitchLanguage(0));
         englishButton.onClick.AddListener(() => SwitchLanguage(1));
-        logoutButton.onClick.AddListener(() => {
-            Database.Instance.LogoutUser();
-            SceneManager.LoadScene("User");
-        });
+        if (logoutButton != null) {
+            logoutButton.onClick.AddListener(() => {
+                Database.Instance.LogoutUser();
+                SceneManager.LoadScene("User");
+            });
+        }
     }
 
     public void SetCurrentPlayer(string playerName) {

+ 1 - 1
Assets/Scripts/InvitePanelScript.cs

@@ -93,7 +93,7 @@ public class InvitePanelScript : MonoBehaviour {
         List<Database.UserName> foundUsers = Database.Instance.GetUsersToInvite(searchField.text);
         InviteSearchResult[] added = searchResultPanel.GetComponentsInChildren<InviteSearchResult>();
         foreach (Database.UserName un in foundUsers) {
-            if (Database.Instance.GetSignedInUser().ToString().Equals(un.id)) {
+            if (Database.Instance.GetSignedInUser().Key.ToString().Equals(un.id)) {
                 continue;
             }
             bool skip = false;

+ 39 - 14
Assets/Scripts/MainMenu.cs

@@ -34,23 +34,57 @@ public class MainMenu : MonoBehaviour {
         gameTypeSlider.onValueChanged.AddListener(SliderChoice);
         localPlayers.onValueChanged.AddListener(LocalPlayersAction);
         startLocalGameButton.onClick.AddListener(StartLocalGame);
-
     }
 
 
     private void Awake() {
         GetGames();
+        UpdateOnlineGamesLists();
+    }
+
+    public void UpdateOnlineGamesLists() {
+        KeyValuePair<int, string> loggedInUser = Database.Instance.GetSignedInUser();
+        Transform onlineGamesList = GameObject.Find("OnlineGamesList").transform;
+
+        foreach (OnlineGameScript ogs in onlineGamesList.GetComponentsInChildren<OnlineGameScript>()) {
+            Destroy(ogs);
+            Destroy(ogs.gameObject);
+        }
+
+        int onlineIndex = 1;
+        if (checkInternetConnection()) {
+            List<OnlineGameScript> onlineGames = Database.Instance.GetOnlineGames(loggedInUser.Key, loggedInUser.Value, onlineGamePrefab);
+            if (onlineGames != null) {
+                foreach (OnlineGameScript ogs in onlineGames) {
+                    ogs.transform.SetParent(onlineGamesList, false);
+                    ogs.transform.SetSiblingIndex(onlineIndex++);
+                }
+            }
+        } else {
+            // Display no internet information
+            Debug.Log("No internet");
+        }
     }
+
     private void GetGames() {
-        loggedInUserId = Database.Instance.GetSignedInUser();
+        KeyValuePair<int, string> loggedInUser = Database.Instance.GetSignedInUser();
         List<LocalGameScript> localGames = Database.Instance.GetLocalGames(localGamePrefab);
         Transform localGamesList = GameObject.Find("LocalGamesList").transform;
         Transform finishedGamesList = GameObject.Find("FinishedGamesList").transform;
-        Transform onlineGamesList = GameObject.Find("OnlineGamesList").transform;
 
+        foreach(LocalGameScript lgs in localGamesList.GetComponentsInChildren<LocalGameScript>()) {
+            Destroy(lgs);
+            Destroy(lgs.gameObject);
+        }
+
+        foreach (LocalGameScript lgs in finishedGamesList.GetComponentsInChildren<LocalGameScript>()) {
+            Destroy(lgs);
+            Destroy(lgs.gameObject);
+        }
+
+       
         int localIndex = 1;
         int finishedIndex = 1;
-        int onlineIndex = 1;
         foreach (LocalGameScript lgs in localGames) {
             if (lgs.FinishedDate.Equals("")) {
                 lgs.transform.SetParent(localGamesList.transform, false);
@@ -62,16 +96,7 @@ public class MainMenu : MonoBehaviour {
             }
 
         }
-        if (checkInternetConnection()) {
-            List<OnlineGameScript> onlineGames = Database.Instance.GetOnlineGames(loggedInUserId, onlineGamePrefab);
-            foreach (OnlineGameScript ogs in onlineGames) {
-                ogs.transform.SetParent(onlineGamesList, false);
-                ogs.transform.SetSiblingIndex(onlineIndex++);
-            }
-        } else {
-            // Display no internet information
-            Debug.Log("No internet");
-        }
+
     }
 
     private bool checkInternetConnection() {

+ 46 - 16
Assets/Scripts/OnlineGameScript.cs

@@ -1,12 +1,13 @@
 using System;
 using System.Collections.Generic;
 using UnityEngine;
+using UnityEngine.Events;
 using UnityEngine.UI;
 
 public class OnlineGameScript : MonoBehaviour {
 
     // Status color Pending, not your turn, your turn, declined
-    List<Color32> statusColors = new List<Color32>() { new Color32(234, 164, 17, 100), new Color32(255, 255, 24, 175), new Color32(0, 255, 0, 100), new Color32(219, 12, 65, 100) };
+    List<Color32> statusColors = new List<Color32>() { new Color32(234, 164, 17, 100), new Color32(255, 255, 24, 175), new Color32(0, 255, 0, 100), new Color32(219, 12, 65, 100), new Color32(12,12,219,150) };
     public Text gameStatusText;
     public Text gameTitleText;
 
@@ -20,7 +21,16 @@ public class OnlineGameScript : MonoBehaviour {
     private string LastPlayedDate;
     private string finishedDate;
 
-    public int Id { get => id; set => id = value; }
+    private List<KeyValuePair<string, string>> playerInfos;
+
+    public int GetId() {
+        return id;
+    }
+
+    public void SetId(int value) {
+        id = value;
+    }
+
     public int WinNumber { get => winNumber; set => winNumber = value; }
     public int AnswerTimer { get => answerTimer; set => answerTimer = value; }
     public int RoundTimeLimit { get => roundTimeLimit; set => roundTimeLimit = value; }
@@ -34,32 +44,41 @@ public class OnlineGameScript : MonoBehaviour {
         set {
             gameStatus = value;
             SetColor(gameStatus);
+            SetGameStatusText();
         }
     }
 
-    private string PENDING = "ONLINE_GAME_STATUS_VALUE_PENDING";
-    private string OTHERS_TURN = "ONLINE_GAME_STATUS_VALUE_OTHERS_TURN";
-    private string DECLINED = "ONLINE_GAME_STATUS_VALUE_DECLINED";
-    private string YOUR_TURN = "ONLINE_GAME_STATUS_VALUE_YOUR_TURN";
+    public List<KeyValuePair<string, string>> PlayerInfos { get => playerInfos; set => playerInfos = value; }
+
+    private string PENDING_TITLE = "ONLINE_GAME_STATUS_TITLE_VALUE_PENDING";
+
+    private string PENDING = "ONLINE_GAME_STATUS_PENDING";
+    private string OTHERS_TURN = "ONLINE_GAME_STATUS_OTHERS_TURN";
+    private string DECLINED = "ONLINE_GAME_STATUS_DECLINED";
+    private string YOUR_TURN = "ONLINE_GAME_STATUS_YOUR_TURN";
+    private string INVITED = "ONLINE_GAME_STATUS_INVITED";
 
     // behövs nog en partialy declined status också, om en av fyra tackar nej kanske man viss spela ändå.
     // behövs också en med dina inbjudningar.
 
-    public string gameStatus;
+    private Button gameInfoButton;
 
-    // Start is called before the first frame update
-    void Start() {
-        
+    private void Start() {
+        gameInfoButton = this.GetComponent<Button>();
+        gameInfoButton.onClick.AddListener(ShowInfoPanel);
     }
 
-    // Update is called once per frame
-    void Update() {
-
+    private void ShowInfoPanel() {
+        GameObject gameInfoPanel = GameObject.Find("GameInfoPanel");
+        GameInfoScript gameInfoScript = gameInfoPanel.GetComponent<GameInfoScript>();
+        gameInfoScript.SetOnlineData(this);
+        gameInfoScript.Show();
     }
 
+    public string gameStatus;
+
     private void SetColor(string status) {
         Image image = this.GetComponent<Image>();
-        Debug.Log(status);
         if ("PENDING".Equals(status)) {
             image.color = statusColors[0];
         } else if ("YOUR_TURN".Equals(status)) {
@@ -68,6 +87,8 @@ public class OnlineGameScript : MonoBehaviour {
             image.color = statusColors[2];
         } else if ("DECLINED".Equals(status)) {
             image.color = statusColors[3];
+        } else if ("INVITED".Equals(status)) {
+            image.color = statusColors[4];
         } else {
             image.color = new Color32(100, 100, 100, 100);
         }
@@ -80,24 +101,33 @@ public class OnlineGameScript : MonoBehaviour {
     public void SetGameStatusText() {
         SetGameStatusText("");
     }
+
     public void SetGameStatusText(string extraInfo) {
         if ("PENDING".Equals(GameStatus)) {
+            gameStatusText.gameObject.GetComponent<TextLocalization>().key = PENDING;
             gameStatusText.text = LocalizationManager.Instance.GetText(PENDING);
+            SetTitleText(LocalizationManager.Instance.GetText(PENDING_TITLE));
         } else if ("YOUR_TURN".Equals(GameStatus)) {
+            gameStatusText.gameObject.GetComponent<TextLocalization>().key = YOUR_TURN;
             gameStatusText.text = LocalizationManager.Instance.GetText(YOUR_TURN);
         } else if ("OTHERS_TURN".Equals(GameStatus)) {
+            gameStatusText.gameObject.GetComponent<TextLocalization>().key = OTHERS_TURN;
             string message = LocalizationManager.Instance.GetText(OTHERS_TURN);
             gameStatusText.text = String.Format(message, extraInfo);
         } else if ("DECLINED".Equals(GameStatus)) {
+            gameStatusText.gameObject.GetComponent<TextLocalization>().key = DECLINED;
             gameStatusText.text = LocalizationManager.Instance.GetText(DECLINED);
-        } else {
+        } else if ("INVITED".Equals(GameStatus)) {
+            gameStatusText.gameObject.GetComponent<TextLocalization>().key = INVITED;
+            gameStatusText.text = LocalizationManager.Instance.GetText(INVITED);
+        } else { 
             gameStatusText.text = "SOMETHING WRONG WITH STATUS TITLE FROM TEXT " + GameStatus;
         }
     }
 
     public void SetId(string id) {
         Int32.TryParse(id, out int intId);
-        Id = intId;
+        SetId(intId);
     }
 
     public void SetWinNumber(string winNumber) {

+ 66 - 0
Assets/Scripts/OnlinePlayerInfoScript.cs

@@ -0,0 +1,66 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class OnlinePlayerInfoScript : MonoBehaviour
+{
+
+    public Text playerName;
+    public Text playerStatus;
+
+    public Button acceptButton;
+    public Button declineButton;
+
+    public Transform buttonPanel;
+    public Transform statusPanel;
+
+    private int gameId;
+
+    private string PENDING = "ONLINE_PLAYER_STATUS_WAITING";
+    private string ACCEPTED = "ONLINE_PLAYER_STATUS_ACCEPTED";
+    private string DECLINED = "ONLINE_PLAYER_STATUS_DECLINED";
+
+    public int GameId { get => gameId; set => gameId = value; }
+
+    private void Start() {
+        acceptButton.onClick.AddListener(AcceptGame);
+        declineButton.onClick.AddListener(DeclineGame);
+    }
+
+    private void DeclineGame() {
+        Database.Instance.DeclineOnlineGame(playerName.text, gameId);
+    }
+
+    private void AcceptGame() {
+        Database.Instance.AcceptOnlineGame(playerName.text, gameId);
+    }
+
+    public void SetPlayerName(string name) {
+        playerName.text = name;
+    }
+
+
+    public void SetPlayerStatus(string status) {
+        if ("WAITING".Equals(status)) {
+            playerStatus.GetComponent<TextLocalization>().key = PENDING;
+            playerStatus.text = LocalizationManager.Instance.GetText(PENDING);
+        } else if ("ACCEPTED".Equals(status)) {
+            playerStatus.GetComponent<TextLocalization>().key = ACCEPTED;
+            playerStatus.text = LocalizationManager.Instance.GetText(ACCEPTED);
+        } else if ("DECLINED".Equals(status)) {
+            playerStatus.GetComponent<TextLocalization>().key = DECLINED;
+            playerStatus.text = LocalizationManager.Instance.GetText(DECLINED);
+        }
+    }
+
+    internal void ShowDecitionButtons() {
+        statusPanel.GetComponent<CanvasGroup>().alpha = 0f;
+        CanvasGroup buttonCanvasGroup = buttonPanel.GetComponent<CanvasGroup>();
+
+        buttonCanvasGroup.alpha = 1f;
+        buttonCanvasGroup.interactable = true;
+        buttonCanvasGroup.blocksRaycasts = true;
+    }
+}

+ 11 - 0
Assets/Scripts/OnlinePlayerInfoScript.cs.meta

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

+ 5 - 1
Assets/Translations/ENGLISH.xml

@@ -75,8 +75,12 @@
   <text key="KEEP_SIGNED_IN_TEXT">Keep me signed in</text>
   <text key="ONLINE_GAME_STATUS_TITLE_VALUE_PENDING">Pending answers</text>
   <text key="ONLINE_GAME_STATUS_TITLE">Status</text>
-  <text key="ONLINE_GAME_STATUS_PENDING">Waiting for player {0}</text>
+  <text key="ONLINE_GAME_STATUS_PENDING">Waiting for other player</text>
   <text key="ONLINE_GAME_STATUS_YOUR_TURN">Your turn</text>
   <text key="ONLINE_GAME_STATUS_ANOTHER_PLAYER">{0}s turn</text>
   <text key="ONLINE_GAME_STATUS_DECLINED">Game invite declined</text>
+  <text key="ONLINE_GAME_STATUS_INVITED">You are invited</text>
+  <text key="ONLINE_PLAYER_STATUS_WAITING">Waiting for answer</text>
+  <text key="ONLINE_PLAYER_STATUS_ACCEPTED">Accepted</text>
+  <text key="ONLINE_PLAYER_STATUS_DECLINED">Denied</text>
 </Language>

+ 6 - 2
Assets/Translations/SWEDISH.xml

@@ -74,10 +74,14 @@
   <text key="LOGIN_WRONG_USERNAME_PASSWORD">Felaktigt användarnamn/lösenord</text>
   <text key="LOGIN_USER_NOT_FOUND">Användaren hittades inte</text>
   <text key="KEEP_SIGNED_IN_TEXT">Håll mig inloggad</text>
-  <text key="ONLINE_GAME_STATUS_VALUE_PENDING">Väntar svar</text>
+  <text key="ONLINE_GAME_STATUS_TITLE_VALUE_PENDING">Väntar svar</text>
   <text key="ONLINE_GAME_STATUS_TITLE">Status</text>
-  <text key="ONLINE_GAME_STATUS_PENDING">Väntar på spelare {0}</text>
+  <text key="ONLINE_GAME_STATUS_PENDING">Väntar på andra spelare</text>
   <text key="ONLINE_GAME_STATUS_YOUR_TURN">Din tur</text>
   <text key="ONLINE_GAME_STATUS_ANOTHER_PLAYER">{0}s tur</text>
   <text key="ONLINE_GAME_STATUS_DECLINED">Spelet nekat</text>
+  <text key="ONLINE_GAME_STATUS_INVITED">Du är inbjuden</text>
+  <text key="ONLINE_PLAYER_STATUS_WAITING">Väntar på svar</text>
+  <text key="ONLINE_PLAYER_STATUS_ACCEPTED">Accepterad</text>
+  <text key="ONLINE_PLAYER_STATUS_DECLINED">Nekat</text>
 </Language>

BIN
Assets/narKampenLocal.db


+ 1 - 1
dbFiles/NewOnlineGame.php

@@ -61,7 +61,7 @@
 		}
 	}
 	$playerPartInsertSql = rtrim($playerPartInsertSql,",");
-	$playerSql = "INSERT INTO gamePlayers (gameId, playerId, userLockedQuestions, questionsLost, status) VALUES $playerPartInsertSql"
+	$playerSql = "INSERT INTO gamePlayers (gameId, playerId, userLockedQuestions, questionsLost, status) VALUES $playerPartInsertSql";
 	
 	$result = mysqli_query($conn,$playerSql);
 	$error = mysqli_error($conn);

+ 60 - 15
dbFiles/OnlineGames.php

@@ -12,24 +12,69 @@
 	mysqli_set_charset($conn,'utf8');
 	
 	$userId = $conn->real_escape_string($_POST['userId']);
-		
-	$sql = "SELECT * FROM game WHERE id IN (SELECT gameId FROM gamePlayers WHERE playerId = $userId)";
-	$result = $conn->query($sql);
-	
+	$callFunction = $conn->real_escape_string($_POST['f']);
+	$gameId = $conn->real_escape_string($_POST['gameId']);
+	$userName = $conn->real_escape_string($_POST['userName']);
 	
-	if ($result->num_rows > 0) {
-		$returnArray = array();
-		$i = 0;
-		while ($data = $result->fetch_assoc()) {
-			foreach ($data as $key => $value) {
-				$returnArray[$i][$key] = $value;
+	if ($callFunction === "list"){	
+		$sql = "SELECT * FROM game WHERE id IN (SELECT gameId FROM gamePlayers WHERE playerId = $userId)";
+		$result = $conn->query($sql);
+		
+		
+		if ($result->num_rows > 0) {
+			$returnArray = array();
+			$i = 0;
+			while ($data = $result->fetch_assoc()) {
+				foreach ($data as $key => $value) {
+					$returnArray[$i][$key] = $value;
+				}
+				$i++;
+			}
+			echo json_encode($returnArray);
+			
+		} else {
+			echo "No games found for user";
+		}
+	} else if ($callFunction === "decline"){
+		$sql = "UPDATE gamePlayers SET status = 'DECLINED' WHERE gameId = $gameId AND playerId = (SELECT id from users WHERE username = '$userName')";
+		$result = $conn->query($sql);
+		if (!$result) {
+			echo "UPDATE player status failed " . $conn->error;
+		} else {
+			$sql = "SELECT count(*) FROM gamePlayers WHERE gameId = $gameId AND status NOT LIKE 'DECLINED'";
+			$result = $conn->query($sql);
+			while ($data = $result->fetch_assoc()) {
+				if ($data[0] == 1) { // Alla utom den som startade spelet har nekat, sätt status till declined på game
+					$sql = "UPDATE game SET status = 'DECLINED' WHERE id = $gameId";
+					$result = $conn->query($sql);
+					if (!$result) {
+						echo "UPDATE game status failed " . $conn->error;
+					}
+				}
+			}
+		}
+	} else if ($callFunction === "accept") {
+		$sql = "UPDATE gamePlayers SET status = 'ACCEPTED' WHERE gameId = $gameId AND playerId = (SELECT id from users WHERE username = '$userName')";
+		$result = $conn->query($sql);
+		if (!$result) {
+			echo $conn->error;
+		} else {
+			$sql = "SELECT * FROM gamePlayers WHERE gameId = $gameId";
+			$result = $conn->query($sql);
+			while ($data = $result->fetch_assoc()) {
+				$done = true;
+				if ($data['status'] != "ACCEPTED") {
+					$done = false;
+				}
+			}
+			if ($done) {
+				$sql = "UPDATE game SET status = 'ACTIVE'";
+				$result = $conn->query($sql);
+				if (!$result) {
+					echo "updating game status active failed " . $conn->error;
+				}
 			}
-			$i++;
 		}
-		echo json_encode($returnArray);
-		
-	} else {
-		echo "No games found for user";
 	}
 	$conn->close();
 	

Некоторые файлы не были показаны из-за большого количества измененных файлов