net.dreditor.actors 0.1.6 → 0.1.7

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 (143) hide show
  1. package/.attestation.p7m +0 -0
  2. package/Actor.cs +74 -74
  3. package/Actor.cs.meta +11 -11
  4. package/ActorBodyDebugger.cs +117 -117
  5. package/ActorBodyDebugger.cs.meta +13 -13
  6. package/ActorManager.cs +149 -149
  7. package/ActorManager.cs.meta +11 -11
  8. package/ActorOrganizer.cs +93 -93
  9. package/ActorOrganizer.cs.meta +11 -11
  10. package/BasicExpressionChanger.cs +157 -157
  11. package/BasicExpressionChanger.cs.meta +11 -11
  12. package/BasicLayerHandler.cs +108 -108
  13. package/BasicLayerHandler.cs.meta +11 -11
  14. package/DREditor.Actors.asmdef +20 -20
  15. package/DREditor.Actors.asmdef.meta +7 -7
  16. package/Editor/AssignmentStyleGUIEditor.cs +171 -171
  17. package/Editor/AssignmentStyleGUIEditor.cs.meta +1 -1
  18. package/Editor/AutoCreateCharacterWizard.cs +475 -475
  19. package/Editor/AutoCreateCharacterWizard.cs.meta +11 -11
  20. package/Editor/AutoCreateTrialCharacterWizard.cs +426 -426
  21. package/Editor/AutoCreateTrialCharacterWizard.cs.meta +1 -1
  22. package/Editor/CharacterUtility.cs +119 -119
  23. package/Editor/CharacterUtility.cs.meta +11 -11
  24. package/Editor/CircleDrawer.cs +206 -206
  25. package/Editor/CircleDrawer.cs.meta +1 -1
  26. package/Editor/CircleUtility.cs +54 -54
  27. package/Editor/CircleUtility.cs.meta +1 -1
  28. package/Editor/DREditor.Actors.Editor.asmdef +21 -21
  29. package/Editor/DREditor.Actors.Editor.asmdef.meta +7 -7
  30. package/Editor/GenerateCharacterIntroDialogues.cs +234 -234
  31. package/Editor/GenerateCharacterIntroDialogues.cs.meta +11 -11
  32. package/Editor/IItemImporter.cs +19 -19
  33. package/Editor/IItemImporter.cs.meta +1 -1
  34. package/Editor/ItemImporter.cs +170 -170
  35. package/Editor/ItemImporter.cs.meta +1 -1
  36. package/Editor/ItemUtility.cs +85 -85
  37. package/Editor/ItemUtility.cs.meta +11 -11
  38. package/Editor/ItemWizard.cs +41 -41
  39. package/Editor/ItemWizard.cs.meta +11 -11
  40. package/Editor.meta +8 -8
  41. package/Events/ActorCheckFocusEvent.cs +49 -49
  42. package/Events/ActorCheckFocusEvent.cs.meta +11 -11
  43. package/Events/ActorFadeEvent.cs +19 -19
  44. package/Events/ActorFadeEvent.cs.meta +11 -11
  45. package/Events/ActorFadeHandler.cs +53 -53
  46. package/Events/ActorFadeHandler.cs.meta +11 -11
  47. package/Events/ActorFaintEvent.cs +282 -282
  48. package/Events/ActorFaintEvent.cs.meta +11 -11
  49. package/Events/ActorFaintEventRenderQ.cs +65 -65
  50. package/Events/ActorFaintEventRenderQ.cs.meta +11 -11
  51. package/Events/ActorLeaveHandler.cs +238 -238
  52. package/Events/ActorLeaveHandler.cs.meta +11 -11
  53. package/Events/ActorSpriteFader.cs +190 -190
  54. package/Events/ActorSpriteFader.cs.meta +11 -11
  55. package/Events/ActorSpriteFaderRenderQ.cs +49 -49
  56. package/Events/ActorSpriteFaderRenderQ.cs.meta +11 -11
  57. package/Events/BSTrialActorFlash.cs +259 -259
  58. package/Events/BSTrialActorFlash.cs.meta +11 -11
  59. package/Events/ChangeLastFocusEvent.cs +62 -62
  60. package/Events/ChangeLastFocusEvent.cs.meta +11 -11
  61. package/Events/MoveCharacterEvent.cs +141 -141
  62. package/Events/MoveCharacterEvent.cs.meta +11 -11
  63. package/Events.meta +8 -8
  64. package/ExpressionChanger.cs +25 -25
  65. package/ExpressionChanger.cs.meta +11 -11
  66. package/FocusHandler.cs +96 -96
  67. package/FocusHandler.cs.meta +11 -11
  68. package/Implementation/ActorFocusHandler.cs +195 -195
  69. package/Implementation/ActorFocusHandler.cs.meta +11 -11
  70. package/Implementation/ActorFocusLoadEnd.cs +108 -108
  71. package/Implementation/ActorFocusLoadEnd.cs.meta +11 -11
  72. package/Implementation/ActorFocusPrepare.cs +102 -102
  73. package/Implementation/ActorFocusPrepare.cs.meta +11 -11
  74. package/Implementation/ActorFocusResolve.cs +67 -67
  75. package/Implementation/ActorFocusResolve.cs.meta +11 -11
  76. package/Implementation/ActorSpriteChanger.cs +129 -129
  77. package/Implementation/ActorSpriteChanger.cs.meta +11 -11
  78. package/Implementation/ActorTrialSpriteChanger.cs +46 -46
  79. package/Implementation/ActorTrialSpriteChanger.cs.meta +11 -11
  80. package/Implementation/ChangeLastSpriteEvent.cs +92 -92
  81. package/Implementation/ChangeLastSpriteEvent.cs.meta +11 -11
  82. package/Implementation/WorldSpriteChanger.cs +207 -207
  83. package/Implementation/WorldSpriteChanger.cs.meta +11 -11
  84. package/Implementation.meta +8 -8
  85. package/LayerHandler.cs +30 -30
  86. package/LayerHandler.cs.meta +11 -11
  87. package/{Samples → Samples~}/Actor.prefab +581 -581
  88. package/{Samples → Samples~}/Actor.prefab.meta +7 -7
  89. package/{Samples → Samples~}/Actor_Body_Debugger.prefab +68 -68
  90. package/{Samples → Samples~}/Actor_Body_Debugger.prefab.meta +7 -7
  91. package/{Samples → Samples~}/Actor_Check_Focus_Event.prefab +47 -47
  92. package/{Samples → Samples~}/Actor_Check_Focus_Event.prefab.meta +7 -7
  93. package/{Samples → Samples~}/Actor_Event_Handlers.prefab +668 -668
  94. package/{Samples → Samples~}/Actor_Event_Handlers.prefab.meta +7 -7
  95. package/{Samples → Samples~}/Actor_Fade_Handler.prefab +137 -137
  96. package/{Samples → Samples~}/Actor_Fade_Handler.prefab.meta +7 -7
  97. package/{Samples → Samples~}/Actor_Fade_Handler_Render_Q.prefab +137 -137
  98. package/{Samples → Samples~}/Actor_Fade_Handler_Render_Q.prefab.meta +7 -7
  99. package/{Samples → Samples~}/Actor_Faint_Event.prefab +71 -71
  100. package/{Samples → Samples~}/Actor_Faint_Event.prefab.meta +7 -7
  101. package/{Samples → Samples~}/Actor_Faint_Event_Render_Q.prefab +73 -73
  102. package/{Samples → Samples~}/Actor_Faint_Event_Render_Q.prefab.meta +7 -7
  103. package/{Samples → Samples~}/Actor_Focus_Handler.prefab +168 -168
  104. package/{Samples → Samples~}/Actor_Focus_Handler.prefab.meta +7 -7
  105. package/{Samples → Samples~}/Actor_Focus_Handler_Shell.prefab +56 -56
  106. package/{Samples → Samples~}/Actor_Focus_Handler_Shell.prefab.meta +7 -7
  107. package/{Samples → Samples~}/Actor_Focus_Load_End.prefab +66 -66
  108. package/{Samples → Samples~}/Actor_Focus_Load_End.prefab.meta +7 -7
  109. package/{Samples → Samples~}/Actor_Focus_Prepare.prefab +49 -49
  110. package/{Samples → Samples~}/Actor_Focus_Prepare.prefab.meta +7 -7
  111. package/{Samples → Samples~}/Actor_Focus_Resolve.prefab +48 -48
  112. package/{Samples → Samples~}/Actor_Focus_Resolve.prefab.meta +7 -7
  113. package/{Samples → Samples~}/Actor_Leave_Handler.prefab +141 -141
  114. package/{Samples → Samples~}/Actor_Leave_Handler.prefab.meta +7 -7
  115. package/{Samples → Samples~}/Actor_Leave_Handler_Render_Q.prefab +141 -141
  116. package/{Samples → Samples~}/Actor_Leave_Handler_Render_Q.prefab.meta +7 -7
  117. package/{Samples → Samples~}/Actor_Organizer.prefab +49 -49
  118. package/{Samples → Samples~}/Actor_Organizer.prefab.meta +7 -7
  119. package/{Samples → Samples~}/Actor_Sprite_Changer.prefab +163 -163
  120. package/{Samples → Samples~}/Actor_Sprite_Changer.prefab.meta +7 -7
  121. package/{Samples → Samples~}/Actor_Sprite_Changer_Shell.prefab +51 -51
  122. package/{Samples → Samples~}/Actor_Sprite_Changer_Shell.prefab.meta +7 -7
  123. package/{Samples → Samples~}/Actor_Sprite_Fader.prefab +52 -52
  124. package/{Samples → Samples~}/Actor_Sprite_Fader.prefab.meta +7 -7
  125. package/{Samples → Samples~}/Actor_Sprite_Fader_Render_Q.prefab +54 -54
  126. package/{Samples → Samples~}/Actor_Sprite_Fader_Render_Q.prefab.meta +7 -7
  127. package/{Samples → Samples~}/Actor_Trial_Sprite_Changer.prefab +47 -47
  128. package/{Samples → Samples~}/Actor_Trial_Sprite_Changer.prefab.meta +7 -7
  129. package/{Samples → Samples~}/Change_Last_Focus_Event.prefab +66 -66
  130. package/{Samples → Samples~}/Change_Last_Focus_Event.prefab.meta +7 -7
  131. package/{Samples → Samples~}/Change_Last_Sprite_Event.prefab +49 -49
  132. package/{Samples → Samples~}/Change_Last_Sprite_Event.prefab.meta +7 -7
  133. package/{Samples → Samples~}/Change_Last_World_Sprite_Event.prefab +186 -186
  134. package/{Samples → Samples~}/Change_Last_World_Sprite_Event.prefab.meta +7 -7
  135. package/{Samples → Samples~}/Focus_Handler.prefab +49 -49
  136. package/{Samples → Samples~}/Focus_Handler.prefab.meta +7 -7
  137. package/{Samples → Samples~}/Move_Character_Event.prefab +51 -51
  138. package/{Samples → Samples~}/Move_Character_Event.prefab.meta +7 -7
  139. package/{Samples → Samples~}/World_Sprite_Changer.prefab +51 -51
  140. package/{Samples → Samples~}/World_Sprite_Changer.prefab.meta +7 -7
  141. package/package.json +43 -38
  142. package/package.json.meta +7 -7
  143. package/Samples.meta +0 -8
