From 3dbcb69b7fdadf16c3525d228145d2535a536081 Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Wed, 17 Apr 2024 20:56:12 +0200 Subject: [PATCH] feat: added logic for multiple rounds and UI for rematch after completed match --- Assets/Scenes/InGameUI.unity | 1538 ++++++++++++++++- Assets/ScriptedAssets/Rules/DefaultRule.asset | 2 +- Assets/Scripts/Managers/GameManager.cs | 4 +- Assets/Scripts/Managers/MatchManager.cs | 171 +- Assets/Scripts/Managers/UIManager.cs | 47 +- Assets/Scripts/MatchLogic.cs | 61 +- Assets/Scripts/Ship.cs | 3 - Assets/Scripts/UI/MatchEndMenu.cs | 76 + Assets/Scripts/UI/MatchEndMenu.cs.meta | 11 + Assets/Scripts/UI/PauseMenu.cs | 1 + 10 files changed, 1815 insertions(+), 99 deletions(-) create mode 100644 Assets/Scripts/UI/MatchEndMenu.cs create mode 100644 Assets/Scripts/UI/MatchEndMenu.cs.meta diff --git a/Assets/Scenes/InGameUI.unity b/Assets/Scenes/InGameUI.unity index 8850d98..d3747c4 100644 --- a/Assets/Scenes/InGameUI.unity +++ b/Assets/Scenes/InGameUI.unity @@ -925,7 +925,7 @@ Canvas: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 393150819} - m_Enabled: 1 + m_Enabled: 0 serializedVersion: 3 m_RenderMode: 2 m_Camera: {fileID: 1999342455} @@ -976,6 +976,205 @@ MonoBehaviour: m_BlockingMask: serializedVersion: 2 m_Bits: 4294967295 +--- !u!1001 &465155850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1986215051} + m_Modifications: + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_text + value: Yes + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textAlignment + value: 65535 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.lineCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.pageCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.wordCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_HorizontalAlignment + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.characterCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_SizeDelta.y + value: -12.6 + objectReference: {fileID: 0} + - target: {fileID: 2370575273227441370, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1076256088} + - target: {fileID: 2370575273227441370, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnRematch + objectReference: {fileID: 0} + - target: {fileID: 2370575273227441370, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: MatchEndMenu, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 2836659166924155329, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_text + value: Let's go! + objectReference: {fileID: 0} + - target: {fileID: 2836659166924155329, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_fontSize + value: 53.9 + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1948140495} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[1].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1947006994} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[2].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1948140495} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[3].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1947006994} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[1].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[2].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[3].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4776701562445095746, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Color.g + value: 0.6862745 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_SizeDelta.x + value: 275 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_SizeDelta.y + value: 77.3 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7542960674645323859, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Name + value: Yes Button + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} +--- !u!1 &465155851 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7542960674645323859, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + m_PrefabInstance: {fileID: 465155850} + m_PrefabAsset: {fileID: 0} +--- !u!224 &465155852 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + m_PrefabInstance: {fileID: 465155850} + m_PrefabAsset: {fileID: 0} --- !u!1 &465248643 GameObject: m_ObjectHideFlags: 0 @@ -1568,6 +1767,140 @@ MonoBehaviour: m_EditorClassIdentifier: playerNumber: 2 textMesh: {fileID: 630834204} +--- !u!1 &710247468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 710247469} + - component: {fileID: 710247471} + - component: {fileID: 710247470} + m_Layer: 5 + m_Name: MenuTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &710247469 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 710247468} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -15.000011} + m_LocalScale: {x: 0.020000001, y: 0.02, z: 0.020000001} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1076256087} + 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: 5.399994} + m_SizeDelta: {x: 457, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &710247470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 710247468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Match Concluded + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 6c1a8bee20f1d004a92b6a8f016d4fe5, type: 2} + m_sharedMaterial: {fileID: 6297939184969071547, guid: 6c1a8bee20f1d004a92b6a8f016d4fe5, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 80 + m_fontSizeBase: 80 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: -0.40989688, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &710247471 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 710247468} + m_CullTransparentMesh: 1 --- !u!1 &754823974 GameObject: m_ObjectHideFlags: 0 @@ -1702,6 +2035,255 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 754823974} m_CullTransparentMesh: 1 +--- !u!1 &1048663012 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1048663013} + - component: {fileID: 1048663016} + - component: {fileID: 1048663015} + - component: {fileID: 1048663014} + m_Layer: 0 + m_Name: Match End Menu Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1048663013 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1048663012} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.00000035762787, y: 0.0000019073486, z: -30.000006} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1948140494} + - {fileID: 1947006995} + m_Father: {fileID: 1076256087} + m_LocalEulerAnglesHint: {x: -66.164, y: -42.967, z: 404.648} +--- !u!114 &1048663014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1048663012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 2 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!81 &1048663015 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1048663012} + m_Enabled: 1 +--- !u!20 &1048663016 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1048663012} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.03773582, g: 0.028750122, b: 0.024029884, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: 1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 1 + m_ForceIntoRT: 1 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &1076256082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1076256087} + - component: {fileID: 1076256086} + - component: {fileID: 1076256085} + - component: {fileID: 1076256083} + - component: {fileID: 1076256088} + m_Layer: 5 + m_Name: Match End Menu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1076256083 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076256082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!223 &1076256085 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076256082} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 1048663016} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 1 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!222 &1076256086 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076256082} + m_CullTransparentMesh: 1 +--- !u!224 &1076256087 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076256082} + m_LocalRotation: {x: 0.07749675, y: -0.98628813, z: -0.14069444, w: -0.037883684} + m_LocalPosition: {x: 0, y: 0, z: -196.77985} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1048663013} + - {fileID: 1784297122} + - {fileID: 710247469} + - {fileID: 1888592465} + - {fileID: 1154956209} + - {fileID: 1986215051} + - {fileID: 1374265922} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -27.944416, y: 0.7098665} + m_SizeDelta: {x: 1837, y: 959} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1076256088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076256082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b892c3598ac2a8c4e827dbfeee948246, type: 3} + m_Name: + m_EditorClassIdentifier: + Camera: {fileID: 1048663012} + UIEventSystem: {fileID: 1374265919} + MenuButtons: {fileID: 1986215050} + FocusButtonRematch: {fileID: 465155851} --- !u!1 &1117377654 GameObject: m_ObjectHideFlags: 0 @@ -1777,6 +2359,97 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1117377654} m_CullTransparentMesh: 1 +--- !u!1 &1154956208 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1154956209} + - component: {fileID: 1154956212} + - component: {fileID: 1154956211} + - component: {fileID: 1154956210} + m_Layer: 5 + m_Name: Divider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1154956209 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154956208} + m_LocalRotation: {x: 0.0000000142026675, y: -0, z: -0.0000005960464, w: -1} + m_LocalPosition: {x: 0, y: 0, z: -15} + m_LocalScale: {x: 0.060000006, y: 0.020000001, z: 0.020000001} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1076256087} + 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: 1.0139999} + m_SizeDelta: {x: 105.86, y: 8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1154956210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154956208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e4870c7d0bdddd644a64ab8bc98f83ba, type: 3} + m_Name: + m_EditorClassIdentifier: + themeController: {fileID: 11400000, guid: e00c7d2bc58a2424b8dc09ecdafdb067, type: 2} + hasImage: 1 + isText: 0 +--- !u!114 &1154956211 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154956208} + 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: 0.6862745, b: 0, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 05f659001c09bec428a6bf8899b37df6, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1154956212 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154956208} + m_CullTransparentMesh: 0 --- !u!1 &1169853196 GameObject: m_ObjectHideFlags: 0 @@ -2201,6 +2874,290 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &1269393258 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1986215051} + m_Modifications: + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_text + value: No + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textAlignment + value: 65535 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.lineCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.pageCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.wordCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_HorizontalAlignment + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5389521700824258581, guid: 817319833dd713d45af5c2121e9649c7, type: 3} + propertyPath: m_textInfo.characterCount + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_SizeDelta.y + value: -12.6 + objectReference: {fileID: 0} + - target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchoredPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 106129460808279082, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchoredPosition.y + value: -4 + objectReference: {fileID: 0} + - target: {fileID: 2370575273227441370, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1076256088} + - target: {fileID: 2370575273227441370, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnMainMenu + objectReference: {fileID: 0} + - target: {fileID: 2370575273227441370, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: MatchEndMenu, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 2836659166924155329, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_text + value: Main Menu + objectReference: {fileID: 0} + - target: {fileID: 2836659166924155329, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_fontSize + value: 49.5 + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1948140495} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[1].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1947006994} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[2].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1948140495} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[3].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1947006994} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[1].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[2].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4688621401141212590, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Delegates.Array.data[3].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play + objectReference: {fileID: 0} + - target: {fileID: 4776701562445095746, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Color.g + value: 0.6862745 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_SizeDelta.x + value: 275 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_SizeDelta.y + value: 77.3 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7542960674645323859, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + propertyPath: m_Name + value: No Button + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} +--- !u!224 &1269393259 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5031447595725426495, guid: e269e0cd8b46eb94a8c118dc84754c33, type: 3} + m_PrefabInstance: {fileID: 1269393258} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1374265919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1374265922} + - component: {fileID: 1374265921} + - component: {fileID: 1374265920} + m_Layer: 5 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &1374265920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1374265919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 0 + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_DeselectOnBackgroundClick: 0 + m_PointerBehavior: 0 + m_CursorLockBehavior: 0 +--- !u!114 &1374265921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1374265919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1374265922 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1374265919} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -918.5, y: -479.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1076256087} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1374942966 PrefabInstance: m_ObjectHideFlags: 0 @@ -2995,6 +3952,105 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1759610351} m_CullTransparentMesh: 0 +--- !u!1 &1784297121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1784297122} + - component: {fileID: 1784297125} + - component: {fileID: 1784297124} + - component: {fileID: 1784297123} + m_Layer: 5 + m_Name: Color Overlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1784297122 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784297121} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -14} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1076256087} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1784297123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784297121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.6839622, g: 1, b: 0.80590844, a: 0.18431373} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1784297124 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784297121} + m_CullTransparentMesh: 1 +--- !u!223 &1784297125 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784297121} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 1 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &1837912199 GameObject: m_ObjectHideFlags: 0 @@ -3531,6 +4587,156 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1888592464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1888592465} + - component: {fileID: 1888592468} + - component: {fileID: 1888592467} + - component: {fileID: 1888592466} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1888592465 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1888592464} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -15.000013} + m_LocalScale: {x: 0.020000003, y: 0.02, z: 0.020000001} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1076256087} + 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: 2.01799} + m_SizeDelta: {x: 300, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1888592466 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1888592464} + m_CullTransparentMesh: 1 +--- !u!114 &1888592467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1888592464} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e4870c7d0bdddd644a64ab8bc98f83ba, type: 3} + m_Name: + m_EditorClassIdentifier: + themeController: {fileID: 11400000, guid: e00c7d2bc58a2424b8dc09ecdafdb067, type: 2} + hasImage: 0 + isText: 1 +--- !u!114 &1888592468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1888592464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Rematch? + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3c4448e26b9824f499067d5cba19c732, type: 2} + m_sharedMaterial: {fileID: -7766214204018960760, guid: 3c4448e26b9824f499067d5cba19c732, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 68.85 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &1910183686 GameObject: m_ObjectHideFlags: 0 @@ -3606,6 +4812,262 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1910183686} m_CullTransparentMesh: 1 +--- !u!1 &1947006993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1947006995} + - component: {fileID: 1947006994} + m_Layer: 0 + m_Name: SFX_Click + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!82 &1947006994 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1947006993} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: -7128067719386893152, guid: 204ae77320b536d459d12c2126255a73, type: 2} + m_audioClip: {fileID: 8300000, guid: 1e7a587164fcbef45b40536469e6c432, type: 3} + m_PlayOnAwake: 0 + m_Volume: 0.12 + m_Pitch: 0.8 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 495.0495 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!4 &1947006995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1947006993} + serializedVersion: 2 + m_LocalRotation: {x: 0.015714929, y: 0.153975, z: -0.0059860386, w: -0.9879317} + m_LocalPosition: {x: -0.12702784, y: 0.023136642, z: 0.27443096} + m_LocalScale: {x: 0.99999994, y: 0.99999976, z: 0.9999999} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1048663013} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1948140493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1948140494} + - component: {fileID: 1948140495} + m_Layer: 0 + m_Name: SFX_Hover + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1948140494 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948140493} + serializedVersion: 2 + m_LocalRotation: {x: 0.015714929, y: 0.153975, z: -0.0059860386, w: -0.9879317} + m_LocalPosition: {x: -0.12702784, y: 0.023136642, z: 0.27443096} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1048663013} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &1948140495 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948140493} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: -7128067719386893152, guid: 204ae77320b536d459d12c2126255a73, type: 2} + m_audioClip: {fileID: 8300000, guid: 1e7a587164fcbef45b40536469e6c432, type: 3} + m_PlayOnAwake: 0 + m_Volume: 0.07 + m_Pitch: 3 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 495.0495 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 --- !u!1 &1950397571 GameObject: m_ObjectHideFlags: 0 @@ -3672,6 +5134,79 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1950397571} m_CullTransparentMesh: 1 +--- !u!1 &1986215050 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1986215051} + - component: {fileID: 1986215053} + - component: {fileID: 1986215052} + m_Layer: 5 + m_Name: HorizontalLayout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1986215051 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1986215050} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -15} + m_LocalScale: {x: 0.020000003, y: 0.02, z: 0.020000001} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 465155852} + - {fileID: 1269393259} + m_Father: {fileID: 1076256087} + 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.829998} + m_SizeDelta: {x: 585, y: 83} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1986215052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1986215050} + 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: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!222 &1986215053 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1986215050} + m_CullTransparentMesh: 0 --- !u!1 &1999342447 GameObject: m_ObjectHideFlags: 0 @@ -4498,6 +6033,7 @@ SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 393150820} + - {fileID: 1076256087} - {fileID: 29650259} - {fileID: 2052728260} - {fileID: 612255964} diff --git a/Assets/ScriptedAssets/Rules/DefaultRule.asset b/Assets/ScriptedAssets/Rules/DefaultRule.asset index 4b5cfe6..74c037d 100644 --- a/Assets/ScriptedAssets/Rules/DefaultRule.asset +++ b/Assets/ScriptedAssets/Rules/DefaultRule.asset @@ -13,7 +13,7 @@ MonoBehaviour: m_Name: DefaultRule m_EditorClassIdentifier: winCondition: 0 - rounds: 1 + rounds: 3 lives: 1 score: 0 time: -1 diff --git a/Assets/Scripts/Managers/GameManager.cs b/Assets/Scripts/Managers/GameManager.cs index b5eb4f4..dcba007 100644 --- a/Assets/Scripts/Managers/GameManager.cs +++ b/Assets/Scripts/Managers/GameManager.cs @@ -189,7 +189,7 @@ namespace Managers { MatchManager.LoadMatchRules(0); MatchManager.LoadArenaProperties(0); - PlayerManager.LocalMatchJoinPlayers(MatchManager.arenaProperties.minPlayerCount); + PlayerManager.LocalMatchJoinPlayers(MatchManager.ArenaProperties.minPlayerCount); // TODO: This is in place of a character choosing menu etc. foreach (Player p in PlayerManager.localPlayers) { @@ -231,7 +231,7 @@ namespace Managers yield return null; MatchManager.LoadMatchRules(0); MatchManager.LoadArenaProperties(0); - PlayerManager.LocalMatchJoinPlayers(MatchManager.arenaProperties.minPlayerCount); + PlayerManager.LocalMatchJoinPlayers(MatchManager.ArenaProperties.minPlayerCount); foreach (Player p in PlayerManager.localPlayers) { CharacterManager.AssignShipFixed(p); diff --git a/Assets/Scripts/Managers/MatchManager.cs b/Assets/Scripts/Managers/MatchManager.cs index f00b15c..3112ccf 100644 --- a/Assets/Scripts/Managers/MatchManager.cs +++ b/Assets/Scripts/Managers/MatchManager.cs @@ -40,6 +40,7 @@ public class MatchConditionUpdate public class MatchPlayerStatistic { public bool IsOut { get; set; } + public int RoundsWon { get; set; } public int Lives { get; set; } public int Score { get; set; } public int Time { get; set; } @@ -54,8 +55,9 @@ namespace Managers { private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private static string arenaAssetsPath = "Assets/ScriptedAssets/Arenas"; - private static string ruleAssetsPath = "Assets/ScriptedAssets/Rules"; + private static readonly string arenaAssetsPath = "Assets/ScriptedAssets/Arenas"; + private static readonly string ruleAssetsPath = "Assets/ScriptedAssets/Rules"; + private GameResult CurrentMatchResult; public GameObject MatchArena; public GameObject MatchCamera; @@ -72,29 +74,29 @@ namespace Managers /// /// The players participating in the match. /// - public List matchPlayers { get; private set; } = + public List MatchPlayers { get; private set; } = new List(); /// /// The statistics regarding the current match mapped to the players. /// - public Dictionary matchPlayerStatistics { get; set; } = + public Dictionary MatchPlayerStatistics { get; set; } = new Dictionary(); /// /// Bundle of properties regarding the arena. /// - public Arena arenaProperties { get; private set; } + public Arena ArenaProperties { get; private set; } /// /// The rules under which this match takes place. /// - public MatchRule matchRule { get; private set; } + public MatchRule MatchRule { get; private set; } /// /// List of all the arenas in the assets. /// - public List availableArenas { get; private set; } = new List(); + public List AvailableArenas { get; private set; } = new List(); /// /// List of all the rules/game modes in the assets. /// - public List availableRules { get; private set; } = new List(); + public List AvailableRules { get; private set; } = new List(); void Awake() @@ -116,7 +118,7 @@ namespace Managers public void UpdateMatchCondition(MatchConditionUpdate update) { Player updatedPlayer = null; - foreach (Player p in matchPlayers) + foreach (Player p in MatchPlayers) { if (p.character.shipName == update.Ship.props.shipName) { @@ -124,19 +126,29 @@ namespace Managers Log.Debug($"Players: {p.name} match statistic will be updated."); } } - // TODO: Match Result should contain progression over multiple rounds. - MatchResult result = MatchLogic.UpdateMatchResult(updatedPlayer, update, matchPlayerStatistics); - if (updatedPlayer != null && result != null) + if (updatedPlayer == null) { - matchState = MatchState.End; - Log.Info("Match has ended, winner will be declared."); - // TODO: Take player decisions into account before restarting the match - // TODO: Include the statistics and match round progression in announcements - AnnounceWinner(result); + Log.Error($"Ship: {update.Ship.props.shipName} does not belong to a player in this match." + + " Can't update match."); return; } - Log.Error($"Ship: {update.Ship.props.shipName} does not belong to a player in this match." - + " Can't update match."); + if (CurrentMatchResult == null) + { + Log.Error("Match has no result statistics attached and was set up incorrectly!"); + return; + } + MatchLogic.UpdateMatchResult(updatedPlayer, update, MatchPlayerStatistics, CurrentMatchResult); + if (CurrentMatchResult.IsMatchWon) + { + Log.Info("Match has ended, winner will be declared."); + AnnounceMatchWinner(CurrentMatchResult); + } + else + { + Log.Info($"Round {CurrentMatchResult.RoundsPlayed} of {MatchRule.rounds} has ended." + + $"{CurrentMatchResult.Winner.name} won this round."); + AnnounceRoundWinner(CurrentMatchResult); + } } /// @@ -149,7 +161,7 @@ namespace Managers SearchOption.TopDirectoryOnly); foreach (var file in files) { - availableArenas.Add(AssetDatabase.LoadAssetAtPath(file)); + AvailableArenas.Add(AssetDatabase.LoadAssetAtPath(file)); } } @@ -163,7 +175,7 @@ namespace Managers SearchOption.TopDirectoryOnly); foreach (var file in files) { - availableRules.Add(AssetDatabase.LoadAssetAtPath(file)); + AvailableRules.Add(AssetDatabase.LoadAssetAtPath(file)); } } @@ -172,17 +184,17 @@ namespace Managers /// public void SetupMatchPlayerStatistics() { - matchPlayerStatistics.Clear(); - foreach (Player p in matchPlayers) + MatchPlayerStatistics.Clear(); + foreach (Player p in MatchPlayers) { MatchPlayerStatistic mps = new MatchPlayerStatistic { IsOut = false, - Lives = matchRule.lives, - Score = matchRule.score, - Time = matchRule.time + Lives = MatchRule.lives, + Score = MatchRule.score, + Time = MatchRule.time }; - if (!matchPlayerStatistics.TryAdd(p, mps)) + if (!MatchPlayerStatistics.TryAdd(p, mps)) { Log.Info($"Player {p.name} already has statistics set up."); } @@ -196,13 +208,13 @@ namespace Managers /// Index of the arena (arenas scripted asset folder order from 0) public void LoadArenaProperties(int arenaIndex) { - if (availableArenas.Count - 1 < arenaIndex) + if (AvailableArenas.Count - 1 < arenaIndex) { - Log.Error($"There are only: {availableArenas.Count} arenas loaded." + Log.Error($"There are only: {AvailableArenas.Count} arenas loaded." + $" Couldn't load arena number: {arenaIndex + 1}"); return; } - arenaProperties = availableArenas[arenaIndex]; + ArenaProperties = AvailableArenas[arenaIndex]; } /// @@ -212,14 +224,14 @@ namespace Managers /// (rules scripted asset folder order from 0) public void LoadMatchRules(int ruleIndex) { - if (availableArenas.Count - 1 < ruleIndex) + if (AvailableArenas.Count - 1 < ruleIndex) { - Log.Error($"There are only: {availableArenas.Count} rules loaded." + Log.Error($"There are only: {AvailableArenas.Count} rules loaded." + $" Couldn't load match rule number: {ruleIndex + 1}"); return; } - matchRule = availableRules[ruleIndex]; - MatchLogic.currentRule = matchRule; + MatchRule = AvailableRules[ruleIndex]; + MatchLogic.currentRule = MatchRule; } /// @@ -232,22 +244,55 @@ namespace Managers } /// - /// Announcement of who won. - /// TODO: Also restarts the match right now, no matter what. + /// Announcement of who won the match. /// /// Result data of the completed match. - async public void AnnounceWinner(MatchResult mr) + async public void AnnounceMatchWinner(GameResult mr) { - UIManager.G.announcments.QueueAnnounceText($"{mr.Winner.playerName}" + - " has won the match!", 1.618f); - await Tween.Delay(1.618f); + UIManager.G.Announcments.QueueAnnounceText($"{mr.Winner.playerName}" + + " has won the match!", 2f); + await Tween.Delay(2f * 0.33f); + matchState = MatchState.End; + await Tween.Delay(2f * 0.66f); + UIManager.G.ShowMatchEndMenu(MatchArena.transform); + + } + + async public void StartRematch() + { ResetMatch(); - UIManager.G.announcments.QueueAnnounceText("Restarting.", 0.3f); - UIManager.G.announcments.QueueAnnounceText("Restarting..", 0.3f); - UIManager.G.announcments.QueueAnnounceText("Restarting...", 0.3f); - UIManager.G.announcments.QueueAnnounceText("GO!", 0.5f); + UIManager.G.Announcments.QueueAnnounceText("Starting rematch.", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("Starting rematch..", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("Starting rematch...", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("GO!", 0.5f); + await Tween.Delay(0.9f); + matchState = MatchState.Match; + } + + /// + /// Announcement of who won the Round. + /// + /// Result data of the completed match. + async public void AnnounceRoundWinner(GameResult mr) + { + var winnerStats = MatchPlayerStatistics[mr.Winner]; + UIManager.G.Announcments.QueueAnnounceText($"{mr.Winner.playerName}" + + " has won the Round! \n" + + $"They won {winnerStats.RoundsWon} out of {MatchRule.rounds}.", + 1.618f); + + await Tween.Delay(1.618f * 0.33f); + matchState = MatchState.Pause; + await Tween.Delay(1.618f * 0.66f); + + ResetMatchCharacters(); + + UIManager.G.Announcments.QueueAnnounceText("Starting next round.", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("Starting next round..", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("Starting next round...", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("GO!", 0.5f); await Tween.Delay(0.9f); matchState = MatchState.Match; @@ -258,6 +303,7 @@ namespace Managers /// public void ResetMatch() { + CurrentMatchResult = new GameResult(); ResetMatchCharacters(); SetupMatchPlayerStatistics(); } @@ -268,12 +314,13 @@ namespace Managers /// async public void StartMatch() { - foreach (Player p in matchPlayers) + foreach (Player p in MatchPlayers) { p.spawnedCharacter.transform.localPosition = - arenaProperties.spawnPositions[p.playerNumber - 1]; + ArenaProperties.spawnPositions[p.playerNumber - 1]; } SetupMatchPlayerStatistics(); + CurrentMatchResult = new GameResult(); matchState = MatchState.Starting; UIManager.G.ShowMatchStartPrompt(); @@ -286,10 +333,10 @@ namespace Managers OnStartPressed = null; UIManager.G.HideAnnouncement(); - UIManager.G.announcments.QueueAnnounceText("3", 1); - UIManager.G.announcments.QueueAnnounceText("2", 1); - UIManager.G.announcments.QueueAnnounceText("1", 1); - UIManager.G.announcments.QueueAnnounceText("GO!", 0.5f); + UIManager.G.Announcments.QueueAnnounceText("3", 1); + UIManager.G.Announcments.QueueAnnounceText("2", 1); + UIManager.G.Announcments.QueueAnnounceText("1", 1); + UIManager.G.Announcments.QueueAnnounceText("GO!", 0.5f); await Tween.Delay(3); matchState = MatchState.Match; @@ -297,12 +344,13 @@ namespace Managers public void StartTestMatch() { - foreach (Player p in matchPlayers) + foreach (Player p in MatchPlayers) { p.spawnedCharacter.transform.localPosition = - arenaProperties.spawnPositions[p.playerNumber - 1]; + ArenaProperties.spawnPositions[p.playerNumber - 1]; } SetupMatchPlayerStatistics(); + CurrentMatchResult = new GameResult(); matchState = MatchState.Match; } @@ -346,10 +394,10 @@ namespace Managers async private void ContinueMatch() { - UIManager.G.announcments.QueueAnnounceText("Get Ready.", 0.3f); - UIManager.G.announcments.QueueAnnounceText("Get Ready..", 0.3f); - UIManager.G.announcments.QueueAnnounceText("Get Ready...", 0.3f); - UIManager.G.announcments.QueueAnnounceText("GO!", 0.5f); + UIManager.G.Announcments.QueueAnnounceText("Get Ready.", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("Get Ready..", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("Get Ready...", 0.3f); + UIManager.G.Announcments.QueueAnnounceText("GO!", 0.5f); await Tween.Delay(0.9f); matchState = MatchState.Match; } @@ -384,11 +432,11 @@ namespace Managers ship.cameraOperator = MatchCamera.GetComponent(); shipObject.transform.SetParent(MatchArena.transform, false); shipObject.transform.localPosition = - arenaProperties.spawnPositions[p.playerNumber - 1]; + ArenaProperties.spawnPositions[p.playerNumber - 1]; shipObject.transform.localScale = new Vector3(); Tween.Scale(shipObject.transform, new Vector3(0.7f, 0.7f, 0.7f), 1f); - matchPlayers.Add(p); + MatchPlayers.Add(p); } } @@ -397,15 +445,18 @@ namespace Managers /// public void ResetMatchCharacters() { - foreach (Player mp in matchPlayers) + foreach (Player mp in MatchPlayers) { GameObject shipGO = mp.spawnedCharacter; shipGO.TryGetComponent(out Ship ship); + shipGO.TryGetComponent(out Rigidbody body); ship.state.boostCapacity = ship.props.maxBoostCapacity; + body.velocity = Vector3.zero; + shipGO.transform.localPosition = - arenaProperties.spawnPositions[mp.playerNumber - 1]; + ArenaProperties.spawnPositions[mp.playerNumber - 1]; shipGO.transform.rotation = shipGO.transform.parent.rotation; } } diff --git a/Assets/Scripts/Managers/UIManager.cs b/Assets/Scripts/Managers/UIManager.cs index 98db1a8..bda75fa 100644 --- a/Assets/Scripts/Managers/UIManager.cs +++ b/Assets/Scripts/Managers/UIManager.cs @@ -13,8 +13,9 @@ namespace Managers private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); [SerializeField] public bool IsUIActiveScene { get; set; } public HUD hUD { get; private set; } - public Announcments announcments { get; private set; } - public PauseMenu pauseMenu { get; private set; } + public Announcments Announcments { get; private set; } + public PauseMenu PauseMenu { get; private set; } + public MatchEndMenu MatchEndMenu { get; private set; } /// /// Globally accessible member to use manager with. @@ -30,7 +31,7 @@ namespace Managers public bool StartManagingMatchUI() { if (!StartManagingHUD() || !StartManagingAnnouncements() - || !StartManagingPauseMenu()) + || !StartManagingPauseMenu() || !StartManagingMatchEndMenu()) { Log.Error("Problems when starting in game match UI."); return false; @@ -55,7 +56,7 @@ namespace Managers public bool StartManagingPauseMenu() { - if (pauseMenu == null) + if (PauseMenu == null) { GameObject go = GameObject.Find("Paused Menu"); if (go == null) @@ -63,14 +64,29 @@ namespace Managers Log.Error("Could not find Pause Menu GameObject in loaded scenes!"); return false; } - pauseMenu = go.GetComponent(); + PauseMenu = go.GetComponent(); + } + return true; + } + + public bool StartManagingMatchEndMenu() + { + if (MatchEndMenu == null) + { + GameObject go = GameObject.Find("Match End Menu"); + if (go == null) + { + Log.Error("Could not find Match End Menu GameObject in loaded scenes!"); + return false; + } + MatchEndMenu = go.GetComponent(); } return true; } public bool StartManagingAnnouncements() { - if (announcments == null) + if (Announcments == null) { GameObject go = GameObject.Find("Announcer UI"); if (go == null) @@ -78,7 +94,7 @@ namespace Managers Log.Error("Could not find Pause Menu GameObject in loaded scenes!"); return false; } - announcments = go.GetComponent(); + Announcments = go.GetComponent(); } return true; } @@ -104,21 +120,30 @@ namespace Managers public void ShowMatchStartPrompt() { - announcments.AnnounceText("Press Start/Enter \n to start the match!"); + Announcments.AnnounceText("Press Start/Enter \n to start the match!"); } public void HideAnnouncement() { - announcments.StopAnnouncement(); + Announcments.StopAnnouncement(); } public void ShowPauseMenu(Transform transform) { - pauseMenu?.Show(transform); + PauseMenu?.Show(transform); } public void HidePauseMenu() { - pauseMenu?.Hide(); + PauseMenu?.Hide(); + } + public void ShowMatchEndMenu(Transform transform) + { + MatchEndMenu?.Show(transform); + } + + public void HideMatchEndMenu() + { + MatchEndMenu?.Hide(); } public void HideHUD() diff --git a/Assets/Scripts/MatchLogic.cs b/Assets/Scripts/MatchLogic.cs index 2c56012..1ddb305 100644 --- a/Assets/Scripts/MatchLogic.cs +++ b/Assets/Scripts/MatchLogic.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography; using UnityEditor; namespace GameLogic @@ -19,7 +20,8 @@ namespace GameLogic /// Update to the matches conditions /// Dictionary of the players in the match and their current stats /// - public static MatchResult UpdateMatchResult(Player p, MatchConditionUpdate args, Dictionary mps) + public static void UpdateMatchResult(Player p, MatchConditionUpdate args, + Dictionary mps, GameResult result) { switch (args.Condition) { @@ -33,7 +35,7 @@ namespace GameLogic UpdateTime(mps[p], args.Count); break; } - return DetectMatchResult(mps); + result.UpdateGameResult(mps, currentRule); } public static void UpdateLives(MatchPlayerStatistic mps, int count) @@ -55,36 +57,53 @@ namespace GameLogic throw new NotImplementedException(); } - /// - /// Detects if a match has concluded. - /// Currently only checks if all but on player is out. - /// - /// Dictonary of the players and their match data. - /// Match result object, if the match has concluded - private static MatchResult DetectMatchResult(Dictionary mps) - { - int outPlayers = mps.Count(p => p.Value.IsOut); - if (outPlayers == mps.Count - 1) - { - return new MatchResult(mps); - } - return null; - } } /// /// Data class which records the results of a Match /// - public class MatchResult + public class GameResult { + /// + /// Indicates whether a round or the whole match was won + /// + public bool IsMatchWon { get; private set; } + public int RoundsPlayed { get; private set; } public Player Winner { get; private set; } public List Opponents { get; private set; } public GUID GameID { get; private set; } - public MatchResult(Dictionary mps) + public GameResult() { GameID = GUID.Generate(); - Winner = mps.First(p => p.Value.IsOut != true).Key; - Opponents = mps.Keys.Where(player => player != Winner).ToList(); + } + /// + /// Checks whether a round is won and if that round decided the match. + /// Sets the class properties accordingly. + /// + /// Dictionary of players with their statistics for this match + /// The rules for this match + public void UpdateGameResult(Dictionary mps, MatchRule rules) + { + int outPlayers = mps.Count(p => p.Value.IsOut); + if (outPlayers == mps.Count - 1) + { + Winner = mps.First(p => p.Value.IsOut != true).Key; + Opponents = mps.Keys.Where(player => player != Winner).ToList(); + mps[Winner].RoundsWon += 1; + RoundsPlayed += 1; + } + else + { + Winner = null; + } + // TODO: this is wrong winning 2 rounds can decide the match + if (RoundsPlayed == rules.rounds) + { + IsMatchWon = true; + Winner = mps.Aggregate((p1, p2) => + p1.Value.RoundsWon > p2.Value.RoundsWon ? p1 : p2).Key; + Opponents = mps.Keys.Where(player => player != Winner).ToList(); + } } } } \ No newline at end of file diff --git a/Assets/Scripts/Ship.cs b/Assets/Scripts/Ship.cs index b33f173..f9b1884 100644 --- a/Assets/Scripts/Ship.cs +++ b/Assets/Scripts/Ship.cs @@ -3,10 +3,7 @@ using UnityEngine; using static AffectingForcesManager; using ShipHandling; using Managers; -using GameLogic; -using Unity.VisualScripting; using Unity.Mathematics; -using System.Text.RegularExpressions; public class Ship : MonoBehaviour { diff --git a/Assets/Scripts/UI/MatchEndMenu.cs b/Assets/Scripts/UI/MatchEndMenu.cs new file mode 100644 index 0000000..17796e6 --- /dev/null +++ b/Assets/Scripts/UI/MatchEndMenu.cs @@ -0,0 +1,76 @@ +using System.Collections; +using System.Reflection; +using log4net; +using Managers; +using SlimUI.ModernMenu; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.SceneManagement; +public class MatchEndMenu : MonoBehaviour +{ + private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private Canvas Canvas; + public GameObject Camera; + public GameObject UIEventSystem; + public GameObject MenuButtons; + public GameObject FocusButtonRematch; + + private EventSystem eventSystem; + + // Start is called before the first frame update + void Awake() + { + Canvas = gameObject.GetComponent(); + Canvas.enabled = false; + MenuButtons.SetActive(false); + eventSystem = UIEventSystem.GetComponent(); + } + + public void Show(Transform transform) + { + gameObject.transform.position = transform.position; + gameObject.transform.rotation = transform.rotation; + Canvas.enabled = true; + Camera.SetActive(true); + UIEventSystem.SetActive(true); + MenuButtons.SetActive(true); + eventSystem.SetSelectedGameObject(FocusButtonRematch, null); + } + + public void Hide() + { + Canvas.enabled = false; + Camera.SetActive(false); + UIEventSystem.SetActive(false); + } + + public void OnRematch() + { + MatchManager.G.StartRematch(); + Hide(); + } + + public void OnMainMenu() + { + StartCoroutine(StartSceneTransition()); + } + + private IEnumerator StartSceneTransition() + { + Canvas.enabled = false; + SceneManager.LoadScene((int)Scenes.MainMenu, LoadSceneMode.Additive); + yield return new WaitForSeconds(0.2f); + GameObject menu = GameObject.Find("Main Menu Camera"); + if (menu != null && menu.TryGetComponent(out SlimUIMainMenu menuScript)) + { + UIManager.G.HideHUD(); + menuScript.MenuTransition(Camera.GetComponent().transform); + } + else + { + Log.Error("Can't transition back to main menu. Menu camera or script not found."); + } + } + + +} diff --git a/Assets/Scripts/UI/MatchEndMenu.cs.meta b/Assets/Scripts/UI/MatchEndMenu.cs.meta new file mode 100644 index 0000000..7b5527d --- /dev/null +++ b/Assets/Scripts/UI/MatchEndMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b892c3598ac2a8c4e827dbfeee948246 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/PauseMenu.cs b/Assets/Scripts/UI/PauseMenu.cs index 56598c7..f1cff9e 100644 --- a/Assets/Scripts/UI/PauseMenu.cs +++ b/Assets/Scripts/UI/PauseMenu.cs @@ -24,6 +24,7 @@ public class PauseMenu : MonoBehaviour { Canvas = gameObject.GetComponent(); Canvas.enabled = false; + PauseMenuButtons.SetActive(false); eventSystem = UIEventSystem.GetComponent(); }