Fixed level loading, added level reset

This commit is contained in:
Daniel Tyomin 2024-08-18 22:01:15 +02:00
parent 3036732a0d
commit 70d7cab3b9
13 changed files with 106 additions and 239 deletions

View File

@ -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

View File

@ -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}

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using TMPro;
using UnityEditor;
using UnityEngine;
public class Scoreboard: MonoBehaviour
@ -15,17 +16,40 @@ public class Scoreboard: MonoBehaviour
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<IResetable>(true))
{
machine.ResetMachine();
}
var allProducts = FindObjectsOfType<Product>();
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;

View File

@ -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);
}
}

View File

@ -6,7 +6,6 @@ using UnityEngine;
public class StagingManager: MonoBehaviour
{
public static StagingManager Instance;
public static List<StageProp> StageProps;
public List<LevelObjective> 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()
@ -27,39 +27,14 @@ public class StagingManager: MonoBehaviour
}
}
public void OnDestroy()
{
StageProps.Clear();
}
public static void RegisterStageProp(StageProp stageProp)
{
if (StageProps == null)
{
StageProps = new List<StageProp>();
}
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<StageProp>(true))
{
stageProp.gameObject.SetActive((stageProp.ActiveAtStages & stage) != 0);
Debug.Log(stageProp.ActiveAtStages.HasFlag(stage));
stageProp.gameObject.SetActive(stageProp.ActiveAtStages.HasFlag(stage));
}
}

View File

@ -1,13 +0,0 @@
using UnityEngine;
public class AudioAlarm : MonoBehaviour
{
public float Duration;
private bool _isPlaying;
public void PlayAlarm()
{
Debug.Log("Playing alarm");
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: c996d1be4ecb4e8d92bc4344f7f98854
timeCreated: 1723921340

View File

@ -0,0 +1,4 @@
public interface IResetable
{
public void ResetMachine();
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6b152b88cf564370bd89748f325284b6
timeCreated: 1724010368

View File

@ -2,7 +2,7 @@
using System.Collections.Generic;
using UnityEngine;
public class Converter: MonoBehaviour
public class Converter: MonoBehaviour, IResetable
{
public List<Product> 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()

View File

@ -4,11 +4,6 @@ using UnityEngine;
public class ProductReceiver : MonoBehaviour
{
///HashSet<Rigidbody> enteredBodies = new HashSet<Rigidbody>();
public int normalProductCount;
public int defectiveProductCount;
private void OnTriggerEnter(Collider otherCollider)
{
var product = otherCollider.GetComponentInParent<Product>();

View File

@ -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<ProductionPhase> ProductionPhases;
private List<ProductionPhase> 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);
}
}
}

View File

@ -3,13 +3,18 @@ using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class StationaryDefectDetector : MonoBehaviour
public class StationaryDefectDetector : MonoBehaviour, IResetable
{
public List<Product> _knownProducts;
public AudioClip goodSound;
public AudioClip badSound;
public void ResetMachine()
{
_knownProducts.Clear();
}
private void OnTriggerEnter(Collider other)
{
var product = other.GetComponentInParent<Product>();