diff --git a/Assets/DefaultNetworkPrefabs.asset b/Assets/DefaultNetworkPrefabs.asset index 600a6a5..f286cf7 100644 --- a/Assets/DefaultNetworkPrefabs.asset +++ b/Assets/DefaultNetworkPrefabs.asset @@ -19,3 +19,8 @@ MonoBehaviour: SourcePrefabToOverride: {fileID: 0} SourceHashToOverride: 0 OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 6069156772473090627, guid: 4f37ae225d90db94183865687109bfe2, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} diff --git a/Assets/Prefabs/GameStateController.prefab b/Assets/Prefabs/GameStateController.prefab new file mode 100644 index 0000000..4fbb65a --- /dev/null +++ b/Assets/Prefabs/GameStateController.prefab @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6069156772473090627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9003785686272557749} + - component: {fileID: 6787069959230260535} + - component: {fileID: 8925847743602113601} + m_Layer: 0 + m_Name: GameStateController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9003785686272557749 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6069156772473090627} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6787069959230260535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6069156772473090627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject + GlobalObjectIdHash: 0 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &8925847743602113601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6069156772473090627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1ad1829714634ac1ab8f480e54fe27e9, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PashaBibko.PenguinChase.Core.GameState.GameStateController + ShowTopMostFoldoutHeaderGroup: 1 + GlobalState: + UpdateTraits: + MinSecondsBetweenUpdates: 0 + MaxSecondsBetweenUpdates: 0 + m_InternalValue: 0 diff --git a/Assets/Prefabs/GameStateController.prefab.meta b/Assets/Prefabs/GameStateController.prefab.meta new file mode 100644 index 0000000..e88a7ad --- /dev/null +++ b/Assets/Prefabs/GameStateController.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4f37ae225d90db94183865687109bfe2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Client.prefab b/Assets/Prefabs/NetworkClient.prefab similarity index 74% rename from Assets/Prefabs/Client.prefab rename to Assets/Prefabs/NetworkClient.prefab index dae89b8..cf25a4f 100644 --- a/Assets/Prefabs/Client.prefab +++ b/Assets/Prefabs/NetworkClient.prefab @@ -10,8 +10,9 @@ GameObject: m_Component: - component: {fileID: 5018670842438043798} - component: {fileID: 4338096495283207142} + - component: {fileID: 2214164543754241176} m_Layer: 0 - m_Name: Client + m_Name: NetworkClient m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -44,7 +45,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} m_Name: m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject - GlobalObjectIdHash: 0 + GlobalObjectIdHash: 4047985285 InScenePlacedSourceGlobalObjectIdHash: 0 DeferredDespawnTick: 0 Ownership: 1 @@ -57,3 +58,16 @@ MonoBehaviour: AutoObjectParentSync: 1 SyncOwnerTransformWhenParented: 1 AllowOwnerToParent: 0 +--- !u!114 &2214164543754241176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 401049662134316001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4a2fdb2b188edc64aaa5ecbc8568bae0, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PashaBibko.PenguinChase.Core.Network.GameNetworkClient + ShowTopMostFoldoutHeaderGroup: 1 diff --git a/Assets/Prefabs/Client.prefab.meta b/Assets/Prefabs/NetworkClient.prefab.meta similarity index 100% rename from Assets/Prefabs/Client.prefab.meta rename to Assets/Prefabs/NetworkClient.prefab.meta diff --git a/Assets/Resources/Bootstrap.prefab b/Assets/Resources/Bootstrap.prefab index ae8bce7..82273ab 100644 --- a/Assets/Resources/Bootstrap.prefab +++ b/Assets/Resources/Bootstrap.prefab @@ -48,6 +48,51 @@ MonoBehaviour: UnityRelayTransport: {fileID: 9034779159098495524, guid: 7656fcf64c81db4429bec9369890e544, type: 3} InternalCurrentTransport: 2 GameJoinCode: +--- !u!1 &7275216480608179276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5141531532736466649} + - component: {fileID: 7307166593543107560} + m_Layer: 0 + m_Name: GameStateControllerSpawner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5141531532736466649 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7275216480608179276} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5606574559930480875} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7307166593543107560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7275216480608179276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 354f068d231a4ca0a1ccd0560f1836d5, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PashaBibko.PenguinChase.Core.GameState.GameStateSpawner + GameStateControllerPrefab: {fileID: 6069156772473090627, guid: 4f37ae225d90db94183865687109bfe2, type: 3} --- !u!1 &8168339053005722410 GameObject: m_ObjectHideFlags: 0 @@ -79,6 +124,7 @@ Transform: m_Children: - {fileID: 8202003614288763792} - {fileID: 8895838412485116748} + - {fileID: 5141531532736466649} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8300071393855764827 diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/LobbyScene.unity similarity index 100% rename from Assets/Scenes/GameScene.unity rename to Assets/Scenes/LobbyScene.unity diff --git a/Assets/Scenes/GameScene.unity.meta b/Assets/Scenes/LobbyScene.unity.meta similarity index 100% rename from Assets/Scenes/GameScene.unity.meta rename to Assets/Scenes/LobbyScene.unity.meta diff --git a/Assets/Scenes/MainMenu.unity b/Assets/Scenes/MainMenu.unity index 16d1c80..51f8971 100644 --- a/Assets/Scenes/MainMenu.unity +++ b/Assets/Scenes/MainMenu.unity @@ -217,6 +217,7 @@ RectTransform: - {fileID: 416344376} - {fileID: 581763571} - {fileID: 601452186} + - {fileID: 1115757044} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -224,6 +225,81 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!1 &51047444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 51047445} + - component: {fileID: 51047447} + - component: {fileID: 51047446} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &51047445 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51047444} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1115757044} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &51047446 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51047444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + 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: 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 &51047447 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51047444} + m_CullTransparentMesh: 1 --- !u!1 &53641709 GameObject: m_ObjectHideFlags: 0 @@ -382,6 +458,81 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &252366347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 252366348} + - component: {fileID: 252366350} + - component: {fileID: 252366349} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &252366348 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252366347} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2121791418} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &252366349 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252366347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + 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: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &252366350 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252366347} + m_CullTransparentMesh: 1 --- !u!1 &291309099 GameObject: m_ObjectHideFlags: 0 @@ -468,6 +619,7 @@ GameObject: - component: {fileID: 357517022} - component: {fileID: 357517021} - component: {fileID: 357517020} + - component: {fileID: 357517023} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -549,6 +701,50 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &357517023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 357517019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData + 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: 0 + m_Antialiasing: 0 + 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_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 --- !u!1 &414217163 GameObject: m_ObjectHideFlags: 0 @@ -1636,6 +1832,171 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1030257363} m_CullTransparentMesh: 1 +--- !u!1 &1034086469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1034086470} + - component: {fileID: 1034086472} + - component: {fileID: 1034086471} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1034086470 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1034086469} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1512639437} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1034086471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1034086469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + 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: 10905, 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 &1034086472 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1034086469} + m_CullTransparentMesh: 1 +--- !u!1 &1115757043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1115757044} + - component: {fileID: 1115757045} + m_Layer: 5 + m_Name: PlayerCountChooser + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1115757044 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115757043} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 51047445} + - {fileID: 1512639437} + - {fileID: 2121791418} + m_Father: {fileID: 35427959} + 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: -200} + m_SizeDelta: {x: 300, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1115757045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115757043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Slider + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 252366349} + m_FillRect: {fileID: 1034086470} + m_HandleRect: {fileID: 252366348} + m_Direction: 0 + m_MinValue: 1 + m_MaxValue: 4 + m_WholeNumbers: 1 + m_Value: 1 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] --- !u!1 &1156178735 GameObject: m_ObjectHideFlags: 0 @@ -1968,6 +2329,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1324713620} m_CullTransparentMesh: 1 +--- !u!1 &1512639436 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1512639437} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1512639437 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1512639436} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1034086470} + m_Father: {fileID: 1115757044} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1794096810 GameObject: m_ObjectHideFlags: 0 @@ -2353,6 +2750,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2121030418} m_CullTransparentMesh: 1 +--- !u!1 &2121791417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2121791418} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2121791418 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2121791417} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 252366348} + m_Father: {fileID: 1115757044} + 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: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Core/BootstrapLoader.cs b/Assets/Scripts/BootstrapLoader.cs similarity index 100% rename from Assets/Scripts/Core/BootstrapLoader.cs rename to Assets/Scripts/BootstrapLoader.cs diff --git a/Assets/Scripts/Core/BootstrapLoader.cs.meta b/Assets/Scripts/BootstrapLoader.cs.meta similarity index 100% rename from Assets/Scripts/Core/BootstrapLoader.cs.meta rename to Assets/Scripts/BootstrapLoader.cs.meta diff --git a/Assets/Scripts/Core.meta b/Assets/Scripts/Core.meta deleted file mode 100644 index 8c1e2c5..0000000 --- a/Assets/Scripts/Core.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 17aa567cc7b54d92a034c458aac68a8e -timeCreated: 1779196107 \ No newline at end of file diff --git a/Assets/Scripts/GameState.meta b/Assets/Scripts/GameState.meta new file mode 100644 index 0000000..b8a977f --- /dev/null +++ b/Assets/Scripts/GameState.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2644414c902145f4b252bf43944a2194 +timeCreated: 1779273131 \ No newline at end of file diff --git a/Assets/Scripts/GameState/GameStateController.cs b/Assets/Scripts/GameState/GameStateController.cs new file mode 100644 index 0000000..f174828 --- /dev/null +++ b/Assets/Scripts/GameState/GameStateController.cs @@ -0,0 +1,31 @@ +using Unity.Netcode; +using UnityEngine; + +namespace PashaBibko.PenguinChase.GameState +{ + public enum GameState + { + Lobby, + Playing, + } + + public class GameStateController : NetworkBehaviour + { + private static GameStateController sInstance; + + [SerializeField] private NetworkVariable GlobalState = new(); + + private void Awake() + { + // Stops overlapping instances + if (sInstance is not null) + { + Debug.LogError($"Multiple of [{nameof(GameStateController)}] cannot exist."); + Destroy(gameObject); + return; + } + + sInstance = this; + } + } +} diff --git a/Assets/Scripts/GameState/GameStateController.cs.meta b/Assets/Scripts/GameState/GameStateController.cs.meta new file mode 100644 index 0000000..1b7b7d3 --- /dev/null +++ b/Assets/Scripts/GameState/GameStateController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1ad1829714634ac1ab8f480e54fe27e9 +timeCreated: 1779273141 \ No newline at end of file diff --git a/Assets/Scripts/GameState/GameStateSpawner.cs b/Assets/Scripts/GameState/GameStateSpawner.cs new file mode 100644 index 0000000..e85c3ca --- /dev/null +++ b/Assets/Scripts/GameState/GameStateSpawner.cs @@ -0,0 +1,33 @@ +using Unity.Netcode; +using UnityEngine; + +namespace PashaBibko.PenguinChase.GameState +{ + public class GameStateSpawner : MonoBehaviour + { + private static GameStateSpawner sInstance; + + [Header("References")] + [SerializeField] private GameObject GameStateControllerPrefab; + + private void Awake() + { + // Stops overlapping instances + if (sInstance is not null) + { + Debug.LogError($"Multiple of [{nameof(GameStateSpawner)}] cannot exist."); + Destroy(gameObject); + return; + } + + sInstance = this; + } + + public static void CreateNetworkGameStateController() + { + GameObject go = Instantiate(sInstance.GameStateControllerPrefab); + go.GetComponent().Spawn(); + DontDestroyOnLoad(go); + } + } +} diff --git a/Assets/Scripts/GameState/GameStateSpawner.cs.meta b/Assets/Scripts/GameState/GameStateSpawner.cs.meta new file mode 100644 index 0000000..d86c7b8 --- /dev/null +++ b/Assets/Scripts/GameState/GameStateSpawner.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 354f068d231a4ca0a1ccd0560f1836d5 +timeCreated: 1779273552 \ No newline at end of file diff --git a/Assets/Scripts/MainMenu/MainMenuController.cs b/Assets/Scripts/MainMenu/MainMenuController.cs index 48d2426..0daf09b 100644 --- a/Assets/Scripts/MainMenu/MainMenuController.cs +++ b/Assets/Scripts/MainMenu/MainMenuController.cs @@ -1,4 +1,4 @@ -using PashaBibko.PenguinChase.Core.Network; +using PashaBibko.PenguinChase.Network; using WebSocketSharp; using UnityEngine.UI; using UnityEngine; diff --git a/Assets/Scripts/Core/Network.meta b/Assets/Scripts/Network.meta similarity index 100% rename from Assets/Scripts/Core/Network.meta rename to Assets/Scripts/Network.meta diff --git a/Assets/Scripts/Core/Network/Authenticator.cs b/Assets/Scripts/Network/Authenticator.cs similarity index 96% rename from Assets/Scripts/Core/Network/Authenticator.cs rename to Assets/Scripts/Network/Authenticator.cs index 060a127..2fff80b 100644 --- a/Assets/Scripts/Core/Network/Authenticator.cs +++ b/Assets/Scripts/Network/Authenticator.cs @@ -4,7 +4,7 @@ using Unity.Services.Core; using System.Collections; using UnityEngine; -namespace PashaBibko.PenguinChase.Core.Network +namespace PashaBibko.PenguinChase.Network { public static class Authenticator { diff --git a/Assets/Scripts/Core/Network/Authenticator.cs.meta b/Assets/Scripts/Network/Authenticator.cs.meta similarity index 100% rename from Assets/Scripts/Core/Network/Authenticator.cs.meta rename to Assets/Scripts/Network/Authenticator.cs.meta diff --git a/Assets/Scripts/Core/Network/ConnectionManager.cs b/Assets/Scripts/Network/ConnectionManager.cs similarity index 96% rename from Assets/Scripts/Core/Network/ConnectionManager.cs rename to Assets/Scripts/Network/ConnectionManager.cs index cf4f049..7a106fa 100644 --- a/Assets/Scripts/Core/Network/ConnectionManager.cs +++ b/Assets/Scripts/Network/ConnectionManager.cs @@ -2,7 +2,7 @@ using Unity.Netcode; using UnityEngine; -namespace PashaBibko.PenguinChase.Core.Network +namespace PashaBibko.PenguinChase.Network { public class ConnectionManager : MonoBehaviour { diff --git a/Assets/Scripts/Core/Network/ConnectionManager.cs.meta b/Assets/Scripts/Network/ConnectionManager.cs.meta similarity index 100% rename from Assets/Scripts/Core/Network/ConnectionManager.cs.meta rename to Assets/Scripts/Network/ConnectionManager.cs.meta diff --git a/Assets/Scripts/Core/Network/Network.cs b/Assets/Scripts/Network/Network.cs similarity index 98% rename from Assets/Scripts/Core/Network/Network.cs rename to Assets/Scripts/Network/Network.cs index f211d7c..63e8a72 100644 --- a/Assets/Scripts/Core/Network/Network.cs +++ b/Assets/Scripts/Network/Network.cs @@ -6,7 +6,7 @@ using Unity.Netcode; using UnityEngine; using System; -namespace PashaBibko.PenguinChase.Core.Network +namespace PashaBibko.PenguinChase.Network { public enum TransportType { @@ -91,7 +91,7 @@ namespace PashaBibko.PenguinChase.Core.Network // Then actually hosts the lobby yield return sConnectionManager.Host(() => { - NetworkManager.Singleton.SceneManager.LoadScene("GameScene", LoadSceneMode.Single); + NetworkManager.Singleton.SceneManager.LoadScene("LobbyScene", LoadSceneMode.Single); Debug.Log("Hosted"); }); } diff --git a/Assets/Scripts/Core/Network/Network.cs.meta b/Assets/Scripts/Network/Network.cs.meta similarity index 100% rename from Assets/Scripts/Core/Network/Network.cs.meta rename to Assets/Scripts/Network/Network.cs.meta diff --git a/Assets/Scripts/Network/NetworkClient.cs b/Assets/Scripts/Network/NetworkClient.cs new file mode 100644 index 0000000..398870d --- /dev/null +++ b/Assets/Scripts/Network/NetworkClient.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Unity.Netcode; +using UnityEngine; + +namespace PashaBibko.PenguinChase.Network +{ + public class GameNetworkClient : NetworkBehaviour + { + private static Dictionary sConnectedClients = new(); + private static bool sDoneInitialSearch = false; + + private void Start() + { + name = $"NetworkClient-{OwnerClientId}"; + + // Searches for existing clients if it is the first one to be locally loaded + if (!sDoneInitialSearch) + { + GameNetworkClient[] clients = FindObjectsByType(FindObjectsSortMode.None); + foreach (GameNetworkClient client in clients) + { + ulong clientId = client.OwnerClientId; + sConnectedClients.Add(clientId, this); + } + + sDoneInitialSearch = true; + } + + // Else adds it to the global list of clients + else + { + sConnectedClients.Add(OwnerClientId, this); + } + } + } +} diff --git a/Assets/Scripts/Network/NetworkClient.cs.meta b/Assets/Scripts/Network/NetworkClient.cs.meta new file mode 100644 index 0000000..3a6bd8d --- /dev/null +++ b/Assets/Scripts/Network/NetworkClient.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4a2fdb2b188edc64aaa5ecbc8568bae0 \ No newline at end of file diff --git a/Assets/Scripts/Core/Network/Transports.meta b/Assets/Scripts/Network/Transports.meta similarity index 100% rename from Assets/Scripts/Core/Network/Transports.meta rename to Assets/Scripts/Network/Transports.meta diff --git a/Assets/Scripts/Core/Network/Transports/LocalhostTransport.cs b/Assets/Scripts/Network/Transports/LocalhostTransport.cs similarity index 76% rename from Assets/Scripts/Core/Network/Transports/LocalhostTransport.cs rename to Assets/Scripts/Network/Transports/LocalhostTransport.cs index 316264a..16b892d 100644 --- a/Assets/Scripts/Core/Network/Transports/LocalhostTransport.cs +++ b/Assets/Scripts/Network/Transports/LocalhostTransport.cs @@ -1,8 +1,9 @@ -using System.Collections; +using PashaBibko.PenguinChase.GameState; +using System.Collections; using Unity.Netcode; using System; -namespace PashaBibko.PenguinChase.Core.Network +namespace PashaBibko.PenguinChase.Network { public class LocalhostTransport : INetworkTransport { @@ -18,6 +19,8 @@ namespace PashaBibko.PenguinChase.Core.Network public IEnumerator Host(Action callback) { NetworkManager.Singleton.StartHost(); + + GameStateSpawner.CreateNetworkGameStateController(); ConnectionManager.CreateNetworkConnectionManager(); callback.Invoke(); diff --git a/Assets/Scripts/Core/Network/Transports/LocalhostTransport.cs.meta b/Assets/Scripts/Network/Transports/LocalhostTransport.cs.meta similarity index 100% rename from Assets/Scripts/Core/Network/Transports/LocalhostTransport.cs.meta rename to Assets/Scripts/Network/Transports/LocalhostTransport.cs.meta diff --git a/Assets/Scripts/Core/Network/Transports/UnityRelayTransport.cs b/Assets/Scripts/Network/Transports/UnityRelayTransport.cs similarity index 90% rename from Assets/Scripts/Core/Network/Transports/UnityRelayTransport.cs rename to Assets/Scripts/Network/Transports/UnityRelayTransport.cs index fe8a0ae..9aaea46 100644 --- a/Assets/Scripts/Core/Network/Transports/UnityRelayTransport.cs +++ b/Assets/Scripts/Network/Transports/UnityRelayTransport.cs @@ -1,4 +1,5 @@ -using PashaBibko.PenguinChase.Extensions; +using PashaBibko.PenguinChase.GameState; +using PashaBibko.PenguinChase.Extensions; using Unity.Services.Relay.Models; using Unity.Services.Relay; using System.Collections; @@ -6,7 +7,7 @@ using Unity.Netcode; using UnityEngine; using System; -namespace PashaBibko.PenguinChase.Core.Network +namespace PashaBibko.PenguinChase.Network { public class UnityRelayTransport : INetworkTransport { @@ -59,7 +60,9 @@ namespace PashaBibko.PenguinChase.Core.Network Network.CurrentTransportComponent.SetHostRelayData(allocation); NetworkManager.Singleton.StartHost(); + GameStateSpawner.CreateNetworkGameStateController(); ConnectionManager.CreateNetworkConnectionManager(); + Debug.Log($"Started server with code: [{joinCode}]"); callback.Invoke(); diff --git a/Assets/Scripts/Core/Network/Transports/UnityRelayTransport.cs.meta b/Assets/Scripts/Network/Transports/UnityRelayTransport.cs.meta similarity index 100% rename from Assets/Scripts/Core/Network/Transports/UnityRelayTransport.cs.meta rename to Assets/Scripts/Network/Transports/UnityRelayTransport.cs.meta diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index f035036..ccc13ce 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -9,7 +9,7 @@ EditorBuildSettings: path: Assets/Scenes/MainMenu.unity guid: 74b90beff86079840bff70644df98b7f - enabled: 1 - path: Assets/Scenes/GameScene.unity + path: Assets/Scenes/LobbyScene.unity guid: 1330a3e27c419f7468d5a2bfee53e3e3 m_configObjects: com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 9383262..1089cd2 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -13,7 +13,7 @@ PlayerSettings: useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany - productName: PenguinsTwoChase (Client) + productName: PenguinsTwoChase defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}