@@ -1,66 +1,66 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using DREditor.DialogueEventHandling;
3
- using DREditor.EventObjects;
4
- using System.Collections;
5
- using UnityEngine;
6
-
7
- namespace DREditor.Actors.Events
8
- {
9
- /// <summary>
10
- ///
11
- /// </summary>
12
- [ClassHeader(nameof(DialogueEventHandler) +
13
- "\n\n")]
14
- public class ActorFaintEventRenderQ : ActorFaintEvent
15
- {
16
- /// <summary>
17
- ///
18
- /// </summary>
19
- [Header("")]
20
- [Divider]
21
- [Tooltip("")]
22
- [SerializeField] protected StringWithEvent renderQCamCode = null;
23
-
24
- /// <summary>
25
- ///
26
- /// </summary>
27
- [Tooltip("")]
28
- [SerializeField] protected string faintingRenderQueueTag = "Fainting";
29
-
30
-
31
- /// <inheritdoc/>
32
- protected override void OnDialogueEventTriggered(object o)
33
- {
34
- renderQCamCode.SetValue(faintingRenderQueueTag);
35
-
36
- base.OnDialogueEventTriggered(o);
37
- }
38
-
39
- /// <inheritdoc/>
40
- protected override IEnumerator FaintAnim()
41
- {
42
- yield return base.FaintAnim();
43
-
44
- RemoveFromRenderQ();
45
- }
46
-
47
- /// <inheritdoc/>
48
- protected override IEnumerator UnFaintAnimation(float toYPosition)
49
- {
50
- yield return base.UnFaintAnimation(toYPosition);
51
-
52
- RemoveFromRenderQ();
53
- }
54
-
55
- /// <summary>
56
- ///
57
- /// </summary>
58
- protected virtual void RemoveFromRenderQ()
59
- {
60
- if (renderQCamCode.Value == faintingRenderQueueTag)
61
- renderQCamCode.Invoke();
62
- else
63
- renderQCamCode.SetValue(faintingRenderQueueTag);
64
- }
65
- }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.DialogueEventHandling;
3
+ using DREditor.EventObjects;
4
+ using System.Collections;
5
+ using UnityEngine;
6
+
7
+ namespace DREditor.Actors.Events
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ [ClassHeader(nameof(DialogueEventHandler) +
13
+ "\n\n")]
14
+ public class ActorFaintEventRenderQ : ActorFaintEvent
15
+ {
16
+ /// <summary>
17
+ ///
18
+ /// </summary>
19
+ [Header("")]
20
+ [Divider]
21
+ [Tooltip("")]
22
+ [SerializeField] protected StringWithEvent renderQCamCode = null;
23
+
24
+ /// <summary>
25
+ ///
26
+ /// </summary>
27
+ [Tooltip("")]
28
+ [SerializeField] protected string faintingRenderQueueTag = "Fainting";
29
+
30
+
31
+ /// <inheritdoc/>
32
+ protected override void OnDialogueEventTriggered(object o)
33
+ {
34
+ renderQCamCode.SetValue(faintingRenderQueueTag);
35
+
36
+ base.OnDialogueEventTriggered(o);
37
+ }
38
+
39
+ /// <inheritdoc/>
40
+ protected override IEnumerator FaintAnim()
41
+ {
42
+ yield return base.FaintAnim();
43
+
44
+ RemoveFromRenderQ();
45
+ }
46
+
47
+ /// <inheritdoc/>
48
+ protected override IEnumerator UnFaintAnimation(float toYPosition)
49
+ {
50
+ yield return base.UnFaintAnimation(toYPosition);
51
+
52
+ RemoveFromRenderQ();
53
+ }
54
+
55
+ /// <summary>
56
+ ///
57
+ /// </summary>
58
+ protected virtual void RemoveFromRenderQ()
59
+ {
60
+ if (renderQCamCode.Value == faintingRenderQueueTag)
61
+ renderQCamCode.Invoke();
62
+ else
63
+ renderQCamCode.SetValue(faintingRenderQueueTag);
64
+ }
65
+ }
66
66
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: dc32a59578adaac4b856752a620ba251
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: dc32a59578adaac4b856752a620ba251
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,239 +1,239 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using DREditor.DialogueEventHandling;
3
- using DREditor.Dialogues;
4
- using DREditor.Dialogues.Ending;
5
- using DREditor.Dialogues.Events;
6
- using DREditor.Dialogues.LineReading;
7
- using DREditor.EventObjects;
8
- using DREditor.Services;
9
- using DREditor.Talkables;
10
- using System;
11
- using System.Collections.Generic;
12
- using System.Linq;
13
- using UnityEngine;
14
-
15
- namespace DREditor.Actors.Events
16
- {
17
- /// <summary>
18
- ///
19
- /// </summary>
20
- [ClassHeader(nameof(DialogueEventHandler) +
21
- "\n\n")]
22
- public class ActorLeaveHandler : ActorFadeEvent, IToTitleScreen
23
- {
24
- /// <summary>
25
- ///
26
- /// </summary>
27
- [Header("")]
28
- [Divider]
29
- [Tooltip("")]
30
- [SerializeField] protected BoolWithEvent isProtagSpeaking = null;
31
-
32
- /// <summary>
33
- ///
34
- /// </summary>
35
- [Tooltip("")]
36
- [SerializeField] protected BoolWithEvent isLoadingFile = null;
37
-
38
- /// <summary>
39
- ///
40
- /// </summary>
41
- [Tooltip("")]
42
- [SerializeField] protected SelectableObjectWithEvent currentActor = null;
43
-
44
- /// <summary>
45
- ///
46
- /// </summary>
47
- [Tooltip("")]
48
- [SerializeField] protected SelectableObjectWithEvent lastActor = null;
49
-
50
-
51
- [Header("")]
52
- [Divider]
53
- [SerializeField] protected Vector3 designatedExitPosition = new(0, -20, 0);
54
-
55
-
56
- /// <summary>
57
- ///
58
- /// </summary>
59
- protected IDialogueEnder DialogueEnder = null;
60
-
61
- /// <summary>
62
- ///
63
- /// </summary>
64
- protected ILineReader LineReader = null;
65
-
66
- /// <summary>
67
- ///
68
- /// </summary>
69
- protected bool exit = false;
70
-
71
- /// <summary>
72
- ///
73
- /// </summary>
74
- protected readonly List<Action> delegates = new();
75
-
76
-
77
- /// <summary>
78
- ///
79
- /// </summary>
80
- /// <param name="o"></param>
81
- protected override void OnDialogueEventTriggered(object o = null)
82
- {
83
- CharacterLeave characterLeaveTuple = (CharacterLeave)o;
84
-
85
- Talkable talkable = characterLeaveTuple.current ? (Talkable)currentActor.Value : (Talkable)lastActor.Value;
86
-
87
- if (talkable is Actor actor)
88
- EvaluateCharacterLeave(characterLeaveTuple, actor);
89
- else
90
- UnityEngine.Debug.LogWarning($"{ToString()}: WARNING!: Could Not get the actor for Character Leave");
91
- }
92
-
93
- /// <summary>
94
- ///
95
- /// </summary>
96
- /// <param name="leaveEvent"></param>
97
- /// <param name="actor"></param>
98
- protected virtual void EvaluateCharacterLeave(CharacterLeave leaveEvent, Actor actor)
99
- {
100
- exit = leaveEvent.exit;
101
-
102
- if (leaveEvent.appear)
103
- spriteFader.ActorAppear(actor);
104
- else if (leaveEvent.current && !isProtagSpeaking.Value)
105
- ActorLeft(actor);
106
- else if (lastActor.Value is Actor actorToLeave)
107
- ActorLeft(actorToLeave);
108
- else
109
- UnityEngine.Debug.LogWarning($"{ToString()}: WARNING!: Could Not get the actor for Character Leave");
110
- }
111
-
112
- /// <summary>
113
- ///
114
- /// </summary>
115
- /// <param name="actor"></param>
116
- protected virtual void ActorLeft(Actor actor)
117
- {
118
- spriteFader.ActorDisappear(actor);
119
-
120
- if (exit)
121
- ActorLeaveExitProcess(actor);
122
- }
123
-
124
-
125
- /// <summary>
126
- ///
127
- /// </summary>
128
- /// <remarks></remarks>
129
- /// <param name="actor"></param>
130
- protected virtual void ActorLeaveExitProcess(Actor actor)
131
- {
132
- if (ExitProcessShouldBeCanceled(actor))
133
- return;
134
-
135
- if (!ServiceLocator.GetService<IDialogueManager>().GetReader().IsOnLastLine())
136
- {
137
- LineReader = ServiceLocator.GetService<IDialogueManager>()
138
- .GetComponentsInChildren<MonoBehaviour>()
139
- .OfType<ILineReader>()
140
- .FirstOrDefault();
141
-
142
- void handler()
143
- {
144
- ExitChar(actor);
145
-
146
- LineReader.OnLineStart -= handler;
147
-
148
- delegates.Remove(handler);
149
- }
150
-
151
- delegates.Add(handler);
152
-
153
- LineReader.OnLineStart += handler;
154
- }
155
- else
156
- {
157
- UnityEngine.Debug.Log($"{ToString()}: REPORT: Adding exit character to the end of the line." +
158
- $"\nPROPOSAL: If any bugs occur, contact the developer and notify them of the bug that occured " +
159
- $"if it happened almost immediately after the current dialogue ends.");
160
-
161
- DialogueEnder = ServiceLocator.GetService<IDialogueManager>().GetEnder();
162
-
163
- void handler()
164
- {
165
- ExitChar(actor);
166
-
167
- DialogueEnder.OnDialogueResolving -= handler;
168
-
169
- delegates.Remove(handler);
170
- }
171
-
172
- delegates.Add(handler);
173
-
174
- DialogueEnder.OnDialogueResolving += handler;
175
- }
176
- }
177
-
178
- /// <summary>
179
- ///
180
- /// </summary>
181
- /// <remarks></remarks>
182
- /// <param name="actor"></param>
183
- /// <returns></returns>
184
- protected virtual bool ExitProcessShouldBeCanceled(Actor actor)
185
- {
186
- bool result = actor == null || isLoadingFile.Value;
187
-
188
- if (actor == null)
189
- UnityEngine.Debug.LogWarning($"{ToString()}: REPORT: ExitChar was called but the actor was null or destroyed.");
190
-
191
- if (isLoadingFile.Value)
192
- {
193
- UnityEngine.Debug.Log($"{ToString()}: Loading File Skip Leaving: " + actor.DisplayName);
194
-
195
- ExitChar(actor);
196
- }
197
-
198
- return result;
199
- }
200
-
201
- /// <summary>
202
- ///
203
- /// </summary>
204
- /// <param name="actor"></param>
205
- protected virtual void ExitChar(Actor actor)
206
- {
207
- UnityEngine.Debug.Log(ToString() + ": Exiting character: " + actor.gameObject.name);
208
-
209
- actor.transform.position = designatedExitPosition;
210
- }
211
-
212
-
213
- /// <inheritdoc/>
214
- public virtual void ToTitleScreen() => RemoveAllEvents();
215
-
216
- /// <summary>
217
- ///
218
- /// </summary>
219
- protected virtual void RemoveAllEvents()
220
- {
221
- foreach (Action eh in delegates)
222
- {
223
- if (LineReader != null)
224
- LineReader.OnLineStart -= eh;
225
-
226
- if (DialogueEnder != null)
227
- DialogueEnder.OnDialogueResolving -= eh;
228
- }
229
-
230
- delegates.Clear();
231
- }
232
-
233
- /// <summary>
234
- ///
235
- /// </summary>
236
- [ContextMenu("Set Default Event")]
237
- public void SetDefaultEvent() => SetDefaultEventString("CharacterLeave");
238
- }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.DialogueEventHandling;
3
+ using DREditor.Dialogues;
4
+ using DREditor.Dialogues.Ending;
5
+ using DREditor.Dialogues.Events;
6
+ using DREditor.Dialogues.LineReading;
7
+ using DREditor.EventObjects;
8
+ using DREditor.Services;
9
+ using DREditor.Talkables;
10
+ using System;
11
+ using System.Collections.Generic;
12
+ using System.Linq;
13
+ using UnityEngine;
14
+
15
+ namespace DREditor.Actors.Events
16
+ {
17
+ /// <summary>
18
+ ///
19
+ /// </summary>
20
+ [ClassHeader(nameof(DialogueEventHandler) +
21
+ "\n\n")]
22
+ public class ActorLeaveHandler : ActorFadeEvent, IToTitleScreen
23
+ {
24
+ /// <summary>
25
+ ///
26
+ /// </summary>
27
+ [Header("")]
28
+ [Divider]
29
+ [Tooltip("")]
30
+ [SerializeField] protected BoolWithEvent isProtagSpeaking = null;
31
+
32
+ /// <summary>
33
+ ///
34
+ /// </summary>
35
+ [Tooltip("")]
36
+ [SerializeField] protected BoolWithEvent isLoadingFile = null;
37
+
38
+ /// <summary>
39
+ ///
40
+ /// </summary>
41
+ [Tooltip("")]
42
+ [SerializeField] protected SelectableObjectWithEvent currentActor = null;
43
+
44
+ /// <summary>
45
+ ///
46
+ /// </summary>
47
+ [Tooltip("")]
48
+ [SerializeField] protected SelectableObjectWithEvent lastActor = null;
49
+
50
+
51
+ [Header("")]
52
+ [Divider]
53
+ [SerializeField] protected Vector3 designatedExitPosition = new(0, -20, 0);
54
+
55
+
56
+ /// <summary>
57
+ ///
58
+ /// </summary>
59
+ protected IDialogueEnder DialogueEnder = null;
60
+
61
+ /// <summary>
62
+ ///
63
+ /// </summary>
64
+ protected ILineReader LineReader = null;
65
+
66
+ /// <summary>
67
+ ///
68
+ /// </summary>
69
+ protected bool exit = false;
70
+
71
+ /// <summary>
72
+ ///
73
+ /// </summary>
74
+ protected readonly List<Action> delegates = new();
75
+
76
+
77
+ /// <summary>
78
+ ///
79
+ /// </summary>
80
+ /// <param name="o"></param>
81
+ protected override void OnDialogueEventTriggered(object o = null)
82
+ {
83
+ CharacterLeave characterLeaveTuple = (CharacterLeave)o;
84
+
85
+ Talkable talkable = characterLeaveTuple.current ? (Talkable)currentActor.Value : (Talkable)lastActor.Value;
86
+
87
+ if (talkable is Actor actor)
88
+ EvaluateCharacterLeave(characterLeaveTuple, actor);
89
+ else
90
+ UnityEngine.Debug.LogWarning($"{ToString()}: WARNING!: Could Not get the actor for Character Leave");
91
+ }
92
+
93
+ /// <summary>
94
+ ///
95
+ /// </summary>
96
+ /// <param name="leaveEvent"></param>
97
+ /// <param name="actor"></param>
98
+ protected virtual void EvaluateCharacterLeave(CharacterLeave leaveEvent, Actor actor)
99
+ {
100
+ exit = leaveEvent.exit;
101
+
102
+ if (leaveEvent.appear)
103
+ spriteFader.ActorAppear(actor);
104
+ else if (leaveEvent.current && !isProtagSpeaking.Value)
105
+ ActorLeft(actor);
106
+ else if (lastActor.Value is Actor actorToLeave)
107
+ ActorLeft(actorToLeave);
108
+ else
109
+ UnityEngine.Debug.LogWarning($"{ToString()}: WARNING!: Could Not get the actor for Character Leave");
110
+ }
111
+
112
+ /// <summary>
113
+ ///
114
+ /// </summary>
115
+ /// <param name="actor"></param>
116
+ protected virtual void ActorLeft(Actor actor)
117
+ {
118
+ spriteFader.ActorDisappear(actor);
119
+
120
+ if (exit)
121
+ ActorLeaveExitProcess(actor);
122
+ }
123
+
124
+
125
+ /// <summary>
126
+ ///
127
+ /// </summary>
128
+ /// <remarks></remarks>
129
+ /// <param name="actor"></param>
130
+ protected virtual void ActorLeaveExitProcess(Actor actor)
131
+ {
132
+ if (ExitProcessShouldBeCanceled(actor))
133
+ return;
134
+
135
+ if (!ServiceLocator.GetService<IDialogueManager>().GetReader().IsOnLastLine())
136
+ {
137
+ LineReader = ServiceLocator.GetService<IDialogueManager>()
138
+ .GetComponentsInChildren<MonoBehaviour>()
139
+ .OfType<ILineReader>()
140
+ .FirstOrDefault();
141
+
142
+ void handler()
143
+ {
144
+ ExitChar(actor);
145
+
146
+ LineReader.OnLineStart -= handler;
147
+
148
+ delegates.Remove(handler);
149
+ }
150
+
151
+ delegates.Add(handler);
152
+
153
+ LineReader.OnLineStart += handler;
154
+ }
155
+ else
156
+ {
157
+ UnityEngine.Debug.Log($"{ToString()}: REPORT: Adding exit character to the end of the line." +
158
+ $"\nPROPOSAL: If any bugs occur, contact the developer and notify them of the bug that occured " +
159
+ $"if it happened almost immediately after the current dialogue ends.");
160
+
161
+ DialogueEnder = ServiceLocator.GetService<IDialogueManager>().GetEnder();
162
+
163
+ void handler()
164
+ {
165
+ ExitChar(actor);
166
+
167
+ DialogueEnder.OnDialogueResolving -= handler;
168
+
169
+ delegates.Remove(handler);
170
+ }
171
+
172
+ delegates.Add(handler);
173
+
174
+ DialogueEnder.OnDialogueResolving += handler;
175
+ }
176
+ }
177
+
178
+ /// <summary>
179
+ ///
180
+ /// </summary>
181
+ /// <remarks></remarks>
182
+ /// <param name="actor"></param>
183
+ /// <returns></returns>
184
+ protected virtual bool ExitProcessShouldBeCanceled(Actor actor)
185
+ {
186
+ bool result = actor == null || isLoadingFile.Value;
187
+
188
+ if (actor == null)
189
+ UnityEngine.Debug.LogWarning($"{ToString()}: REPORT: ExitChar was called but the actor was null or destroyed.");
190
+
191
+ if (isLoadingFile.Value)
192
+ {
193
+ UnityEngine.Debug.Log($"{ToString()}: Loading File Skip Leaving: " + actor.DisplayName);
194
+
195
+ ExitChar(actor);
196
+ }
197
+
198
+ return result;
199
+ }
200
+
201
+ /// <summary>
202
+ ///
203
+ /// </summary>
204
+ /// <param name="actor"></param>
205
+ protected virtual void ExitChar(Actor actor)
206
+ {
207
+ UnityEngine.Debug.Log(ToString() + ": Exiting character: " + actor.gameObject.name);
208
+
209
+ actor.transform.position = designatedExitPosition;
210
+ }
211
+
212
+
213
+ /// <inheritdoc/>
214
+ public virtual void ToTitleScreen() => RemoveAllEvents();
215
+
216
+ /// <summary>
217
+ ///
218
+ /// </summary>
219
+ protected virtual void RemoveAllEvents()
220
+ {
221
+ foreach (Action eh in delegates)
222
+ {
223
+ if (LineReader != null)
224
+ LineReader.OnLineStart -= eh;
225
+
226
+ if (DialogueEnder != null)
227
+ DialogueEnder.OnDialogueResolving -= eh;
228
+ }
229
+
230
+ delegates.Clear();
231
+ }
232
+
233
+ /// <summary>
234
+ ///
235
+ /// </summary>
236
+ [ContextMenu("Set Default Event")]
237
+ public void SetDefaultEvent() => SetDefaultEventString("CharacterLeave");
238
+ }
239
239
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: a0aeeece5cc99174e96dff9f5d6d9425
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: a0aeeece5cc99174e96dff9f5d6d9425
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant: