net.dreditor.maps 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 (132) hide show
  1. package/CharacterMapMarkerUI.cs +95 -0
  2. package/CharacterMapMarkerUI.cs.meta +11 -0
  3. package/CharacterMapUITab.cs +172 -0
  4. package/CharacterMapUITab.cs.meta +11 -0
  5. package/ClearMapAreaData.cs +23 -0
  6. package/ClearMapAreaData.cs.meta +11 -0
  7. package/ClearMapInstanceData.cs +36 -0
  8. package/ClearMapInstanceData.cs.meta +11 -0
  9. package/ControlFastTravel.cs +57 -0
  10. package/ControlFastTravel.cs.meta +11 -0
  11. package/DREditor.Maps.asmdef +24 -0
  12. package/DREditor.Maps.asmdef.meta +7 -0
  13. package/DiscoverData.cs +23 -0
  14. package/DiscoverData.cs.meta +11 -0
  15. package/DiscoverableBase.cs +24 -0
  16. package/DiscoverableBase.cs.meta +11 -0
  17. package/FastTravelController.cs +36 -0
  18. package/FastTravelController.cs.meta +11 -0
  19. package/FastTravelData.cs +25 -0
  20. package/FastTravelData.cs.meta +11 -0
  21. package/FastTravelMarker.cs +107 -0
  22. package/FastTravelMarker.cs.meta +13 -0
  23. package/IDHolder.cs +47 -0
  24. package/IDHolder.cs.meta +11 -0
  25. package/IEntryLoader.cs +19 -0
  26. package/IEntryLoader.cs.meta +11 -0
  27. package/IMapManager.cs +27 -0
  28. package/IMapManager.cs.meta +11 -0
  29. package/IPlaceMarker.cs +26 -0
  30. package/IPlaceMarker.cs.meta +11 -0
  31. package/IPlaceOptionHolder.cs +53 -0
  32. package/IPlaceOptionHolder.cs.meta +11 -0
  33. package/MapAreaData.cs +53 -0
  34. package/MapAreaData.cs.meta +11 -0
  35. package/MapAreaEntry.cs +55 -0
  36. package/MapAreaEntry.cs.meta +11 -0
  37. package/MapAreaManager.cs +194 -0
  38. package/MapAreaManager.cs.meta +11 -0
  39. package/MapBaseData.cs +66 -0
  40. package/MapBaseData.cs.meta +11 -0
  41. package/MapData.cs +35 -0
  42. package/MapData.cs.meta +11 -0
  43. package/MapDatabase.cs +133 -0
  44. package/MapDatabase.cs.meta +11 -0
  45. package/MapEntry.cs +77 -0
  46. package/MapEntry.cs.meta +11 -0
  47. package/MapEntryChange.cs +321 -0
  48. package/MapEntryChange.cs.meta +11 -0
  49. package/MapEntryChanger.cs +45 -0
  50. package/MapEntryChanger.cs.meta +11 -0
  51. package/MapHoverSelector.cs +161 -0
  52. package/MapHoverSelector.cs.meta +11 -0
  53. package/MapManager.cs +288 -0
  54. package/MapManager.cs.meta +11 -0
  55. package/MapManagerBase.cs +260 -0
  56. package/MapManagerBase.cs.meta +11 -0
  57. package/MapMarkerSelectable.cs +71 -0
  58. package/MapMarkerSelectable.cs.meta +11 -0
  59. package/MapObjectiveData.cs +28 -0
  60. package/MapObjectiveData.cs.meta +11 -0
  61. package/MapSaveManager.cs +63 -0
  62. package/MapSaveManager.cs.meta +11 -0
  63. package/MapTabUIHandler.cs +98 -0
  64. package/MapTabUIHandler.cs.meta +11 -0
  65. package/MapUITab.cs +26 -0
  66. package/MapUITab.cs.meta +11 -0
  67. package/MapUtility.cs +183 -0
  68. package/MapUtility.cs.meta +11 -0
  69. package/MarkerData.cs +25 -0
  70. package/MarkerData.cs.meta +11 -0
  71. package/MarkerDatabase.cs +57 -0
  72. package/MarkerDatabase.cs.meta +11 -0
  73. package/MarkerUtility.cs +48 -0
  74. package/MarkerUtility.cs.meta +11 -0
  75. package/MarkerVessel.cs +38 -0
  76. package/MarkerVessel.cs.meta +11 -0
  77. package/PlaceData.cs +27 -0
  78. package/PlaceData.cs.meta +11 -0
  79. package/PlaceEntry.cs +83 -0
  80. package/PlaceEntry.cs.meta +11 -0
  81. package/PlaceManager.cs +293 -0
  82. package/PlaceManager.cs.meta +11 -0
  83. package/PlaceMapUITab.cs +203 -0
  84. package/PlaceMapUITab.cs.meta +11 -0
  85. package/Samples/Clear_Map_Area_Data_Event.prefab +52 -0
  86. package/Samples/Clear_Map_Area_Data_Event.prefab.meta +7 -0
  87. package/Samples/Clear_Map_Instance_Data.prefab +56 -0
  88. package/Samples/Clear_Map_Instance_Data.prefab.meta +7 -0
  89. package/Samples/DRE_Map_UI.unity +461 -0
  90. package/Samples/DRE_Map_UI.unity.meta +7 -0
  91. package/Samples/Map_Entry_Changer.prefab +52 -0
  92. package/Samples/Map_Entry_Changer.prefab.meta +7 -0
  93. package/Samples/Map_Marker_Selectable_ETemplate.prefab +126 -0
  94. package/Samples/Map_Marker_Selectable_ETemplate.prefab.meta +7 -0
  95. package/Samples/Map_Tab_UI_Handler_Shell.prefab +134 -0
  96. package/Samples/Map_Tab_UI_Handler_Shell.prefab.meta +7 -0
  97. package/Samples/Map_Tab_UI_Handler_Template.prefab +404 -0
  98. package/Samples/Map_Tab_UI_Handler_Template.prefab.meta +7 -0
  99. package/Samples/Map_UI_Canvas_Shell.prefab +842 -0
  100. package/Samples/Map_UI_Canvas_Shell.prefab.meta +7 -0
  101. package/Samples/Map_UI_Canvas_Template.prefab +996 -0
  102. package/Samples/Map_UI_Canvas_Template.prefab.meta +7 -0
  103. package/Samples/Map_UI_Controls_ETemplate.prefab +538 -0
  104. package/Samples/Map_UI_Controls_ETemplate.prefab.meta +7 -0
  105. package/Samples/Map_UI_GO_FT_ETemplate.prefab +78 -0
  106. package/Samples/Map_UI_GO_FT_ETemplate.prefab.meta +7 -0
  107. package/Samples/Map_UI_Place_Place_Name_ETemplate.prefab +181 -0
  108. package/Samples/Map_UI_Place_Place_Name_ETemplate.prefab.meta +7 -0
  109. package/Samples/Map_UI_Place_Tab_Shell.prefab +57 -0
  110. package/Samples/Map_UI_Place_Tab_Shell.prefab.meta +7 -0
  111. package/Samples/Map_UI_Place_Tab_Template.prefab +806 -0
  112. package/Samples/Map_UI_Place_Tab_Template.prefab.meta +7 -0
  113. package/Samples/Map_UI_Place_Tab_UI_ETemplate.prefab +1265 -0
  114. package/Samples/Map_UI_Place_Tab_UI_ETemplate.prefab.meta +7 -0
  115. package/Samples/Map_UI_Reticle_ETemplate.prefab +78 -0
  116. package/Samples/Map_UI_Reticle_ETemplate.prefab.meta +7 -0
  117. package/Samples/Map_UI_Student_Tab_Shell.prefab +267 -0
  118. package/Samples/Map_UI_Student_Tab_Shell.prefab.meta +7 -0
  119. package/Samples/Map_UI_Student_Tab_Template.prefab +544 -0
  120. package/Samples/Map_UI_Student_Tab_Template.prefab.meta +7 -0
  121. package/Samples/Map_UI_Student_Tab_UI_Shell.prefab +90 -0
  122. package/Samples/Map_UI_Student_Tab_UI_Shell.prefab.meta +7 -0
  123. package/Samples/Map_UI_Student_Tab_UI_Template.prefab +2031 -0
  124. package/Samples/Map_UI_Student_Tab_UI_Template.prefab.meta +7 -0
  125. package/Samples/Map_UI_Title_ETemplate.prefab +672 -0
  126. package/Samples/Map_UI_Title_ETemplate.prefab.meta +7 -0
  127. package/Samples/Place_Template.prefab +200 -0
  128. package/Samples/Place_Template.prefab.meta +7 -0
  129. package/Samples.meta +8 -0
  130. package/package.json +40 -6
  131. package/package.json.meta +7 -0
  132. package/README.md +0 -3
