Browse Source

Improve Main Menu and catch RpcException

new_protocol
KeyKoder 5 years ago
parent
commit
433e0d7514
  1. 532
      unity/Assets/Prefabs/Popup.prefab
  2. 7
      unity/Assets/Prefabs/Popup.prefab.meta
  3. 196
      unity/Assets/Scenes/MainMenu.unity
  4. 104
      unity/Assets/Scripts/MainMenuController.cs
  5. 9
      unity/Assets/Scripts/Popup.cs
  6. 11
      unity/Assets/Scripts/Popup.cs.meta
  7. 5
      unity/Assets/Scripts/Scrollable.cs
  8. 31
      unity/Assets/Scripts/Utils.cs
  9. 11
      unity/Assets/Scripts/Utils.cs.meta

532
unity/Assets/Prefabs/Popup.prefab

@ -0,0 +1,532 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &15293700811766252
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4758311848516165983}
- component: {fileID: 6304532030597566880}
- component: {fileID: 1946094537576148173}
m_Layer: 5
m_Name: Content
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4758311848516165983
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 15293700811766252}
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: 7803026691445115441}
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: 0, y: -8.93}
m_SizeDelta: {x: 210, y: 78}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6304532030597566880
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 15293700811766252}
m_CullTransparentMesh: 0
--- !u!114 &1946094537576148173
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 15293700811766252}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 12
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 0
m_MaxSize: 116
m_Alignment: 1
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Content
--- !u!1 &3283256523379237804
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7803026691445115441}
- component: {fileID: 3064464144427328152}
- component: {fileID: 1203205559106359025}
- component: {fileID: 2542161276471336851}
m_Layer: 5
m_Name: Popup
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7803026691445115441
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3283256523379237804}
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: 6029894125761808083}
- {fileID: 538462290789497597}
- {fileID: 4758311848516165983}
- {fileID: 8648826011013550574}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 250, y: 150}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3064464144427328152
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3283256523379237804}
m_CullTransparentMesh: 0
--- !u!114 &1203205559106359025
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3283256523379237804}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.8235294}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!114 &2542161276471336851
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3283256523379237804}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6c15065aa0bb2554e806fb03cc7cc73f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &6998921899922185997
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 538462290789497597}
- component: {fileID: 6334635354973565068}
- component: {fileID: 5577362376080419396}
m_Layer: 5
m_Name: Title
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &538462290789497597
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6998921899922185997}
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: 7803026691445115441}
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, y: 49.6}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6334635354973565068
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6998921899922185997}
m_CullTransparentMesh: 0
--- !u!114 &5577362376080419396
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6998921899922185997}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 16
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 0
m_MaxSize: 116
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Title
--- !u!1 &7600884251207249602
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8648826011013550574}
- component: {fileID: 5317635889133439471}
- component: {fileID: 434879015113683303}
- component: {fileID: 2970028946207074543}
m_Layer: 5
m_Name: Ok
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8648826011013550574
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7600884251207249602}
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: 1588089114783223580}
m_Father: {fileID: 7803026691445115441}
m_RootOrder: 3
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: -60}
m_SizeDelta: {x: 165.08813, y: 15.477013}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5317635889133439471
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7600884251207249602}
m_CullTransparentMesh: 0
--- !u!114 &434879015113683303
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7600884251207249602}
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: 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 &2970028946207074543
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7600884251207249602}
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: 0.39607844}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 0.4}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.4}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 0.4}
m_DisabledColor: {r: 0.31132078, g: 0.31132078, b: 0.31132078, a: 0.4}
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: 434879015113683303}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2542161276471336851}
m_TargetAssemblyTypeName: Popup, Assembly-CSharp
m_MethodName: Close
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &8679003008479837781
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6029894125761808083}
- component: {fileID: 2251557333897853139}
- component: {fileID: 7349897341966798717}
m_Layer: 5
m_Name: BlockInteractions
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6029894125761808083
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8679003008479837781}
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: 7803026691445115441}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 2500, y: 1500}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2251557333897853139
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8679003008479837781}
m_CullTransparentMesh: 0
--- !u!114 &7349897341966798717
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8679003008479837781}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!1 &8721975387948940392
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1588089114783223580}
- component: {fileID: 7639362977953210163}
- component: {fileID: 419677965399468075}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1588089114783223580
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8721975387948940392}
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: 8648826011013550574}
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 &7639362977953210163
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8721975387948940392}
m_CullTransparentMesh: 0
--- !u!114 &419677965399468075
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8721975387948940392}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 12
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 0
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Ok

