net.dreditor.roomloading 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/.attestation.p7m +0 -0
  2. package/CheckThreeDModeDuringLoad.cs +63 -63
  3. package/CheckThreeDModeDuringLoad.cs.meta +11 -11
  4. package/DRERoomTransition.cs +115 -115
  5. package/DRERoomTransition.cs.meta +11 -11
  6. package/DREStartAloneScene.cs +178 -178
  7. package/DREStartAloneScene.cs.meta +11 -11
  8. package/DREditor.RoomLoading.asmdef +23 -23
  9. package/DREditor.RoomLoading.asmdef.meta +7 -7
  10. package/DialogueRoomLoader.cs +187 -187
  11. package/DialogueRoomLoader.cs.meta +11 -11
  12. package/FadeOnEndTransitionFromSave.cs +204 -204
  13. package/FadeOnEndTransitionFromSave.cs.meta +11 -11
  14. package/FadeOutGeneratePastOnDebugTest.cs +96 -96
  15. package/FadeOutGeneratePastOnDebugTest.cs.meta +11 -11
  16. package/FadeOutOnRoomLoad.cs +74 -74
  17. package/FadeOutOnRoomLoad.cs.meta +11 -11
  18. package/FreezeColorRoomTransition.cs +185 -185
  19. package/FreezeColorRoomTransition.cs.meta +11 -11
  20. package/IPostTransitionRoutine.cs +17 -17
  21. package/IPostTransitionRoutine.cs.meta +11 -11
  22. package/IRoomLoadResolver.cs +14 -14
  23. package/IRoomLoadResolver.cs.meta +11 -11
  24. package/IRoomLoadRoutine.cs +16 -16
  25. package/IRoomLoadRoutine.cs.meta +11 -11
  26. package/IRoomTransition.cs +38 -38
  27. package/IRoomTransition.cs.meta +11 -11
  28. package/ITeleporter.cs +23 -23
  29. package/ITeleporter.cs.meta +11 -11
  30. package/InstanceManagerBase.cs +130 -130
  31. package/InstanceManagerBase.cs.meta +11 -11
  32. package/KeepStateAfterObjective.cs +73 -73
  33. package/KeepStateAfterObjective.cs.meta +11 -11
  34. package/MoveEndOnDialogueFinish.cs +130 -130
  35. package/MoveEndOnDialogueFinish.cs.meta +11 -11
  36. package/PastPointData.cs +43 -43
  37. package/PastPointData.cs.meta +11 -11
  38. package/PrepareTPFDOnLoadingRoom.cs +67 -67
  39. package/PrepareTPFDOnLoadingRoom.cs.meta +11 -11
  40. package/ResolveRoomLoadStates.cs +94 -94
  41. package/ResolveRoomLoadStates.cs.meta +11 -11
  42. package/RoomChanger.cs +264 -264
  43. package/RoomChanger.cs.meta +11 -11
  44. package/RoomChangerBase.cs +84 -84
  45. package/RoomChangerBase.cs.meta +11 -11
  46. package/RoomChangerLoader.cs +89 -89
  47. package/RoomChangerLoader.cs.meta +11 -11
  48. package/RoomLoadComponent.cs +12 -12
  49. package/RoomLoadComponent.cs.meta +11 -11
  50. package/RoomLoadFinisher.cs +80 -80
  51. package/RoomLoadFinisher.cs.meta +11 -11
  52. package/RoomLoadOptionsAsset.cs +44 -44
  53. package/RoomLoadOptionsAsset.cs.meta +11 -11
  54. package/RoomLoader.cs +264 -264
  55. package/RoomLoader.cs.meta +11 -11
  56. package/RoomLoaderBase.cs +86 -86
  57. package/RoomLoaderBase.cs.meta +11 -11
  58. package/RoomLoaderDebugger.cs +150 -150
  59. package/RoomLoaderDebugger.cs.meta +11 -11
  60. package/RoomLoaderHolder.cs +9 -9
  61. package/RoomLoaderHolder.cs.meta +11 -11
  62. package/{Samples → Samples~}/BlackTransitionOnlyOption.asset +18 -18
  63. package/{Samples → Samples~}/BlackTransitionOnlyOption.asset.meta +8 -8
  64. package/{Samples → Samples~}/BlackTransitionToInvestigationOption.asset +18 -18
  65. package/{Samples → Samples~}/BlackTransitionToInvestigationOption.asset.meta +8 -8
  66. package/{Samples → Samples~}/Check_ThreeD_Mode_During_Load.prefab +49 -49
  67. package/{Samples → Samples~}/Check_ThreeD_Mode_During_Load.prefab.meta +7 -7
  68. package/{Samples → Samples~}/DRE_Start_Alone_Scene.prefab +148 -148
  69. package/{Samples → Samples~}/DRE_Start_Alone_Scene.prefab.meta +7 -7
  70. package/{Samples → Samples~}/Dialogue_Room_Loader.prefab +55 -55
  71. package/{Samples → Samples~}/Dialogue_Room_Loader.prefab.meta +7 -7
  72. package/{Samples → Samples~}/FadeOutBlackTransitionOption.asset +18 -18
  73. package/{Samples → Samples~}/FadeOutBlackTransitionOption.asset.meta +8 -8
  74. package/{Samples → Samples~}/Fade_On_End_Transition_From_Save.prefab +145 -145
  75. package/{Samples → Samples~}/Fade_On_End_Transition_From_Save.prefab.meta +7 -7
  76. package/{Samples → Samples~}/Fade_Out_Generate_Past_On_Debug_Test.prefab +139 -139
  77. package/{Samples → Samples~}/Fade_Out_Generate_Past_On_Debug_Test.prefab.meta +7 -7
  78. package/{Samples → Samples~}/Fade_Out_On_Room_Load.prefab +137 -137
  79. package/{Samples → Samples~}/Fade_Out_On_Room_Load.prefab.meta +7 -7
  80. package/{Samples → Samples~}/Freeze_Transition_Canvas.prefab +300 -300
  81. package/{Samples → Samples~}/Freeze_Transition_Canvas.prefab.meta +7 -7
  82. package/{Samples → Samples~}/IsLoadingToRoom.asset +19 -19
  83. package/{Samples → Samples~}/IsLoadingToRoom.asset.meta +8 -8
  84. package/{Samples → Samples~}/Move_End_On_Dialogue_Finish.prefab +52 -52
  85. package/{Samples → Samples~}/Move_End_On_Dialogue_Finish.prefab.meta +7 -7
  86. package/{Samples → Samples~}/OnFadingOutOfLoading.asset +15 -15
  87. package/{Samples → Samples~}/OnFadingOutOfLoading.asset.meta +8 -8
  88. package/{Samples → Samples~}/OnFinishedLoadingRoom.asset +14 -14
  89. package/{Samples → Samples~}/OnFinishedLoadingRoom.asset.meta +8 -8
  90. package/{Samples → Samples~}/OnLoadingThreeDRoom.asset +14 -14
  91. package/{Samples → Samples~}/OnLoadingThreeDRoom.asset.meta +8 -8
  92. package/{Samples → Samples~}/OnLoadingThreeDRoomListener.prefab +51 -51
  93. package/{Samples → Samples~}/OnLoadingThreeDRoomListener.prefab.meta +7 -7
  94. package/{Samples → Samples~}/On_Finished_Loading_Room_Listener.prefab +51 -51
  95. package/{Samples → Samples~}/On_Finished_Loading_Room_Listener.prefab.meta +7 -7
  96. package/{Samples → Samples~}/On_Finished_Loading_Room_No_Dialogue_Listener.prefab +51 -51
  97. package/{Samples → Samples~}/On_Finished_Loading_Room_No_Dialogue_Listener.prefab.meta +7 -7
  98. package/{Samples → Samples~}/On_Finished_Room_Transitions_Listener.prefab +51 -51
  99. package/{Samples → Samples~}/On_Finished_Room_Transitions_Listener.prefab.meta +7 -7
  100. package/{Samples → Samples~}/On_Loading_Room_Listener.prefab +51 -51
  101. package/{Samples → Samples~}/On_Loading_Room_Listener.prefab.meta +7 -7
  102. package/{Samples → Samples~}/On_Started_Changing_Room_Listener.prefab +51 -51
  103. package/{Samples → Samples~}/On_Started_Changing_Room_Listener.prefab.meta +7 -7
  104. package/{Samples → Samples~}/Prepare_TPFD_On_Room_Loading.prefab +142 -142
  105. package/{Samples → Samples~}/Prepare_TPFD_On_Room_Loading.prefab.meta +7 -7
  106. package/{Samples → Samples~}/Resolve_Room_Load_States.prefab +54 -54
  107. package/{Samples → Samples~}/Resolve_Room_Load_States.prefab.meta +7 -7
  108. package/{Samples → Samples~}/Room_Changer.prefab +143 -143
  109. package/{Samples → Samples~}/Room_Changer.prefab.meta +7 -7
  110. package/{Samples → Samples~}/Room_Changer_Loader.prefab +53 -53
  111. package/{Samples → Samples~}/Room_Changer_Loader.prefab.meta +7 -7
  112. package/{Samples → Samples~}/Room_Instance_Manager.prefab +78 -78
  113. package/{Samples → Samples~}/Room_Instance_Manager.prefab.meta +7 -7
  114. package/{Samples → Samples~}/Room_Load_Finisher.prefab +139 -139
  115. package/{Samples → Samples~}/Room_Load_Finisher.prefab.meta +7 -7
  116. package/{Samples → Samples~}/Room_Loader.prefab +584 -584
  117. package/{Samples → Samples~}/Room_Loader.prefab.meta +7 -7
  118. package/{Samples → Samples~}/Room_Loader_Event_Listeners.prefab +337 -337
  119. package/{Samples → Samples~}/Room_Loader_Event_Listeners.prefab.meta +7 -7
  120. package/{Samples → Samples~}/Room_Loading_System_ETemplate.prefab +398 -398
  121. package/{Samples → Samples~}/Room_Loading_System_ETemplate.prefab.meta +7 -7
  122. package/{Samples → Samples~}/SkipActivateControls.asset +19 -19
  123. package/{Samples → Samples~}/SkipActivateControls.asset.meta +8 -8
  124. package/{Samples → Samples~}/Skip_Controls_When_Loaded.prefab +156 -156
  125. package/{Samples → Samples~}/Skip_Controls_When_Loaded.prefab.meta +7 -7
  126. package/{Samples → Samples~}/TPFD_Room_Loader.prefab +215 -215
  127. package/{Samples → Samples~}/TPFD_Room_Loader.prefab.meta +7 -7
  128. package/{Samples → Samples~}/TeleportTransitionOptions.asset +18 -18
  129. package/{Samples → Samples~}/TeleportTransitionOptions.asset.meta +8 -8
  130. package/{Samples → Samples~}/Teleport_Room_Manager.prefab +84 -84
  131. package/{Samples → Samples~}/Teleport_Room_Manager.prefab.meta +7 -7
  132. package/{Samples → Samples~}/UI_Visibility_On_Scene_Events.prefab +316 -316
  133. package/{Samples → Samples~}/UI_Visibility_On_Scene_Events.prefab.meta +7 -7
  134. package/SkipControlsWhenLoaded.cs +65 -65
  135. package/SkipControlsWhenLoaded.cs.meta +11 -11
  136. package/TPFDRoomAnimation.cs +83 -83
  137. package/TPFDRoomAnimation.cs.meta +11 -11
  138. package/TPFDRoomLoader.cs +92 -92
  139. package/TPFDRoomLoader.cs.meta +11 -11
  140. package/TeleportRoomManager.cs +113 -113
  141. package/TeleportRoomManager.cs.meta +11 -11
  142. package/package.json +45 -40
  143. package/package.json.meta +7 -7
  144. package/Samples.meta +0 -8
