Tanoda
StageManager.cs
Go to the documentation of this file.
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using GILES;
5using UnityEditor;
6using UnityEngine;
7
8public class StageManager : pb_MonoBehaviourSingleton<StageManager>
9{
10 public delegate void StageOnStageChanged(int stage);
11
12 private readonly List<StageOnStageChanged> OnStageChangedHandlers = new List<StageOnStageChanged>();
13
14
16 {
17 add { OnStageChangedHandlers.Add(value); }
18 remove { OnStageChangedHandlers.Remove(value); }
19 }
20
21 public int CurrentStage = 1;
22 private List<int> partsPerStage = new List<int>(6);
23
24 void Start()
25 {
26 partsPerStage.Add(0);
27 partsPerStage.Add(0);
28 partsPerStage.Add(0);
29 partsPerStage.Add(0);
30 partsPerStage.Add(0);
31 partsPerStage.Add(0);
32 }
33
34 public void AddPartToStage(int stage)
35 {
36 if (stage < 1) return;
37 partsPerStage[stage-1]++;
38 }
39
40 public void FinishCurrentStage()
41 {
42 if (partsPerStage[CurrentStage - 1] > 1)
43 {
44 partsPerStage[CurrentStage - 1]--;
45 return;
46 }
48 Debug.Log("Entering stage " + CurrentStage);
49 OnNextStage();
50 }
51
52 private void OnNextStage()
53 {
54 try
55 {
56 using (List<StageOnStageChanged>.Enumerator enumerator = OnStageChangedHandlers.GetEnumerator())
57 {
58 while (enumerator.MoveNext())
59 {
60 StageOnStageChanged current = enumerator.Current;
61 try
62 {
63 current(CurrentStage);
64 }
65 catch (Exception ex)
66 {
67 Debug.LogWarning("Failed Current Event OnStageChangedHandlers - " + ex.Message);
68 }
69 }
70 }
71 }
72 catch (Exception ex)
73 {
74 Debug.LogError("Failed Events OnStageChangedHandlers - " + ex.Message);
75 }
76 }
77
78}
79
80#if UNITY_EDITOR
81[CustomEditor(typeof(StageManager))]
82public class StageManagerInspector : Editor
83{
84 public override void OnInspectorGUI()
85 {
86 DrawDefaultInspector();
87
88 StageManager myTarget = (StageManager)target;
89 GUILayout.BeginHorizontal();
90 if (GUILayout.Button("Next Stage"))
91 {
92 myTarget.FinishCurrentStage();
93 }
94 GUILayout.EndHorizontal();
95 }
96}
97#endif
UnityEngine.Debug Debug
Definition: TanodaServer.cs:19
delegate void StageOnStageChanged(int stage)
void FinishCurrentStage()
Definition: StageManager.cs:40
void AddPartToStage(int stage)
Definition: StageManager.cs:34
StageOnStageChanged OnStageChanged
Definition: StageManager.cs:16