net.dreditor.minigames.bs 0.0.0-stage → 0.1.6

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 (32) hide show
  1. package/BlackenedManager.cs +428 -0
  2. package/BlackenedManager.cs.meta +11 -0
  3. package/BlackenedManagerBase.cs +163 -0
  4. package/BlackenedManagerBase.cs.meta +11 -0
  5. package/BlackenedNameScroller.cs +90 -0
  6. package/BlackenedNameScroller.cs.meta +11 -0
  7. package/BlackenedSelectBuilder.cs +31 -0
  8. package/BlackenedSelectBuilder.cs.meta +11 -0
  9. package/BlackenedSelectBuilderEditor.cs +265 -0
  10. package/BlackenedSelectBuilderEditor.cs.meta +11 -0
  11. package/BlackenedSelectData.cs +53 -0
  12. package/BlackenedSelectData.cs.meta +11 -0
  13. package/ColoredNameScoller.cs +152 -0
  14. package/ColoredNameScoller.cs.meta +11 -0
  15. package/DREditor.Minigames.BS.asmdef +22 -0
  16. package/DREditor.Minigames.BS.asmdef.meta +7 -0
  17. package/Samples/BS_Main_UI_Group_Shell.prefab +57 -0
  18. package/Samples/BS_Main_UI_Group_Shell.prefab.meta +7 -0
  19. package/Samples/BS_Main_UI_Group_Template.prefab +488 -0
  20. package/Samples/BS_Main_UI_Group_Template.prefab.meta +7 -0
  21. package/Samples/BS_Manager_Shell.prefab +119 -0
  22. package/Samples/BS_Manager_Shell.prefab.meta +7 -0
  23. package/Samples/BS_Manager_Template.prefab +367 -0
  24. package/Samples/BS_Manager_Template.prefab.meta +7 -0
  25. package/Samples/Blackened_Select_Canvas_Shell.prefab +144 -0
  26. package/Samples/Blackened_Select_Canvas_Shell.prefab.meta +7 -0
  27. package/Samples/Blackened_Select_Canvas_Template.prefab +495 -0
  28. package/Samples/Blackened_Select_Canvas_Template.prefab.meta +7 -0
  29. package/Samples.meta +8 -0
  30. package/package.json +38 -6
  31. package/package.json.meta +7 -0
  32. package/README.md +0 -3