package/RoomChanger.cs CHANGED
@@ -1,265 +1,265 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using DREditor.EventObjects;
3
- using DREditor.Fading;
4
- using DREditor.Gates;
5
- using DREditor.Progressing.Handling;
6
- using DREditor.Services;
7
- using System;
8
- using System.Collections;
9
- using UnityEngine;
10
- using UnityEngine.EventSystems;
11
- using UnityEngine.SceneManagement;
12
-
13
- namespace DREditor.RoomLoading
14
- {
15
- /// <summary>
16
- ///
17
- /// </summary>
18
- [ClassHeader(nameof(ServiceHolder<RoomChangerBase>) + " for type: " + nameof(RoomChangerBase) +
19
- "\n\n")]
20
- public class RoomChanger : RoomChangerBase
21
- {
22
- /// <summary>
23
- ///
24
- /// </summary>
25
- [Header("")]
26
- [Divider]
27
- [Tooltip("")]
28
- [SerializeField] protected BoolWithEvent inLoading = null;
29
-
30
- /// <summary>
31
- ///
32
- /// </summary>
33
- [Tooltip("")]
34
- [SerializeField] protected IntWithEvent currentState = null;
35
-
36
- /// <summary>
37
- ///
38
- /// </summary>
39
- [Tooltip("")]
40
- [SerializeField] protected IntWithEvent currentChapterIndex = null;
41
-
42
- /// <summary>
43
- ///
44
- /// </summary>
45
- [Tooltip("")]
46
- [SerializeField] protected BoolWithEvent objectiveKeepsInstanceData = null;
47
-
48
- /// <summary>
49
- ///
50
- /// </summary>
51
- [Tooltip("")]
52
- [SerializeField] protected SceneEvent moveToNextNaturalObjective = null;
53
-
54
- /// <summary>
55
- ///
56
- /// </summary>
57
- [Tooltip("")]
58
- [SerializeField] protected BoolWithEvent requiredFlagsTriggered = null;
59
-
60
- /// <summary>
61
- ///
62
- /// </summary>
63
- [Tooltip("")]
64
- [SerializeField] protected StringWithEvent currentObjectiveName = null;
65
-
66
- /// <summary>
67
- ///
68
- /// </summary>
69
- [Tooltip("")]
70
- [SerializeField] protected TransformWithEvent playerSpawnPoint = null;
71
-
72
-
73
- /// <summary>
74
- ///
75
- /// </summary>
76
- [Header("")]
77
- [Divider]
78
- [Tooltip("")]
79
- [SerializeField] protected float hideUIWaitTime = 0.5f;
80
-
81
- /// <summary>
82
- ///
83
- /// </summary>
84
- [Tooltip("")]
85
- [SerializeField] protected float fadeToBlackOptionTime = 0.5f;
86
-
87
- /// <summary>
88
- ///
89
- /// </summary>
90
- [Tooltip("")]
91
- [SerializeField] protected int investigationStateIndex = 2;
92
-
93
-
94
- /// <inheritdoc/>
95
- public override void ChangeRoom(Gate destination, ScriptableObject options = null)
96
- => StartCoroutine(ChangeRoomRoutine(destination, (RoomLoadOptionsAsset)options));
97
-
98
- /// <summary>
99
- ///
100
- /// </summary>
101
- /// <param name="destination"></param>
102
- /// <param name="options"></param>
103
- protected virtual IEnumerator ChangeRoomRoutine(Gate destination, RoomLoadOptionsAsset options = null)
104
- {
105
- UnityEngine.Debug.Log($"REPORT: {ToString()}: Starting room change.");
106
-
107
- this.options = options;
108
-
109
- onStartedChangingRoom.Raise();
110
-
111
- EventSystem.current.SetSelectedGameObject(null);
112
-
113
- SetDestination(destination);
114
-
115
- CheckChangeObjective();
116
-
117
- yield return new WaitForSecondsRealtime(hideUIWaitTime);
118
-
119
- inLoading.SetValue(true); // At this point the changing room process has started.
120
-
121
- yield return EvaluateStartTransition();
122
-
123
- AssignDestinationPosition();
124
-
125
- yield return ChangeRoomScene();
126
- }
127
-
128
- /// <summary>
129
- ///
130
- /// </summary>
131
- protected virtual void CheckChangeObjective()
132
- {
133
- Gate progressionGate = (Gate)ServiceLocator.GetService<ProgressionManagerBase>().currentObjective.ProgressionGate;
134
-
135
- if (requiredFlagsTriggered.Value && (progressionGate == null || progressionGate == destination))
136
- ChangeObjectiveCheckInstanceData();
137
- else
138
- SaveInstanceOfLeavingRoom();
139
- }
140
-
141
- /// <summary>
142
- ///
143
- /// </summary>
144
- protected virtual void ChangeObjectiveCheckInstanceData()
145
- {
146
- UnityEngine.Debug.Log($"REPORT: {ToString()}: Game has recognized to change the objective.");
147
-
148
- if (!objectiveKeepsInstanceData.Value)
149
- ServiceLocator.GetService<InstanceManagerBase>().ClearRoomData();
150
- else
151
- SaveInstanceOfLeavingRoom();
152
-
153
- moveToNextNaturalObjective.Raise();
154
- }
155
-
156
- /// <summary>
157
- ///
158
- /// </summary>
159
- protected virtual void SaveInstanceOfLeavingRoom()
160
- {
161
- try
162
- {
163
- if (ServiceLocator.HasService<InstanceManagerBase>())
164
- ServiceLocator.GetService<InstanceManagerBase>().SaveRoomInstance(SceneManager.GetActiveScene().name);
165
- else
166
- UnityEngine.Debug.LogWarning($"ALERT: {ToString()}: There is no RoomInstanceManager in the scene.");
167
- }
168
- catch (Exception exception)
169
- {
170
- UnityEngine.Debug.LogWarning($"ALERT: {ToString()}: The Room could not be saved because an error occurred" +
171
- $" saving the room instance.");
172
-
173
- UnityEngine.Debug.LogWarning(exception);
174
- }
175
- }
176
-
177
- /// <summary>
178
- ///
179
- /// </summary>
180
- protected virtual IEnumerator EvaluateStartTransition()
181
- {
182
- bool abscentOptionsOrBlackTransition = options == null || !options.blackTransition;
183
-
184
- if (abscentOptionsOrBlackTransition)
185
- yield return ServiceLocator.GetService<IRoomTransition>().StartTransitionRoutine();
186
- else if (options != null && options.blackTransition)
187
- yield return ServiceLocator.GetService<GlobalFade>().FadeToRoutine(fadeToBlackOptionTime);
188
- }
189
-
190
- /// <summary>
191
- ///
192
- /// </summary>
193
- public override void AssignDestinationPosition()
194
- {
195
- if (options != null && options.toWaypoint > -1 && options.toWaypoint < destination.fastTravelMarkers.Count)
196
- SetSpawnAtWaypoint();
197
- else
198
- SetSpawnAtFromGate();
199
- }
200
-
201
- /// <summary>
202
- ///
203
- /// </summary>
204
- protected virtual void SetSpawnAtWaypoint()
205
- {
206
- Waypoint waypoint = destination.fastTravelMarkers[options.toWaypoint];
207
-
208
- SetSpawnPositionAndRotation(waypoint.position, waypoint.rotation);
209
- }
210
-
211
- /// <summary>
212
- ///
213
- /// </summary>
214
- protected virtual void SetSpawnAtFromGate()
215
- {
216
- GateFrom fromG = destination.GetFromLocation(SceneManager.GetActiveScene().name);
217
-
218
- if (fromG != null)
219
- SetSpawnPositionAndRotation(fromG.position, fromG.rotation);
220
- else
221
- SetSpawnPositionAndRotation(Vector3.zero, Vector3.zero);
222
- }
223
-
224
- /// <summary>
225
- ///
226
- /// </summary>
227
- /// <param name="position"></param>
228
- /// <param name="rotation"></param>
229
- protected virtual void SetSpawnPositionAndRotation(Vector3 position, Vector3 rotation)
230
- => playerSpawnPoint.SetValue(new(position, Quaternion.Euler(rotation)));
231
-
232
- /// <summary>
233
- ///
234
- /// </summary>
235
- protected virtual IEnumerator ChangeRoomScene()
236
- {
237
- string destinationSceneName = EvaluateDestinationScene();
238
-
239
- AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(destinationSceneName);
240
-
241
- UnityEngine.Debug.Log($"REPORT: {ToString()}: CHANGING SCENE TO: " + destinationSceneName);
242
-
243
- while (!asyncOperation.isDone)
244
- {
245
- UnityEngine.Debug.Log($"REPORT: {ToString()}: Load progress: " + asyncOperation.progress);
246
-
247
- yield return null;
248
- }
249
- }
250
-
251
- /// <summary>
252
- ///
253
- /// </summary>
254
- /// <returns></returns>
255
- protected virtual string EvaluateDestinationScene()
256
- {
257
- if ((options != null && options.toInvestigation) || currentState.Value == investigationStateIndex)
258
- return destination.GetInvestigationRoom(currentChapterIndex.Value);
259
- else if (destination.GetVariantScene(currentChapterIndex.Value, currentObjectiveName.Value) is string validScene)
260
- return validScene;
261
- else
262
- return destination.ToAreaName;
263
- }
264
- }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.EventObjects;
3
+ using DREditor.Fading;
4
+ using DREditor.Gates;
5
+ using DREditor.Progressing.Handling;
6
+ using DREditor.Services;
7
+ using System;
8
+ using System.Collections;
9
+ using UnityEngine;
10
+ using UnityEngine.EventSystems;
11
+ using UnityEngine.SceneManagement;
12
+
13
+ namespace DREditor.RoomLoading
14
+ {
15
+ /// <summary>
16
+ ///
17
+ /// </summary>
18
+ [ClassHeader(nameof(ServiceHolder<RoomChangerBase>) + " for type: " + nameof(RoomChangerBase) +
19
+ "\n\n")]
20
+ public class RoomChanger : RoomChangerBase
21
+ {
22
+ /// <summary>
23
+ ///
24
+ /// </summary>
25
+ [Header("")]
26
+ [Divider]
27
+ [Tooltip("")]
28
+ [SerializeField] protected BoolWithEvent inLoading = null;
29
+
30
+ /// <summary>
31
+ ///
32
+ /// </summary>
33
+ [Tooltip("")]
34
+ [SerializeField] protected IntWithEvent currentState = null;
35
+
36
+ /// <summary>
37
+ ///
38
+ /// </summary>
39
+ [Tooltip("")]
40
+ [SerializeField] protected IntWithEvent currentChapterIndex = null;
41
+
42
+ /// <summary>
43
+ ///
44
+ /// </summary>
45
+ [Tooltip("")]
46
+ [SerializeField] protected BoolWithEvent objectiveKeepsInstanceData = null;
47
+
48
+ /// <summary>
49
+ ///
50
+ /// </summary>
51
+ [Tooltip("")]
52
+ [SerializeField] protected SceneEvent moveToNextNaturalObjective = null;
53
+
54
+ /// <summary>
55
+ ///
56
+ /// </summary>
57
+ [Tooltip("")]
58
+ [SerializeField] protected BoolWithEvent requiredFlagsTriggered = null;
59
+
60
+ /// <summary>
61
+ ///
62
+ /// </summary>
63
+ [Tooltip("")]
64
+ [SerializeField] protected StringWithEvent currentObjectiveName = null;
65
+
66
+ /// <summary>
67
+ ///
68
+ /// </summary>
69
+ [Tooltip("")]
70
+ [SerializeField] protected TransformWithEvent playerSpawnPoint = null;
71
+
72
+
73
+ /// <summary>
74
+ ///
75
+ /// </summary>
76
+ [Header("")]
77
+ [Divider]
78
+ [Tooltip("")]
79
+ [SerializeField] protected float hideUIWaitTime = 0.5f;
80
+
81
+ /// <summary>
82
+ ///
83
+ /// </summary>
84
+ [Tooltip("")]
85
+ [SerializeField] protected float fadeToBlackOptionTime = 0.5f;
86
+
87
+ /// <summary>
88
+ ///
89
+ /// </summary>
90
+ [Tooltip("")]
91
+ [SerializeField] protected int investigationStateIndex = 2;
92
+
93
+
94
+ /// <inheritdoc/>
95
+ public override void ChangeRoom(Gate destination, ScriptableObject options = null)
96
+ => StartCoroutine(ChangeRoomRoutine(destination, (RoomLoadOptionsAsset)options));
97
+
98
+ /// <summary>
99
+ ///
100
+ /// </summary>
101
+ /// <param name="destination"></param>
102
+ /// <param name="options"></param>
103
+ protected virtual IEnumerator ChangeRoomRoutine(Gate destination, RoomLoadOptionsAsset options = null)
104
+ {
105
+ UnityEngine.Debug.Log($"REPORT: {ToString()}: Starting room change.");
106
+
107
+ this.options = options;
108
+
109
+ onStartedChangingRoom.Raise();
110
+
111
+ EventSystem.current.SetSelectedGameObject(null);
112
+
113
+ SetDestination(destination);
114
+
115
+ CheckChangeObjective();
116
+
117
+ yield return new WaitForSecondsRealtime(hideUIWaitTime);
118
+
119
+ inLoading.SetValue(true); // At this point the changing room process has started.
120
+
121
+ yield return EvaluateStartTransition();
122
+
123
+ AssignDestinationPosition();
124
+
125
+ yield return ChangeRoomScene();
126
+ }
127
+
128
+ /// <summary>
129
+ ///
130
+ /// </summary>
131
+ protected virtual void CheckChangeObjective()
132
+ {
133
+ Gate progressionGate = (Gate)ServiceLocator.GetService<ProgressionManagerBase>().currentObjective.ProgressionGate;
134
+
135
+ if (requiredFlagsTriggered.Value && (progressionGate == null || progressionGate == destination))
136
+ ChangeObjectiveCheckInstanceData();
137
+ else
138
+ SaveInstanceOfLeavingRoom();
139
+ }
140
+
141
+ /// <summary>
142
+ ///
143
+ /// </summary>
144
+ protected virtual void ChangeObjectiveCheckInstanceData()
145
+ {
146
+ UnityEngine.Debug.Log($"REPORT: {ToString()}: Game has recognized to change the objective.");
147
+
148
+ if (!objectiveKeepsInstanceData.Value)
149
+ ServiceLocator.GetService<InstanceManagerBase>().ClearRoomData();
150
+ else
151
+ SaveInstanceOfLeavingRoom();
152
+
153
+ moveToNextNaturalObjective.Raise();
154
+ }
155
+
156
+ /// <summary>
157
+ ///
158
+ /// </summary>
159
+ protected virtual void SaveInstanceOfLeavingRoom()
160
+ {
161
+ try
162
+ {
163
+ if (ServiceLocator.HasService<InstanceManagerBase>())
164
+ ServiceLocator.GetService<InstanceManagerBase>().SaveRoomInstance(SceneManager.GetActiveScene().name);
165
+ else
166
+ UnityEngine.Debug.LogWarning($"ALERT: {ToString()}: There is no RoomInstanceManager in the scene.");
167
+ }
168
+ catch (Exception exception)
169
+ {
170
+ UnityEngine.Debug.LogWarning($"ALERT: {ToString()}: The Room could not be saved because an error occurred" +
171
+ $" saving the room instance.");
172
+
173
+ UnityEngine.Debug.LogWarning(exception);
174
+ }
175
+ }
176
+
177
+ /// <summary>
178
+ ///
179
+ /// </summary>
180
+ protected virtual IEnumerator EvaluateStartTransition()
181
+ {
182
+ bool abscentOptionsOrBlackTransition = options == null || !options.blackTransition;
183
+
184
+ if (abscentOptionsOrBlackTransition)
185
+ yield return ServiceLocator.GetService<IRoomTransition>().StartTransitionRoutine();
186
+ else if (options != null && options.blackTransition)
187
+ yield return ServiceLocator.GetService<GlobalFade>().FadeToRoutine(fadeToBlackOptionTime);
188
+ }
189
+
190
+ /// <summary>
191
+ ///
192
+ /// </summary>
193
+ public override void AssignDestinationPosition()
194
+ {
195
+ if (options != null && options.toWaypoint > -1 && options.toWaypoint < destination.fastTravelMarkers.Count)
196
+ SetSpawnAtWaypoint();
197
+ else
198
+ SetSpawnAtFromGate();
199
+ }
200
+
201
+ /// <summary>
202
+ ///
203
+ /// </summary>
204
+ protected virtual void SetSpawnAtWaypoint()
205
+ {
206
+ Waypoint waypoint = destination.fastTravelMarkers[options.toWaypoint];
207
+
208
+ SetSpawnPositionAndRotation(waypoint.position, waypoint.rotation);
209
+ }
210
+
211
+ /// <summary>
212
+ ///
213
+ /// </summary>
214
+ protected virtual void SetSpawnAtFromGate()
215
+ {
216
+ GateFrom fromG = destination.GetFromLocation(SceneManager.GetActiveScene().name);
217
+
218
+ if (fromG != null)
219
+ SetSpawnPositionAndRotation(fromG.position, fromG.rotation);
220
+ else
221
+ SetSpawnPositionAndRotation(Vector3.zero, Vector3.zero);
222
+ }
223
+
224
+ /// <summary>
225
+ ///
226
+ /// </summary>
227
+ /// <param name="position"></param>
228
+ /// <param name="rotation"></param>
229
+ protected virtual void SetSpawnPositionAndRotation(Vector3 position, Vector3 rotation)
230
+ => playerSpawnPoint.SetValue(new(position, Quaternion.Euler(rotation)));
231
+
232
+ /// <summary>
233
+ ///
234
+ /// </summary>
235
+ protected virtual IEnumerator ChangeRoomScene()
236
+ {
237
+ string destinationSceneName = EvaluateDestinationScene();
238
+
239
+ AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(destinationSceneName);
240
+
241
+ UnityEngine.Debug.Log($"REPORT: {ToString()}: CHANGING SCENE TO: " + destinationSceneName);
242
+
243
+ while (!asyncOperation.isDone)
244
+ {
245
+ UnityEngine.Debug.Log($"REPORT: {ToString()}: Load progress: " + asyncOperation.progress);
246
+
247
+ yield return null;
248
+ }
249
+ }
250
+
251
+ /// <summary>
252
+ ///
253
+ /// </summary>
254
+ /// <returns></returns>
255
+ protected virtual string EvaluateDestinationScene()
256
+ {
257
+ if ((options != null && options.toInvestigation) || currentState.Value == investigationStateIndex)
258
+ return destination.GetInvestigationRoom(currentChapterIndex.Value);
259
+ else if (destination.GetVariantScene(currentChapterIndex.Value, currentObjectiveName.Value) is string validScene)
260
+ return validScene;
261
+ else
262
+ return destination.ToAreaName;
263
+ }
264
+ }
265
265
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 2a045506467a1c04b84b8205d72734f2
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 2a045506467a1c04b84b8205d72734f2
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant: