net.dreditor.freetime 0.0.0-stage → 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 (44) hide show
  1. package/.attestation.p7m +0 -0
  2. package/CharacterReaction.cs +46 -0
  3. package/CharacterReaction.cs.meta +11 -0
  4. package/DREditor.FreeTime.asmdef +26 -0
  5. package/DREditor.FreeTime.asmdef.meta +7 -0
  6. package/FTECharacterDialogues.cs +56 -0
  7. package/FTECharacterDialogues.cs.meta +11 -0
  8. package/FTEData.cs +52 -0
  9. package/FTEData.cs.meta +11 -0
  10. package/FTEDataHandler.cs +181 -0
  11. package/FTEDataHandler.cs.meta +11 -0
  12. package/FTEDatabase.cs +69 -0
  13. package/FTEDatabase.cs.meta +11 -0
  14. package/FTEDatabaseEditor.cs +102 -0
  15. package/FTEDatabaseEditor.cs.meta +11 -0
  16. package/FTEDialogues.cs +33 -0
  17. package/FTEDialogues.cs.meta +11 -0
  18. package/FTEManager.cs +323 -0
  19. package/FTEManager.cs.meta +11 -0
  20. package/IFTEDataHandler.cs +38 -0
  21. package/IFTEDataHandler.cs.meta +11 -0
  22. package/MoveToNextDayEvent.cs +214 -0
  23. package/MoveToNextDayEvent.cs.meta +11 -0
  24. package/PresentReaction.cs +37 -0
  25. package/PresentReaction.cs.meta +11 -0
  26. package/ReactionDatabase.cs +112 -0
  27. package/ReactionDatabase.cs.meta +11 -0
  28. package/ReactionUtility.cs +44 -0
  29. package/ReactionUtility.cs.meta +11 -0
  30. package/Samples~/FTE_Data_Handler.prefab +49 -0
  31. package/Samples~/FTE_Data_Handler.prefab.meta +7 -0
  32. package/Samples~/FTE_Manager_ETemplate.prefab +218 -0
  33. package/Samples~/FTE_Manager_ETemplate.prefab.meta +7 -0
  34. package/Samples~/Move_To_Next_Day_Event.prefab +83 -0
  35. package/Samples~/Move_To_Next_Day_Event.prefab.meta +7 -0
  36. package/Samples~/Start_FTE_Handler_ETemplate.prefab +336 -0
  37. package/Samples~/Start_FTE_Handler_ETemplate.prefab.meta +7 -0
  38. package/SimpleFTEEntryCollection.cs +29 -0
  39. package/SimpleFTEEntryCollection.cs.meta +2 -0
  40. package/StartFTEAnimation.cs +77 -0
  41. package/StartFTEAnimation.cs.meta +11 -0
  42. package/package.json +45 -4
  43. package/package.json.meta +7 -0
  44. package/README.md +0 -3