@@ -0,0 +1,260 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Services;
3
+ using System.Collections;
4
+ using TMPro;
5
+ using UnityEngine;
6
+ using UnityEngine.Events;
7
+ using UnityEngine.EventSystems;
8
+ using static UnityEngine.InputSystem.InputAction;
9
+
10
+ namespace DREditor.Maps
11
+ {
12
+ /// <summary>
13
+ ///
14
+ /// </summary>
15
+ public abstract class MapManagerBase : ServiceHolder<IMapManager>, IMapManager
16
+ {
17
+ /// <summary>
18
+ ///
19
+ /// </summary>
20
+ [Header("")]
21
+ [Divider]
22
+ [Tooltip("")]
23
+ [SerializeField] protected MapEntry InstanceData = null;
24
+
25
+ /// <summary>
26
+ ///
27
+ /// </summary>
28
+ [Tooltip("")]
29
+ [SerializeField] protected GameObject areaGameObject = null;
30
+
31
+ /// <summary>
32
+ ///
33
+ /// </summary>
34
+ [Tooltip("")]
35
+ [SerializeField] protected MapAreaManager currentAreaManager = null;
36
+
37
+ /// <summary>
38
+ ///
39
+ /// </summary>
40
+ [Tooltip("")]
41
+ [SerializeField] protected int currentAreaIndex = 0;
42
+
43
+
44
+ /// <summary>
45
+ ///
46
+ /// </summary>
47
+ [Header("")]
48
+ [Divider]
49
+ [Tooltip("")]
50
+ [SerializeField] protected MapDatabase mapDatabase = null;
51
+
52
+ /// <summary>
53
+ ///
54
+ /// </summary>
55
+ [Tooltip("")]
56
+ [SerializeField] protected GameObject root = null;
57
+
58
+ /// <summary>
59
+ ///
60
+ /// </summary>
61
+ [Tooltip("")]
62
+ [SerializeField] protected TextMeshProUGUI areaText = null;
63
+
64
+
65
+ [Header("")]
66
+ [SerializeField] protected UnityEvent onMapChanging = null;
67
+
68
+
69
+ /// <summary>
70
+ ///
71
+ /// </summary>
72
+ protected int shiftNumber = 0;
73
+
74
+ /// <summary>
75
+ ///
76
+ /// </summary>
77
+ protected IPlaceOptionHolder placeOptionHolder;
78
+
79
+
80
+ protected virtual void Start() => placeOptionHolder = GetComponentInChildren<IPlaceOptionHolder>();
81
+
82
+
83
+ /// <summary>
84
+ ///
85
+ /// </summary>
86
+ protected virtual void UpdateMapUI()
87
+ {
88
+ shiftNumber = 0;
89
+
90
+ if (currentAreaManager != null &&
91
+ currentAreaManager.Data.name == mapDatabase.ValidFloorList(InstanceData.UnlockedAreas)[currentAreaIndex].name)
92
+ return;
93
+
94
+ StopAllCoroutines();
95
+
96
+ onMapChanging?.Invoke();
97
+
98
+ StartCoroutine(UpdateMapArea());
99
+ }
100
+
101
+ /// <summary>
102
+ ///
103
+ /// </summary>
104
+ protected virtual IEnumerator UpdateMapArea()
105
+ {
106
+ DestroyAreaUI();
107
+
108
+ yield return null;
109
+
110
+ SpawnLoadAreaUI();
111
+
112
+ yield return null;
113
+
114
+ PopulateMapUIText(0);
115
+
116
+ ServiceLocator.GetService<MapTabUIHandler>().InitializeTab();
117
+
118
+ if (ServiceLocator.GetService<MapTabUIHandler>().IsOnDefaultTab())
119
+ NavigateSelectVisual(new CallbackContext());
120
+
121
+ AnimateToHoveredPlace();
122
+ }
123
+
124
+ /// <summary>
125
+ ///
126
+ /// </summary>
127
+ protected virtual void DestroyAreaUI()
128
+ {
129
+ if (areaGameObject != null)
130
+ Destroy(areaGameObject);
131
+ }
132
+
133
+ /// <summary>
134
+ ///
135
+ /// </summary>
136
+ protected virtual void SpawnLoadAreaUI()
137
+ {
138
+ areaGameObject = Instantiate(mapDatabase.ValidFloorList(InstanceData.UnlockedAreas)[currentAreaIndex].prefab, root.transform);
139
+
140
+ if (areaGameObject == null)
141
+ return;
142
+
143
+ currentAreaManager = areaGameObject.GetComponent<MapAreaManager>();
144
+
145
+ currentAreaManager
146
+ .LoadEntry(InstanceData.GetAreaEntry(currentAreaManager.Data.name), InstanceData.UnlockedAreas);
147
+ }
148
+
149
+ /// <summary>
150
+ ///
151
+ /// </summary>
152
+ /// <param name="shiftNum"></param>
153
+ protected virtual void PopulateMapUIText(int shiftNum)
154
+ {
155
+ areaText.text = currentAreaManager.Data.name;
156
+
157
+ var placeNames = currentAreaManager.GetNamesOfUnlockedPlaces(InstanceData.UnlockedAreas);
158
+
159
+ placeOptionHolder.PopulatePlaceUIText(shiftNum, placeNames);
160
+ }
161
+
162
+ /// <summary>
163
+ ///
164
+ /// </summary>
165
+ /// <param name="ctx"></param>
166
+ protected void NavigateSelectVisual(CallbackContext ctx)
167
+ {
168
+ float vertical = ctx.ReadValue<Vector2>().y;
169
+
170
+ bool movingUp = IsMovingUp(vertical);
171
+
172
+ if (vertical == 0 && !movingUp)
173
+ return;
174
+
175
+ bool movingDown = IsMovingDown(vertical);
176
+
177
+ if (movingUp || movingDown)
178
+ ShiftThenHover(movingUp);
179
+
180
+ if (ServiceLocator.GetService<MapTabUIHandler>().IsOnDefaultTab())
181
+ AnimateToHoveredPlace();
182
+ }
183
+
184
+ /// <summary>
185
+ ///
186
+ /// </summary>
187
+ /// <param name="vertical"></param>
188
+ /// <returns></returns>
189
+ protected virtual bool IsMovingUp(float vertical) =>
190
+ vertical > 0 &&
191
+ shiftNumber > 0 &&
192
+ EventSystem.current.currentSelectedGameObject == placeOptionHolder.GetTopOption();
193
+
194
+ /// <summary>
195
+ ///
196
+ /// </summary>
197
+ /// <param name="vertical"></param>
198
+ /// <returns></returns>
199
+ protected virtual bool IsMovingDown(float vertical) =>
200
+ vertical < 0 &&
201
+ shiftNumber < placeOptionHolder.GetMaxShiftIndex() &&
202
+ EventSystem.current.currentSelectedGameObject == placeOptionHolder.GetBottomOption();
203
+
204
+ /// <summary>
205
+ ///
206
+ /// </summary>
207
+ /// <param name="movingUp"></param>
208
+ protected virtual void ShiftThenHover(bool movingUp)
209
+ {
210
+ if (movingUp)
211
+ shiftNumber--;
212
+ else
213
+ shiftNumber++;
214
+
215
+ PopulateMapUIText(shiftNumber);
216
+
217
+ AnimateToHoveredPlace();
218
+ }
219
+
220
+ /// <summary>
221
+ ///
222
+ /// </summary>
223
+ protected virtual void AnimateToHoveredPlace() => StartCoroutine(WaitForAreaLoaded());
224
+
225
+ /// <summary>
226
+ ///
227
+ /// </summary>
228
+ protected virtual IEnumerator WaitForAreaLoaded()
229
+ {
230
+ yield return new WaitUntil(() => ServiceLocator.HasService<MapAreaManager>());
231
+
232
+ if (!ServiceLocator.HasService(out currentAreaManager))
233
+ yield break;
234
+
235
+ ServiceLocator.GetService<MapHoverSelector>().AnimateToHoveredPlace(placeOptionHolder.GetCurrentlyHoveredPlace());
236
+ }
237
+
238
+
239
+ /// <inheritdoc/>
240
+ public virtual MapEntry GetInstanceData() => InstanceData;
241
+
242
+ /// <inheritdoc/>
243
+ public virtual void SetInstanceData(MapEntry InstanceData) => this.InstanceData = InstanceData;
244
+
245
+ /// <inheritdoc/>
246
+ public virtual void AddUnlockedArea(string areaName)
247
+ {
248
+ MapAreaData areaData = mapDatabase.GetArea(areaName);
249
+
250
+ PlaceData placeData = mapDatabase.GetPlace(areaName);
251
+
252
+ if (areaData != null)
253
+ InstanceData.UnlockedAreas.Add(areaData.GetID());
254
+ else if (placeData != null)
255
+ InstanceData.UnlockedAreas.Add(placeData.GetID());
256
+ else
257
+ UnityEngine.Debug.LogWarning($"ALERT: {ToString()}: Couldn't find the area/place to unlock: " + areaName);
258
+ }
259
+ }
260
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 7c5121726acf5974fba9c41771146992
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,71 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using UnityEngine;
3
+ using UnityEngine.Events;
4
+ using UnityEngine.EventSystems;
5
+ using UnityEngine.UI;
6
+
7
+ namespace DREditor.Maps
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ public class MapMarkerSelectable : Selectable
13
+ {
14
+ /// <summary>
15
+ ///
16
+ /// </summary>
17
+ [Header("")]
18
+ [Divider]
19
+ [Tooltip("")]
20
+ [SerializeField] protected string markerName = "";
21
+
22
+ /// <summary>
23
+ ///
24
+ /// </summary>
25
+ [Tooltip("")]
26
+ [SerializeField] protected Color availableColor = Color.white;
27
+
28
+ /// <summary>
29
+ ///
30
+ /// </summary>
31
+ [Tooltip("")]
32
+ [SerializeField] protected Color unavailableColor = Color.white;
33
+
34
+
35
+ [Header("")]
36
+ public UnityEvent<string> OnHover;
37
+
38
+
39
+ /// <inheritdoc/>
40
+ public override void OnSelect(BaseEventData eventData)
41
+ {
42
+ base.OnSelect(eventData);
43
+
44
+ OnHover?.Invoke(markerName);
45
+ }
46
+
47
+ /// <summary>
48
+ ///
49
+ /// </summary>
50
+ /// <returns></returns>
51
+ public virtual string GetMarkerName() => markerName;
52
+
53
+ /// <summary>
54
+ ///
55
+ /// </summary>
56
+ public virtual void SetAvailable()
57
+ {
58
+ if (targetGraphic != null)
59
+ targetGraphic.color = availableColor;
60
+ }
61
+
62
+ /// <summary>
63
+ ///
64
+ /// </summary>
65
+ public virtual void SetUnavailable()
66
+ {
67
+ if (targetGraphic != null)
68
+ targetGraphic.color = unavailableColor;
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 6065de3d82a020f4f8ca9c86f5f3c660
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,28 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using System;
3
+
4
+ namespace DREditor.Maps
5
+ {
6
+ /// <summary>
7
+ ///
8
+ /// </summary>
9
+ /// <remarks></remarks>
10
+ [Serializable]
11
+ public class MapObjectiveData
12
+ {
13
+ /// <summary>
14
+ ///
15
+ /// </summary>
16
+ public int chapter;
17
+
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ public bool isObjective;
22
+
23
+ /// <summary>
24
+ ///
25
+ /// </summary>
26
+ public string objectiveID;
27
+ }
28
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: b5a6e825f2eaf9f418b6eb203d9a0ccc
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,63 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.EventObjects;
3
+ using DREditor.Saveables;
4
+ using DREditor.Services;
5
+ using System.Collections.Generic;
6
+ using UnityEngine;
7
+
8
+ namespace DREditor.Maps
9
+ {
10
+ /// <summary>
11
+ ///
12
+ /// </summary>
13
+ [ClassHeader(nameof(ISaveManager) +
14
+ "\n\n")]
15
+ public class MapSaveManager : MonoBehaviour, ISaveManager
16
+ {
17
+ /// <summary>
18
+ ///
19
+ /// </summary>
20
+ [Tooltip("")]
21
+ [SerializeField] protected BoolWithEvent canFastTravel = null;
22
+
23
+ /// <summary>
24
+ ///
25
+ /// </summary>
26
+ [Tooltip("")]
27
+ [SerializeField] protected int subID;
28
+
29
+
30
+ public int SubID { get => subID; }
31
+
32
+
33
+ /// <inheritdoc/>
34
+ public virtual string Save()
35
+ {
36
+ ServiceLocator.GetService<IMapManager>().GetInstanceData().Save();
37
+
38
+ MapData mapData = new(ServiceLocator.GetService<IMapManager>().GetInstanceData(), canFastTravel.Value);
39
+
40
+ return JsonUtility.ToJson(mapData);
41
+ }
42
+
43
+ /// <inheritdoc/>
44
+ public virtual void Load(string data)
45
+ {
46
+ try
47
+ {
48
+ MapData mapData = JsonUtility.FromJson<MapData>(data);
49
+
50
+ ServiceLocator.GetService<IMapManager>().SetInstanceData(mapData.Entry);
51
+
52
+ canFastTravel.SetValue(mapData.allowFastTravel);
53
+ }
54
+ catch
55
+ {
56
+ ServiceLocator.GetService<IMapManager>().SetInstanceData(JsonUtility.FromJson<MapEntry>(data));
57
+ }
58
+ }
59
+
60
+ /// <inheritdoc/>
61
+ public virtual List<string> GetPreviousNames() => new() { "MapManager" };
62
+ }
63
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: de3a05a686d01f9479c4016ff2db3128
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,98 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Services;
3
+ using System.Collections.Generic;
4
+ using UnityEngine;
5
+ using UnityEngine.EventSystems;
6
+
7
+ namespace DREditor.Maps
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ [ClassHeader(nameof(ServiceHolder<MapTabUIHandler>) + " for type: " + nameof(MapTabUIHandler) +
13
+ "\n\n")]
14
+ public class MapTabUIHandler : ServiceHolder<MapTabUIHandler>
15
+ {
16
+ /// <summary>
17
+ ///
18
+ /// </summary>
19
+ [Space]
20
+ [Divider]
21
+ [Tooltip("")]
22
+ [SerializeField] protected MapUITab defaultTab;
23
+
24
+ /// <summary>
25
+ ///
26
+ /// </summary>
27
+ [Tooltip("")]
28
+ [SerializeField] protected List<MapUITab> tabs = new();
29
+
30
+
31
+ /// <summary>
32
+ ///
33
+ /// </summary>
34
+ protected MapUITab currentTab = null;
35
+
36
+
37
+ /// <summary>
38
+ ///
39
+ /// </summary>
40
+ protected virtual void Start()
41
+ {
42
+ currentTab = defaultTab;
43
+
44
+ ShowDefaultTab();
45
+ }
46
+
47
+ /// <summary>
48
+ ///
49
+ /// </summary>
50
+ public virtual void ShowDefaultTab()
51
+ {
52
+ if (currentTab != defaultTab)
53
+ {
54
+ currentTab.HideTab();
55
+
56
+ currentTab = defaultTab;
57
+ }
58
+
59
+ defaultTab.ShowTab();
60
+ }
61
+
62
+ /// <summary>
63
+ ///
64
+ /// </summary>
65
+ public virtual void InitializeTab()
66
+ {
67
+ foreach (var tab in tabs)
68
+ if (currentTab == tab)
69
+ tab.InitializeTab();
70
+ }
71
+
72
+ /// <summary>
73
+ ///
74
+ /// </summary>
75
+ /// <returns></returns>
76
+ public virtual bool IsOnDefaultTab() => currentTab == defaultTab;
77
+
78
+ /// <summary>
79
+ ///
80
+ /// </summary>
81
+ public virtual void UpdateTab()
82
+ {
83
+ EventSystem.current.SetSelectedGameObject(null);
84
+
85
+ foreach (var tab in tabs)
86
+ tab.HideTab();
87
+
88
+ int nextIndex = tabs.IndexOf(currentTab) + 1;
89
+
90
+ if (nextIndex < 0 || nextIndex >= tabs.Count)
91
+ nextIndex = 0;
92
+
93
+ currentTab = tabs[nextIndex];
94
+
95
+ currentTab.ShowTab();
96
+ }
97
+ }
98
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 5e75cb36c3348f64eadc8d8bed660404
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
package/MapUITab.cs ADDED
@@ -0,0 +1,26 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using UnityEngine;
3
+
4
+ namespace DREditor.Maps
5
+ {
6
+ /// <summary>
7
+ ///
8
+ /// </summary>
9
+ public abstract class MapUITab : MonoBehaviour
10
+ {
11
+ /// <summary>
12
+ ///
13
+ /// </summary>
14
+ public abstract void InitializeTab();
15
+
16
+ /// <summary>
17
+ ///
18
+ /// </summary>
19
+ public abstract void ShowTab();
20
+
21
+ /// <summary>
22
+ ///
23
+ /// </summary>
24
+ public abstract void HideTab();
25
+ }
26
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 6da377f69541a2e4d89792ea5ccfd1ed
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant: