diff --git a/Assets/Prefabs/Character/Crow.prefab b/Assets/Prefabs/Character/Crow.prefab index b9ba4c53..92604e26 100644 --- a/Assets/Prefabs/Character/Crow.prefab +++ b/Assets/Prefabs/Character/Crow.prefab @@ -9,6 +9,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1914257455311964169} + - component: {fileID: 5109095020609682098} m_Layer: 0 m_Name: Crow m_TagString: Untagged @@ -33,6 +34,27 @@ Transform: - {fileID: 1652797526898234972} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5109095020609682098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5935320730402577130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 0 + InScenePlacedSourceGlobalObjectIdHash: 0 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!1001 &1822549030716984768 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Character/PlayerAvatar.prefab b/Assets/Prefabs/Character/PlayerAvatar.prefab index 8da911a6..13cc0d58 100644 --- a/Assets/Prefabs/Character/PlayerAvatar.prefab +++ b/Assets/Prefabs/Character/PlayerAvatar.prefab @@ -450,7 +450,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4600110157238723790, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3} propertyPath: GlobalObjectIdHash - value: 3177087589 + value: 3737985212 objectReference: {fileID: 0} - target: {fileID: 4600110157238723790, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3} propertyPath: PrefabHashGenerator diff --git a/Assets/Scenes/MainMenu.unity b/Assets/Scenes/MainMenu.unity index a398ff05..94b91250 100644 --- a/Assets/Scenes/MainMenu.unity +++ b/Assets/Scenes/MainMenu.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.17726853, g: 0.22192088, b: 0.30416295, a: 1} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -2112,6 +2112,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 119282041915070026, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 140949569889967664, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} propertyPath: m_AnchorMax.y value: 0 @@ -2160,6 +2164,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 1039067170141175843, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 1423095582044164126, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} propertyPath: m_IsActive value: 1 @@ -2240,6 +2248,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 2510815617631294485, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2510815617631294491, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: @@ -2380,6 +2392,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 5347345741702605565, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5603249645742956311, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} propertyPath: m_AnchorMax.y value: 0 @@ -2512,6 +2528,34 @@ PrefabInstance: propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 6932283184235991320, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 23e8ffa9a1c7699498ea9f30fc08daef, type: 3} + - target: {fileID: 6932283184235991323, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6932283184235991323, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6932283184235991323, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_SizeDelta.x + value: 814.8219 + objectReference: {fileID: 0} + - target: {fileID: 6932283184235991323, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_SizeDelta.y + value: 814.82007 + objectReference: {fileID: 0} + - target: {fileID: 6932283184235991323, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6932283184235991323, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_AnchoredPosition.y + value: 187 + objectReference: {fileID: 0} - target: {fileID: 7260140681816280963, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} propertyPath: m_IsActive value: 1 @@ -2584,6 +2628,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 8941352775669677347, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8941352775669677357, guid: 2ecb76f53a4cb994eb9a7c9d30aa68ec, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: diff --git a/Assets/Scripts/Gameplay/GameState/PersistentGameState.cs b/Assets/Scripts/Gameplay/GameState/PersistentGameState.cs index 0f48b780..8266b9f8 100644 --- a/Assets/Scripts/Gameplay/GameState/PersistentGameState.cs +++ b/Assets/Scripts/Gameplay/GameState/PersistentGameState.cs @@ -21,7 +21,11 @@ namespace Unity.BossRoom.Gameplay.GameState { WinState = winState; } - + // public void ResetGameState() + // { + // Debug.Log("[PersistentGameState] Resetting game state for new session."); + // m_PlayerData.Clear(); + // } public void Reset() { WinState = WinState.Invalid; diff --git a/Assets/Scripts/Gameplay/GameState/ServerBossRoomState.cs b/Assets/Scripts/Gameplay/GameState/ServerBossRoomState.cs index f296693e..61089e3a 100644 --- a/Assets/Scripts/Gameplay/GameState/ServerBossRoomState.cs +++ b/Assets/Scripts/Gameplay/GameState/ServerBossRoomState.cs @@ -142,9 +142,14 @@ namespace Unity.BossRoom.Gameplay.GameState { if (clientId != NetworkManager.Singleton.LocalClientId) { - // If a client disconnects, check for game over in case all other players are already down StartCoroutine(WaitToCheckForGameOver()); } + if (NetworkManager.Singleton.ConnectedClients.Count == 1) // Only server remains + { + Debug.Log("[Server] All players disconnected. Resetting game."); + // PersistentGameState.Instance.ResetGameState(); + NetworkManager.Singleton.SceneManager.LoadScene("CharSelect", UnityEngine.SceneManagement.LoadSceneMode.Single); + } } IEnumerator WaitToCheckForGameOver() diff --git a/Assets/Scripts/Gameplay/GameState/ServerPostGameState.cs b/Assets/Scripts/Gameplay/GameState/ServerPostGameState.cs index 9f2c47c8..9986a398 100644 --- a/Assets/Scripts/Gameplay/GameState/ServerPostGameState.cs +++ b/Assets/Scripts/Gameplay/GameState/ServerPostGameState.cs @@ -20,8 +20,8 @@ namespace Unity.BossRoom.Gameplay.GameState [SerializeField] NetworkPostGame networkPostGame; public NetworkPostGame NetworkPostGame => networkPostGame; - public override GameState ActiveState { get { return GameState.PostGame; } } + [SerializeField] private float resetDelay = 5f; [Inject] ConnectionManager m_ConnectionManager; @@ -35,7 +35,21 @@ namespace Unity.BossRoom.Gameplay.GameState m_NetcodeHooks.OnNetworkSpawnHook += OnNetworkSpawn; } - + protected override void Start() + { + base.Start(); + Debug.Log("[ServerPostGameState] Game Over! Transitioning back to Character Selection after delay..."); + Invoke(nameof(ReturnToLobby), resetDelay); + } + + private void ReturnToLobby() + { + if (NetworkManager.Singleton.IsServer) + { + Debug.Log("[ServerPostGameState] Resetting game and returning to character selection..."); + NetworkManager.Singleton.SceneManager.LoadScene("CharSelect", UnityEngine.SceneManagement.LoadSceneMode.Single); + } + } void OnNetworkSpawn() { if (!NetworkManager.Singleton.IsServer) diff --git a/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs b/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs index b43bee26..708711ea 100644 --- a/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs +++ b/Assets/Scripts/Gameplay/UserInput/ClientInputSender.cs @@ -547,6 +547,7 @@ namespace Unity.BossRoom.Gameplay.UserInput private void HandleSprint() { + if(m_ServerCharacter.IsCrow) return; if (Input.GetKey(KeyCode.LeftShift)) { float staminaCost = 50f * Time.deltaTime;