@@ -0,0 +1,428 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Cameras;
3
+ using DREditor.Characters;
4
+ using DREditor.Minigames.Stats;
5
+ using DREditor.Services;
6
+ using DREditor.UIHandling;
7
+ using System.Collections;
8
+ using UnityEngine;
9
+ using UnityEngine.Events;
10
+ using UnityEngine.InputSystem;
11
+ using static UnityEngine.InputSystem.InputAction;
12
+
13
+ namespace DREditor.Minigames.BS
14
+ {
15
+ /// <summary>
16
+ ///
17
+ /// </summary>
18
+ [ClassHeader(nameof(BlackenedManagerBase) + ", " +nameof(MinigameManagerBase) + ", " +
19
+ "\n\n")]
20
+ public class BlackenedManager : BlackenedManagerBase
21
+ {
22
+ /// <summary>
23
+ ///
24
+ /// </summary>
25
+ [Header("")]
26
+ [Divider]
27
+ [Tooltip("")]
28
+ [SerializeField] protected bool debug = false;
29
+
30
+ /// <summary>
31
+ ///
32
+ /// </summary>
33
+ [Tooltip("")]
34
+ [SerializeField] protected float debugbufferTime = 1;
35
+
36
+ /// <summary>
37
+ ///
38
+ /// </summary>
39
+ [Tooltip("")]
40
+ [SerializeField] protected BlackenedSelectBuilder builder = null;
41
+
42
+
43
+ /// <summary>
44
+ ///
45
+ /// </summary>
46
+ [Header("")]
47
+ [Divider]
48
+ [Tooltip("")]
49
+ [SerializeField] protected UIVisibilityComponent minigameUI = null;
50
+
51
+ /// <summary>
52
+ ///
53
+ /// </summary>
54
+ [Tooltip("")]
55
+ [SerializeField] protected UIVisibilityComponent selectionUI = null;
56
+
57
+ /// <summary>
58
+ ///
59
+ /// </summary>
60
+ [Tooltip("")]
61
+ [SerializeField] protected UIVisibilityComponent answerUI = null;
62
+
63
+ /// <summary>
64
+ ///
65
+ /// </summary>
66
+ [Tooltip("")]
67
+ [SerializeField] protected float menuFadeWaitTime = 0.25f;
68
+
69
+ /// <summary>
70
+ ///
71
+ /// </summary>
72
+ [Tooltip("")]
73
+ [SerializeField] protected float removeOffsetBufferDuration = 1;
74
+
75
+ /// <summary>
76
+ ///
77
+ /// </summary>
78
+ [Tooltip("")]
79
+ [SerializeField] protected float moveStallDuration = 0.3f;
80
+
81
+
82
+ [Header("")]
83
+ [Divider]
84
+ [Header("")]
85
+ [SerializeField] protected UnityEvent OnMinigameStarted;
86
+
87
+ [Header("")]
88
+ [SerializeField] protected UnityEvent OnShowVisuals;
89
+
90
+ [Header("")]
91
+ [SerializeField] protected UnityEvent OnHideVisuals;
92
+
93
+ [Header("")]
94
+ [SerializeField] protected UnityEvent<string> OnChangeSelection;
95
+
96
+ [Header("")]
97
+ [SerializeField] protected UnityEvent OnSelected;
98
+
99
+ [Header("")]
100
+ [SerializeField] protected UnityEvent OnCorrectSelected;
101
+
102
+
103
+ /// <summary>
104
+ ///
105
+ /// </summary>
106
+ protected DRTrialCamera trialCamera;
107
+
108
+ /// <summary>
109
+ ///
110
+ /// </summary>
111
+ protected TrialStatsBase TrialStats;
112
+
113
+
114
+ #region Initialization
115
+
116
+ /// <summary>
117
+ ///
118
+ /// </summary>
119
+ protected virtual void Start()
120
+ {
121
+ InitializeTrialCamera();
122
+
123
+ if (debug && builder != null)
124
+ PlayBlackenedSelect(builder);
125
+
126
+ TrialStats = ServiceLocator.GetService<TrialStatsBase>();
127
+ }
128
+
129
+ /// <summary>
130
+ ///
131
+ /// </summary>
132
+ protected virtual void InitializeTrialCamera()
133
+ {
134
+ if (trialCamera == null)
135
+ {
136
+ trialCamera = FindAnyObjectByType<DRTrialCamera>();
137
+
138
+ trialCamera.SmoothFocus = true;
139
+ }
140
+ }
141
+
142
+ /// <summary>
143
+ ///
144
+ /// </summary>
145
+ /// <param name="obj"></param>
146
+ /// <remarks></remarks>
147
+ public void PlayMinigame(ScriptableObject obj)
148
+ => FindAnyObjectByType<BlackenedManager>().PlayBlackenedSelect((BlackenedSelectBuilder)obj);
149
+
150
+ /// <summary>
151
+ ///
152
+ /// </summary>
153
+ /// <param name="asset"></param>
154
+ protected virtual void PlayBlackenedSelect(BlackenedSelectBuilder asset)
155
+ {
156
+ builder = asset;
157
+
158
+ StartCoroutine(BlackenedSelectStartRoutine());
159
+ }
160
+
161
+ /// <summary>
162
+ ///
163
+ /// </summary>
164
+ /// <returns></returns>
165
+ protected virtual IEnumerator BlackenedSelectStartRoutine()
166
+ {
167
+ if (debug)
168
+ yield return new WaitForSeconds(debugbufferTime);
169
+
170
+ OnMinigameStarted?.Invoke();
171
+
172
+ InitializeTrialCamera();
173
+
174
+ trialCamera.TriggerAnim(trialCamera.SeatFocus + cameraPositionOffset);
175
+
176
+ if (minigameUI != null)
177
+ yield return minigameUI.ShowTillComplete();
178
+
179
+ Initialize();
180
+ }
181
+
182
+ /// <summary>
183
+ ///
184
+ /// </summary>
185
+ protected virtual void Initialize()
186
+ {
187
+ currentControlsKey.SetValue(controlsKey);
188
+
189
+ if (TrialTimer != null)
190
+ TrialTimer.ShowInitialize(builder.times, false);
191
+
192
+ if (questionToggle != null)
193
+ questionToggle.Initialize(builder.questionText);
194
+
195
+ InvokeChangedSelection();
196
+
197
+ ActivateControls();
198
+ }
199
+
200
+ #endregion
201
+
202
+ #region Move Select
203
+
204
+ /// <inheritdoc/>
205
+ protected override void MoveSelect(CallbackContext ctx)
206
+ {
207
+ Vector2 value = move.action.ReadValue<Vector2>();
208
+
209
+ if (moving || value.x == 0)
210
+ return;
211
+
212
+ moving = true;
213
+
214
+ DeactivateControls();
215
+
216
+ if (value.x > 0)
217
+ {
218
+ // move right
219
+ if ((trialCamera.SeatFocus - cameraPositionOffset + 1) > trialCamera.CharHeightOffset.Length - 1)
220
+ trialCamera.SeatFocus = 0 + cameraPositionOffset;
221
+ else
222
+ trialCamera.SeatFocus += 1;
223
+ }
224
+ else if (value.x < 0)
225
+ {
226
+ //move left
227
+ if ((trialCamera.SeatFocus - cameraPositionOffset - 1) < 0)
228
+ trialCamera.SeatFocus = trialCamera.CharHeightOffset.Length - 1 + cameraPositionOffset;
229
+ else
230
+ trialCamera.SeatFocus -= 1;
231
+ }
232
+
233
+ StartCoroutine(MoveStall());
234
+
235
+ InvokeChangedSelection();
236
+ }
237
+
238
+ /// <summary>
239
+ ///
240
+ /// </summary>
241
+ /// <returns></returns>
242
+ protected virtual IEnumerator MoveStall()
243
+ {
244
+ yield return new WaitForSeconds(moveStallDuration);
245
+
246
+ ActivateControls();
247
+
248
+ moving = false;
249
+
250
+ yield break;
251
+ }
252
+
253
+ /// <summary>
254
+ ///
255
+ /// </summary>
256
+ protected virtual void InvokeChangedSelection() => OnChangeSelection?.Invoke(GetHoveredCharacterData()?.characterName);
257
+
258
+ /// <summary>
259
+ ///
260
+ /// </summary>
261
+ /// <returns></returns>
262
+ protected virtual BlackenedSelectData GetHoveredCharacterData()
263
+ {
264
+ foreach (var data in builder.selectDatas)
265
+ if (Mathf.RoundToInt(trialCamera.SeatFocus) == characterDatabase.GetCharacter(data.characterName).TrialPosition)
266
+ return data;
267
+
268
+ UnityEngine.Debug.LogError("The Character could not be found! " + trialCamera.SeatFocus);
269
+
270
+ return null;
271
+ }
272
+
273
+ #endregion
274
+
275
+ #region Select Character Resolve Minigame
276
+
277
+ /// <inheritdoc/>
278
+ protected override void SelectCharacter(CallbackContext ctx)
279
+ {
280
+ DeactivateControls();
281
+
282
+ TrialTimer.PauseTimer();
283
+
284
+ HideVisuals();
285
+
286
+ OnSelected?.Invoke();
287
+
288
+ StartCoroutine(SelectCharacterRoutine());
289
+ }
290
+
291
+ /// <summary>
292
+ ///
293
+ /// </summary>
294
+ /// <returns></returns>
295
+ protected virtual IEnumerator SelectCharacterRoutine()
296
+ {
297
+ if (minigameUI != null)
298
+ minigameUI.Hide();
299
+
300
+ yield return new WaitForSeconds(removeOffsetBufferDuration);
301
+
302
+ if (Mathf.RoundToInt(trialCamera.SeatFocus) >= trialCamera.CharHeightOffset.Length)
303
+ trialCamera.SeatFocus = 0;
304
+
305
+ trialCamera.SeatFocus = Mathf.RoundToInt(trialCamera.SeatFocus);
306
+
307
+ if (minigameUI != null)
308
+ yield return minigameUI.WaitForChangeToComplete();
309
+
310
+ trialCamera.SmoothFocus = false;
311
+
312
+ if (GetHoveredCharacterData() is BlackenedSelectData data)
313
+ {
314
+ if (data.isAnswer)
315
+ StartCoroutine(ResolveMinigame());
316
+ else
317
+ TrialMistake(data.fuckUpDialogue);
318
+ }
319
+ }
320
+
321
+ /// <inheritdoc/>
322
+ public override IEnumerator ResolveMinigame()
323
+ {
324
+ if (TrialTimer != null)
325
+ TrialTimer.HideStop();
326
+
327
+ OnCorrectSelected?.Invoke();
328
+
329
+ if (selectionUI != null)
330
+ yield return selectionUI.ShowTillComplete();
331
+
332
+ yield return new WaitForSeconds(menuFadeWaitTime);
333
+
334
+ if (answerUI != null)
335
+ yield return answerUI.ShowTillComplete();
336
+
337
+ yield return base.ResolveMinigame();
338
+
339
+ yield break;
340
+ }
341
+
342
+ #endregion
343
+
344
+ #region Time Up, Player Death, Restart Minigame
345
+
346
+ /// <inheritdoc/>
347
+ protected override void OnTimeUp()
348
+ {
349
+ DeactivateControls();
350
+
351
+ HideVisuals();
352
+
353
+ base.OnTimeUp();
354
+ }
355
+
356
+ /// <inheritdoc/>
357
+ protected override void Restart()
358
+ {
359
+ UnityEngine.Debug.Log("Restart Called");
360
+
361
+ ShowVisuals();
362
+
363
+ InvokeChangedSelection();
364
+
365
+ StartCoroutine(ResolveRestart());
366
+ }
367
+
368
+ /// <summary>
369
+ ///
370
+ /// </summary>
371
+ protected virtual void ShowVisuals()
372
+ {
373
+ if (questionToggle != null)
374
+ questionToggle.Activate();
375
+
376
+ if (TrialTimer != null)
377
+ TrialTimer.Show();
378
+
379
+ if (TrialTimer != null)
380
+ TrialTimer.Restart();
381
+
382
+ if (TrialStats != null)
383
+ TrialStats.ShowTrialStats();
384
+
385
+ if (minigameUI != null)
386
+ minigameUI.Show();
387
+
388
+ trialCamera.TriggerAnim(trialCamera.SeatFocus + cameraPositionOffset);
389
+
390
+ trialCamera.SmoothFocus = true;
391
+
392
+ OnShowVisuals?.Invoke();
393
+ }
394
+
395
+ /// <summary>
396
+ ///
397
+ /// </summary>
398
+ protected virtual void HideVisuals()
399
+ {
400
+ if (questionToggle != null)
401
+ questionToggle.Deactivate();
402
+
403
+ if (TrialTimer != null)
404
+ TrialTimer.Hide();
405
+
406
+ if (TrialStats != null)
407
+ TrialStats.HideTrialStats();
408
+
409
+ if (minigameUI != null)
410
+ minigameUI.Hide();
411
+
412
+ OnHideVisuals?.Invoke();
413
+ }
414
+
415
+ /// <summary>
416
+ ///
417
+ /// </summary>
418
+ protected virtual IEnumerator ResolveRestart()
419
+ {
420
+ if (minigameUI != null)
421
+ yield return minigameUI.WaitForChangeToComplete();
422
+
423
+ ActivateControls();
424
+ }
425
+
426
+ #endregion
427
+ }
428
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 71ea774c3ad84714fb1c8157c327a342
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,163 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Characters;
3
+ using DREditor.EventObjects;
4
+ using System.Collections;
5
+ using UnityEngine;
6
+ using UnityEngine.InputSystem;
7
+ using static UnityEngine.InputSystem.InputAction;
8
+
9
+ namespace DREditor.Minigames.BS
10
+ {
11
+ /// <summary>
12
+ ///
13
+ /// </summary>
14
+ public abstract class BlackenedManagerBase : MinigameManagerBase
15
+ {
16
+ /// <summary>
17
+ ///
18
+ /// </summary>
19
+ [Tooltip("")]
20
+ [SerializeField] protected InputActionReference submit = null;
21
+
22
+ /// <summary>
23
+ ///
24
+ /// </summary>
25
+ [Tooltip("")]
26
+ [SerializeField] protected InputActionReference move = null;
27
+
28
+ /// <summary>
29
+ ///
30
+ /// </summary>
31
+ [Tooltip("")]
32
+ [SerializeField] protected InputActionReference controls = null;
33
+
34
+
35
+ /// <summary>
36
+ ///
37
+ /// </summary>
38
+ [Header("")]
39
+ [Divider]
40
+ [Tooltip("")]
41
+ [SerializeField] protected bool moving = false;
42
+
43
+
44
+ /// <summary>
45
+ ///
46
+ /// </summary>
47
+ [Header("")]
48
+ [Divider]
49
+ [Tooltip("")]
50
+ [SerializeField] protected string controlsKey = "bs";
51
+
52
+ /// <summary>
53
+ ///
54
+ /// </summary>
55
+ [Tooltip("")]
56
+ [SerializeField] protected StringWithEvent currentControlsKey = null;
57
+
58
+ /// <summary>
59
+ ///
60
+ /// </summary>
61
+ [Tooltip("")]
62
+ [SerializeField] protected BoolWithEvent inMenu = null;
63
+
64
+ /// <summary>
65
+ ///
66
+ /// </summary>
67
+ [Tooltip("")]
68
+ [SerializeField] protected BoolWithEvent callControlsUI = null;
69
+
70
+ /// <summary>
71
+ ///
72
+ /// </summary>
73
+ [Tooltip("")]
74
+ [SerializeField] protected QuestionToggle questionToggle = null;
75
+
76
+ /// <summary>
77
+ ///
78
+ /// </summary>
79
+ [Tooltip("")]
80
+ [SerializeField] protected CharacterDatabase characterDatabase = null;
81
+
82
+ /// <summary>
83
+ ///
84
+ /// </summary>
85
+ [Tooltip("")]
86
+ [SerializeField] protected float cameraPositionOffset = -0.26f;
87
+
88
+
89
+ /// <inheritdoc/>
90
+ protected override void OnMinigameDisable()
91
+ {
92
+ DeactivateControls();
93
+
94
+ base.OnMinigameDisable();
95
+ }
96
+
97
+ /// <summary>
98
+ ///
99
+ /// </summary>
100
+ protected virtual void ActivateControls()
101
+ {
102
+ move.action.started += MoveSelect;
103
+
104
+ submit.action.started += SelectCharacter;
105
+
106
+ controls.action.started += ShowControls;
107
+ }
108
+
109
+ /// <summary>
110
+ ///
111
+ /// </summary>
112
+ protected virtual void DeactivateControls()
113
+ {
114
+ move.action.started -= MoveSelect;
115
+
116
+ submit.action.started -= SelectCharacter;
117
+
118
+ controls.action.started -= ShowControls;
119
+ }
120
+
121
+ /// <summary>
122
+ ///
123
+ /// </summary>
124
+ /// <param name="context"></param>
125
+ protected abstract void MoveSelect(CallbackContext context);
126
+
127
+ /// <summary>
128
+ ///
129
+ /// </summary>
130
+ /// <param name="context"></param>
131
+ protected abstract void SelectCharacter(CallbackContext context);
132
+
133
+ /// <summary>
134
+ ///
135
+ /// </summary>
136
+ /// <param name="context"></param>
137
+ protected virtual void ShowControls(CallbackContext context)
138
+ {
139
+ if (moving)
140
+ return;
141
+
142
+ DeactivateControls();
143
+
144
+ callControlsUI.SetValue(true);
145
+
146
+ StartCoroutine(WaitForControlsToEnd());
147
+ }
148
+
149
+ /// <summary>
150
+ ///
151
+ /// </summary>
152
+ protected virtual IEnumerator WaitForControlsToEnd()
153
+ {
154
+ while (inMenu.Value)
155
+ yield return null;
156
+
157
+ if (!trialTimeUp.Value)
158
+ ActivateControls();
159
+
160
+ callControlsUI.SetValue(false);
161
+ }
162
+ }
163
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 8d7eb3de5683ca74486e4e0138042fda
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,90 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Cameras;
3
+ using DREditor.Characters;
4
+ using TMPro;
5
+ using UnityEngine;
6
+
7
+ namespace DREditor.Minigames.BS
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ /// <remarks>
13
+ ///
14
+ /// </remarks>
15
+ [ClassHeader("")]
16
+ public class BlackenedNameScroller : MonoBehaviour
17
+ {
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ [Header("")]
22
+ [Divider]
23
+ [Tooltip("")]
24
+ [SerializeField] protected CharacterDatabase characterDatabase = null;
25
+
26
+ /// <summary>
27
+ ///
28
+ /// </summary>
29
+ [Tooltip("")]
30
+ [SerializeField] protected TextMeshProUGUI nameText = null;
31
+
32
+
33
+ /// <summary>
34
+ ///
35
+ /// </summary>
36
+ protected DRTrialCamera trialCamera = null;
37
+
38
+ /// <summary>
39
+ ///
40
+ /// </summary>
41
+ protected Vector3 defaultPosition = Vector3.zero;
42
+
43
+ /// <summary>
44
+ ///
45
+ /// </summary>
46
+ protected int seatPosition = -1;
47
+
48
+
49
+ /// <summary>
50
+ ///
51
+ /// </summary>
52
+ protected virtual void Start()
53
+ {
54
+ defaultPosition = nameText.rectTransform.position;
55
+
56
+ trialCamera = FindAnyObjectByType<DRTrialCamera>();
57
+ }
58
+
59
+ /// <summary>
60
+ ///
61
+ /// </summary>
62
+ /// <remarks></remarks>
63
+ public virtual void Animate() => DisplayCharacterName();
64
+
65
+ /// <summary>
66
+ ///
67
+ /// </summary>
68
+ protected virtual void DisplayCharacterName()
69
+ {
70
+ SetSeatPosition();
71
+
72
+ foreach (var character in characterDatabase.Characters)
73
+ if (character.TrialPosition == seatPosition)
74
+ SetCharacterName(character);
75
+ }
76
+
77
+ /// <summary>
78
+ ///
79
+ /// </summary>
80
+ /// <returns></returns>
81
+ protected virtual int SetSeatPosition() => seatPosition = Mathf.RoundToInt(trialCamera.SeatFocus);
82
+
83
+ /// <summary>
84
+ ///
85
+ /// </summary>
86
+ /// <param name="character"></param>
87
+ protected virtual void SetCharacterName(Character character)
88
+ => nameText.text = character.FirstName + " " + character.LastName;
89
+ }
90
+ }