net.dreditor.freetime 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.
- package/.attestation.p7m +0 -0
- package/CharacterReaction.cs +45 -45
- package/CharacterReaction.cs.meta +11 -11
- package/DREditor.FreeTime.asmdef +25 -25
- package/DREditor.FreeTime.asmdef.meta +7 -7
- package/FTECharacterDialogues.cs +55 -55
- package/FTECharacterDialogues.cs.meta +11 -11
- package/FTEData.cs +51 -51
- package/FTEData.cs.meta +11 -11
- package/FTEDataHandler.cs +180 -180
- package/FTEDataHandler.cs.meta +11 -11
- package/FTEDatabase.cs +68 -68
- package/FTEDatabase.cs.meta +11 -11
- package/FTEDatabaseEditor.cs +101 -101
- package/FTEDatabaseEditor.cs.meta +11 -11
- package/FTEDialogues.cs +32 -32
- package/FTEDialogues.cs.meta +11 -11
- package/FTEManager.cs +322 -322
- package/FTEManager.cs.meta +11 -11
- package/IFTEDataHandler.cs +37 -37
- package/IFTEDataHandler.cs.meta +11 -11
- package/MoveToNextDayEvent.cs +213 -213
- package/MoveToNextDayEvent.cs.meta +11 -11
- package/PresentReaction.cs +36 -36
- package/PresentReaction.cs.meta +11 -11
- package/ReactionDatabase.cs +111 -111
- package/ReactionDatabase.cs.meta +11 -11
- package/ReactionUtility.cs +43 -43
- package/ReactionUtility.cs.meta +11 -11
- package/{Samples → Samples~}/FTE_Data_Handler.prefab +49 -49
- package/{Samples → Samples~}/FTE_Data_Handler.prefab.meta +7 -7
- package/{Samples → Samples~}/FTE_Manager_ETemplate.prefab +218 -218
- package/{Samples → Samples~}/FTE_Manager_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Move_To_Next_Day_Event.prefab +83 -83
- package/{Samples → Samples~}/Move_To_Next_Day_Event.prefab.meta +7 -7
- package/{Samples → Samples~}/Start_FTE_Handler_ETemplate.prefab +336 -336
- package/{Samples → Samples~}/Start_FTE_Handler_ETemplate.prefab.meta +7 -7
- package/SimpleFTEEntryCollection.cs +28 -28
- package/SimpleFTEEntryCollection.cs.meta +1 -1
- package/StartFTEAnimation.cs +76 -76
- package/StartFTEAnimation.cs.meta +11 -11
- package/package.json +47 -42
- package/package.json.meta +7 -7
- package/Samples.meta +0 -8
package/FTEManager.cs
CHANGED
|
@@ -1,323 +1,323 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using DREditor.Characters;
|
|
3
|
-
using DREditor.DialogueEventHandling;
|
|
4
|
-
using DREditor.Dialogues;
|
|
5
|
-
using DREditor.Dialogues.Events;
|
|
6
|
-
using DREditor.EventObjects;
|
|
7
|
-
using DREditor.Presents;
|
|
8
|
-
using DREditor.Services;
|
|
9
|
-
using System.Collections.Generic;
|
|
10
|
-
using System.Linq;
|
|
11
|
-
using UnityEngine;
|
|
12
|
-
|
|
13
|
-
namespace DREditor.FreeTime
|
|
14
|
-
{
|
|
15
|
-
/// <summary>
|
|
16
|
-
///
|
|
17
|
-
/// </summary>
|
|
18
|
-
[ClassHeader(nameof(ServiceHolder<FTEManager>) + " for type: " + nameof(FTEManager) +
|
|
19
|
-
"\n\n")]
|
|
20
|
-
public class FTEManager : ServiceHolder<FTEManager>, IDialogueHolder
|
|
21
|
-
{
|
|
22
|
-
/// <summary>
|
|
23
|
-
///
|
|
24
|
-
/// </summary>
|
|
25
|
-
[Header("")]
|
|
26
|
-
|
|
27
|
-
[Space]
|
|
28
|
-
|
|
29
|
-
[Header("")]
|
|
30
|
-
[Divider]
|
|
31
|
-
[Tooltip("")]
|
|
32
|
-
[SerializeField] protected ReactionDatabase reactionDatabase = null;
|
|
33
|
-
|
|
34
|
-
/// <summary>
|
|
35
|
-
///
|
|
36
|
-
/// </summary>
|
|
37
|
-
[Tooltip("")]
|
|
38
|
-
[SerializeField] protected FTEDatabase fteDatabase = null;
|
|
39
|
-
|
|
40
|
-
/// <summary>
|
|
41
|
-
///
|
|
42
|
-
/// </summary>
|
|
43
|
-
[Tooltip("")]
|
|
44
|
-
[SerializeField] protected CharacterDatabase characterDatabase = null;
|
|
45
|
-
|
|
46
|
-
/// <summary>
|
|
47
|
-
///
|
|
48
|
-
/// </summary>
|
|
49
|
-
[Tooltip("")]
|
|
50
|
-
[SerializeField] protected SelectableObjectWithEvent lastActor = null;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
/// <summary>
|
|
54
|
-
///
|
|
55
|
-
/// </summary>
|
|
56
|
-
[Header("")]
|
|
57
|
-
[Divider]
|
|
58
|
-
[Tooltip("")]
|
|
59
|
-
[SerializeField] protected string callEvaluateReaction = "EvaluateReaction";
|
|
60
|
-
|
|
61
|
-
/// <summary>
|
|
62
|
-
///
|
|
63
|
-
/// </summary>
|
|
64
|
-
[Tooltip("")]
|
|
65
|
-
[SerializeField] protected string callEvaluateFTE = "EvaluateFTE";
|
|
66
|
-
|
|
67
|
-
/// <summary>
|
|
68
|
-
///
|
|
69
|
-
/// </summary>
|
|
70
|
-
[Tooltip("")]
|
|
71
|
-
[SerializeField] protected string callCompleteFTE = "CompleteFTE";
|
|
72
|
-
|
|
73
|
-
/// <summary>
|
|
74
|
-
///
|
|
75
|
-
/// </summary>
|
|
76
|
-
[Space]
|
|
77
|
-
|
|
78
|
-
[Tooltip("")]
|
|
79
|
-
[SerializeField] protected DialogueEventHandler moveToNextDayHandler = null;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
/// <summary>
|
|
83
|
-
///
|
|
84
|
-
/// </summary>
|
|
85
|
-
protected IFTEDataHandler fteData = null;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
#region Initialization
|
|
89
|
-
|
|
90
|
-
/// <summary>
|
|
91
|
-
///
|
|
92
|
-
/// </summary>
|
|
93
|
-
protected virtual void OnEnable()
|
|
94
|
-
{
|
|
95
|
-
DialogueEventSystem.StartListening(callEvaluateReaction, EvaluateReaction);
|
|
96
|
-
|
|
97
|
-
DialogueEventSystem.StartListening(callEvaluateFTE, EvaluateFTE);
|
|
98
|
-
|
|
99
|
-
DialogueEventSystem.StartListening(callCompleteFTE, CompleteFTE);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/// <summary>
|
|
103
|
-
///
|
|
104
|
-
/// </summary>
|
|
105
|
-
protected virtual void OnDisable()
|
|
106
|
-
{
|
|
107
|
-
DialogueEventSystem.StopListening(callEvaluateReaction, EvaluateReaction);
|
|
108
|
-
|
|
109
|
-
DialogueEventSystem.StopListening(callEvaluateFTE, EvaluateFTE);
|
|
110
|
-
|
|
111
|
-
DialogueEventSystem.StopListening(callCompleteFTE, CompleteFTE);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/// <summary>
|
|
115
|
-
///
|
|
116
|
-
/// </summary>
|
|
117
|
-
protected virtual void Start()
|
|
118
|
-
{
|
|
119
|
-
fteData = GetComponent<IFTEDataHandler>();
|
|
120
|
-
|
|
121
|
-
fteData ??= GetComponentInChildren<IFTEDataHandler>();
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
#endregion
|
|
125
|
-
|
|
126
|
-
#region Evaluate Present Reaction Event
|
|
127
|
-
|
|
128
|
-
/// <summary>
|
|
129
|
-
///
|
|
130
|
-
/// </summary>
|
|
131
|
-
/// <param name="o"></param>
|
|
132
|
-
protected virtual void EvaluateReaction(object o = null)
|
|
133
|
-
{
|
|
134
|
-
var startingObject = ServiceLocator.GetService<DialogueObjectManager>().GetStartObject();
|
|
135
|
-
|
|
136
|
-
if (startingObject == null)
|
|
137
|
-
startingObject = lastActor.Value;
|
|
138
|
-
|
|
139
|
-
string displayName = startingObject.DisplayName;
|
|
140
|
-
|
|
141
|
-
Character character = characterDatabase.GetCharacterByContains(displayName);
|
|
142
|
-
|
|
143
|
-
IReactionEntry studentReaction =
|
|
144
|
-
((Present)o)
|
|
145
|
-
.attributes
|
|
146
|
-
.OfType<StudentReactionCollection>()
|
|
147
|
-
.FirstOrDefault()
|
|
148
|
-
.studentReactions
|
|
149
|
-
.Find(studentReaction => studentReaction.Character == character);
|
|
150
|
-
|
|
151
|
-
if (studentReaction != null)
|
|
152
|
-
PlayReactionFromFeeling(character, studentReaction.ReactionIndex);
|
|
153
|
-
else if (character != null)
|
|
154
|
-
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: Couldn't find a reaction for {character.FirstName}.");
|
|
155
|
-
else
|
|
156
|
-
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: The evaluated character for the present reaction was null!");
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/// <summary>
|
|
160
|
-
///
|
|
161
|
-
/// </summary>
|
|
162
|
-
/// <param name="character"></param>
|
|
163
|
-
/// <param name="level"></param>
|
|
164
|
-
protected virtual void PlayReactionFromFeeling(Character character, int level)
|
|
165
|
-
{
|
|
166
|
-
List<DialogueCore> reactionPool = reactionDatabase.GetReactionPool(character, level);
|
|
167
|
-
|
|
168
|
-
if (reactionPool.Count != 0)
|
|
169
|
-
PlayPresentReaction(reactionPool);
|
|
170
|
-
else
|
|
171
|
-
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: Reaction pool for {character.FirstName} ({level}) is empty.");
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/// <summary>
|
|
175
|
-
///
|
|
176
|
-
/// </summary>
|
|
177
|
-
/// <param name="reactionPool"></param>
|
|
178
|
-
protected virtual void PlayPresentReaction(List<DialogueCore> reactionPool)
|
|
179
|
-
{
|
|
180
|
-
int index = UnityEngine.Random.Range(0, reactionPool.Count);
|
|
181
|
-
|
|
182
|
-
if (reactionPool[index] != null)
|
|
183
|
-
PlayMidDialogue((Dialogue)reactionPool[index]);
|
|
184
|
-
else
|
|
185
|
-
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: Reaction Evaluation at {index} was null!");
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
#endregion
|
|
189
|
-
|
|
190
|
-
#region Evaluate FTE Event
|
|
191
|
-
|
|
192
|
-
/// <summary>
|
|
193
|
-
///
|
|
194
|
-
/// </summary>
|
|
195
|
-
/// <param name="o"></param>
|
|
196
|
-
protected virtual void EvaluateFTE(object o = null)
|
|
197
|
-
{
|
|
198
|
-
var startingObject = ServiceLocator.GetService<DialogueObjectManager>().GetStartObject();
|
|
199
|
-
|
|
200
|
-
if (startingObject == null)
|
|
201
|
-
startingObject = lastActor.Value;
|
|
202
|
-
|
|
203
|
-
string displayName = startingObject.DisplayName;
|
|
204
|
-
|
|
205
|
-
Character character = characterDatabase.GetCharacterByContains(displayName);
|
|
206
|
-
|
|
207
|
-
Dialogue dialogue = (Dialogue)ServiceLocator.GetService<IDialogueManager>().GetReader().GetCurrentDialogue();
|
|
208
|
-
|
|
209
|
-
int level = reactionDatabase.GetReactionKeyFromDialogue(dialogue);
|
|
210
|
-
|
|
211
|
-
int percentChance = 0;
|
|
212
|
-
|
|
213
|
-
switch (level)
|
|
214
|
-
{
|
|
215
|
-
case 0:
|
|
216
|
-
case 1:
|
|
217
|
-
PlayFTE(character);
|
|
218
|
-
return;
|
|
219
|
-
|
|
220
|
-
case 2:
|
|
221
|
-
percentChance = 50;
|
|
222
|
-
break;
|
|
223
|
-
|
|
224
|
-
case 3:
|
|
225
|
-
percentChance = 20;
|
|
226
|
-
break;
|
|
227
|
-
|
|
228
|
-
case 4:
|
|
229
|
-
MoveToNextDay();
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
EvaluatePlayFTE(percentChance, character);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/// <summary>
|
|
237
|
-
///
|
|
238
|
-
/// </summary>
|
|
239
|
-
/// <param name="percentChance"></param>
|
|
240
|
-
/// <param name="character"></param>
|
|
241
|
-
protected virtual void EvaluatePlayFTE(int percentChance, Character character)
|
|
242
|
-
{
|
|
243
|
-
int num = UnityEngine.Random.Range(1, 100);
|
|
244
|
-
|
|
245
|
-
if (num <= percentChance &&
|
|
246
|
-
fteData?.GetLevelOfCharacter(character.FirstName) - 1 < character.Get<SimpleFTEEntryCollection>()?.Count)
|
|
247
|
-
PlayFTE(character);
|
|
248
|
-
else
|
|
249
|
-
MoveToNextDay();
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/// <summary>
|
|
253
|
-
///
|
|
254
|
-
/// </summary>
|
|
255
|
-
/// <param name="character"></param>
|
|
256
|
-
protected virtual void PlayFTE(Character character)
|
|
257
|
-
{
|
|
258
|
-
Dialogue dialogue = (Dialogue)fteDatabase.GetFTE(character, fteData.GetAffinity(character.FirstName));
|
|
259
|
-
|
|
260
|
-
if (dialogue != null)
|
|
261
|
-
PlayMidDialogue(dialogue);
|
|
262
|
-
else
|
|
263
|
-
{
|
|
264
|
-
UnityEngine.Debug.LogWarning($"ALERT: {nameof(FTEManager)}: The FTE Dialogue is null! Moving to next day.");
|
|
265
|
-
|
|
266
|
-
MoveToNextDay();
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
#endregion
|
|
271
|
-
|
|
272
|
-
#region Complete FTE Event
|
|
273
|
-
|
|
274
|
-
/// <summary>
|
|
275
|
-
///
|
|
276
|
-
/// </summary>
|
|
277
|
-
/// <param name="o"></param>
|
|
278
|
-
protected virtual void CompleteFTE(object o = null)
|
|
279
|
-
{
|
|
280
|
-
Dialogue currentDialogue = (Dialogue)ServiceLocator.GetService<IDialogueManager>().GetReader().GetCurrentDialogue();
|
|
281
|
-
|
|
282
|
-
Character character = fteDatabase.GetCharacterFromDialogue(currentDialogue);
|
|
283
|
-
|
|
284
|
-
fteData?.LevelUpCharacter(character.FirstName);
|
|
285
|
-
|
|
286
|
-
MoveToNextDay();
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
#endregion
|
|
290
|
-
|
|
291
|
-
#region Core Supporting Functions
|
|
292
|
-
|
|
293
|
-
/// <summary>
|
|
294
|
-
///
|
|
295
|
-
/// </summary>
|
|
296
|
-
protected virtual void MoveToNextDay()
|
|
297
|
-
{
|
|
298
|
-
if (moveToNextDayHandler != null)
|
|
299
|
-
moveToNextDayHandler.TriggerEvent();
|
|
300
|
-
else
|
|
301
|
-
UnityEngine.Debug.LogWarning($"ALERT: {nameof(FTEManager)}: Event handler for moving to the next day was not found!");
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
/// <summary>
|
|
305
|
-
///
|
|
306
|
-
/// </summary>
|
|
307
|
-
/// <param name="dialogue"></param>
|
|
308
|
-
protected virtual void PlayMidDialogue(Dialogue dialogue)
|
|
309
|
-
{
|
|
310
|
-
Dialogue[] dialogues = new Dialogue[1] { dialogue };
|
|
311
|
-
|
|
312
|
-
ServiceLocator.GetService<IDialogueManager>().GetReader().MidDialogueEnterance(dialogues);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
#endregion
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
/// <inheritdoc/>
|
|
319
|
-
public virtual bool CheckIfSaveDialogue() =>
|
|
320
|
-
reactionDatabase != null && fteDatabase != null &&
|
|
321
|
-
(reactionDatabase.CheckIfSaveDialogue() || fteDatabase.CheckIfSaveDialogue());
|
|
322
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Characters;
|
|
3
|
+
using DREditor.DialogueEventHandling;
|
|
4
|
+
using DREditor.Dialogues;
|
|
5
|
+
using DREditor.Dialogues.Events;
|
|
6
|
+
using DREditor.EventObjects;
|
|
7
|
+
using DREditor.Presents;
|
|
8
|
+
using DREditor.Services;
|
|
9
|
+
using System.Collections.Generic;
|
|
10
|
+
using System.Linq;
|
|
11
|
+
using UnityEngine;
|
|
12
|
+
|
|
13
|
+
namespace DREditor.FreeTime
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
[ClassHeader(nameof(ServiceHolder<FTEManager>) + " for type: " + nameof(FTEManager) +
|
|
19
|
+
"\n\n")]
|
|
20
|
+
public class FTEManager : ServiceHolder<FTEManager>, IDialogueHolder
|
|
21
|
+
{
|
|
22
|
+
/// <summary>
|
|
23
|
+
///
|
|
24
|
+
/// </summary>
|
|
25
|
+
[Header("")]
|
|
26
|
+
|
|
27
|
+
[Space]
|
|
28
|
+
|
|
29
|
+
[Header("")]
|
|
30
|
+
[Divider]
|
|
31
|
+
[Tooltip("")]
|
|
32
|
+
[SerializeField] protected ReactionDatabase reactionDatabase = null;
|
|
33
|
+
|
|
34
|
+
/// <summary>
|
|
35
|
+
///
|
|
36
|
+
/// </summary>
|
|
37
|
+
[Tooltip("")]
|
|
38
|
+
[SerializeField] protected FTEDatabase fteDatabase = null;
|
|
39
|
+
|
|
40
|
+
/// <summary>
|
|
41
|
+
///
|
|
42
|
+
/// </summary>
|
|
43
|
+
[Tooltip("")]
|
|
44
|
+
[SerializeField] protected CharacterDatabase characterDatabase = null;
|
|
45
|
+
|
|
46
|
+
/// <summary>
|
|
47
|
+
///
|
|
48
|
+
/// </summary>
|
|
49
|
+
[Tooltip("")]
|
|
50
|
+
[SerializeField] protected SelectableObjectWithEvent lastActor = null;
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/// <summary>
|
|
54
|
+
///
|
|
55
|
+
/// </summary>
|
|
56
|
+
[Header("")]
|
|
57
|
+
[Divider]
|
|
58
|
+
[Tooltip("")]
|
|
59
|
+
[SerializeField] protected string callEvaluateReaction = "EvaluateReaction";
|
|
60
|
+
|
|
61
|
+
/// <summary>
|
|
62
|
+
///
|
|
63
|
+
/// </summary>
|
|
64
|
+
[Tooltip("")]
|
|
65
|
+
[SerializeField] protected string callEvaluateFTE = "EvaluateFTE";
|
|
66
|
+
|
|
67
|
+
/// <summary>
|
|
68
|
+
///
|
|
69
|
+
/// </summary>
|
|
70
|
+
[Tooltip("")]
|
|
71
|
+
[SerializeField] protected string callCompleteFTE = "CompleteFTE";
|
|
72
|
+
|
|
73
|
+
/// <summary>
|
|
74
|
+
///
|
|
75
|
+
/// </summary>
|
|
76
|
+
[Space]
|
|
77
|
+
|
|
78
|
+
[Tooltip("")]
|
|
79
|
+
[SerializeField] protected DialogueEventHandler moveToNextDayHandler = null;
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
/// <summary>
|
|
83
|
+
///
|
|
84
|
+
/// </summary>
|
|
85
|
+
protected IFTEDataHandler fteData = null;
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
#region Initialization
|
|
89
|
+
|
|
90
|
+
/// <summary>
|
|
91
|
+
///
|
|
92
|
+
/// </summary>
|
|
93
|
+
protected virtual void OnEnable()
|
|
94
|
+
{
|
|
95
|
+
DialogueEventSystem.StartListening(callEvaluateReaction, EvaluateReaction);
|
|
96
|
+
|
|
97
|
+
DialogueEventSystem.StartListening(callEvaluateFTE, EvaluateFTE);
|
|
98
|
+
|
|
99
|
+
DialogueEventSystem.StartListening(callCompleteFTE, CompleteFTE);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/// <summary>
|
|
103
|
+
///
|
|
104
|
+
/// </summary>
|
|
105
|
+
protected virtual void OnDisable()
|
|
106
|
+
{
|
|
107
|
+
DialogueEventSystem.StopListening(callEvaluateReaction, EvaluateReaction);
|
|
108
|
+
|
|
109
|
+
DialogueEventSystem.StopListening(callEvaluateFTE, EvaluateFTE);
|
|
110
|
+
|
|
111
|
+
DialogueEventSystem.StopListening(callCompleteFTE, CompleteFTE);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/// <summary>
|
|
115
|
+
///
|
|
116
|
+
/// </summary>
|
|
117
|
+
protected virtual void Start()
|
|
118
|
+
{
|
|
119
|
+
fteData = GetComponent<IFTEDataHandler>();
|
|
120
|
+
|
|
121
|
+
fteData ??= GetComponentInChildren<IFTEDataHandler>();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
#endregion
|
|
125
|
+
|
|
126
|
+
#region Evaluate Present Reaction Event
|
|
127
|
+
|
|
128
|
+
/// <summary>
|
|
129
|
+
///
|
|
130
|
+
/// </summary>
|
|
131
|
+
/// <param name="o"></param>
|
|
132
|
+
protected virtual void EvaluateReaction(object o = null)
|
|
133
|
+
{
|
|
134
|
+
var startingObject = ServiceLocator.GetService<DialogueObjectManager>().GetStartObject();
|
|
135
|
+
|
|
136
|
+
if (startingObject == null)
|
|
137
|
+
startingObject = lastActor.Value;
|
|
138
|
+
|
|
139
|
+
string displayName = startingObject.DisplayName;
|
|
140
|
+
|
|
141
|
+
Character character = characterDatabase.GetCharacterByContains(displayName);
|
|
142
|
+
|
|
143
|
+
IReactionEntry studentReaction =
|
|
144
|
+
((Present)o)
|
|
145
|
+
.attributes
|
|
146
|
+
.OfType<StudentReactionCollection>()
|
|
147
|
+
.FirstOrDefault()
|
|
148
|
+
.studentReactions
|
|
149
|
+
.Find(studentReaction => studentReaction.Character == character);
|
|
150
|
+
|
|
151
|
+
if (studentReaction != null)
|
|
152
|
+
PlayReactionFromFeeling(character, studentReaction.ReactionIndex);
|
|
153
|
+
else if (character != null)
|
|
154
|
+
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: Couldn't find a reaction for {character.FirstName}.");
|
|
155
|
+
else
|
|
156
|
+
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: The evaluated character for the present reaction was null!");
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/// <summary>
|
|
160
|
+
///
|
|
161
|
+
/// </summary>
|
|
162
|
+
/// <param name="character"></param>
|
|
163
|
+
/// <param name="level"></param>
|
|
164
|
+
protected virtual void PlayReactionFromFeeling(Character character, int level)
|
|
165
|
+
{
|
|
166
|
+
List<DialogueCore> reactionPool = reactionDatabase.GetReactionPool(character, level);
|
|
167
|
+
|
|
168
|
+
if (reactionPool.Count != 0)
|
|
169
|
+
PlayPresentReaction(reactionPool);
|
|
170
|
+
else
|
|
171
|
+
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: Reaction pool for {character.FirstName} ({level}) is empty.");
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/// <summary>
|
|
175
|
+
///
|
|
176
|
+
/// </summary>
|
|
177
|
+
/// <param name="reactionPool"></param>
|
|
178
|
+
protected virtual void PlayPresentReaction(List<DialogueCore> reactionPool)
|
|
179
|
+
{
|
|
180
|
+
int index = UnityEngine.Random.Range(0, reactionPool.Count);
|
|
181
|
+
|
|
182
|
+
if (reactionPool[index] != null)
|
|
183
|
+
PlayMidDialogue((Dialogue)reactionPool[index]);
|
|
184
|
+
else
|
|
185
|
+
UnityEngine.Debug.LogError($"ALERT: {nameof(FTEManager)}: Reaction Evaluation at {index} was null!");
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
#endregion
|
|
189
|
+
|
|
190
|
+
#region Evaluate FTE Event
|
|
191
|
+
|
|
192
|
+
/// <summary>
|
|
193
|
+
///
|
|
194
|
+
/// </summary>
|
|
195
|
+
/// <param name="o"></param>
|
|
196
|
+
protected virtual void EvaluateFTE(object o = null)
|
|
197
|
+
{
|
|
198
|
+
var startingObject = ServiceLocator.GetService<DialogueObjectManager>().GetStartObject();
|
|
199
|
+
|
|
200
|
+
if (startingObject == null)
|
|
201
|
+
startingObject = lastActor.Value;
|
|
202
|
+
|
|
203
|
+
string displayName = startingObject.DisplayName;
|
|
204
|
+
|
|
205
|
+
Character character = characterDatabase.GetCharacterByContains(displayName);
|
|
206
|
+
|
|
207
|
+
Dialogue dialogue = (Dialogue)ServiceLocator.GetService<IDialogueManager>().GetReader().GetCurrentDialogue();
|
|
208
|
+
|
|
209
|
+
int level = reactionDatabase.GetReactionKeyFromDialogue(dialogue);
|
|
210
|
+
|
|
211
|
+
int percentChance = 0;
|
|
212
|
+
|
|
213
|
+
switch (level)
|
|
214
|
+
{
|
|
215
|
+
case 0:
|
|
216
|
+
case 1:
|
|
217
|
+
PlayFTE(character);
|
|
218
|
+
return;
|
|
219
|
+
|
|
220
|
+
case 2:
|
|
221
|
+
percentChance = 50;
|
|
222
|
+
break;
|
|
223
|
+
|
|
224
|
+
case 3:
|
|
225
|
+
percentChance = 20;
|
|
226
|
+
break;
|
|
227
|
+
|
|
228
|
+
case 4:
|
|
229
|
+
MoveToNextDay();
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
EvaluatePlayFTE(percentChance, character);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/// <summary>
|
|
237
|
+
///
|
|
238
|
+
/// </summary>
|
|
239
|
+
/// <param name="percentChance"></param>
|
|
240
|
+
/// <param name="character"></param>
|
|
241
|
+
protected virtual void EvaluatePlayFTE(int percentChance, Character character)
|
|
242
|
+
{
|
|
243
|
+
int num = UnityEngine.Random.Range(1, 100);
|
|
244
|
+
|
|
245
|
+
if (num <= percentChance &&
|
|
246
|
+
fteData?.GetLevelOfCharacter(character.FirstName) - 1 < character.Get<SimpleFTEEntryCollection>()?.Count)
|
|
247
|
+
PlayFTE(character);
|
|
248
|
+
else
|
|
249
|
+
MoveToNextDay();
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/// <summary>
|
|
253
|
+
///
|
|
254
|
+
/// </summary>
|
|
255
|
+
/// <param name="character"></param>
|
|
256
|
+
protected virtual void PlayFTE(Character character)
|
|
257
|
+
{
|
|
258
|
+
Dialogue dialogue = (Dialogue)fteDatabase.GetFTE(character, fteData.GetAffinity(character.FirstName));
|
|
259
|
+
|
|
260
|
+
if (dialogue != null)
|
|
261
|
+
PlayMidDialogue(dialogue);
|
|
262
|
+
else
|
|
263
|
+
{
|
|
264
|
+
UnityEngine.Debug.LogWarning($"ALERT: {nameof(FTEManager)}: The FTE Dialogue is null! Moving to next day.");
|
|
265
|
+
|
|
266
|
+
MoveToNextDay();
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
#endregion
|
|
271
|
+
|
|
272
|
+
#region Complete FTE Event
|
|
273
|
+
|
|
274
|
+
/// <summary>
|
|
275
|
+
///
|
|
276
|
+
/// </summary>
|
|
277
|
+
/// <param name="o"></param>
|
|
278
|
+
protected virtual void CompleteFTE(object o = null)
|
|
279
|
+
{
|
|
280
|
+
Dialogue currentDialogue = (Dialogue)ServiceLocator.GetService<IDialogueManager>().GetReader().GetCurrentDialogue();
|
|
281
|
+
|
|
282
|
+
Character character = fteDatabase.GetCharacterFromDialogue(currentDialogue);
|
|
283
|
+
|
|
284
|
+
fteData?.LevelUpCharacter(character.FirstName);
|
|
285
|
+
|
|
286
|
+
MoveToNextDay();
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
#endregion
|
|
290
|
+
|
|
291
|
+
#region Core Supporting Functions
|
|
292
|
+
|
|
293
|
+
/// <summary>
|
|
294
|
+
///
|
|
295
|
+
/// </summary>
|
|
296
|
+
protected virtual void MoveToNextDay()
|
|
297
|
+
{
|
|
298
|
+
if (moveToNextDayHandler != null)
|
|
299
|
+
moveToNextDayHandler.TriggerEvent();
|
|
300
|
+
else
|
|
301
|
+
UnityEngine.Debug.LogWarning($"ALERT: {nameof(FTEManager)}: Event handler for moving to the next day was not found!");
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/// <summary>
|
|
305
|
+
///
|
|
306
|
+
/// </summary>
|
|
307
|
+
/// <param name="dialogue"></param>
|
|
308
|
+
protected virtual void PlayMidDialogue(Dialogue dialogue)
|
|
309
|
+
{
|
|
310
|
+
Dialogue[] dialogues = new Dialogue[1] { dialogue };
|
|
311
|
+
|
|
312
|
+
ServiceLocator.GetService<IDialogueManager>().GetReader().MidDialogueEnterance(dialogues);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
#endregion
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
/// <inheritdoc/>
|
|
319
|
+
public virtual bool CheckIfSaveDialogue() =>
|
|
320
|
+
reactionDatabase != null && fteDatabase != null &&
|
|
321
|
+
(reactionDatabase.CheckIfSaveDialogue() || fteDatabase.CheckIfSaveDialogue());
|
|
322
|
+
}
|
|
323
323
|
}
|
package/FTEManager.cs.meta
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: f935f35e7d7830a42a1c3f08e67aa6c5
|
|
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: f935f35e7d7830a42a1c3f08e67aa6c5
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|