net.dreditor.states 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 (45) hide show
  1. package/ChangeStateOnStart.cs +74 -0
  2. package/ChangeStateOnStart.cs.meta +11 -0
  3. package/ColorOnStateChange.cs +36 -0
  4. package/ColorOnStateChange.cs.meta +11 -0
  5. package/DREditor.States.asmdef +17 -0
  6. package/DREditor.States.asmdef.meta +7 -0
  7. package/Editor/StateAssetUtility.cs +30 -0
  8. package/Editor/StateAssetUtility.cs.meta +11 -0
  9. package/Editor.meta +8 -0
  10. package/IStateList.cs +14 -0
  11. package/IStateList.cs.meta +11 -0
  12. package/Samples/CurrentAddState.asset +19 -0
  13. package/Samples/CurrentAddState.asset.meta +8 -0
  14. package/Samples/CurrentState.asset +21 -0
  15. package/Samples/CurrentState.asset.meta +8 -0
  16. package/Samples/Daily.asset +15 -0
  17. package/Samples/Daily.asset.meta +8 -0
  18. package/Samples/Deadly.asset +15 -0
  19. package/Samples/Deadly.asset.meta +8 -0
  20. package/Samples/Night.asset +15 -0
  21. package/Samples/Night.asset.meta +8 -0
  22. package/Samples/Set_States_On_New_Game.prefab +134 -0
  23. package/Samples/Set_States_On_New_Game.prefab.meta +7 -0
  24. package/Samples/Set_States_On_New_Game_No_Save.prefab +70 -0
  25. package/Samples/Set_States_On_New_Game_No_Save.prefab.meta +7 -0
  26. package/Samples/State Database.asset +18 -0
  27. package/Samples/State Database.asset.meta +8 -0
  28. package/Samples/State_Save_Handler.prefab +53 -0
  29. package/Samples/State_Save_Handler.prefab.meta +7 -0
  30. package/Samples.meta +8 -0
  31. package/SetStatesOnSceneEvent.cs +56 -0
  32. package/SetStatesOnSceneEvent.cs.meta +11 -0
  33. package/SpriteOnStateChange.cs +55 -0
  34. package/SpriteOnStateChange.cs.meta +3 -0
  35. package/StateAsset.cs +19 -0
  36. package/StateAsset.cs.meta +11 -0
  37. package/StateChangeGroup.cs +29 -0
  38. package/StateChangeGroup.cs.meta +11 -0
  39. package/StateDatabase.cs +29 -0
  40. package/StateDatabase.cs.meta +11 -0
  41. package/UpdateOnStateChange.cs +121 -0
  42. package/UpdateOnStateChange.cs.meta +11 -0
  43. package/package.json +35 -6
  44. package/package.json.meta +7 -0
  45. package/README.md +0 -3
@@ -0,0 +1,74 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.EventObjects;
3
+ using System.Collections;
4
+ using UnityEngine;
5
+
6
+ namespace DREditor.States
7
+ {
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ [ClassHeader("")]
12
+ public class ChangeStateOnStart : MonoBehaviour
13
+ {
14
+ /// <summary>
15
+ ///
16
+ /// </summary>
17
+ [Tooltip("")]
18
+ [SerializeField] protected IntWithEvent currentState = null;
19
+
20
+ /// <summary>
21
+ ///
22
+ /// </summary>
23
+ [Tooltip("")]
24
+ [SerializeField] protected StateDatabase stateDatabase = null;
25
+
26
+ /// <summary>
27
+ ///
28
+ /// </summary>
29
+ [Tooltip("")]
30
+ [SerializeField] protected StateAsset updatedState = null;
31
+
32
+ /// <summary>
33
+ ///
34
+ /// </summary>
35
+ [Tooltip("")]
36
+ [SerializeField] protected bool useDelay = false;
37
+
38
+ /// <summary>
39
+ ///
40
+ /// </summary>
41
+ [Tooltip("")]
42
+ [SerializeField] protected float delayTime = 0;
43
+
44
+
45
+ /// <summary>
46
+ ///
47
+ /// </summary>
48
+ protected virtual void Start()
49
+ {
50
+ if (useDelay)
51
+ StartCoroutine(WaitDelay());
52
+ else
53
+ InvokeChangeState();
54
+ }
55
+
56
+ /// <summary>
57
+ ///
58
+ /// </summary>
59
+ /// <returns></returns>
60
+ protected virtual IEnumerator WaitDelay()
61
+ {
62
+ yield return new WaitForSeconds(delayTime);
63
+
64
+ InvokeChangeState();
65
+
66
+ yield break;
67
+ }
68
+
69
+ /// <summary>
70
+ ///
71
+ /// </summary>
72
+ protected virtual void InvokeChangeState() => currentState.SetValue(stateDatabase.States.IndexOf(updatedState));
73
+ }
74
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 2195d41bc2a939b4792ba4b10f04fa37
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,36 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using System.Collections.Generic;
3
+ using UnityEngine;
4
+ using UnityEngine.UI;
5
+
6
+ namespace DREditor.States
7
+ {
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ [ClassHeader("")]
12
+ public class ColorOnStateChange : UpdateOnStateChange<Color>
13
+ {
14
+ /// <summary>
15
+ ///
16
+ /// </summary>
17
+ [Header("")]
18
+
19
+ [Tooltip("")]
20
+ [SerializeField] protected List<Graphic> graphics = new();
21
+
22
+
23
+ /// <inheritdoc/>
24
+ protected override void OnStateChanged()
25
+ {
26
+ foreach (Graphic graphic in graphics)
27
+ SetGraphicColor(graphic);
28
+ }
29
+
30
+ /// <summary>
31
+ ///
32
+ /// </summary>
33
+ /// <param name="graphic"></param>
34
+ protected virtual void SetGraphicColor(Graphic graphic) => graphic.color = activeValue;
35
+ }
36
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 453d5afe9edcc22488d5beab85d5b7d0
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,17 @@
1
+ {
2
+ "name": "DREditor.States",
3
+ "rootNamespace": "",
4
+ "references": [
5
+ "DREditor",
6
+ "DREditor.EventObjectServices"
7
+ ],
8
+ "includePlatforms": [],
9
+ "excludePlatforms": [],
10
+ "allowUnsafeCode": false,
11
+ "overrideReferences": false,
12
+ "precompiledReferences": [],
13
+ "autoReferenced": true,
14
+ "defineConstraints": [],
15
+ "versionDefines": [],
16
+ "noEngineReferences": false
17
+ }
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: 0edcb62c9732dd34f8bafa0d5a84db83
3
+ AssemblyDefinitionImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -0,0 +1,30 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ #if UNITY_EDITOR
3
+ using System.Linq;
4
+ using UnityEditor;
5
+ using UnityEngine;
6
+
7
+ namespace DREditor.States.Editor
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ public static class StateAssetUtility
13
+ {
14
+ /// <summary>
15
+ ///
16
+ /// </summary>
17
+ [MenuItem("DREditor/States/Update State Listeners")]
18
+ public static void UpdateAll()
19
+ {
20
+ var all = MonoBehaviour.FindObjectsByType<MonoBehaviour>(FindObjectsInactive.Include).OfType<IStateList>();
21
+
22
+ if (all.Count() == 0)
23
+ UnityEngine.Debug.LogWarning("Couldn't Find any behaviours inheriting: " + nameof(IStateList));
24
+
25
+ foreach (var item in all)
26
+ item.OnInitializeStateList();
27
+ }
28
+ }
29
+ }
30
+ #endif
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: a0428c14c1d5141459c6cf1edb7adef2
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
package/Editor.meta ADDED
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 1cf536a0b4ec5364ba4afd9cc618ff5e
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
package/IStateList.cs ADDED
@@ -0,0 +1,14 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ namespace DREditor.States
3
+ {
4
+ /// <summary>
5
+ ///
6
+ /// </summary>
7
+ public interface IStateList
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ void OnInitializeStateList();
13
+ }
14
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: a937b2ff989f8bc45b12b8926b1b0a91
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,19 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!114 &11400000
4
+ MonoBehaviour:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ m_GameObject: {fileID: 0}
10
+ m_Enabled: 1
11
+ m_EditorHideFlags: 0
12
+ m_Script: {fileID: 11500000, guid: 2bf931fdfdd467d40a712b96209cd973, type: 3}
13
+ m_Name: CurrentAddState
14
+ m_EditorClassIdentifier:
15
+ OnChange:
16
+ m_PersistentCalls:
17
+ m_Calls: []
18
+ InitialValue: 0
19
+ _value: 0
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: cdff6a487abc2c9419f1459fc8ce32a1
3
+ NativeFormatImporter:
4
+ externalObjects: {}
5
+ mainObjectFileID: 11400000
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -0,0 +1,21 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!114 &11400000
4
+ MonoBehaviour:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ m_GameObject: {fileID: 0}
10
+ m_Enabled: 1
11
+ m_EditorHideFlags: 0
12
+ m_Script: {fileID: 11500000, guid: 2bf931fdfdd467d40a712b96209cd973, type: 3}
13
+ m_Name: CurrentState
14
+ m_EditorClassIdentifier:
15
+ debug: 0
16
+ alwaysInvokeOnSetValue: 0
17
+ OnChange:
18
+ m_PersistentCalls:
19
+ m_Calls: []
20
+ InitialValue: 0
21
+ _value: 0
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: fde96ad06c12a05408aae94901800edc
3
+ NativeFormatImporter:
4
+ externalObjects: {}
5
+ mainObjectFileID: 11400000
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -0,0 +1,15 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!114 &11400000
4
+ MonoBehaviour:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ m_GameObject: {fileID: 0}
10
+ m_Enabled: 1
11
+ m_EditorHideFlags: 0
12
+ m_Script: {fileID: 11500000, guid: 332b4f99dd6de514b99cea6b22c7fd14, type: 3}
13
+ m_Name: Daily
14
+ m_EditorClassIdentifier:
15
+ stateName: Daily
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 6808898f12efb5248a44fa86eb8f3fb3
3
+ NativeFormatImporter:
4
+ externalObjects: {}
5
+ mainObjectFileID: 11400000
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -0,0 +1,15 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!114 &11400000
4
+ MonoBehaviour:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ m_GameObject: {fileID: 0}
10
+ m_Enabled: 1
11
+ m_EditorHideFlags: 0
12
+ m_Script: {fileID: 11500000, guid: 332b4f99dd6de514b99cea6b22c7fd14, type: 3}
13
+ m_Name: Deadly
14
+ m_EditorClassIdentifier:
15
+ stateName: Deadly
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 24059db7ff4d549439ba10c7b1b54974
3
+ NativeFormatImporter:
4
+ externalObjects: {}
5
+ mainObjectFileID: 11400000
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -0,0 +1,15 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!114 &11400000
4
+ MonoBehaviour:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ m_GameObject: {fileID: 0}
10
+ m_Enabled: 1
11
+ m_EditorHideFlags: 0
12
+ m_Script: {fileID: 11500000, guid: 332b4f99dd6de514b99cea6b22c7fd14, type: 3}
13
+ m_Name: Night
14
+ m_EditorClassIdentifier:
15
+ stateName: Night
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: fac6c6890661dd6419bd4f8ab53c8a7b
3
+ NativeFormatImporter:
4
+ externalObjects: {}
5
+ mainObjectFileID: 11400000
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -0,0 +1,134 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!1 &2579338817171210836
4
+ GameObject:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ serializedVersion: 6
10
+ m_Component:
11
+ - component: {fileID: 2579338817171210837}
12
+ - component: {fileID: 2579338817171210842}
13
+ m_Layer: 0
14
+ m_Name: Set_States_On_New_Game
15
+ m_TagString: Untagged
16
+ m_Icon: {fileID: 0}
17
+ m_NavMeshLayer: 0
18
+ m_StaticEditorFlags: 0
19
+ m_IsActive: 1
20
+ --- !u!4 &2579338817171210837
21
+ Transform:
22
+ m_ObjectHideFlags: 0
23
+ m_CorrespondingSourceObject: {fileID: 0}
24
+ m_PrefabInstance: {fileID: 0}
25
+ m_PrefabAsset: {fileID: 0}
26
+ m_GameObject: {fileID: 2579338817171210836}
27
+ serializedVersion: 2
28
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29
+ m_LocalPosition: {x: 0, y: 0, z: 0}
30
+ m_LocalScale: {x: 1, y: 1, z: 1}
31
+ m_ConstrainProportionsScale: 0
32
+ m_Children:
33
+ - {fileID: 2579338818900949750}
34
+ m_Father: {fileID: 0}
35
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36
+ --- !u!114 &2579338817171210842
37
+ MonoBehaviour:
38
+ m_ObjectHideFlags: 0
39
+ m_CorrespondingSourceObject: {fileID: 0}
40
+ m_PrefabInstance: {fileID: 0}
41
+ m_PrefabAsset: {fileID: 0}
42
+ m_GameObject: {fileID: 2579338817171210836}
43
+ m_Enabled: 1
44
+ m_EditorHideFlags: 0
45
+ m_Script: {fileID: 11500000, guid: 4ebef9128dab4e5458c43824113a8920, type: 3}
46
+ m_Name:
47
+ m_EditorClassIdentifier:
48
+ sceneEvents:
49
+ - {fileID: 11400000, guid: 7905f84979818c34baf12a4982f46e9e, type: 2}
50
+ - {fileID: 11400000, guid: aedb15ce0bc81f64aba03a47893580a9, type: 2}
51
+ - {fileID: 11400000, guid: 02348884c0c1f9a49abf2d74f20292d4, type: 2}
52
+ currentStates:
53
+ - {fileID: 11400000, guid: fde96ad06c12a05408aae94901800edc, type: 2}
54
+ - {fileID: 11400000, guid: cdff6a487abc2c9419f1459fc8ce32a1, type: 2}
55
+ newGameStateIndex: 0
56
+ --- !u!1001 &8787165374771695548
57
+ PrefabInstance:
58
+ m_ObjectHideFlags: 0
59
+ serializedVersion: 2
60
+ m_Modification:
61
+ serializedVersion: 3
62
+ m_TransformParent: {fileID: 2579338817171210837}
63
+ m_Modifications:
64
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
65
+ type: 3}
66
+ propertyPath: m_RootOrder
67
+ value: 0
68
+ objectReference: {fileID: 0}
69
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
70
+ type: 3}
71
+ propertyPath: m_LocalPosition.x
72
+ value: 0
73
+ objectReference: {fileID: 0}
74
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
75
+ type: 3}
76
+ propertyPath: m_LocalPosition.y
77
+ value: 0
78
+ objectReference: {fileID: 0}
79
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
80
+ type: 3}
81
+ propertyPath: m_LocalPosition.z
82
+ value: 0
83
+ objectReference: {fileID: 0}
84
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
85
+ type: 3}
86
+ propertyPath: m_LocalRotation.w
87
+ value: 1
88
+ objectReference: {fileID: 0}
89
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
90
+ type: 3}
91
+ propertyPath: m_LocalRotation.x
92
+ value: 0
93
+ objectReference: {fileID: 0}
94
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
95
+ type: 3}
96
+ propertyPath: m_LocalRotation.y
97
+ value: 0
98
+ objectReference: {fileID: 0}
99
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
100
+ type: 3}
101
+ propertyPath: m_LocalRotation.z
102
+ value: 0
103
+ objectReference: {fileID: 0}
104
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
105
+ type: 3}
106
+ propertyPath: m_LocalEulerAnglesHint.x
107
+ value: 0
108
+ objectReference: {fileID: 0}
109
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
110
+ type: 3}
111
+ propertyPath: m_LocalEulerAnglesHint.y
112
+ value: 0
113
+ objectReference: {fileID: 0}
114
+ - target: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
115
+ type: 3}
116
+ propertyPath: m_LocalEulerAnglesHint.z
117
+ value: 0
118
+ objectReference: {fileID: 0}
119
+ - target: {fileID: 6501489940228371789, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
120
+ type: 3}
121
+ propertyPath: m_Name
122
+ value: State_Save_Handler
123
+ objectReference: {fileID: 0}
124
+ m_RemovedComponents: []
125
+ m_RemovedGameObjects: []
126
+ m_AddedGameObjects: []
127
+ m_AddedComponents: []
128
+ m_SourcePrefab: {fileID: 100100000, guid: 5e2b4bec4c50f6d4ca776cc28201a959, type: 3}
129
+ --- !u!4 &2579338818900949750 stripped
130
+ Transform:
131
+ m_CorrespondingSourceObject: {fileID: 6501489940228371786, guid: 5e2b4bec4c50f6d4ca776cc28201a959,
132
+ type: 3}
133
+ m_PrefabInstance: {fileID: 8787165374771695548}
134
+ m_PrefabAsset: {fileID: 0}
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: efe006508be5715418f6e1293a6d4e7d
3
+ PrefabImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -0,0 +1,70 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!1 &395367453024757584
4
+ GameObject:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ serializedVersion: 6
10
+ m_Component:
11
+ - component: {fileID: 395367453024757585}
12
+ - component: {fileID: 395367453024757598}
13
+ - component: {fileID: 2811926458435160955}
14
+ m_Layer: 0
15
+ m_Name: Set_States_On_New_Game_No_Save
16
+ m_TagString: Untagged
17
+ m_Icon: {fileID: 0}
18
+ m_NavMeshLayer: 0
19
+ m_StaticEditorFlags: 0
20
+ m_IsActive: 1
21
+ --- !u!4 &395367453024757585
22
+ Transform:
23
+ m_ObjectHideFlags: 0
24
+ m_CorrespondingSourceObject: {fileID: 0}
25
+ m_PrefabInstance: {fileID: 0}
26
+ m_PrefabAsset: {fileID: 0}
27
+ m_GameObject: {fileID: 395367453024757584}
28
+ serializedVersion: 2
29
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
30
+ m_LocalPosition: {x: 0, y: 0, z: 0}
31
+ m_LocalScale: {x: 1, y: 1, z: 1}
32
+ m_ConstrainProportionsScale: 0
33
+ m_Children: []
34
+ m_Father: {fileID: 0}
35
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36
+ --- !u!114 &395367453024757598
37
+ MonoBehaviour:
38
+ m_ObjectHideFlags: 0
39
+ m_CorrespondingSourceObject: {fileID: 0}
40
+ m_PrefabInstance: {fileID: 0}
41
+ m_PrefabAsset: {fileID: 0}
42
+ m_GameObject: {fileID: 395367453024757584}
43
+ m_Enabled: 1
44
+ m_EditorHideFlags: 0
45
+ m_Script: {fileID: 11500000, guid: 4ebef9128dab4e5458c43824113a8920, type: 3}
46
+ m_Name:
47
+ m_EditorClassIdentifier:
48
+ sceneEvents: []
49
+ currentStates:
50
+ - {fileID: 11400000, guid: fde96ad06c12a05408aae94901800edc, type: 2}
51
+ - {fileID: 11400000, guid: cdff6a487abc2c9419f1459fc8ce32a1, type: 2}
52
+ newGameStateIndex: 0
53
+ --- !u!114 &2811926458435160955
54
+ MonoBehaviour:
55
+ m_ObjectHideFlags: 0
56
+ m_CorrespondingSourceObject: {fileID: 0}
57
+ m_PrefabInstance: {fileID: 0}
58
+ m_PrefabAsset: {fileID: 0}
59
+ m_GameObject: {fileID: 395367453024757584}
60
+ m_Enabled: 1
61
+ m_EditorHideFlags: 0
62
+ m_Script: {fileID: 11500000, guid: 9122f094a109f78448db952c36a264a9, type: 3}
63
+ m_Name:
64
+ m_EditorClassIdentifier:
65
+ Event: {fileID: 11400000, guid: aedb15ce0bc81f64aba03a47893580a9, type: 2}
66
+ Condition: {fileID: 0}
67
+ conditionMustBe: 1
68
+ Response:
69
+ m_PersistentCalls:
70
+ m_Calls: []
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: a4ac5d1a296ea2e429d918dc842e3106
3
+ PrefabImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -0,0 +1,18 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!114 &11400000
4
+ MonoBehaviour:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ m_GameObject: {fileID: 0}
10
+ m_Enabled: 1
11
+ m_EditorHideFlags: 0
12
+ m_Script: {fileID: 11500000, guid: d139ed94dc8014641a3104c03af03bfa, type: 3}
13
+ m_Name: State Database
14
+ m_EditorClassIdentifier:
15
+ states:
16
+ - {fileID: 11400000, guid: 6808898f12efb5248a44fa86eb8f3fb3, type: 2}
17
+ - {fileID: 11400000, guid: fac6c6890661dd6419bd4f8ab53c8a7b, type: 2}
18
+ - {fileID: 11400000, guid: 24059db7ff4d549439ba10c7b1b54974, type: 2}
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 105a0c1f2fb336a46b2ba7b05301c4d2
3
+ NativeFormatImporter:
4
+ externalObjects: {}
5
+ mainObjectFileID: 11400000
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -0,0 +1,53 @@
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!1 &6501489940228371789
4
+ GameObject:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ serializedVersion: 6
10
+ m_Component:
11
+ - component: {fileID: 6501489940228371786}
12
+ - component: {fileID: 6501489940228371787}
13
+ m_Layer: 0
14
+ m_Name: State_Save_Handler
15
+ m_TagString: Untagged
16
+ m_Icon: {fileID: 0}
17
+ m_NavMeshLayer: 0
18
+ m_StaticEditorFlags: 0
19
+ m_IsActive: 1
20
+ --- !u!4 &6501489940228371786
21
+ Transform:
22
+ m_ObjectHideFlags: 0
23
+ m_CorrespondingSourceObject: {fileID: 0}
24
+ m_PrefabInstance: {fileID: 0}
25
+ m_PrefabAsset: {fileID: 0}
26
+ m_GameObject: {fileID: 6501489940228371789}
27
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
28
+ m_LocalPosition: {x: 0, y: 0, z: 0}
29
+ m_LocalScale: {x: 1, y: 1, z: 1}
30
+ m_ConstrainProportionsScale: 0
31
+ m_Children: []
32
+ m_Father: {fileID: 0}
33
+ m_RootOrder: 0
34
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
35
+ --- !u!114 &6501489940228371787
36
+ MonoBehaviour:
37
+ m_ObjectHideFlags: 0
38
+ m_CorrespondingSourceObject: {fileID: 0}
39
+ m_PrefabInstance: {fileID: 0}
40
+ m_PrefabAsset: {fileID: 0}
41
+ m_GameObject: {fileID: 6501489940228371789}
42
+ m_Enabled: 1
43
+ m_EditorHideFlags: 0
44
+ m_Script: {fileID: 11500000, guid: 49e9d406fc4561644b6bf58475b59ebe, type: 3}
45
+ m_Name:
46
+ m_EditorClassIdentifier:
47
+ entries:
48
+ - key: currentState
49
+ value: {fileID: 11400000, guid: fde96ad06c12a05408aae94901800edc, type: 2}
50
+ skipOnChapterSelect: 0
51
+ - key: addedState
52
+ value: {fileID: 11400000, guid: cdff6a487abc2c9419f1459fc8ce32a1, type: 2}
53
+ skipOnChapterSelect: 0
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: 5e2b4bec4c50f6d4ca776cc28201a959
3
+ PrefabImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
package/Samples.meta ADDED
@@ -0,0 +1,8 @@
1
+ fileFormatVersion: 2
2
+ guid: 158f20479dce901409e72de09b1e0b6f
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -0,0 +1,56 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.EventObjects;
3
+ using System.Collections.Generic;
4
+ using UnityEngine;
5
+
6
+ namespace DREditor.States
7
+ {
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ [ClassHeader(nameof(ISceneEventListener) +
12
+ "\n\n")]
13
+ public class SetStatesOnSceneEvent : MonoBehaviour, ISceneEventListener
14
+ {
15
+ /// <summary>
16
+ ///
17
+ /// </summary>
18
+ [Tooltip("")]
19
+ [SerializeField] protected List<SceneEvent> sceneEvents = new();
20
+
21
+ /// <summary>
22
+ ///
23
+ /// </summary>
24
+ [Tooltip("")]
25
+ [SerializeField] protected List<IntWithEvent> currentStates = null;
26
+
27
+ /// <summary>
28
+ ///
29
+ /// </summary>
30
+ [Tooltip("")]
31
+ [SerializeField] protected int newGameStateIndex = 0;
32
+
33
+
34
+ /// <summary>
35
+ ///
36
+ /// </summary>
37
+ protected virtual void OnEnable() => sceneEvents.ForEach(sceneEvent => sceneEvent.RegisterListener(this));
38
+
39
+ /// <summary>
40
+ ///
41
+ /// </summary>
42
+ protected virtual void OnDisable() => sceneEvents.ForEach(sceneEvent => sceneEvent.UnregisterListener(this));
43
+
44
+ /// <summary>
45
+ ///
46
+ /// </summary>
47
+ protected virtual void OnStartNewGameFile()
48
+ {
49
+ foreach (var state in currentStates)
50
+ state.SetValue(newGameStateIndex);
51
+ }
52
+
53
+ /// <inheritdoc/>
54
+ public virtual void OnEventRaised() => OnStartNewGameFile();
55
+ }
56
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 4ebef9128dab4e5458c43824113a8920
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,55 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.EventObjectServices;
3
+ using System.Collections.Generic;
4
+ using UnityEngine;
5
+ using UnityEngine.UI;
6
+
7
+ namespace DREditor.States
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ [ClassHeader(nameof(UpdateOnStateChange<Sprite>) + ", " + nameof(IntWithEventListener) + ", " + nameof(IStateList) +
13
+ "\n\n")]
14
+ public class SpriteOnStateChange : UpdateOnStateChange<Sprite>
15
+ {
16
+ /// <summary>
17
+ ///
18
+ /// </summary>
19
+ [Header("")]
20
+ [Divider]
21
+ [Tooltip("")]
22
+ [SerializeField] protected List<MaskableGraphic> graphics = new();
23
+
24
+
25
+ /// <inheritdoc/>
26
+ protected override void OnStateChanged()
27
+ {
28
+ foreach (var graphic in graphics)
29
+ SetTexture(graphic, activeValue);
30
+ }
31
+
32
+ /// <summary>
33
+ ///
34
+ /// </summary>
35
+ /// <param name="graphic"></param>
36
+ /// <param name="sprite"></param>
37
+ protected virtual void SetTexture(MaskableGraphic graphic, Sprite sprite)
38
+ {
39
+ if (graphic is Image image)
40
+ image.sprite = sprite;
41
+ else if (graphic is RawImage rawImage)
42
+ rawImage.texture = sprite.texture;
43
+ }
44
+
45
+
46
+ /// <inheritdoc/>
47
+ public override void OnInitializeStateList()
48
+ {
49
+ base.OnInitializeStateList();
50
+
51
+ if (graphics.Count == 0 && GetComponent<MaskableGraphic>() is MaskableGraphic validGraphic)
52
+ graphics.Add(validGraphic);
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: f0d53a89ec8e4e878537f80289e49fe8
3
+ timeCreated: 1645891862
package/StateAsset.cs ADDED
@@ -0,0 +1,19 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using UnityEngine;
3
+
4
+ namespace DREditor.States
5
+ {
6
+ /// <summary>
7
+ ///
8
+ /// </summary>
9
+ [System.Serializable]
10
+ [CreateAssetMenu(menuName = "DREditor/States/Asset", fileName = "State Asset")]
11
+ public class StateAsset : ScriptableObject
12
+ {
13
+ /// <summary>
14
+ ///
15
+ /// </summary>
16
+ [Tooltip("")]
17
+ public string stateName;
18
+ }
19
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 332b4f99dd6de514b99cea6b22c7fd14
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,29 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using System;
3
+ using UnityEngine;
4
+
5
+ namespace DREditor.States
6
+ {
7
+ /// <summary>
8
+ ///
9
+ /// </summary>
10
+ /// <typeparam name="T"></typeparam>
11
+ [Serializable]
12
+ public class StateChangeGroup<T>
13
+ {
14
+ public StateChangeGroup(StateAsset state = null) => this.state = state;
15
+
16
+
17
+ /// <summary>
18
+ ///
19
+ /// </summary>
20
+ [Tooltip("")]
21
+ public StateAsset state;
22
+
23
+ /// <summary>
24
+ ///
25
+ /// </summary>
26
+ [Tooltip("")]
27
+ public T stateValue;
28
+ }
29
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 418a775d1aaf09344b41f44134461ad2
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,29 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using System.Collections.Generic;
3
+ using System.Linq;
4
+ using UnityEngine;
5
+ using UnityEngine.Serialization;
6
+
7
+ namespace DREditor.States
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ /// <remarks></remarks>
13
+ [System.Serializable]
14
+ [CreateAssetMenu(menuName = "DREditor/States/Database", fileName = "State Database")]
15
+ public class StateDatabase : ScriptableObject
16
+ {
17
+ /// <summary>
18
+ ///
19
+ /// </summary>
20
+ [FormerlySerializedAs("states")]
21
+ [Tooltip("")]
22
+ public List<StateAsset> States = new();
23
+
24
+
25
+ public virtual string GetStateName(int stateIndex) => States[stateIndex].stateName;
26
+
27
+ public virtual string[] GetStateNames() => States.Select(state => state.stateName).ToArray();
28
+ }
29
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: d139ed94dc8014641a3104c03af03bfa
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,121 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.EventObjects;
3
+ using DREditor.EventObjectServices;
4
+ using System.Collections.Generic;
5
+ using System.Linq;
6
+ using UnityEngine;
7
+
8
+ namespace DREditor.States
9
+ {
10
+ /// <summary>
11
+ ///
12
+ /// </summary>
13
+ /// <typeparam name="T"></typeparam>
14
+ public abstract class UpdateOnStateChange<T> : IntWithEventListener, IStateList
15
+ {
16
+ /// <summary>
17
+ ///
18
+ /// </summary>
19
+ [Header("")]
20
+
21
+ [Space]
22
+
23
+ [Header("")]
24
+
25
+ [Space]
26
+
27
+ [Header("")]
28
+
29
+ [Tooltip("")]
30
+ [SerializeField] protected StateDatabase stateDatabase = null;
31
+
32
+ /// <summary>
33
+ ///
34
+ /// </summary>
35
+ [Space]
36
+
37
+ [Header("")]
38
+
39
+ [Tooltip("")]
40
+ [SerializeField] protected List<StateChangeGroup<T>> groups = new();
41
+
42
+ [Space]
43
+
44
+
45
+ /// <summary>
46
+ ///
47
+ /// </summary>
48
+ protected StateAsset activeState = null;
49
+
50
+ /// <summary>
51
+ ///
52
+ /// </summary>
53
+ protected int activeStateIndex = -1;
54
+
55
+ /// <summary>
56
+ ///
57
+ /// </summary>
58
+ protected T activeValue;
59
+
60
+ /// <summary>
61
+ ///
62
+ /// </summary>
63
+ protected Dictionary<StateAsset, T> dictionaryStates;
64
+
65
+
66
+ /// <summary>
67
+ ///
68
+ /// </summary>
69
+ protected virtual void Awake() => dictionaryStates = groups.ToDictionary(kv => kv.state, kv => kv.stateValue);
70
+
71
+ protected override void OnEnable()
72
+ {
73
+ base.OnEnable();
74
+
75
+ OnValueChanged(valueWithEvent.Value);
76
+ }
77
+
78
+ public virtual void OnInitializeStateList()
79
+ {
80
+ UnityEngine.Debug.Log("Initializing State change list.");
81
+
82
+ if (stateDatabase == null)
83
+ UnityEngine.Debug.LogWarning($"{ToString()}: State Database must be filled to populate inspector.");
84
+ else
85
+ foreach (var state in stateDatabase.States)
86
+ if (groups.Where(group => group.state == state).Count() == 0)
87
+ groups.Add(new StateChangeGroup<T>(state));
88
+ }
89
+
90
+ /// <summary>
91
+ ///
92
+ /// </summary>
93
+ /// <param name="stateIndex"></param>
94
+ protected override void OnValueChanged(int stateIndex)
95
+ {
96
+ base.OnValueChanged(stateIndex);
97
+
98
+ activeStateIndex = stateIndex;
99
+
100
+ InitializeStateChanged();
101
+
102
+ OnStateChanged();
103
+ }
104
+
105
+ /// <summary>
106
+ ///
107
+ /// </summary>
108
+ protected virtual void InitializeStateChanged()
109
+ {
110
+ activeState = stateDatabase.States[activeStateIndex];
111
+
112
+ if (dictionaryStates.TryGetValue(activeState, out var value))
113
+ activeValue = value;
114
+ }
115
+
116
+ /// <summary>
117
+ ///
118
+ /// </summary>
119
+ protected abstract void OnStateChanged();
120
+ }
121
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: c2806dbcd78c2164e90ab7e86e87a504
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
package/package.json CHANGED
@@ -1,6 +1,35 @@
1
- {
2
- "name": "net.dreditor.states",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
1
+ {
2
+ "name": "net.dreditor.states",
3
+ "version": "0.1.6",
4
+ "displayName": "DREditor States",
5
+ "description": "The beta for DREditor. A tool to create death game style projects without having to code.",
6
+ "unity": "6000.4",
7
+ "dependencies": {
8
+ "net.dreditor.core": "0.1.6",
9
+ "net.dreditor.eventobjectservices": "0.1.6"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "author": {
15
+ "name": "Benjamin \"Sweden\" Jillson",
16
+ "email": "dreditortool@gmail.com",
17
+ "url": "https://dreditor.net"
18
+ },
19
+ "keywords": [
20
+ "editor",
21
+ "tool",
22
+ "dreditor"
23
+ ],
24
+ "samples": [
25
+ {
26
+ "displayName": "Samples",
27
+ "description": "",
28
+ "path": "Samples~"
29
+ }
30
+ ],
31
+ "documentationUrl": "https://dreditor.net",
32
+ "license": "Apache-2.0",
33
+ "licensesUrl": "https://dreditor.net/docs/LICENSE.html",
34
+ "changelogUrl": "https://dreditor.net/docs/CHANGELOG.html"
35
+ }
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: 9b6d9aac67207fe448be4bc2900171ae
3
+ TextScriptImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.