package/FTEManager.cs ADDED
@@ -0,0 +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
+ }
323
+ }
@@ -0,0 +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:
@@ -0,0 +1,38 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Saving;
3
+
4
+ namespace DREditor.FreeTime
5
+ {
6
+ /// <summary>
7
+ ///
8
+ /// </summary>
9
+ public interface IFTEDataHandler : IPlayerDataClearer
10
+ {
11
+ /// <summary>
12
+ ///
13
+ /// </summary>
14
+ /// <param name="name"></param>
15
+ void AddCharacter(string name);
16
+
17
+
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ /// <param name="name"></param>
22
+ /// <returns></returns>
23
+ int GetLevelOfCharacter(string name);
24
+
25
+ /// <summary>
26
+ ///
27
+ /// </summary>
28
+ /// <param name="name"></param>
29
+ void LevelUpCharacter(string name);
30
+
31
+ /// <summary>
32
+ ///
33
+ /// </summary>
34
+ /// <param name="name"></param>
35
+ /// <returns></returns>
36
+ int GetAffinity(string name);
37
+ }
38
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 0fbc1d846f07d4c4699555c745837862
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,214 @@
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.Events;
5
+ using DREditor.EventObjects;
6
+ using DREditor.Fading;
7
+ using DREditor.RoomLoading;
8
+ using DREditor.Services;
9
+ using System.Collections;
10
+ using UnityEngine;
11
+ using UnityEngine.SceneManagement;
12
+
13
+ namespace DREditor.FreeTime
14
+ {
15
+ /// <summary>
16
+ ///
17
+ /// </summary>
18
+ /// <remarks></remarks>
19
+ [ClassHeader(nameof(DialogueEventHandler) + ", " + nameof(IToTitleScreen) +
20
+ "\n\n")]
21
+ public class MoveToNextDayEvent : DialogueEventHandler, IToTitleScreen
22
+ {
23
+ /// <summary>
24
+ ///
25
+ /// </summary>
26
+ [Divider]
27
+ [Header("")]
28
+ [Divider]
29
+ [Space]
30
+ [Header("")]
31
+ [Divider]
32
+ [Space]
33
+ [Tooltip("")]
34
+ [SerializeField] protected BoolWithEvent inLoading = null;
35
+
36
+ /// <summary>
37
+ ///
38
+ /// </summary>
39
+ [Tooltip("")]
40
+ [SerializeField] protected SceneEvent cleanUpDialogueReader = null;
41
+
42
+ /// <summary>
43
+ ///
44
+ /// </summary>
45
+ [Tooltip("")]
46
+ [SerializeField] protected BoolWithEvent toSkipHideCG = null;
47
+
48
+
49
+ /// <summary>
50
+ ///
51
+ /// </summary>
52
+ [Header("")]
53
+ [Divider]
54
+ [Tooltip("")]
55
+ [SerializeField] protected SceneTransition transition = new();
56
+
57
+ /// <summary>
58
+ ///
59
+ /// </summary>
60
+ [Tooltip("")]
61
+ [SerializeField] protected string moveOnEndEventString = "MoveEndOnDialogueFinish";
62
+
63
+ /// <summary>
64
+ ///
65
+ /// </summary>
66
+ [Tooltip("")]
67
+ [SerializeField] protected string fadeOutEventString = "FadeOutOnLoadSubscribe";
68
+
69
+ /// <summary>
70
+ ///
71
+ /// </summary>
72
+ [Tooltip("")]
73
+ [SerializeField] protected SceneEvent moveToNextNaturalObjective = null;
74
+
75
+ /// <summary>
76
+ ///
77
+ /// </summary>
78
+ [Tooltip("")]
79
+ [SerializeField] protected StringWithEvent moveToObjective = null;
80
+
81
+ /// <summary>
82
+ ///
83
+ /// </summary>
84
+ [Tooltip("")]
85
+ [SerializeField] protected IntWithEvent currentAddState = null;
86
+
87
+ /// <summary>
88
+ ///
89
+ /// </summary>
90
+ [Tooltip("")]
91
+ [SerializeField] protected int additionalStateIndex = 0;
92
+
93
+ /// <summary>
94
+ ///
95
+ /// </summary>
96
+ [Tooltip("")]
97
+ [SerializeField] protected float fadeToDarkDuration = 0.5f;
98
+
99
+ /// <summary>
100
+ ///
101
+ /// </summary>
102
+ [Tooltip("")]
103
+ [SerializeField] protected ReturnToMenuHandler returnToMenuHandler = null;
104
+
105
+
106
+ /// <summary>
107
+ ///
108
+ /// </summary>
109
+ /// <param name="o"></param>
110
+ protected override void OnDialogueEventTriggered(object o = null)
111
+ {
112
+ UnityEngine.Debug.Log($"{ToString()}: MOVING TO NEXT DAY.");
113
+
114
+ if (o is SceneTransition sentTransition)
115
+ CallSceneTransition(sentTransition);
116
+ else
117
+ CallSceneTransition(transition);
118
+ }
119
+
120
+ /// <summary>
121
+ ///
122
+ /// </summary>
123
+ /// <param name="sceneTransition"></param>
124
+ protected virtual void CallSceneTransition(SceneTransition sceneTransition)
125
+ => StartCoroutine(SceneTransitionRoutine(sceneTransition));
126
+
127
+ /// <summary>
128
+ ///
129
+ /// </summary>
130
+ /// <param name="sceneTransition"></param>
131
+ /// <returns></returns>
132
+ protected virtual IEnumerator SceneTransitionRoutine(SceneTransition sceneTransition)
133
+ {
134
+ currentAddState.SetValue(additionalStateIndex);
135
+
136
+ if (sceneTransition.ToDark)
137
+ yield return ServiceLocator.GetService<GlobalFade>().FadeToRoutine(fadeToDarkDuration);
138
+
139
+ EvaluateSceneTransitionOptions(sceneTransition);
140
+
141
+ if (!sceneTransition.AtEnd && !sceneTransition.ToMenu)
142
+ yield return MoveToScene(sceneTransition.Scene);
143
+ else if (sceneTransition.AtEnd)
144
+ DialogueEventSystem.TriggerEvent(moveOnEndEventString, sceneTransition.AtEnd);
145
+
146
+ cleanUpDialogueReader.Raise();
147
+
148
+ if (sceneTransition.ToMenu)
149
+ {
150
+ returnToMenuHandler.ReturnToMenu(sceneTransition.Scene);
151
+
152
+ yield break;
153
+ }
154
+
155
+ toSkipHideCG.SetValue(true);
156
+
157
+ ServiceLocator.GetService<IDialogueManager>().GetEnder().StopDialogue();
158
+
159
+ yield break;
160
+ }
161
+
162
+ /// <summary>
163
+ ///
164
+ /// </summary>
165
+ /// <param name="sceneTransition"></param>
166
+ protected virtual void EvaluateSceneTransitionOptions(SceneTransition sceneTransition)
167
+ {
168
+ if (!string.IsNullOrEmpty(sceneTransition.MoveToObjective))
169
+ moveToObjective.SetValue(sceneTransition.MoveToObjective);
170
+
171
+ if (sceneTransition.MoveToNextNaturalObjective)
172
+ moveToNextNaturalObjective.Raise();
173
+
174
+ if (sceneTransition.OnLoadNoDark)
175
+ DialogueEventSystem.TriggerEvent(fadeOutEventString);
176
+
177
+ if (!sceneTransition.ToMenu)
178
+ ServiceLocator.GetService<TPFDRoomLoader>().SetMovingToTPFDMode();
179
+ }
180
+
181
+
182
+ /// <summary>
183
+ ///
184
+ /// </summary>
185
+ /// <param name="scene"></param>
186
+ /// <returns></returns>
187
+ protected virtual IEnumerator MoveToScene(string scene)
188
+ {
189
+ UnityEngine.Debug.Log($"{ToString()}: CHANGING SCENE");
190
+
191
+ AsyncOperation asyncLoadOperation = SceneManager.LoadSceneAsync(scene);
192
+
193
+ asyncLoadOperation.allowSceneActivation = false;
194
+
195
+ yield return new WaitUntil(() => asyncLoadOperation.progress >= 0.9f);
196
+
197
+ asyncLoadOperation.allowSceneActivation = true;
198
+
199
+ yield return new WaitUntil(() => !inLoading.Value);
200
+
201
+ yield break;
202
+ }
203
+
204
+
205
+ [ContextMenu("Set Default Event")]
206
+ public void SetDefaultEvent() => SetDefaultEventString("NextDay");
207
+
208
+ protected virtual void Reset() => SetDefaultEventString("NextDay");
209
+
210
+
211
+ /// <inheritdoc/>
212
+ public virtual void ToTitleScreen() => moveToObjective.SetValue(string.Empty);
213
+ }
214
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 30c79b8fcf0a9464a93df583c434a61f
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,37 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Dialogues;
3
+ using System;
4
+ using System.Collections.Generic;
5
+ using UnityEngine;
6
+
7
+ namespace DREditor.FreeTime
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ [Serializable]
13
+ [CreateAssetMenu(menuName = "DREditor/FTE/Present Reaction", fileName = "Present Reaction")]
14
+ public class PresentReaction : ScriptableObject
15
+ {
16
+ /// <summary>
17
+ ///
18
+ /// </summary>
19
+ [Header("")]
20
+ [Divider]
21
+ [Tooltip("")]
22
+ public int reactionKeyIndex = 0;
23
+
24
+ /// <summary>
25
+ ///
26
+ /// </summary>
27
+ [Tooltip("")]
28
+ public List<Dialogue> reactions = new();
29
+
30
+
31
+ /// <summary>
32
+ ///
33
+ /// </summary>
34
+ /// <returns></returns>
35
+ public List<DialogueBase<Line>> GetReactions() => new(reactions);
36
+ }
37
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 263a49c3a15d9ed4a918904f82ac1ff3
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant: