net.dreditor.maps 0.1.6 → 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.
- package/.attestation.p7m +0 -0
- package/CharacterMapMarkerUI.cs +94 -94
- package/CharacterMapMarkerUI.cs.meta +11 -11
- package/CharacterMapUITab.cs +171 -171
- package/CharacterMapUITab.cs.meta +11 -11
- package/ClearMapAreaData.cs +22 -22
- package/ClearMapAreaData.cs.meta +11 -11
- package/ClearMapInstanceData.cs +35 -35
- package/ClearMapInstanceData.cs.meta +11 -11
- package/ControlFastTravel.cs +56 -56
- package/ControlFastTravel.cs.meta +11 -11
- package/DREditor.Maps.asmdef +23 -23
- package/DREditor.Maps.asmdef.meta +7 -7
- package/DiscoverData.cs +22 -22
- package/DiscoverData.cs.meta +11 -11
- package/DiscoverableBase.cs +23 -23
- package/DiscoverableBase.cs.meta +11 -11
- package/FastTravelController.cs +35 -35
- package/FastTravelController.cs.meta +11 -11
- package/FastTravelData.cs +24 -24
- package/FastTravelData.cs.meta +11 -11
- package/FastTravelMarker.cs +106 -106
- package/FastTravelMarker.cs.meta +13 -13
- package/IDHolder.cs +46 -46
- package/IDHolder.cs.meta +11 -11
- package/IEntryLoader.cs +18 -18
- package/IEntryLoader.cs.meta +11 -11
- package/IMapManager.cs +26 -26
- package/IMapManager.cs.meta +11 -11
- package/IPlaceMarker.cs +25 -25
- package/IPlaceMarker.cs.meta +11 -11
- package/IPlaceOptionHolder.cs +52 -52
- package/IPlaceOptionHolder.cs.meta +11 -11
- package/MapAreaData.cs +52 -52
- package/MapAreaData.cs.meta +11 -11
- package/MapAreaEntry.cs +54 -54
- package/MapAreaEntry.cs.meta +11 -11
- package/MapAreaManager.cs +193 -193
- package/MapAreaManager.cs.meta +11 -11
- package/MapBaseData.cs +65 -65
- package/MapBaseData.cs.meta +11 -11
- package/MapData.cs +34 -34
- package/MapData.cs.meta +11 -11
- package/MapDatabase.cs +132 -132
- package/MapDatabase.cs.meta +11 -11
- package/MapEntry.cs +76 -76
- package/MapEntry.cs.meta +11 -11
- package/MapEntryChange.cs +320 -320
- package/MapEntryChange.cs.meta +11 -11
- package/MapEntryChanger.cs +44 -44
- package/MapEntryChanger.cs.meta +11 -11
- package/MapHoverSelector.cs +160 -160
- package/MapHoverSelector.cs.meta +11 -11
- package/MapManager.cs +287 -287
- package/MapManager.cs.meta +11 -11
- package/MapManagerBase.cs +259 -259
- package/MapManagerBase.cs.meta +11 -11
- package/MapMarkerSelectable.cs +70 -70
- package/MapMarkerSelectable.cs.meta +11 -11
- package/MapObjectiveData.cs +27 -27
- package/MapObjectiveData.cs.meta +11 -11
- package/MapSaveManager.cs +62 -62
- package/MapSaveManager.cs.meta +11 -11
- package/MapTabUIHandler.cs +97 -97
- package/MapTabUIHandler.cs.meta +11 -11
- package/MapUITab.cs +25 -25
- package/MapUITab.cs.meta +11 -11
- package/MapUtility.cs +182 -182
- package/MapUtility.cs.meta +11 -11
- package/MarkerData.cs +24 -24
- package/MarkerData.cs.meta +11 -11
- package/MarkerDatabase.cs +56 -56
- package/MarkerDatabase.cs.meta +11 -11
- package/MarkerUtility.cs +47 -47
- package/MarkerUtility.cs.meta +11 -11
- package/MarkerVessel.cs +37 -37
- package/MarkerVessel.cs.meta +11 -11
- package/PlaceData.cs +26 -26
- package/PlaceData.cs.meta +11 -11
- package/PlaceEntry.cs +82 -82
- package/PlaceEntry.cs.meta +11 -11
- package/PlaceManager.cs +292 -292
- package/PlaceManager.cs.meta +11 -11
- package/PlaceMapUITab.cs +202 -202
- package/PlaceMapUITab.cs.meta +11 -11
- package/{Samples → Samples~}/Clear_Map_Area_Data_Event.prefab +52 -52
- package/{Samples → Samples~}/Clear_Map_Area_Data_Event.prefab.meta +7 -7
- package/{Samples → Samples~}/Clear_Map_Instance_Data.prefab +56 -56
- package/{Samples → Samples~}/Clear_Map_Instance_Data.prefab.meta +7 -7
- package/{Samples → Samples~}/DRE_Map_UI.unity +461 -461
- package/{Samples → Samples~}/DRE_Map_UI.unity.meta +7 -7
- package/{Samples → Samples~}/Map_Entry_Changer.prefab +52 -52
- package/{Samples → Samples~}/Map_Entry_Changer.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_Marker_Selectable_ETemplate.prefab +126 -126
- package/{Samples → Samples~}/Map_Marker_Selectable_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_Tab_UI_Handler_Shell.prefab +134 -134
- package/{Samples → Samples~}/Map_Tab_UI_Handler_Shell.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_Tab_UI_Handler_Template.prefab +404 -404
- package/{Samples → Samples~}/Map_Tab_UI_Handler_Template.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Canvas_Shell.prefab +842 -842
- package/{Samples → Samples~}/Map_UI_Canvas_Shell.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Canvas_Template.prefab +996 -996
- package/{Samples → Samples~}/Map_UI_Canvas_Template.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Controls_ETemplate.prefab +538 -538
- package/{Samples → Samples~}/Map_UI_Controls_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_GO_FT_ETemplate.prefab +78 -78
- package/{Samples → Samples~}/Map_UI_GO_FT_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Place_Place_Name_ETemplate.prefab +181 -181
- package/{Samples → Samples~}/Map_UI_Place_Place_Name_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Place_Tab_Shell.prefab +57 -57
- package/{Samples → Samples~}/Map_UI_Place_Tab_Shell.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Place_Tab_Template.prefab +806 -806
- package/{Samples → Samples~}/Map_UI_Place_Tab_Template.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Place_Tab_UI_ETemplate.prefab +1265 -1265
- package/{Samples → Samples~}/Map_UI_Place_Tab_UI_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Reticle_ETemplate.prefab +78 -78
- package/{Samples → Samples~}/Map_UI_Reticle_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Student_Tab_Shell.prefab +267 -267
- package/{Samples → Samples~}/Map_UI_Student_Tab_Shell.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Student_Tab_Template.prefab +544 -544
- package/{Samples → Samples~}/Map_UI_Student_Tab_Template.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Student_Tab_UI_Shell.prefab +90 -90
- package/{Samples → Samples~}/Map_UI_Student_Tab_UI_Shell.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Student_Tab_UI_Template.prefab +2031 -2031
- package/{Samples → Samples~}/Map_UI_Student_Tab_UI_Template.prefab.meta +7 -7
- package/{Samples → Samples~}/Map_UI_Title_ETemplate.prefab +672 -672
- package/{Samples → Samples~}/Map_UI_Title_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/Place_Template.prefab +200 -200
- package/{Samples → Samples~}/Place_Template.prefab.meta +7 -7
- package/package.json +45 -40
- package/package.json.meta +7 -7
- package/Samples.meta +0 -8
package/PlaceManager.cs
CHANGED
|
@@ -1,293 +1,293 @@
|
|
|
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.UI;
|
|
6
|
-
|
|
7
|
-
namespace DREditor.Maps
|
|
8
|
-
{
|
|
9
|
-
/// <summary>
|
|
10
|
-
///
|
|
11
|
-
/// </summary>
|
|
12
|
-
[ClassHeader("")]
|
|
13
|
-
public class PlaceManager : MonoBehaviour
|
|
14
|
-
{
|
|
15
|
-
/// <summary>
|
|
16
|
-
///
|
|
17
|
-
/// </summary>
|
|
18
|
-
[Header("")]
|
|
19
|
-
[Divider]
|
|
20
|
-
[Tooltip("")]
|
|
21
|
-
[SerializeField] protected PlaceEntry Entry;
|
|
22
|
-
|
|
23
|
-
/// <summary>
|
|
24
|
-
///
|
|
25
|
-
/// </summary>
|
|
26
|
-
[Tooltip("")]
|
|
27
|
-
[SerializeField] protected List<Image> markers = new();
|
|
28
|
-
|
|
29
|
-
/// <summary>
|
|
30
|
-
///
|
|
31
|
-
/// </summary>
|
|
32
|
-
[Tooltip("")]
|
|
33
|
-
[SerializeField] protected IPlaceMarker[] placeMarkers = null;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/// <summary>
|
|
37
|
-
///
|
|
38
|
-
/// </summary>
|
|
39
|
-
[Header("")]
|
|
40
|
-
[Divider]
|
|
41
|
-
[Tooltip("")]
|
|
42
|
-
public PlaceData Data;
|
|
43
|
-
|
|
44
|
-
/// <summary>
|
|
45
|
-
///
|
|
46
|
-
/// </summary>
|
|
47
|
-
[Tooltip("")]
|
|
48
|
-
[SerializeField] protected MarkerDatabase database = null;
|
|
49
|
-
|
|
50
|
-
/// <summary>
|
|
51
|
-
///
|
|
52
|
-
/// </summary>
|
|
53
|
-
[Tooltip("")]
|
|
54
|
-
[SerializeField] protected Image RoomImage = null;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
/// <summary>
|
|
58
|
-
///
|
|
59
|
-
/// </summary>
|
|
60
|
-
protected virtual void Awake() => InitializePlaceMarkers();
|
|
61
|
-
|
|
62
|
-
/// <summary>
|
|
63
|
-
///
|
|
64
|
-
/// </summary>
|
|
65
|
-
protected virtual void InitializePlaceMarkers()
|
|
66
|
-
{
|
|
67
|
-
placeMarkers = GetComponentsInChildren<MonoBehaviour>().OfType<IPlaceMarker>().ToArray();
|
|
68
|
-
|
|
69
|
-
foreach (var markers in placeMarkers)
|
|
70
|
-
markers.Initialize(Data);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/// <summary>
|
|
74
|
-
///
|
|
75
|
-
/// </summary>
|
|
76
|
-
/// <returns></returns>
|
|
77
|
-
public virtual PlaceEntry GetEntryInstance() => Entry;
|
|
78
|
-
|
|
79
|
-
/// <summary>
|
|
80
|
-
///
|
|
81
|
-
/// </summary>
|
|
82
|
-
/// <param name="visible"></param>
|
|
83
|
-
public virtual void SetPlaceVisibilityTo(bool visible)
|
|
84
|
-
{
|
|
85
|
-
if (RoomImage != null)
|
|
86
|
-
RoomImage.enabled = visible;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/// <summary>
|
|
90
|
-
///
|
|
91
|
-
/// </summary>
|
|
92
|
-
/// <returns></returns>
|
|
93
|
-
public virtual bool HasRoomImage() => RoomImage != null;
|
|
94
|
-
|
|
95
|
-
/// <summary>
|
|
96
|
-
///
|
|
97
|
-
/// </summary>
|
|
98
|
-
/// <param name="entry"></param>
|
|
99
|
-
public virtual void LoadPlace(PlaceEntry entry)
|
|
100
|
-
{
|
|
101
|
-
if (entry != Entry)
|
|
102
|
-
{
|
|
103
|
-
Entry = entry;
|
|
104
|
-
|
|
105
|
-
Load();
|
|
106
|
-
|
|
107
|
-
ClearMarkerList();
|
|
108
|
-
|
|
109
|
-
LoadMarkerData();
|
|
110
|
-
|
|
111
|
-
LoadHandlers();
|
|
112
|
-
}
|
|
113
|
-
else
|
|
114
|
-
UnityEngine.Debug.Log("Place Marker: " + Data.name + " has Identified no change in state.");
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/// <summary>
|
|
118
|
-
///
|
|
119
|
-
/// </summary>
|
|
120
|
-
protected virtual void LoadMarkerData()
|
|
121
|
-
{
|
|
122
|
-
ValidateEntry();
|
|
123
|
-
|
|
124
|
-
foreach (var markerVessel in Entry.MarkerVessels)
|
|
125
|
-
CreateMarker(markerVessel);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/// <summary>
|
|
129
|
-
///
|
|
130
|
-
/// </summary>
|
|
131
|
-
protected virtual void ValidateEntry()
|
|
132
|
-
{
|
|
133
|
-
if (Entry.MarkerDatas.Count > Entry.MarkerVessels.Count)
|
|
134
|
-
foreach (var markerData in Entry.MarkerDatas)
|
|
135
|
-
Entry.MarkerVessels.Add(database.GetVesselByData(markerData));
|
|
136
|
-
|
|
137
|
-
if (Entry.MarkerDatas.Count < Entry.MarkerVessels.Count)
|
|
138
|
-
foreach (var markerVessel in Entry.MarkerVessels)
|
|
139
|
-
if (markerVessel != null)
|
|
140
|
-
Entry.MarkerDatas.Add(markerVessel.markerData);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/// <summary>
|
|
144
|
-
///
|
|
145
|
-
/// </summary>
|
|
146
|
-
protected virtual void ClearMarkerList()
|
|
147
|
-
{
|
|
148
|
-
foreach (Image image in markers)
|
|
149
|
-
Destroy(image.gameObject);
|
|
150
|
-
|
|
151
|
-
markers.Clear();
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/// <summary>
|
|
155
|
-
///
|
|
156
|
-
/// </summary>
|
|
157
|
-
protected virtual void LoadHandlers()
|
|
158
|
-
{
|
|
159
|
-
foreach (IEntryLoader entryLoader in GetComponentsInChildren<MonoBehaviour>().OfType<IEntryLoader>())
|
|
160
|
-
entryLoader.LoadEntry(Entry, markers);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/// <summary>
|
|
164
|
-
///
|
|
165
|
-
/// </summary>
|
|
166
|
-
/// <param name="markerName"></param>
|
|
167
|
-
/// <returns></returns>
|
|
168
|
-
public virtual bool ContainsMarker(string markerName)
|
|
169
|
-
{
|
|
170
|
-
foreach (var marker in markers)
|
|
171
|
-
if (marker.name == markerName)
|
|
172
|
-
return true;
|
|
173
|
-
|
|
174
|
-
return false;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/// <summary>
|
|
178
|
-
///
|
|
179
|
-
/// </summary>
|
|
180
|
-
public virtual void Load()
|
|
181
|
-
{
|
|
182
|
-
if (Entry.MarkerDatas.Count == 0)
|
|
183
|
-
return;
|
|
184
|
-
|
|
185
|
-
Entry.MarkerVessels.Clear();
|
|
186
|
-
|
|
187
|
-
foreach (var marker in Entry.MarkerDatas)
|
|
188
|
-
Entry.MarkerVessels.Add(database.GetVesselByData(marker));
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/// <summary>
|
|
192
|
-
///
|
|
193
|
-
/// </summary>
|
|
194
|
-
/// <param name="markerVessel"></param>
|
|
195
|
-
public virtual void CreateMarker(MarkerVessel markerVessel)
|
|
196
|
-
{
|
|
197
|
-
if (markerVessel != null && markerVessel.sprite != null)
|
|
198
|
-
{
|
|
199
|
-
GameObject go = new();
|
|
200
|
-
|
|
201
|
-
Image image = go.AddComponent<Image>();
|
|
202
|
-
|
|
203
|
-
image.sprite = markerVessel.sprite;
|
|
204
|
-
|
|
205
|
-
if (markerVessel.markerData.sizeDelta == Vector2.zero)
|
|
206
|
-
image.SetNativeSize();
|
|
207
|
-
else
|
|
208
|
-
image.rectTransform.sizeDelta = markerVessel.markerData.sizeDelta;
|
|
209
|
-
|
|
210
|
-
go.transform.SetParent(gameObject.transform);
|
|
211
|
-
|
|
212
|
-
go.transform.localPosition = markerVessel.markerData.localPosition;
|
|
213
|
-
|
|
214
|
-
go.name = markerVessel.markerData.name;
|
|
215
|
-
|
|
216
|
-
markers.Add(image);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
/// <summary>
|
|
221
|
-
///
|
|
222
|
-
/// </summary>
|
|
223
|
-
/// <param name="sprite"></param>
|
|
224
|
-
public virtual void DestroyMarker(Sprite sprite)
|
|
225
|
-
{
|
|
226
|
-
if (GetMarkerImage(sprite) is Image image && image != null)
|
|
227
|
-
{
|
|
228
|
-
MarkerVessel marker = GetMarkerData(image.sprite);
|
|
229
|
-
|
|
230
|
-
Entry.MarkerVessels.Remove(marker);
|
|
231
|
-
|
|
232
|
-
markers.Remove(image);
|
|
233
|
-
|
|
234
|
-
Destroy(image.gameObject);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/// <summary>
|
|
239
|
-
///
|
|
240
|
-
/// </summary>
|
|
241
|
-
/// <param name="sprite"></param>
|
|
242
|
-
/// <returns></returns>
|
|
243
|
-
protected virtual Image GetMarkerImage(Sprite sprite)
|
|
244
|
-
{
|
|
245
|
-
foreach (var image in markers)
|
|
246
|
-
if (image.sprite == sprite)
|
|
247
|
-
return image;
|
|
248
|
-
|
|
249
|
-
return null;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/// <summary>
|
|
253
|
-
///
|
|
254
|
-
/// </summary>
|
|
255
|
-
/// <param name="sprite"></param>
|
|
256
|
-
/// <returns></returns>
|
|
257
|
-
protected virtual MarkerVessel GetMarkerData(Sprite sprite)
|
|
258
|
-
{
|
|
259
|
-
var markerVessels = Entry.MarkerVessels.Where(marker => marker.sprite == sprite).ToList();
|
|
260
|
-
|
|
261
|
-
if (markerVessels.Count > 0)
|
|
262
|
-
return markerVessels[0];
|
|
263
|
-
else
|
|
264
|
-
return null;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/// <summary>
|
|
268
|
-
///
|
|
269
|
-
/// </summary>
|
|
270
|
-
/// <param name="unlocks"></param>
|
|
271
|
-
/// <returns></returns>
|
|
272
|
-
public virtual bool IsUnlocked(List<string> unlocks) => !HasRoomImage() || HasRoomImage() && unlocks.Contains(Data.GetID());
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
/// <summary>
|
|
276
|
-
///
|
|
277
|
-
/// </summary>
|
|
278
|
-
public virtual void Select()
|
|
279
|
-
{
|
|
280
|
-
foreach (var place in placeMarkers)
|
|
281
|
-
place.Select();
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/// <summary>
|
|
285
|
-
///
|
|
286
|
-
/// </summary>
|
|
287
|
-
public virtual void Deselect()
|
|
288
|
-
{
|
|
289
|
-
foreach (var place in placeMarkers)
|
|
290
|
-
place.Deselect();
|
|
291
|
-
}
|
|
292
|
-
}
|
|
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.UI;
|
|
6
|
+
|
|
7
|
+
namespace DREditor.Maps
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
[ClassHeader("")]
|
|
13
|
+
public class PlaceManager : MonoBehaviour
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
[Header("")]
|
|
19
|
+
[Divider]
|
|
20
|
+
[Tooltip("")]
|
|
21
|
+
[SerializeField] protected PlaceEntry Entry;
|
|
22
|
+
|
|
23
|
+
/// <summary>
|
|
24
|
+
///
|
|
25
|
+
/// </summary>
|
|
26
|
+
[Tooltip("")]
|
|
27
|
+
[SerializeField] protected List<Image> markers = new();
|
|
28
|
+
|
|
29
|
+
/// <summary>
|
|
30
|
+
///
|
|
31
|
+
/// </summary>
|
|
32
|
+
[Tooltip("")]
|
|
33
|
+
[SerializeField] protected IPlaceMarker[] placeMarkers = null;
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/// <summary>
|
|
37
|
+
///
|
|
38
|
+
/// </summary>
|
|
39
|
+
[Header("")]
|
|
40
|
+
[Divider]
|
|
41
|
+
[Tooltip("")]
|
|
42
|
+
public PlaceData Data;
|
|
43
|
+
|
|
44
|
+
/// <summary>
|
|
45
|
+
///
|
|
46
|
+
/// </summary>
|
|
47
|
+
[Tooltip("")]
|
|
48
|
+
[SerializeField] protected MarkerDatabase database = null;
|
|
49
|
+
|
|
50
|
+
/// <summary>
|
|
51
|
+
///
|
|
52
|
+
/// </summary>
|
|
53
|
+
[Tooltip("")]
|
|
54
|
+
[SerializeField] protected Image RoomImage = null;
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
/// <summary>
|
|
58
|
+
///
|
|
59
|
+
/// </summary>
|
|
60
|
+
protected virtual void Awake() => InitializePlaceMarkers();
|
|
61
|
+
|
|
62
|
+
/// <summary>
|
|
63
|
+
///
|
|
64
|
+
/// </summary>
|
|
65
|
+
protected virtual void InitializePlaceMarkers()
|
|
66
|
+
{
|
|
67
|
+
placeMarkers = GetComponentsInChildren<MonoBehaviour>().OfType<IPlaceMarker>().ToArray();
|
|
68
|
+
|
|
69
|
+
foreach (var markers in placeMarkers)
|
|
70
|
+
markers.Initialize(Data);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/// <summary>
|
|
74
|
+
///
|
|
75
|
+
/// </summary>
|
|
76
|
+
/// <returns></returns>
|
|
77
|
+
public virtual PlaceEntry GetEntryInstance() => Entry;
|
|
78
|
+
|
|
79
|
+
/// <summary>
|
|
80
|
+
///
|
|
81
|
+
/// </summary>
|
|
82
|
+
/// <param name="visible"></param>
|
|
83
|
+
public virtual void SetPlaceVisibilityTo(bool visible)
|
|
84
|
+
{
|
|
85
|
+
if (RoomImage != null)
|
|
86
|
+
RoomImage.enabled = visible;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/// <summary>
|
|
90
|
+
///
|
|
91
|
+
/// </summary>
|
|
92
|
+
/// <returns></returns>
|
|
93
|
+
public virtual bool HasRoomImage() => RoomImage != null;
|
|
94
|
+
|
|
95
|
+
/// <summary>
|
|
96
|
+
///
|
|
97
|
+
/// </summary>
|
|
98
|
+
/// <param name="entry"></param>
|
|
99
|
+
public virtual void LoadPlace(PlaceEntry entry)
|
|
100
|
+
{
|
|
101
|
+
if (entry != Entry)
|
|
102
|
+
{
|
|
103
|
+
Entry = entry;
|
|
104
|
+
|
|
105
|
+
Load();
|
|
106
|
+
|
|
107
|
+
ClearMarkerList();
|
|
108
|
+
|
|
109
|
+
LoadMarkerData();
|
|
110
|
+
|
|
111
|
+
LoadHandlers();
|
|
112
|
+
}
|
|
113
|
+
else
|
|
114
|
+
UnityEngine.Debug.Log("Place Marker: " + Data.name + " has Identified no change in state.");
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/// <summary>
|
|
118
|
+
///
|
|
119
|
+
/// </summary>
|
|
120
|
+
protected virtual void LoadMarkerData()
|
|
121
|
+
{
|
|
122
|
+
ValidateEntry();
|
|
123
|
+
|
|
124
|
+
foreach (var markerVessel in Entry.MarkerVessels)
|
|
125
|
+
CreateMarker(markerVessel);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/// <summary>
|
|
129
|
+
///
|
|
130
|
+
/// </summary>
|
|
131
|
+
protected virtual void ValidateEntry()
|
|
132
|
+
{
|
|
133
|
+
if (Entry.MarkerDatas.Count > Entry.MarkerVessels.Count)
|
|
134
|
+
foreach (var markerData in Entry.MarkerDatas)
|
|
135
|
+
Entry.MarkerVessels.Add(database.GetVesselByData(markerData));
|
|
136
|
+
|
|
137
|
+
if (Entry.MarkerDatas.Count < Entry.MarkerVessels.Count)
|
|
138
|
+
foreach (var markerVessel in Entry.MarkerVessels)
|
|
139
|
+
if (markerVessel != null)
|
|
140
|
+
Entry.MarkerDatas.Add(markerVessel.markerData);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/// <summary>
|
|
144
|
+
///
|
|
145
|
+
/// </summary>
|
|
146
|
+
protected virtual void ClearMarkerList()
|
|
147
|
+
{
|
|
148
|
+
foreach (Image image in markers)
|
|
149
|
+
Destroy(image.gameObject);
|
|
150
|
+
|
|
151
|
+
markers.Clear();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/// <summary>
|
|
155
|
+
///
|
|
156
|
+
/// </summary>
|
|
157
|
+
protected virtual void LoadHandlers()
|
|
158
|
+
{
|
|
159
|
+
foreach (IEntryLoader entryLoader in GetComponentsInChildren<MonoBehaviour>().OfType<IEntryLoader>())
|
|
160
|
+
entryLoader.LoadEntry(Entry, markers);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/// <summary>
|
|
164
|
+
///
|
|
165
|
+
/// </summary>
|
|
166
|
+
/// <param name="markerName"></param>
|
|
167
|
+
/// <returns></returns>
|
|
168
|
+
public virtual bool ContainsMarker(string markerName)
|
|
169
|
+
{
|
|
170
|
+
foreach (var marker in markers)
|
|
171
|
+
if (marker.name == markerName)
|
|
172
|
+
return true;
|
|
173
|
+
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/// <summary>
|
|
178
|
+
///
|
|
179
|
+
/// </summary>
|
|
180
|
+
public virtual void Load()
|
|
181
|
+
{
|
|
182
|
+
if (Entry.MarkerDatas.Count == 0)
|
|
183
|
+
return;
|
|
184
|
+
|
|
185
|
+
Entry.MarkerVessels.Clear();
|
|
186
|
+
|
|
187
|
+
foreach (var marker in Entry.MarkerDatas)
|
|
188
|
+
Entry.MarkerVessels.Add(database.GetVesselByData(marker));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/// <summary>
|
|
192
|
+
///
|
|
193
|
+
/// </summary>
|
|
194
|
+
/// <param name="markerVessel"></param>
|
|
195
|
+
public virtual void CreateMarker(MarkerVessel markerVessel)
|
|
196
|
+
{
|
|
197
|
+
if (markerVessel != null && markerVessel.sprite != null)
|
|
198
|
+
{
|
|
199
|
+
GameObject go = new();
|
|
200
|
+
|
|
201
|
+
Image image = go.AddComponent<Image>();
|
|
202
|
+
|
|
203
|
+
image.sprite = markerVessel.sprite;
|
|
204
|
+
|
|
205
|
+
if (markerVessel.markerData.sizeDelta == Vector2.zero)
|
|
206
|
+
image.SetNativeSize();
|
|
207
|
+
else
|
|
208
|
+
image.rectTransform.sizeDelta = markerVessel.markerData.sizeDelta;
|
|
209
|
+
|
|
210
|
+
go.transform.SetParent(gameObject.transform);
|
|
211
|
+
|
|
212
|
+
go.transform.localPosition = markerVessel.markerData.localPosition;
|
|
213
|
+
|
|
214
|
+
go.name = markerVessel.markerData.name;
|
|
215
|
+
|
|
216
|
+
markers.Add(image);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/// <summary>
|
|
221
|
+
///
|
|
222
|
+
/// </summary>
|
|
223
|
+
/// <param name="sprite"></param>
|
|
224
|
+
public virtual void DestroyMarker(Sprite sprite)
|
|
225
|
+
{
|
|
226
|
+
if (GetMarkerImage(sprite) is Image image && image != null)
|
|
227
|
+
{
|
|
228
|
+
MarkerVessel marker = GetMarkerData(image.sprite);
|
|
229
|
+
|
|
230
|
+
Entry.MarkerVessels.Remove(marker);
|
|
231
|
+
|
|
232
|
+
markers.Remove(image);
|
|
233
|
+
|
|
234
|
+
Destroy(image.gameObject);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/// <summary>
|
|
239
|
+
///
|
|
240
|
+
/// </summary>
|
|
241
|
+
/// <param name="sprite"></param>
|
|
242
|
+
/// <returns></returns>
|
|
243
|
+
protected virtual Image GetMarkerImage(Sprite sprite)
|
|
244
|
+
{
|
|
245
|
+
foreach (var image in markers)
|
|
246
|
+
if (image.sprite == sprite)
|
|
247
|
+
return image;
|
|
248
|
+
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/// <summary>
|
|
253
|
+
///
|
|
254
|
+
/// </summary>
|
|
255
|
+
/// <param name="sprite"></param>
|
|
256
|
+
/// <returns></returns>
|
|
257
|
+
protected virtual MarkerVessel GetMarkerData(Sprite sprite)
|
|
258
|
+
{
|
|
259
|
+
var markerVessels = Entry.MarkerVessels.Where(marker => marker.sprite == sprite).ToList();
|
|
260
|
+
|
|
261
|
+
if (markerVessels.Count > 0)
|
|
262
|
+
return markerVessels[0];
|
|
263
|
+
else
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/// <summary>
|
|
268
|
+
///
|
|
269
|
+
/// </summary>
|
|
270
|
+
/// <param name="unlocks"></param>
|
|
271
|
+
/// <returns></returns>
|
|
272
|
+
public virtual bool IsUnlocked(List<string> unlocks) => !HasRoomImage() || HasRoomImage() && unlocks.Contains(Data.GetID());
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
/// <summary>
|
|
276
|
+
///
|
|
277
|
+
/// </summary>
|
|
278
|
+
public virtual void Select()
|
|
279
|
+
{
|
|
280
|
+
foreach (var place in placeMarkers)
|
|
281
|
+
place.Select();
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/// <summary>
|
|
285
|
+
///
|
|
286
|
+
/// </summary>
|
|
287
|
+
public virtual void Deselect()
|
|
288
|
+
{
|
|
289
|
+
foreach (var place in placeMarkers)
|
|
290
|
+
place.Deselect();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
293
|
}
|
package/PlaceManager.cs.meta
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 59946d010f88a17488526187a4483092
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 59946d010f88a17488526187a4483092
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|