7
unity/Assets/Prefabs/Popup.prefab.meta

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

196
unity/Assets/Scenes/MainMenu.unity

@ -610,6 +610,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 451966352} m_GameObject: {fileID: 451966352}
m_CullTransparentMesh: 0 m_CullTransparentMesh: 0
--- !u!1 &462409821
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 462409822}
- component: {fileID: 462409824}
- component: {fileID: 462409823}
m_Layer: 5
m_Name: Authors
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &462409822
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 462409821}
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: 1783333716}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 95, y: -12.5}
m_SizeDelta: {x: 150, y: 25}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &462409823
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 462409821}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 12
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 102
m_Alignment: 5
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Me, myself, I
--- !u!222 &462409824
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 462409821}
m_CullTransparentMesh: 0
--- !u!1 &475673232 --- !u!1 &475673232
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -924,6 +1003,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: dc417d59709b83f40a9f4f9541441269, type: 3} m_Script: {fileID: 11500000, guid: dc417d59709b83f40a9f4f9541441269, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
ignoreElements: 1
--- !u!1 &603105757 --- !u!1 &603105757
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2333,6 +2413,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: dc417d59709b83f40a9f4f9541441269, type: 3} m_Script: {fileID: 11500000, guid: dc417d59709b83f40a9f4f9541441269, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
ignoreElements: 1
--- !u!114 &1567409294 --- !u!114 &1567409294
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2698,7 +2779,7 @@ GameObject:
- component: {fileID: 1751519031} - component: {fileID: 1751519031}
- component: {fileID: 1751519030} - component: {fileID: 1751519030}
m_Layer: 5 m_Layer: 5
m_Name: Text m_Name: Name
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -2718,11 +2799,11 @@ RectTransform:
m_Father: {fileID: 1783333716} m_Father: {fileID: 1783333716}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 5, y: 8}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 150, y: 25}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0, y: 0.5}
--- !u!114 &1751519030 --- !u!114 &1751519030
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2750,13 +2831,13 @@ MonoBehaviour:
m_BestFit: 0 m_BestFit: 0
m_MinSize: 1 m_MinSize: 1
m_MaxSize: 40 m_MaxSize: 40
m_Alignment: 4 m_Alignment: 3
m_AlignByGeometry: 0 m_AlignByGeometry: 0
m_RichText: 1 m_RichText: 1
m_HorizontalOverflow: 0 m_HorizontalOverflow: 0
m_VerticalOverflow: 0 m_VerticalOverflow: 0
m_LineSpacing: 1 m_LineSpacing: 1
m_Text: Text m_Text: Name
--- !u!222 &1751519031 --- !u!222 &1751519031
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2765,6 +2846,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1751519028} m_GameObject: {fileID: 1751519028}
m_CullTransparentMesh: 0 m_CullTransparentMesh: 0
--- !u!1 &1771254980
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1771254981}
- component: {fileID: 1771254983}
- component: {fileID: 1771254982}
m_Layer: 5
m_Name: Version
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1771254981
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1771254980}
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: 1783333716}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 5, y: -6}
m_SizeDelta: {x: 150, y: 25}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &1771254982
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1771254980}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 12
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 102
m_Alignment: 3
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: v0.0.0
--- !u!222 &1771254983
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1771254980}
m_CullTransparentMesh: 0
--- !u!1 &1783333715 --- !u!1 &1783333715
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2796,12 +2956,14 @@ RectTransform:
m_LocalScale: {x: 0.8450705, y: 0.8450705, z: 0.8450705} m_LocalScale: {x: 0.8450705, y: 0.8450705, z: 0.8450705}
m_Children: m_Children:
- {fileID: 1751519029} - {fileID: 1751519029}
- {fileID: 1771254981}
- {fileID: 462409822}
m_Father: {fileID: 513979424} m_Father: {fileID: 513979424}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 125, y: -25.000015} m_AnchoredPosition: {x: 125, y: -25}
m_SizeDelta: {x: 250, y: 50} m_SizeDelta: {x: 250, y: 50}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1783333717 --- !u!114 &1783333717
@ -2843,7 +3005,7 @@ MonoBehaviour:
m_SelectedTrigger: Selected m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled m_DisabledTrigger: Disabled
m_Interactable: 1 m_Interactable: 1
m_TargetGraphic: {fileID: 1751519030} m_TargetGraphic: {fileID: 1783333718}
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:
@ -3767,7 +3929,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 110} m_AnchoredPosition: {x: 0, y: 110}
m_SizeDelta: {x: 533, y: 100} m_SizeDelta: {x: 315.96, y: 100}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2120702455 --- !u!114 &2120702455
MonoBehaviour: MonoBehaviour:
@ -3791,17 +3953,17 @@ MonoBehaviour:
m_Calls: [] m_Calls: []
m_FontData: m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 48 m_FontSize: 10
m_FontStyle: 0 m_FontStyle: 0
m_BestFit: 0 m_BestFit: 1
m_MinSize: 4 m_MinSize: 10
m_MaxSize: 102 m_MaxSize: 50
m_Alignment: 4 m_Alignment: 4
m_AlignByGeometry: 0 m_AlignByGeometry: 0
m_RichText: 1 m_RichText: 1
m_HorizontalOverflow: 0 m_HorizontalOverflow: 0
m_VerticalOverflow: 0 m_VerticalOverflow: 0
m_LineSpacing: 1 m_LineSpacing: 80
m_Text: '[ServerName]' m_Text: '[ServerName]'
--- !u!222 &2120702456 --- !u!222 &2120702456
CanvasRenderer: CanvasRenderer:
@ -3924,7 +4086,7 @@ MonoBehaviour:
m_SelectedTrigger: Selected m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled m_DisabledTrigger: Disabled
m_Interactable: 1 m_Interactable: 1
m_TargetGraphic: {fileID: 1371957802574010001} m_TargetGraphic: {fileID: 640861489022905312}
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:

104
unity/Assets/Scripts/MainMenuController.cs

@ -2,53 +2,79 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using Grpc.Core;
public class MainMenuController : MonoBehaviour { public class MainMenuController : MonoBehaviour {
[Header("Prefabs")]
public GameObject popupPrefab;
[Header("Other")]
public GameObject mainMenu; public GameObject mainMenu;
public GameObject serverMenu; public GameObject serverMenu;
public GameObject lobbyMenu; public GameObject lobbyMenu;
public InputField username; private InputField username;
public InputField ip; private InputField ip;
public InputField port; private InputField port;
private Text serverName;
private GameObject serverScroll;
private Text lobbyCode;
private GameObject lobbyScroll;
void Start() { void Start() {
for(int i = 5; i < 0; i++){ for(int i = 5; i < 0; i++){
Debug.Log(i); Debug.Log(i);
} }
// Simulate Lobbies in a Server // Simulate Lobbies in a Server
for (int i = 0; i < 2; i++) { //for (int i = 0; i < 2; i++) {
var lobby = Instantiate(serverMenu.transform.GetChild(2).GetChild(0).GetChild(0), serverMenu.transform.GetChild(2).GetChild(0)); // var lobby = Instantiate(serverMenu.transform.Find("BaseElement"), serverMenu.transform.Find("Content"));
lobby.GetComponentInChildren<Text>().text = "LBY" + Random.Range(0, 10) + Random.Range(0, 10) + Random.Range(0, 10); // lobby.GetComponentInChildren<Text>().text = "LBY" + Random.Range(0, 10) + Random.Range(0, 10) + Random.Range(0, 10);
lobby.gameObject.SetActive(true); // lobby.gameObject.SetActive(true);
} //}
mainMenu.SetActive(true); mainMenu.SetActive(true);
serverMenu.SetActive(false); serverMenu.SetActive(false);
lobbyMenu.SetActive(false); lobbyMenu.SetActive(false);
username = mainMenu.FindRecursive("Username")?.GetComponent<InputField>();
ip = mainMenu.FindRecursive("IPAddress")?.GetComponent<InputField>();
port = mainMenu.FindRecursive("Port")?.GetComponent<InputField>();
serverName = serverMenu.FindRecursive("ServerName")?.GetComponent<Text>();
serverScroll = serverMenu.FindRecursive("Content");
lobbyCode = lobbyMenu.FindRecursive("LobbyCode")?.GetComponent<Text>();
lobbyScroll = lobbyMenu.FindRecursive("Content");
} }
void Update() {} void Update() {}
public void ConnectServer() { public void ConnectServer() {
var conn = Client.GetConnection(); try {
if (conn == null) { var conn = Client.GetConnection();
if (ip.text != "" && port.text != "") if (conn == null) {
Client.Connect(username.text, ip.text + ":" + port.text); if (ip.text != "" && port.text != "")
else Client.Connect(username.text, ip.text + ":" + port.text);
Client.Connect(username.text); else
conn = Client.GetConnection(); Client.Connect(username.text);
} conn = Client.GetConnection();
}
foreach (Game.Game g in conn.getGames()) {
Debug.Log(g.ToString());
}
if (conn != null) { if (conn != null) {
mainMenu.SetActive(false); mainMenu.SetActive(false);
serverMenu.SetActive(true); serverMenu.SetActive(true);
lobbyMenu.SetActive(false); lobbyMenu.SetActive(false);
ReloadMenu(); ReloadMenu();
}
} catch(RpcException e) {
if(e.StatusCode == StatusCode.Unavailable) {
var popup = Instantiate(popupPrefab, Vector2.zero, Quaternion.identity, mainMenu.transform);
popup.transform.localPosition = Vector2.zero;
popup.transform.Find("Title").GetComponent<Text>().text = "Error";
popup.transform.Find("Content").GetComponent<Text>().text = "Server unavailable.\nPlease retry later or contact the server admin.";
}
} }
} }
@ -71,7 +97,7 @@ public class MainMenuController : MonoBehaviour {
mainMenu.SetActive(false); mainMenu.SetActive(false);
serverMenu.SetActive(false); serverMenu.SetActive(false);
lobbyMenu.SetActive(true); lobbyMenu.SetActive(true);
lobbyMenu.transform.GetChild(1).gameObject.GetComponent<Text>().text = "Code: " + code; lobbyCode.text = "Code: " + code;
ReloadMenu(); ReloadMenu();
} }
} }
@ -86,7 +112,7 @@ public class MainMenuController : MonoBehaviour {
mainMenu.SetActive(false); mainMenu.SetActive(false);
serverMenu.SetActive(false); serverMenu.SetActive(false);
lobbyMenu.SetActive(true); lobbyMenu.SetActive(true);
lobbyMenu.transform.GetChild(1).gameObject.GetComponent<Text>().text = "Code: " + lobby; lobbyCode.text = "Code: " + lobby;
ReloadMenu(); ReloadMenu();
} }
} }
@ -94,7 +120,7 @@ public class MainMenuController : MonoBehaviour {
public void LeaveLobby() { public void LeaveLobby() {
var conn = Client.GetConnection(); var conn = Client.GetConnection();
if (conn == null) { if (conn != null) {
var lobby = conn.GetLobby(); var lobby = conn.GetLobby();
if (lobby != null) { if (lobby != null) {
//conn.LeaveLobby(); //conn.LeaveLobby();
@ -108,22 +134,34 @@ public class MainMenuController : MonoBehaviour {
public void ReloadMenu() { public void ReloadMenu() {
if(serverMenu.activeSelf) { if(serverMenu.activeSelf) {
for (int i = serverMenu.transform.GetChild(2).GetChild(0).childCount-1; i >= 1 ; i--) { for (int i = serverScroll.transform.childCount-1; i >= 1 ; i--) {
DestroyImmediate(serverMenu.transform.GetChild(2).GetChild(0).GetChild(i).gameObject); DestroyImmediate(serverScroll.transform.GetChild(i).gameObject);
} }
// Simulate Lobbies in a Server // Simulate Lobbies in a Server
for (int i = 0; i < Random.Range(2, 15); i++) { for (int i = 0; i < Random.Range(2, 15); i++) {
var lobby = Instantiate(serverMenu.transform.GetChild(2).GetChild(0).GetChild(0), serverMenu.transform.GetChild(2).GetChild(0)); var lobby = Instantiate(serverScroll.transform.GetChild(0), serverScroll.transform);
lobby.GetComponentInChildren<Text>().text = "LBY" + Random.Range(0, 10) + Random.Range(0, 10) + Random.Range(0, 10); lobby.GetComponentInChildren<Text>().text = "LBY" + Random.Range(0, 10) + Random.Range(0, 10) + Random.Range(0, 10);
lobby.gameObject.SetActive(true); lobby.gameObject.SetActive(true);
} }
serverName.text = Client.GetConnection().Name();
serverMenu.GetComponentInChildren<Scrollable>().Reload(); serverMenu.GetComponentInChildren<Scrollable>().Reload();
} }
if (lobbyMenu.activeSelf) { if (lobbyMenu.activeSelf) {
for (int i = lobbyMenu.transform.GetChild(2).GetChild(0).childCount-1; i >= 1; i--) { for (int i = lobbyScroll.transform.childCount-1; i >= 1; i--) {
DestroyImmediate(lobbyMenu.transform.GetChild(2).GetChild(0).GetChild(i).gameObject); DestroyImmediate(lobbyScroll.transform.GetChild(i).gameObject);
} }
// Add Lobby Games to list when function exists // Add Lobby Games to list when function exists
var conn = Client.GetConnection();
if(conn != null) {
var games = conn.getGames();
foreach(Game.Game game in games) {
var gameGO = Instantiate(lobbyScroll.transform.GetChild(0), lobbyScroll.transform);
gameGO.GetComponentsInChildren<Text>()[0].text = game.Name;
gameGO.GetComponentsInChildren<Text>()[1].text = game.Version;
gameGO.GetComponentsInChildren<Text>()[2].text = string.Join(", ", game.Authors);
gameGO.gameObject.SetActive(true);
}
}
lobbyMenu.GetComponentInChildren<Scrollable>().Reload(); lobbyMenu.GetComponentInChildren<Scrollable>().Reload();
} }
} }

9
unity/Assets/Scripts/Popup.cs

@ -0,0 +1,9 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Popup : MonoBehaviour {
public void Close() {
Destroy(gameObject);
}
}

11
unity/Assets/Scripts/Popup.cs.meta

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

5
unity/Assets/Scripts/Scrollable.cs

@ -4,14 +4,13 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
public class Scrollable : MonoBehaviour { public class Scrollable : MonoBehaviour {
public const float size = 35f; public int ignoreElements = 0;
void Start() { void Start() {
Reload(); Reload();
} }
public void Reload() { public void Reload() {
var sizeY = (transform.childCount-1) * (transform.GetChild(0).GetComponent<RectTransform>().sizeDelta.y + GetComponent<VerticalLayoutGroup>().spacing); var sizeY = (transform.childCount-ignoreElements) * (transform.GetChild(0).GetComponent<RectTransform>().sizeDelta.y + GetComponent<VerticalLayoutGroup>().spacing);
Debug.Log(transform.childCount + "sizeY: "+sizeY);
GetComponent<RectTransform>().offsetMax = Vector2.zero; GetComponent<RectTransform>().offsetMax = Vector2.zero;
GetComponent<RectTransform>().offsetMin = new Vector2(GetComponent<RectTransform>().offsetMin.x, transform.parent.GetComponent<RectTransform>().sizeDelta.y > sizeY ? 0 : -sizeY + transform.parent.GetComponent<RectTransform>().sizeDelta.y + GetComponent<VerticalLayoutGroup>().spacing); GetComponent<RectTransform>().offsetMin = new Vector2(GetComponent<RectTransform>().offsetMin.x, transform.parent.GetComponent<RectTransform>().sizeDelta.y > sizeY ? 0 : -sizeY + transform.parent.GetComponent<RectTransform>().sizeDelta.y + GetComponent<VerticalLayoutGroup>().spacing);
} }

31
unity/Assets/Scripts/Utils.cs

@ -0,0 +1,31 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class Utils {
public static GameObject FindRecursive(this GameObject go, string child) {
var foundChild = go.transform.Find(child);
if (foundChild != null) {
return foundChild.gameObject;
}else {
var found = false;
GameObject newChild = null;
foreach (Transform newGo in go.transform) {
if (newGo.childCount > 0)
newChild = newGo.gameObject.FindRecursive(child);
found = child == newChild?.name;
if (found)
break;
}
if (found)
return newChild;
else
return null;
}
}
public static Transform FindRecursive(this Transform transform, string child) {
var foundChild = transform.gameObject.FindRecursive(child);
return foundChild != null ? foundChild.transform : null;
}
}

11
unity/Assets/Scripts/Utils.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 62d4236ed3a5fe045bfb5f0670d7bca1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save