From 70d7cab3b91ef1651ae38b767bf1ebdd6e037ed0 Mon Sep 17 00:00:00 2001 From: Daniel Tyomin Date: Sun, 18 Aug 2024 22:01:15 +0200 Subject: [PATCH] Fixed level loading, added level reset --- Assets/Prefabs/Defect Detector.prefab | 14 -- Assets/Scenes/Main.unity | 180 +++--------------- Assets/Scripts/Game Schedule/Scoreboard.cs | 32 +++- Assets/Scripts/Game Schedule/StageProp.cs | 11 -- .../Scripts/Game Schedule/StagingManager.cs | 37 +--- Assets/Scripts/Machines/AudioAlarm.cs | 13 -- Assets/Scripts/Machines/AudioAlarm.cs.meta | 3 - Assets/Scripts/Machines/IResetable.cs | 4 + Assets/Scripts/Machines/IResetable.cs.meta | 3 + Assets/Scripts/Machines/ProductConverter.cs | 9 +- Assets/Scripts/Machines/ProductReceiver.cs | 7 +- Assets/Scripts/Machines/ProductSpawner.cs | 25 ++- .../Machines/StationaryDefectDetector.cs | 7 +- 13 files changed, 106 insertions(+), 239 deletions(-) delete mode 100644 Assets/Scripts/Machines/AudioAlarm.cs delete mode 100644 Assets/Scripts/Machines/AudioAlarm.cs.meta create mode 100644 Assets/Scripts/Machines/IResetable.cs create mode 100644 Assets/Scripts/Machines/IResetable.cs.meta diff --git a/Assets/Prefabs/Defect Detector.prefab b/Assets/Prefabs/Defect Detector.prefab index 474fb6c..91619d7 100644 --- a/Assets/Prefabs/Defect Detector.prefab +++ b/Assets/Prefabs/Defect Detector.prefab @@ -222,7 +222,6 @@ GameObject: - component: {fileID: 8499163723211625772} - component: {fileID: 3988703939439567087} - component: {fileID: 9052827441617330997} - - component: {fileID: 8967374450020560052} m_Layer: 0 m_Name: Defect Detector m_TagString: Untagged @@ -312,19 +311,6 @@ MonoBehaviour: _knownProducts: [] goodSound: {fileID: 8300000, guid: 8218c8158aaf5fd48b6b1d0c452e50ca, type: 3} badSound: {fileID: 8300000, guid: 88c1cb18e89f16a42b44301fca5b03be, type: 3} ---- !u!114 &8967374450020560052 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8140899253408661228} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c996d1be4ecb4e8d92bc4344f7f98854, type: 3} - m_Name: - m_EditorClassIdentifier: - Duration: 0 --- !u!1 &8680690869305499051 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index f430c34..03ce0ce 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -503,51 +503,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 6238139087991197689, guid: b5bb2f074e9e2c04baf833ea6393a1f6, type: 3} m_PrefabInstance: {fileID: 196462943} m_PrefabAsset: {fileID: 0} ---- !u!1 &302381074 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 302381075} - - component: {fileID: 302381076} - m_Layer: 0 - m_Name: Level 1 & 2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &302381075 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 302381074} - 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: 1503113266} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &302381076 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 302381074} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 71cd04e41258435d9d03d9b67cb4b7ed, type: 3} - m_Name: - m_EditorClassIdentifier: - ActiveAtStages: -1 --- !u!1001 &311456387 PrefabInstance: m_ObjectHideFlags: 0 @@ -839,7 +794,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &447484957 Transform: m_ObjectHideFlags: 0 @@ -1126,51 +1081,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 418972016787197328, guid: 164bcef21fc47d947ac09a8922e04c53, type: 3} m_PrefabInstance: {fileID: 498283031} m_PrefabAsset: {fileID: 0} ---- !u!1 &506695998 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 506695999} - - component: {fileID: 506696000} - m_Layer: 0 - m_Name: Level 2 only - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &506695999 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 506695998} - 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: 1503113266} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &506696000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 506695998} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 71cd04e41258435d9d03d9b67cb4b7ed, type: 3} - m_Name: - m_EditorClassIdentifier: - ActiveAtStages: 2 --- !u!1 &539769830 GameObject: m_ObjectHideFlags: 0 @@ -1608,7 +1518,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 49f7d9fae60a4082a271f0a2fa185f79, type: 3} m_Name: m_EditorClassIdentifier: - CurrentObjective: {fileID: 11400000, guid: b1326e0e514393547971198daa612d49, type: 2} + CurrentObjective: {fileID: 11400000, guid: 51ab4948e88c6c241aac9c58fbf85aa7, type: 2} _timeLeft: 0 _running: 0 textMesh: {fileID: 1482407714} @@ -1848,13 +1758,14 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 968306742} + - component: {fileID: 968306743} m_Layer: 0 m_Name: Level 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &968306742 Transform: m_ObjectHideFlags: 0 @@ -1863,7 +1774,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 968306740} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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 @@ -1877,8 +1788,21 @@ Transform: - {fileID: 14370895} - {fileID: 427892508} - {fileID: 1533647581} - m_Father: {fileID: 0} + m_Father: {fileID: 1503113266} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &968306743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 968306740} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71cd04e41258435d9d03d9b67cb4b7ed, type: 3} + m_Name: + m_EditorClassIdentifier: + ActiveAtStages: 4 --- !u!1 &969068469 GameObject: m_ObjectHideFlags: 0 @@ -2059,51 +1983,6 @@ Transform: - {fileID: 1834870095} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1078927363 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1078927364} - - component: {fileID: 1078927365} - m_Layer: 0 - m_Name: Level 1 only - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1078927364 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1078927363} - 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: 1503113266} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1078927365 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1078927363} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 71cd04e41258435d9d03d9b67cb4b7ed, type: 3} - m_Name: - m_EditorClassIdentifier: - ActiveAtStages: 1 --- !u!1001 &1082510690 PrefabInstance: m_ObjectHideFlags: 0 @@ -2270,7 +2149,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1157930365} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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 @@ -2284,7 +2163,7 @@ Transform: - {fileID: 1350957812} - {fileID: 498283032} - {fileID: 923119684} - m_Father: {fileID: 0} + m_Father: {fileID: 1503113266} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &1220355054 stripped Transform: @@ -2813,6 +2692,10 @@ PrefabInstance: propertyPath: m_Name value: sliding_crane objectReference: {fileID: 0} + - target: {fileID: 4060506572131258815, guid: cdb590802e3f6bd4db6d5eddce994501, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 5328903551856804412, guid: cdb590802e3f6bd4db6d5eddce994501, type: 3} propertyPath: dropTarget value: @@ -3243,9 +3126,9 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1078927364} - - {fileID: 302381075} - - {fileID: 506695999} + - {fileID: 1776355042} + - {fileID: 1157930367} + - {fileID: 968306742} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &1528149971 stripped @@ -3682,7 +3565,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1776355040} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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 @@ -3694,7 +3577,7 @@ Transform: - {fileID: 328835062} - {fileID: 1220355054} - {fileID: 1381744627} - m_Father: {fileID: 0} + m_Father: {fileID: 1503113266} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &1824741778 stripped Transform: @@ -4129,9 +4012,6 @@ SceneRoots: - {fileID: 2017149079} - {fileID: 1503113266} - {fileID: 1228306006} - - {fileID: 1776355042} - - {fileID: 1157930367} - - {fileID: 968306742} - {fileID: 721670239} - {fileID: 1382857590} - {fileID: 447484957} diff --git a/Assets/Scripts/Game Schedule/Scoreboard.cs b/Assets/Scripts/Game Schedule/Scoreboard.cs index 879e052..97e09b8 100644 --- a/Assets/Scripts/Game Schedule/Scoreboard.cs +++ b/Assets/Scripts/Game Schedule/Scoreboard.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using TMPro; +using UnityEditor; using UnityEngine; public class Scoreboard: MonoBehaviour @@ -14,18 +15,41 @@ public class Scoreboard: MonoBehaviour public bool _running; public TextMeshPro textMesh; - - public void Start() + + public void OnEnable() { if (!Instance) { Instance = this; } - + } + + public void Start() + { SetObjective(CurrentObjective); UpdateText(); } - + +#if UNITY_EDITOR + [MenuItem("Tools/Restart Level")] +#endif + public static void RestartLevel() + { + foreach (var machine in StagingManager.Instance.GetComponentsInChildren(true)) + { + machine.ResetMachine(); + } + + var allProducts = FindObjectsOfType(); + for (int i = 0; i < allProducts.Length; i++) + { + Destroy(allProducts[i].gameObject); + } + + Instance.SetObjective(Instance.CurrentObjective); + Instance.UpdateText(); + } + public void SetObjective(LevelObjective objective) { CurrentObjective = objective; diff --git a/Assets/Scripts/Game Schedule/StageProp.cs b/Assets/Scripts/Game Schedule/StageProp.cs index fdf4b51..3b6d4f4 100644 --- a/Assets/Scripts/Game Schedule/StageProp.cs +++ b/Assets/Scripts/Game Schedule/StageProp.cs @@ -3,15 +3,4 @@ public class StageProp: MonoBehaviour { public StagingManager.StageEnum ActiveAtStages; - - public void Start() - { - StagingManager.RegisterStageProp(this); - gameObject.SetActive(false); - } - - public void OnDestroy() - { - StagingManager.RemoveStageProp(this); - } } \ No newline at end of file diff --git a/Assets/Scripts/Game Schedule/StagingManager.cs b/Assets/Scripts/Game Schedule/StagingManager.cs index 89dfd69..ded8668 100644 --- a/Assets/Scripts/Game Schedule/StagingManager.cs +++ b/Assets/Scripts/Game Schedule/StagingManager.cs @@ -6,7 +6,6 @@ using UnityEngine; public class StagingManager: MonoBehaviour { public static StagingManager Instance; - public static List StageProps; public List Objectives; @@ -15,8 +14,9 @@ public class StagingManager: MonoBehaviour [Flags] public enum StageEnum { - Level1 = 1, - Level2 = 2, + Level1 = 1 << 0, + Level2 = 1 << 1, + Level3 = 1 << 2, } public void OnEnable() @@ -26,40 +26,15 @@ public class StagingManager: MonoBehaviour Instance = this; } } - - public void OnDestroy() - { - StageProps.Clear(); - } - - public static void RegisterStageProp(StageProp stageProp) - { - if (StageProps == null) - { - StageProps = new List(); - } - - if (!StageProps.Contains(stageProp)) - { - StageProps.Add(stageProp); - } - } - - public static void RemoveStageProp(StageProp stageProp) - { - if (StageProps.Contains(stageProp)) - { - StageProps.Remove(stageProp); - } - } public static void SetStage(StageEnum stage) { Instance.CurrentStage = stage; - foreach (var stageProp in StageProps) + foreach (var stageProp in FindObjectsOfType(true)) { - stageProp.gameObject.SetActive((stageProp.ActiveAtStages & stage) != 0); + Debug.Log(stageProp.ActiveAtStages.HasFlag(stage)); + stageProp.gameObject.SetActive(stageProp.ActiveAtStages.HasFlag(stage)); } } diff --git a/Assets/Scripts/Machines/AudioAlarm.cs b/Assets/Scripts/Machines/AudioAlarm.cs deleted file mode 100644 index c45eefb..0000000 --- a/Assets/Scripts/Machines/AudioAlarm.cs +++ /dev/null @@ -1,13 +0,0 @@ -using UnityEngine; - -public class AudioAlarm : MonoBehaviour -{ - public float Duration; - - private bool _isPlaying; - - public void PlayAlarm() - { - Debug.Log("Playing alarm"); - } -} \ No newline at end of file diff --git a/Assets/Scripts/Machines/AudioAlarm.cs.meta b/Assets/Scripts/Machines/AudioAlarm.cs.meta deleted file mode 100644 index 9c43040..0000000 --- a/Assets/Scripts/Machines/AudioAlarm.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: c996d1be4ecb4e8d92bc4344f7f98854 -timeCreated: 1723921340 \ No newline at end of file diff --git a/Assets/Scripts/Machines/IResetable.cs b/Assets/Scripts/Machines/IResetable.cs new file mode 100644 index 0000000..0934ad7 --- /dev/null +++ b/Assets/Scripts/Machines/IResetable.cs @@ -0,0 +1,4 @@ +public interface IResetable +{ + public void ResetMachine(); +} \ No newline at end of file diff --git a/Assets/Scripts/Machines/IResetable.cs.meta b/Assets/Scripts/Machines/IResetable.cs.meta new file mode 100644 index 0000000..e228891 --- /dev/null +++ b/Assets/Scripts/Machines/IResetable.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6b152b88cf564370bd89748f325284b6 +timeCreated: 1724010368 \ No newline at end of file diff --git a/Assets/Scripts/Machines/ProductConverter.cs b/Assets/Scripts/Machines/ProductConverter.cs index bf09570..8c1fe9c 100644 --- a/Assets/Scripts/Machines/ProductConverter.cs +++ b/Assets/Scripts/Machines/ProductConverter.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -public class Converter: MonoBehaviour +public class Converter: MonoBehaviour, IResetable { public List inputProducts; @@ -31,9 +31,16 @@ public class Converter: MonoBehaviour } public void Start() + { + ResetMachine(); + } + + public void ResetMachine() { _conversionTimer = conversionDuration; CurrentHealth = MaxHealth; + + inputProducts.Clear(); } public void Update() diff --git a/Assets/Scripts/Machines/ProductReceiver.cs b/Assets/Scripts/Machines/ProductReceiver.cs index 5f15da4..02d453f 100644 --- a/Assets/Scripts/Machines/ProductReceiver.cs +++ b/Assets/Scripts/Machines/ProductReceiver.cs @@ -3,12 +3,7 @@ using System.Collections.Generic; using UnityEngine; public class ProductReceiver : MonoBehaviour -{ - ///HashSet enteredBodies = new HashSet(); - - public int normalProductCount; - public int defectiveProductCount; - +{ private void OnTriggerEnter(Collider otherCollider) { var product = otherCollider.GetComponentInParent(); diff --git a/Assets/Scripts/Machines/ProductSpawner.cs b/Assets/Scripts/Machines/ProductSpawner.cs index d11edec..261f3b9 100644 --- a/Assets/Scripts/Machines/ProductSpawner.cs +++ b/Assets/Scripts/Machines/ProductSpawner.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -public class ProductSpawner : MonoBehaviour +public class ProductSpawner : MonoBehaviour, IResetable { public enum ProductionPhaseType { @@ -24,19 +24,34 @@ public class ProductSpawner : MonoBehaviour } public List ProductionPhases; + private List RuntimeProductionPhases; public float _remainingDuration; public float _spawnTimer; + + public void Start() + { + ResetMachine(); + } + + public void ResetMachine() + { + enabled = true; + _remainingDuration = 0f; + _spawnTimer = 0f; + + RuntimeProductionPhases = new(ProductionPhases); + } private void Update() { - if (ProductionPhases.Count == 0) + if (RuntimeProductionPhases.Count == 0) { enabled = false; return; } - var currentPhase = ProductionPhases[0]; + var currentPhase = RuntimeProductionPhases[0]; if (_remainingDuration <= 0) { @@ -54,7 +69,7 @@ public class ProductSpawner : MonoBehaviour { if (_remainingDuration <= 0) { - ProductionPhases.RemoveAt(0); + RuntimeProductionPhases.RemoveAt(0); } return; @@ -67,7 +82,7 @@ public class ProductSpawner : MonoBehaviour if (_remainingDuration <= 0) { - ProductionPhases.RemoveAt(0); + RuntimeProductionPhases.RemoveAt(0); } } } \ No newline at end of file diff --git a/Assets/Scripts/Machines/StationaryDefectDetector.cs b/Assets/Scripts/Machines/StationaryDefectDetector.cs index d24e082..3c9f175 100644 --- a/Assets/Scripts/Machines/StationaryDefectDetector.cs +++ b/Assets/Scripts/Machines/StationaryDefectDetector.cs @@ -3,12 +3,17 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; -public class StationaryDefectDetector : MonoBehaviour +public class StationaryDefectDetector : MonoBehaviour, IResetable { public List _knownProducts; public AudioClip goodSound; public AudioClip badSound; + + public void ResetMachine() + { + _knownProducts.Clear(); + } private void OnTriggerEnter(Collider other) {