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/MapEntryChanger.cs
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using DREditor.DialogueEventHandling;
|
|
3
|
-
using DREditor.Services;
|
|
4
|
-
|
|
5
|
-
namespace DREditor.Maps
|
|
6
|
-
{
|
|
7
|
-
/// <summary>
|
|
8
|
-
///
|
|
9
|
-
/// </summary>
|
|
10
|
-
[CustomDialogueEvent("")]
|
|
11
|
-
[ClassHeader(nameof(DialogueEventHandler) +
|
|
12
|
-
"\n\n")]
|
|
13
|
-
public class MapEntryChanger : DialogueEventHandler
|
|
14
|
-
{
|
|
15
|
-
/// <inheritdoc/>
|
|
16
|
-
protected override void OnDialogueEventTriggered(object o = null)
|
|
17
|
-
{
|
|
18
|
-
if (o is MapEntryChange change && change != null)
|
|
19
|
-
ChangeMapEntry(change);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/// <summary>
|
|
23
|
-
///
|
|
24
|
-
/// </summary>
|
|
25
|
-
/// <param name="change"></param>
|
|
26
|
-
protected virtual void ChangeMapEntry(MapEntryChange change)
|
|
27
|
-
{
|
|
28
|
-
if (change.unlockArea != "")
|
|
29
|
-
ServiceLocator.GetService<IMapManager>().AddUnlockedArea(change.unlockArea);
|
|
30
|
-
|
|
31
|
-
if (change.Entry.AreaEntries.Count == 0)
|
|
32
|
-
return;
|
|
33
|
-
|
|
34
|
-
change.Entry.SetUnlockedAreas(ServiceLocator.GetService<IMapManager>().GetInstanceData().UnlockedAreas);
|
|
35
|
-
|
|
36
|
-
ServiceLocator.GetService<IMapManager>().SetInstanceData(change.Entry);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/// <summary>
|
|
41
|
-
///
|
|
42
|
-
/// </summary>
|
|
43
|
-
protected virtual void Reset() => SetDefaultEventString("MapEntryChange");
|
|
44
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.DialogueEventHandling;
|
|
3
|
+
using DREditor.Services;
|
|
4
|
+
|
|
5
|
+
namespace DREditor.Maps
|
|
6
|
+
{
|
|
7
|
+
/// <summary>
|
|
8
|
+
///
|
|
9
|
+
/// </summary>
|
|
10
|
+
[CustomDialogueEvent("")]
|
|
11
|
+
[ClassHeader(nameof(DialogueEventHandler) +
|
|
12
|
+
"\n\n")]
|
|
13
|
+
public class MapEntryChanger : DialogueEventHandler
|
|
14
|
+
{
|
|
15
|
+
/// <inheritdoc/>
|
|
16
|
+
protected override void OnDialogueEventTriggered(object o = null)
|
|
17
|
+
{
|
|
18
|
+
if (o is MapEntryChange change && change != null)
|
|
19
|
+
ChangeMapEntry(change);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/// <summary>
|
|
23
|
+
///
|
|
24
|
+
/// </summary>
|
|
25
|
+
/// <param name="change"></param>
|
|
26
|
+
protected virtual void ChangeMapEntry(MapEntryChange change)
|
|
27
|
+
{
|
|
28
|
+
if (change.unlockArea != "")
|
|
29
|
+
ServiceLocator.GetService<IMapManager>().AddUnlockedArea(change.unlockArea);
|
|
30
|
+
|
|
31
|
+
if (change.Entry.AreaEntries.Count == 0)
|
|
32
|
+
return;
|
|
33
|
+
|
|
34
|
+
change.Entry.SetUnlockedAreas(ServiceLocator.GetService<IMapManager>().GetInstanceData().UnlockedAreas);
|
|
35
|
+
|
|
36
|
+
ServiceLocator.GetService<IMapManager>().SetInstanceData(change.Entry);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
/// <summary>
|
|
41
|
+
///
|
|
42
|
+
/// </summary>
|
|
43
|
+
protected virtual void Reset() => SetDefaultEventString("MapEntryChange");
|
|
44
|
+
}
|
|
45
45
|
}
|
package/MapEntryChanger.cs.meta
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 492b102bb8b863a4d98e80d4459bb610
|
|
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: 492b102bb8b863a4d98e80d4459bb610
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
package/MapHoverSelector.cs
CHANGED
|
@@ -1,161 +1,161 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
#if DOTWEEN
|
|
3
|
-
using DG.Tweening;
|
|
4
|
-
#endif
|
|
5
|
-
using DREditor.EventObjects;
|
|
6
|
-
using DREditor.Services;
|
|
7
|
-
using System.Collections;
|
|
8
|
-
using UnityEngine;
|
|
9
|
-
using UnityEngine.Events;
|
|
10
|
-
using UnityEngine.EventSystems;
|
|
11
|
-
using UnityEngine.UI;
|
|
12
|
-
|
|
13
|
-
namespace DREditor.Maps
|
|
14
|
-
{
|
|
15
|
-
/// <summary>
|
|
16
|
-
///
|
|
17
|
-
/// </summary>
|
|
18
|
-
[ClassHeader(nameof(ServiceHolder<MapHoverSelector>) + " for type: " + nameof(MapHoverSelector) +
|
|
19
|
-
"\n\n")]
|
|
20
|
-
public class MapHoverSelector : ServiceHolder<MapHoverSelector>
|
|
21
|
-
{
|
|
22
|
-
/// <summary>
|
|
23
|
-
///
|
|
24
|
-
/// </summary>
|
|
25
|
-
[Space]
|
|
26
|
-
[Divider]
|
|
27
|
-
[Tooltip("")]
|
|
28
|
-
[SerializeField] protected Image selectionImage = null;
|
|
29
|
-
|
|
30
|
-
/// <summary>
|
|
31
|
-
///
|
|
32
|
-
/// </summary>
|
|
33
|
-
[Tooltip("")]
|
|
34
|
-
[SerializeField] protected RectTransform reticleTransform = null;
|
|
35
|
-
|
|
36
|
-
/// <summary>
|
|
37
|
-
///
|
|
38
|
-
/// </summary>
|
|
39
|
-
[Tooltip("")]
|
|
40
|
-
[SerializeField] protected GameObject fastTravelUIObject = null;
|
|
41
|
-
|
|
42
|
-
/// <summary>
|
|
43
|
-
///
|
|
44
|
-
/// </summary>
|
|
45
|
-
[Tooltip("")]
|
|
46
|
-
[SerializeField] protected BoolWithEvent canFastTravel = null;
|
|
47
|
-
|
|
48
|
-
/// <summary>
|
|
49
|
-
///
|
|
50
|
-
/// </summary>
|
|
51
|
-
[Tooltip("")]
|
|
52
|
-
[SerializeField] protected float hoverDuration = 1;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
[Header("")]
|
|
56
|
-
[SerializeField] protected UnityEvent onHoverComplete = null;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
/// <summary>
|
|
60
|
-
///
|
|
61
|
-
/// </summary>
|
|
62
|
-
protected PlaceManager currentPlace = null;
|
|
63
|
-
|
|
64
|
-
/// <summary>
|
|
65
|
-
///
|
|
66
|
-
/// </summary>
|
|
67
|
-
/// <remarks></remarks>
|
|
68
|
-
protected Vector3 lastPosition = Vector3.zero;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
/// <summary>
|
|
72
|
-
///
|
|
73
|
-
/// </summary>
|
|
74
|
-
/// <param name="place"></param>
|
|
75
|
-
public virtual void AnimateToHoveredPlace(PlaceManager place) => StartCoroutine(WaitUntilMapLoadedToAnimate(place));
|
|
76
|
-
|
|
77
|
-
/// <summary>
|
|
78
|
-
///
|
|
79
|
-
/// </summary>
|
|
80
|
-
/// <param name="place"></param>
|
|
81
|
-
/// <returns></returns>
|
|
82
|
-
protected virtual IEnumerator WaitUntilMapLoadedToAnimate(PlaceManager place)
|
|
83
|
-
{
|
|
84
|
-
yield return new WaitUntil(() => ServiceLocator.HasService<MapAreaManager>()
|
|
85
|
-
&& ServiceLocator.GetService<MapAreaManager>() != null);
|
|
86
|
-
|
|
87
|
-
AnimateToPlace(place);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/// <summary>
|
|
91
|
-
///
|
|
92
|
-
/// </summary>
|
|
93
|
-
/// <param name="place"></param>
|
|
94
|
-
protected virtual void AnimateToPlace(PlaceManager place)
|
|
95
|
-
{
|
|
96
|
-
if (!ServiceLocator.HasService<MapAreaManager>() || place == null)
|
|
97
|
-
return;
|
|
98
|
-
|
|
99
|
-
GameObject areaGameObject = ServiceLocator.GetService<MapAreaManager>().gameObject;
|
|
100
|
-
|
|
101
|
-
if (selectionImage != null && EventSystem.current.currentSelectedGameObject != null)
|
|
102
|
-
selectionImage.transform.position = EventSystem.current.currentSelectedGameObject.transform.position;
|
|
103
|
-
|
|
104
|
-
Vector3 toPosition = reticleTransform.position + (areaGameObject.transform.position - place.transform.position);
|
|
105
|
-
|
|
106
|
-
if (currentPlace != null && lastPosition == toPosition)
|
|
107
|
-
{
|
|
108
|
-
lastPosition = areaGameObject.transform.position;
|
|
109
|
-
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
AnimateToObject(areaGameObject, toPosition, place);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/// <summary>
|
|
117
|
-
///
|
|
118
|
-
/// </summary>
|
|
119
|
-
/// <param name="areaGameObject"></param>
|
|
120
|
-
/// <param name="toPosition"></param>
|
|
121
|
-
/// <param name="place"></param>
|
|
122
|
-
protected virtual void AnimateToObject(GameObject areaGameObject, Vector3 toPosition, PlaceManager place)
|
|
123
|
-
{
|
|
124
|
-
#if DOTWEEN
|
|
125
|
-
areaGameObject.transform.DOKill();
|
|
126
|
-
|
|
127
|
-
areaGameObject.transform.DOMove(toPosition, hoverDuration)
|
|
128
|
-
.SetUpdate(true)
|
|
129
|
-
.OnComplete(InvokeHoverComplete);
|
|
130
|
-
#endif
|
|
131
|
-
if (currentPlace != null)
|
|
132
|
-
currentPlace.Deselect();
|
|
133
|
-
|
|
134
|
-
place.Select();
|
|
135
|
-
|
|
136
|
-
lastPosition = toPosition;
|
|
137
|
-
|
|
138
|
-
currentPlace = place;
|
|
139
|
-
|
|
140
|
-
fastTravelUIObject.SetActive(PlaceIsFastTravelable() && canFastTravel.Value);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/// <summary>
|
|
144
|
-
///
|
|
145
|
-
/// </summary>
|
|
146
|
-
protected virtual void InvokeHoverComplete() => onHoverComplete?.Invoke();
|
|
147
|
-
|
|
148
|
-
/// <summary>
|
|
149
|
-
///
|
|
150
|
-
/// </summary>
|
|
151
|
-
/// <returns></returns>
|
|
152
|
-
public virtual PlaceManager GetCurrentPlace() => currentPlace;
|
|
153
|
-
|
|
154
|
-
/// <summary>
|
|
155
|
-
///
|
|
156
|
-
/// </summary>
|
|
157
|
-
/// <returns></returns>
|
|
158
|
-
public virtual bool PlaceIsFastTravelable() => currentPlace != null && currentPlace.Data.fastTravelable &&
|
|
159
|
-
currentPlace.GetEntryInstance().enableFastTravelForThisEntryInstance;
|
|
160
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
#if DOTWEEN
|
|
3
|
+
using DG.Tweening;
|
|
4
|
+
#endif
|
|
5
|
+
using DREditor.EventObjects;
|
|
6
|
+
using DREditor.Services;
|
|
7
|
+
using System.Collections;
|
|
8
|
+
using UnityEngine;
|
|
9
|
+
using UnityEngine.Events;
|
|
10
|
+
using UnityEngine.EventSystems;
|
|
11
|
+
using UnityEngine.UI;
|
|
12
|
+
|
|
13
|
+
namespace DREditor.Maps
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
[ClassHeader(nameof(ServiceHolder<MapHoverSelector>) + " for type: " + nameof(MapHoverSelector) +
|
|
19
|
+
"\n\n")]
|
|
20
|
+
public class MapHoverSelector : ServiceHolder<MapHoverSelector>
|
|
21
|
+
{
|
|
22
|
+
/// <summary>
|
|
23
|
+
///
|
|
24
|
+
/// </summary>
|
|
25
|
+
[Space]
|
|
26
|
+
[Divider]
|
|
27
|
+
[Tooltip("")]
|
|
28
|
+
[SerializeField] protected Image selectionImage = null;
|
|
29
|
+
|
|
30
|
+
/// <summary>
|
|
31
|
+
///
|
|
32
|
+
/// </summary>
|
|
33
|
+
[Tooltip("")]
|
|
34
|
+
[SerializeField] protected RectTransform reticleTransform = null;
|
|
35
|
+
|
|
36
|
+
/// <summary>
|
|
37
|
+
///
|
|
38
|
+
/// </summary>
|
|
39
|
+
[Tooltip("")]
|
|
40
|
+
[SerializeField] protected GameObject fastTravelUIObject = null;
|
|
41
|
+
|
|
42
|
+
/// <summary>
|
|
43
|
+
///
|
|
44
|
+
/// </summary>
|
|
45
|
+
[Tooltip("")]
|
|
46
|
+
[SerializeField] protected BoolWithEvent canFastTravel = null;
|
|
47
|
+
|
|
48
|
+
/// <summary>
|
|
49
|
+
///
|
|
50
|
+
/// </summary>
|
|
51
|
+
[Tooltip("")]
|
|
52
|
+
[SerializeField] protected float hoverDuration = 1;
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
[Header("")]
|
|
56
|
+
[SerializeField] protected UnityEvent onHoverComplete = null;
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/// <summary>
|
|
60
|
+
///
|
|
61
|
+
/// </summary>
|
|
62
|
+
protected PlaceManager currentPlace = null;
|
|
63
|
+
|
|
64
|
+
/// <summary>
|
|
65
|
+
///
|
|
66
|
+
/// </summary>
|
|
67
|
+
/// <remarks></remarks>
|
|
68
|
+
protected Vector3 lastPosition = Vector3.zero;
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
/// <summary>
|
|
72
|
+
///
|
|
73
|
+
/// </summary>
|
|
74
|
+
/// <param name="place"></param>
|
|
75
|
+
public virtual void AnimateToHoveredPlace(PlaceManager place) => StartCoroutine(WaitUntilMapLoadedToAnimate(place));
|
|
76
|
+
|
|
77
|
+
/// <summary>
|
|
78
|
+
///
|
|
79
|
+
/// </summary>
|
|
80
|
+
/// <param name="place"></param>
|
|
81
|
+
/// <returns></returns>
|
|
82
|
+
protected virtual IEnumerator WaitUntilMapLoadedToAnimate(PlaceManager place)
|
|
83
|
+
{
|
|
84
|
+
yield return new WaitUntil(() => ServiceLocator.HasService<MapAreaManager>()
|
|
85
|
+
&& ServiceLocator.GetService<MapAreaManager>() != null);
|
|
86
|
+
|
|
87
|
+
AnimateToPlace(place);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/// <summary>
|
|
91
|
+
///
|
|
92
|
+
/// </summary>
|
|
93
|
+
/// <param name="place"></param>
|
|
94
|
+
protected virtual void AnimateToPlace(PlaceManager place)
|
|
95
|
+
{
|
|
96
|
+
if (!ServiceLocator.HasService<MapAreaManager>() || place == null)
|
|
97
|
+
return;
|
|
98
|
+
|
|
99
|
+
GameObject areaGameObject = ServiceLocator.GetService<MapAreaManager>().gameObject;
|
|
100
|
+
|
|
101
|
+
if (selectionImage != null && EventSystem.current.currentSelectedGameObject != null)
|
|
102
|
+
selectionImage.transform.position = EventSystem.current.currentSelectedGameObject.transform.position;
|
|
103
|
+
|
|
104
|
+
Vector3 toPosition = reticleTransform.position + (areaGameObject.transform.position - place.transform.position);
|
|
105
|
+
|
|
106
|
+
if (currentPlace != null && lastPosition == toPosition)
|
|
107
|
+
{
|
|
108
|
+
lastPosition = areaGameObject.transform.position;
|
|
109
|
+
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
AnimateToObject(areaGameObject, toPosition, place);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/// <summary>
|
|
117
|
+
///
|
|
118
|
+
/// </summary>
|
|
119
|
+
/// <param name="areaGameObject"></param>
|
|
120
|
+
/// <param name="toPosition"></param>
|
|
121
|
+
/// <param name="place"></param>
|
|
122
|
+
protected virtual void AnimateToObject(GameObject areaGameObject, Vector3 toPosition, PlaceManager place)
|
|
123
|
+
{
|
|
124
|
+
#if DOTWEEN
|
|
125
|
+
areaGameObject.transform.DOKill();
|
|
126
|
+
|
|
127
|
+
areaGameObject.transform.DOMove(toPosition, hoverDuration)
|
|
128
|
+
.SetUpdate(true)
|
|
129
|
+
.OnComplete(InvokeHoverComplete);
|
|
130
|
+
#endif
|
|
131
|
+
if (currentPlace != null)
|
|
132
|
+
currentPlace.Deselect();
|
|
133
|
+
|
|
134
|
+
place.Select();
|
|
135
|
+
|
|
136
|
+
lastPosition = toPosition;
|
|
137
|
+
|
|
138
|
+
currentPlace = place;
|
|
139
|
+
|
|
140
|
+
fastTravelUIObject.SetActive(PlaceIsFastTravelable() && canFastTravel.Value);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/// <summary>
|
|
144
|
+
///
|
|
145
|
+
/// </summary>
|
|
146
|
+
protected virtual void InvokeHoverComplete() => onHoverComplete?.Invoke();
|
|
147
|
+
|
|
148
|
+
/// <summary>
|
|
149
|
+
///
|
|
150
|
+
/// </summary>
|
|
151
|
+
/// <returns></returns>
|
|
152
|
+
public virtual PlaceManager GetCurrentPlace() => currentPlace;
|
|
153
|
+
|
|
154
|
+
/// <summary>
|
|
155
|
+
///
|
|
156
|
+
/// </summary>
|
|
157
|
+
/// <returns></returns>
|
|
158
|
+
public virtual bool PlaceIsFastTravelable() => currentPlace != null && currentPlace.Data.fastTravelable &&
|
|
159
|
+
currentPlace.GetEntryInstance().enableFastTravelForThisEntryInstance;
|
|
160
|
+
}
|
|
161
161
|
}
|
package/MapHoverSelector.cs.meta
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 7405e10bbc2332f4a96b22fe345d756c
|
|
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: 7405e10bbc2332f4a96b22fe345d756c
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|