net.dreditor.maps 0.0.0-stage → 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 +95 -0
- package/CharacterMapMarkerUI.cs.meta +11 -0
- package/CharacterMapUITab.cs +172 -0
- package/CharacterMapUITab.cs.meta +11 -0
- package/ClearMapAreaData.cs +23 -0
- package/ClearMapAreaData.cs.meta +11 -0
- package/ClearMapInstanceData.cs +36 -0
- package/ClearMapInstanceData.cs.meta +11 -0
- package/ControlFastTravel.cs +57 -0
- package/ControlFastTravel.cs.meta +11 -0
- package/DREditor.Maps.asmdef +24 -0
- package/DREditor.Maps.asmdef.meta +7 -0
- package/DiscoverData.cs +23 -0
- package/DiscoverData.cs.meta +11 -0
- package/DiscoverableBase.cs +24 -0
- package/DiscoverableBase.cs.meta +11 -0
- package/FastTravelController.cs +36 -0
- package/FastTravelController.cs.meta +11 -0
- package/FastTravelData.cs +25 -0
- package/FastTravelData.cs.meta +11 -0
- package/FastTravelMarker.cs +107 -0
- package/FastTravelMarker.cs.meta +13 -0
- package/IDHolder.cs +47 -0
- package/IDHolder.cs.meta +11 -0
- package/IEntryLoader.cs +19 -0
- package/IEntryLoader.cs.meta +11 -0
- package/IMapManager.cs +27 -0
- package/IMapManager.cs.meta +11 -0
- package/IPlaceMarker.cs +26 -0
- package/IPlaceMarker.cs.meta +11 -0
- package/IPlaceOptionHolder.cs +53 -0
- package/IPlaceOptionHolder.cs.meta +11 -0
- package/MapAreaData.cs +53 -0
- package/MapAreaData.cs.meta +11 -0
- package/MapAreaEntry.cs +55 -0
- package/MapAreaEntry.cs.meta +11 -0
- package/MapAreaManager.cs +194 -0
- package/MapAreaManager.cs.meta +11 -0
- package/MapBaseData.cs +66 -0
- package/MapBaseData.cs.meta +11 -0
- package/MapData.cs +35 -0
- package/MapData.cs.meta +11 -0
- package/MapDatabase.cs +133 -0
- package/MapDatabase.cs.meta +11 -0
- package/MapEntry.cs +77 -0
- package/MapEntry.cs.meta +11 -0
- package/MapEntryChange.cs +321 -0
- package/MapEntryChange.cs.meta +11 -0
- package/MapEntryChanger.cs +45 -0
- package/MapEntryChanger.cs.meta +11 -0
- package/MapHoverSelector.cs +161 -0
- package/MapHoverSelector.cs.meta +11 -0
- package/MapManager.cs +288 -0
- package/MapManager.cs.meta +11 -0
- package/MapManagerBase.cs +260 -0
- package/MapManagerBase.cs.meta +11 -0
- package/MapMarkerSelectable.cs +71 -0
- package/MapMarkerSelectable.cs.meta +11 -0
- package/MapObjectiveData.cs +28 -0
- package/MapObjectiveData.cs.meta +11 -0
- package/MapSaveManager.cs +63 -0
- package/MapSaveManager.cs.meta +11 -0
- package/MapTabUIHandler.cs +98 -0
- package/MapTabUIHandler.cs.meta +11 -0
- package/MapUITab.cs +26 -0
- package/MapUITab.cs.meta +11 -0
- package/MapUtility.cs +183 -0
- package/MapUtility.cs.meta +11 -0
- package/MarkerData.cs +25 -0
- package/MarkerData.cs.meta +11 -0
- package/MarkerDatabase.cs +57 -0
- package/MarkerDatabase.cs.meta +11 -0
- package/MarkerUtility.cs +48 -0
- package/MarkerUtility.cs.meta +11 -0
- package/MarkerVessel.cs +38 -0
- package/MarkerVessel.cs.meta +11 -0
- package/PlaceData.cs +27 -0
- package/PlaceData.cs.meta +11 -0
- package/PlaceEntry.cs +83 -0
- package/PlaceEntry.cs.meta +11 -0
- package/PlaceManager.cs +293 -0
- package/PlaceManager.cs.meta +11 -0
- package/PlaceMapUITab.cs +203 -0
- package/PlaceMapUITab.cs.meta +11 -0
- package/Samples~/Clear_Map_Area_Data_Event.prefab +52 -0
- package/Samples~/Clear_Map_Area_Data_Event.prefab.meta +7 -0
- package/Samples~/Clear_Map_Instance_Data.prefab +56 -0
- package/Samples~/Clear_Map_Instance_Data.prefab.meta +7 -0
- package/Samples~/DRE_Map_UI.unity +461 -0
- package/Samples~/DRE_Map_UI.unity.meta +7 -0
- package/Samples~/Map_Entry_Changer.prefab +52 -0
- package/Samples~/Map_Entry_Changer.prefab.meta +7 -0
- package/Samples~/Map_Marker_Selectable_ETemplate.prefab +126 -0
- package/Samples~/Map_Marker_Selectable_ETemplate.prefab.meta +7 -0
- package/Samples~/Map_Tab_UI_Handler_Shell.prefab +134 -0
- package/Samples~/Map_Tab_UI_Handler_Shell.prefab.meta +7 -0
- package/Samples~/Map_Tab_UI_Handler_Template.prefab +404 -0
- package/Samples~/Map_Tab_UI_Handler_Template.prefab.meta +7 -0
- package/Samples~/Map_UI_Canvas_Shell.prefab +842 -0
- package/Samples~/Map_UI_Canvas_Shell.prefab.meta +7 -0
- package/Samples~/Map_UI_Canvas_Template.prefab +996 -0
- package/Samples~/Map_UI_Canvas_Template.prefab.meta +7 -0
- package/Samples~/Map_UI_Controls_ETemplate.prefab +538 -0
- package/Samples~/Map_UI_Controls_ETemplate.prefab.meta +7 -0
- package/Samples~/Map_UI_GO_FT_ETemplate.prefab +78 -0
- package/Samples~/Map_UI_GO_FT_ETemplate.prefab.meta +7 -0
- package/Samples~/Map_UI_Place_Place_Name_ETemplate.prefab +181 -0
- package/Samples~/Map_UI_Place_Place_Name_ETemplate.prefab.meta +7 -0
- package/Samples~/Map_UI_Place_Tab_Shell.prefab +57 -0
- package/Samples~/Map_UI_Place_Tab_Shell.prefab.meta +7 -0
- package/Samples~/Map_UI_Place_Tab_Template.prefab +806 -0
- package/Samples~/Map_UI_Place_Tab_Template.prefab.meta +7 -0
- package/Samples~/Map_UI_Place_Tab_UI_ETemplate.prefab +1265 -0
- package/Samples~/Map_UI_Place_Tab_UI_ETemplate.prefab.meta +7 -0
- package/Samples~/Map_UI_Reticle_ETemplate.prefab +78 -0
- package/Samples~/Map_UI_Reticle_ETemplate.prefab.meta +7 -0
- package/Samples~/Map_UI_Student_Tab_Shell.prefab +267 -0
- package/Samples~/Map_UI_Student_Tab_Shell.prefab.meta +7 -0
- package/Samples~/Map_UI_Student_Tab_Template.prefab +544 -0
- package/Samples~/Map_UI_Student_Tab_Template.prefab.meta +7 -0
- package/Samples~/Map_UI_Student_Tab_UI_Shell.prefab +90 -0
- package/Samples~/Map_UI_Student_Tab_UI_Shell.prefab.meta +7 -0
- package/Samples~/Map_UI_Student_Tab_UI_Template.prefab +2031 -0
- package/Samples~/Map_UI_Student_Tab_UI_Template.prefab.meta +7 -0
- package/Samples~/Map_UI_Title_ETemplate.prefab +672 -0
- package/Samples~/Map_UI_Title_ETemplate.prefab.meta +7 -0
- package/Samples~/Place_Template.prefab +200 -0
- package/Samples~/Place_Template.prefab.meta +7 -0
- package/package.json +43 -4
- package/package.json.meta +7 -0
- package/README.md +0 -3
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
using UnityEngine.UI;
|
|
6
|
+
|
|
7
|
+
namespace DREditor.Maps
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
public class FastTravelMarker : MonoBehaviour, IPlaceMarker
|
|
13
|
+
{
|
|
14
|
+
/// <summary>
|
|
15
|
+
///
|
|
16
|
+
/// </summary>
|
|
17
|
+
[Tooltip("")]
|
|
18
|
+
[SerializeField] protected BoolWithEvent canFastTravel = null;
|
|
19
|
+
|
|
20
|
+
/// <summary>
|
|
21
|
+
///
|
|
22
|
+
/// </summary>
|
|
23
|
+
[Tooltip("")]
|
|
24
|
+
[SerializeField] protected Color selectColor;
|
|
25
|
+
|
|
26
|
+
/// <summary>
|
|
27
|
+
///
|
|
28
|
+
/// </summary>
|
|
29
|
+
[Tooltip("")]
|
|
30
|
+
[SerializeField] protected Color disableColor = Color.gray;
|
|
31
|
+
|
|
32
|
+
/// <summary>
|
|
33
|
+
///
|
|
34
|
+
/// </summary>
|
|
35
|
+
[Tooltip("")]
|
|
36
|
+
[SerializeField] protected Image markerImage = null;
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/// <summary>
|
|
40
|
+
///
|
|
41
|
+
/// </summary>
|
|
42
|
+
protected Color defaultColor;
|
|
43
|
+
|
|
44
|
+
/// <summary>
|
|
45
|
+
///
|
|
46
|
+
/// </summary>
|
|
47
|
+
protected PlaceEntry currentEntry;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
/// <summary>
|
|
51
|
+
///
|
|
52
|
+
/// </summary>
|
|
53
|
+
protected virtual void Awake() => InitializeColor();
|
|
54
|
+
|
|
55
|
+
/// <summary>
|
|
56
|
+
///
|
|
57
|
+
/// </summary>
|
|
58
|
+
protected virtual void InitializeColor()
|
|
59
|
+
{
|
|
60
|
+
if (markerImage == null)
|
|
61
|
+
enabled = false;
|
|
62
|
+
else
|
|
63
|
+
defaultColor = markerImage.color;
|
|
64
|
+
|
|
65
|
+
SetSelectionColor(defaultColor);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/// <summary>
|
|
69
|
+
///
|
|
70
|
+
/// </summary>
|
|
71
|
+
/// <param name="color"></param>
|
|
72
|
+
protected virtual void SetSelectionColor(Color color)
|
|
73
|
+
{
|
|
74
|
+
if (markerImage != null)
|
|
75
|
+
{
|
|
76
|
+
markerImage.color = currentEntry != null && currentEntry.enableFastTravelForThisEntryInstance ? color : disableColor;
|
|
77
|
+
|
|
78
|
+
markerImage.color = currentEntry == null ? color : markerImage.color;
|
|
79
|
+
|
|
80
|
+
markerImage.color = !canFastTravel.Value || defaultColor == disableColor ? disableColor : color;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
/// <inheritdoc/>
|
|
86
|
+
public virtual void Initialize(object data) => markerImage.enabled = ((PlaceData)data).fastTravelable;
|
|
87
|
+
|
|
88
|
+
/// <inheritdoc/>
|
|
89
|
+
public virtual void LoadEntry(object entry, List<Image> markers)
|
|
90
|
+
{
|
|
91
|
+
currentEntry = (PlaceEntry)entry;
|
|
92
|
+
|
|
93
|
+
if (!currentEntry.enableFastTravelForThisEntryInstance || !canFastTravel.Value)
|
|
94
|
+
{
|
|
95
|
+
markerImage.color = disableColor;
|
|
96
|
+
|
|
97
|
+
defaultColor = disableColor;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/// <inheritdoc/>
|
|
102
|
+
public virtual void Select() => SetSelectionColor(selectColor);
|
|
103
|
+
|
|
104
|
+
/// <inheritdoc/>
|
|
105
|
+
public virtual void Deselect() => SetSelectionColor(defaultColor);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: b9ceb70cf0d215841bb374724abbebaa
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences:
|
|
7
|
+
- canFastTravel: {fileID: 11400000, guid: 5cf7b97434c29b6419e91c225ac70c6d, type: 2}
|
|
8
|
+
- markerImage: {instanceID: 0}
|
|
9
|
+
executionOrder: 0
|
|
10
|
+
icon: {instanceID: 0}
|
|
11
|
+
userData:
|
|
12
|
+
assetBundleName:
|
|
13
|
+
assetBundleVariant:
|
package/IDHolder.cs
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
[Serializable]
|
|
10
|
+
public class IDHolder
|
|
11
|
+
{
|
|
12
|
+
/// <summary>
|
|
13
|
+
///
|
|
14
|
+
/// </summary>
|
|
15
|
+
public string value = "";
|
|
16
|
+
|
|
17
|
+
/// <summary>
|
|
18
|
+
///
|
|
19
|
+
/// </summary>
|
|
20
|
+
protected bool generating = false;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/// <summary>
|
|
24
|
+
///
|
|
25
|
+
/// </summary>
|
|
26
|
+
/// <param name="value"></param>
|
|
27
|
+
public virtual void SetID(string value) => this.value = value;
|
|
28
|
+
|
|
29
|
+
/// <summary>
|
|
30
|
+
///
|
|
31
|
+
/// </summary>
|
|
32
|
+
/// <returns></returns>
|
|
33
|
+
public virtual bool GenerateID()
|
|
34
|
+
{
|
|
35
|
+
if (generating || value != "")
|
|
36
|
+
return false;
|
|
37
|
+
|
|
38
|
+
generating = true;
|
|
39
|
+
|
|
40
|
+
value = System.Guid.NewGuid().ToString();
|
|
41
|
+
|
|
42
|
+
generating = false;
|
|
43
|
+
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
package/IDHolder.cs.meta
ADDED
package/IEntryLoader.cs
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using UnityEngine.UI;
|
|
4
|
+
|
|
5
|
+
namespace DREditor.Maps
|
|
6
|
+
{
|
|
7
|
+
/// <summary>
|
|
8
|
+
///
|
|
9
|
+
/// </summary>
|
|
10
|
+
public interface IEntryLoader
|
|
11
|
+
{
|
|
12
|
+
/// <summary>
|
|
13
|
+
///
|
|
14
|
+
/// </summary>
|
|
15
|
+
/// <param name="entry"></param>
|
|
16
|
+
/// <param name="markers"></param>
|
|
17
|
+
void LoadEntry(object entry, List<Image> markers);
|
|
18
|
+
}
|
|
19
|
+
}
|
package/IMapManager.cs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
namespace DREditor.Maps
|
|
3
|
+
{
|
|
4
|
+
/// <summary>
|
|
5
|
+
///
|
|
6
|
+
/// </summary>
|
|
7
|
+
public interface IMapManager
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
/// <returns></returns>
|
|
13
|
+
MapEntry GetInstanceData();
|
|
14
|
+
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
/// <param name="InstanceData"></param>
|
|
19
|
+
void SetInstanceData(MapEntry InstanceData);
|
|
20
|
+
|
|
21
|
+
/// <summary>
|
|
22
|
+
///
|
|
23
|
+
/// </summary>
|
|
24
|
+
/// <param name="areaName"></param>
|
|
25
|
+
void AddUnlockedArea(string areaName);
|
|
26
|
+
}
|
|
27
|
+
}
|
package/IPlaceMarker.cs
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
|
|
3
|
+
namespace DREditor.Maps
|
|
4
|
+
{
|
|
5
|
+
/// <summary>
|
|
6
|
+
///
|
|
7
|
+
/// </summary>
|
|
8
|
+
public interface IPlaceMarker : IEntryLoader
|
|
9
|
+
{
|
|
10
|
+
/// <summary>
|
|
11
|
+
///
|
|
12
|
+
/// </summary>
|
|
13
|
+
void Select();
|
|
14
|
+
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
void Deselect();
|
|
19
|
+
|
|
20
|
+
/// <summary>
|
|
21
|
+
///
|
|
22
|
+
/// </summary>
|
|
23
|
+
/// <param name="data"></param>
|
|
24
|
+
void Initialize(object data);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using UnityEngine;
|
|
4
|
+
|
|
5
|
+
namespace DREditor.Maps
|
|
6
|
+
{
|
|
7
|
+
/// <summary>
|
|
8
|
+
///
|
|
9
|
+
/// </summary>
|
|
10
|
+
public interface IPlaceOptionHolder
|
|
11
|
+
{
|
|
12
|
+
/// <summary>
|
|
13
|
+
///
|
|
14
|
+
/// </summary>
|
|
15
|
+
/// <param name="shiftNum"></param>
|
|
16
|
+
/// <param name="placeNames"></param>
|
|
17
|
+
void PopulatePlaceUIText(int shiftNum, List<string> placeNames);
|
|
18
|
+
|
|
19
|
+
/// <summary>
|
|
20
|
+
///
|
|
21
|
+
/// </summary>
|
|
22
|
+
/// <returns></returns>
|
|
23
|
+
PlaceManager GetCurrentlyHoveredPlace();
|
|
24
|
+
|
|
25
|
+
/// <summary>
|
|
26
|
+
///
|
|
27
|
+
/// </summary>
|
|
28
|
+
/// <returns></returns>
|
|
29
|
+
int GetMaxShiftIndex();
|
|
30
|
+
|
|
31
|
+
/// <summary>
|
|
32
|
+
///
|
|
33
|
+
/// </summary>
|
|
34
|
+
/// <returns></returns>
|
|
35
|
+
GameObject GetTopOption();
|
|
36
|
+
|
|
37
|
+
/// <summary>
|
|
38
|
+
///
|
|
39
|
+
/// </summary>
|
|
40
|
+
/// <returns></returns>
|
|
41
|
+
GameObject GetBottomOption();
|
|
42
|
+
|
|
43
|
+
/// <summary>
|
|
44
|
+
///
|
|
45
|
+
/// </summary>
|
|
46
|
+
void EnableSelectablesOnValidText();
|
|
47
|
+
|
|
48
|
+
/// <summary>
|
|
49
|
+
///
|
|
50
|
+
/// </summary>
|
|
51
|
+
void DisableSelectableOptions();
|
|
52
|
+
}
|
|
53
|
+
}
|
package/MapAreaData.cs
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using UnityEngine;
|
|
5
|
+
using UnityEngine.Serialization;
|
|
6
|
+
|
|
7
|
+
namespace DREditor.Maps
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
[Serializable]
|
|
13
|
+
public class MapAreaData : DiscoverableBase
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
public GameObject prefab = null;
|
|
19
|
+
|
|
20
|
+
/// <summary>
|
|
21
|
+
///
|
|
22
|
+
/// </summary>
|
|
23
|
+
[FormerlySerializedAs("placeList")]
|
|
24
|
+
public List<PlaceData> places = new();
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/// <summary>
|
|
28
|
+
///
|
|
29
|
+
/// </summary>
|
|
30
|
+
/// <param name="prefab"></param>
|
|
31
|
+
public virtual void SetPrefab(GameObject prefab) => this.prefab = prefab;
|
|
32
|
+
|
|
33
|
+
/// <summary>
|
|
34
|
+
///
|
|
35
|
+
/// </summary>
|
|
36
|
+
/// <param name="places"></param>
|
|
37
|
+
public virtual void SetPlaces(List<PlaceData> places) => this.places = places;
|
|
38
|
+
|
|
39
|
+
/// <summary>
|
|
40
|
+
///
|
|
41
|
+
/// </summary>
|
|
42
|
+
/// <returns></returns>
|
|
43
|
+
public virtual string[] GetPlaceNames()
|
|
44
|
+
{
|
|
45
|
+
string[] names = new string[places.Count];
|
|
46
|
+
|
|
47
|
+
for (int i = 0; i < places.Count; i++)
|
|
48
|
+
names[i] = places[i].name;
|
|
49
|
+
|
|
50
|
+
return names;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
package/MapAreaEntry.cs
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using UnityEngine;
|
|
5
|
+
|
|
6
|
+
namespace DREditor.Maps
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
///
|
|
10
|
+
/// </summary>
|
|
11
|
+
[Serializable]
|
|
12
|
+
public class MapAreaEntry
|
|
13
|
+
{
|
|
14
|
+
/// <summary>
|
|
15
|
+
///
|
|
16
|
+
/// </summary>
|
|
17
|
+
[Tooltip("")]
|
|
18
|
+
public MapBaseData Data;
|
|
19
|
+
|
|
20
|
+
/// <summary>
|
|
21
|
+
///
|
|
22
|
+
/// </summary>
|
|
23
|
+
[Tooltip("")]
|
|
24
|
+
public List<PlaceEntry> PlaceEntries = new();
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
public MapAreaEntry() { }
|
|
28
|
+
|
|
29
|
+
public MapAreaEntry(MapBaseData Data) => this.Data = Data;
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
/// <summary>
|
|
33
|
+
///
|
|
34
|
+
/// </summary>
|
|
35
|
+
public virtual void Save()
|
|
36
|
+
{
|
|
37
|
+
foreach(PlaceEntry entry in PlaceEntries)
|
|
38
|
+
entry.Save();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/// <summary>
|
|
42
|
+
///
|
|
43
|
+
/// </summary>
|
|
44
|
+
/// <param name="id"></param>
|
|
45
|
+
/// <returns></returns>
|
|
46
|
+
public virtual PlaceEntry ContainsPlace(string id)
|
|
47
|
+
{
|
|
48
|
+
for (int i = 0; i < PlaceEntries.Count; i++)
|
|
49
|
+
if (PlaceEntries[i].GetID() == id)
|
|
50
|
+
return PlaceEntries[i];
|
|
51
|
+
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Services;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using System.Linq;
|
|
5
|
+
using UnityEngine;
|
|
6
|
+
|
|
7
|
+
namespace DREditor.Maps
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
[ClassHeader(nameof(ServiceHolder<MapAreaManager>) + " for type: " + nameof(MapAreaManager) +
|
|
13
|
+
"\n\n")]
|
|
14
|
+
public class MapAreaManager : ServiceHolder<MapAreaManager>
|
|
15
|
+
{
|
|
16
|
+
/// <summary>
|
|
17
|
+
///
|
|
18
|
+
/// </summary>
|
|
19
|
+
[Space]
|
|
20
|
+
[Space]
|
|
21
|
+
[Header("")]
|
|
22
|
+
[Divider]
|
|
23
|
+
[Tooltip("")]
|
|
24
|
+
[SerializeField] protected MapAreaEntry Entry;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/// <summary>
|
|
28
|
+
///
|
|
29
|
+
/// </summary>
|
|
30
|
+
[Header("")]
|
|
31
|
+
[Divider]
|
|
32
|
+
[Tooltip("")]
|
|
33
|
+
public MapAreaData Data;
|
|
34
|
+
|
|
35
|
+
/// <summary>
|
|
36
|
+
///
|
|
37
|
+
/// </summary>
|
|
38
|
+
[Tooltip("")]
|
|
39
|
+
[SerializeField] protected List<PlaceManager> Places = new();
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/// <summary>
|
|
43
|
+
///
|
|
44
|
+
/// </summary>
|
|
45
|
+
/// <param name="entry"></param>
|
|
46
|
+
/// <param name="unlocks"></param>
|
|
47
|
+
public virtual void LoadEntry(MapAreaEntry entry, List<string> unlocks = null)
|
|
48
|
+
{
|
|
49
|
+
if (entry != null)
|
|
50
|
+
{
|
|
51
|
+
Entry = entry;
|
|
52
|
+
|
|
53
|
+
PopulatePlaces(Entry.PlaceEntries, unlocks);
|
|
54
|
+
}
|
|
55
|
+
else
|
|
56
|
+
UnityEngine.Debug.Log("No Entry Data For: " + Data.name);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/// <summary>
|
|
60
|
+
///
|
|
61
|
+
/// </summary>
|
|
62
|
+
/// <param name="placeEntries"></param>
|
|
63
|
+
/// <param name="unlocks"></param>
|
|
64
|
+
protected virtual void PopulatePlaces(List<PlaceEntry> placeEntries, List<string> unlocks = null)
|
|
65
|
+
{
|
|
66
|
+
for (int i = 0; i < placeEntries.Count; i++)
|
|
67
|
+
{
|
|
68
|
+
PlaceEntry entry = placeEntries[i];
|
|
69
|
+
|
|
70
|
+
var places = Places.Where(place =>
|
|
71
|
+
place.Data.name == entry.name ||
|
|
72
|
+
place.Data.GetID() == entry.GetID())
|
|
73
|
+
.ToList();
|
|
74
|
+
|
|
75
|
+
foreach (var place in places)
|
|
76
|
+
{
|
|
77
|
+
if (unlocks != null && unlocks.Contains(place.Data.GetID()))
|
|
78
|
+
place.SetPlaceVisibilityTo(true);
|
|
79
|
+
|
|
80
|
+
place.LoadPlace(entry);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/// <summary>
|
|
86
|
+
///
|
|
87
|
+
/// </summary>
|
|
88
|
+
/// <param name="place"></param>
|
|
89
|
+
public virtual void AddPlaceManager(PlaceManager place)
|
|
90
|
+
{
|
|
91
|
+
Data.places.Add(place.Data);
|
|
92
|
+
|
|
93
|
+
Places.Add(place);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/// <summary>
|
|
97
|
+
///
|
|
98
|
+
/// </summary>
|
|
99
|
+
/// <returns></returns>
|
|
100
|
+
public virtual List<PlaceData> GetPlaceDatas()
|
|
101
|
+
{
|
|
102
|
+
List<PlaceData> placeDatas = new();
|
|
103
|
+
|
|
104
|
+
foreach (var place in Places)
|
|
105
|
+
placeDatas.Add(place.Data);
|
|
106
|
+
|
|
107
|
+
return placeDatas;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/// <summary>
|
|
111
|
+
///
|
|
112
|
+
/// </summary>
|
|
113
|
+
/// <returns></returns>
|
|
114
|
+
public virtual List<PlaceManager> GetPlaceManagers() => Places;
|
|
115
|
+
|
|
116
|
+
/// <summary>
|
|
117
|
+
///
|
|
118
|
+
/// </summary>
|
|
119
|
+
/// <param name="name"></param>
|
|
120
|
+
/// <returns></returns>
|
|
121
|
+
public virtual PlaceManager GetPlaceFromName(string name)
|
|
122
|
+
{
|
|
123
|
+
if (Places.Where(place => place.Data.name == name).ToList() is List<PlaceManager> list && list.Count > 0)
|
|
124
|
+
return list[0];
|
|
125
|
+
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/// <summary>
|
|
130
|
+
///
|
|
131
|
+
/// </summary>
|
|
132
|
+
/// <param name="unlocks"></param>
|
|
133
|
+
/// <returns></returns>
|
|
134
|
+
public virtual List<string> GetNamesOfUnlockedPlaces(List<string> unlocks)
|
|
135
|
+
{
|
|
136
|
+
List<string> list = new();
|
|
137
|
+
|
|
138
|
+
for (int i = 0; i < Places.Count; i++)
|
|
139
|
+
if (Places[i].IsUnlocked(unlocks))
|
|
140
|
+
list.Add(Places[i].Data.name);
|
|
141
|
+
|
|
142
|
+
return list;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
#region Unused but available public functions
|
|
147
|
+
|
|
148
|
+
/// <summary>
|
|
149
|
+
///
|
|
150
|
+
/// </summary>
|
|
151
|
+
/// <returns></returns>
|
|
152
|
+
public virtual MapAreaEntry GetInstanceData()
|
|
153
|
+
{
|
|
154
|
+
MapAreaEntry areaEntry = new(Data);
|
|
155
|
+
|
|
156
|
+
for (int i = 0; i < Places.Count; i++)
|
|
157
|
+
areaEntry.PlaceEntries.Add(Places[i].GetEntryInstance());
|
|
158
|
+
|
|
159
|
+
return areaEntry;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/// <summary>
|
|
163
|
+
///
|
|
164
|
+
/// </summary>
|
|
165
|
+
/// <param name="placeName"></param>
|
|
166
|
+
/// <param name="data"></param>
|
|
167
|
+
public virtual void AddMarker(string placeName, MarkerVessel data)
|
|
168
|
+
{
|
|
169
|
+
var places = Places.Where(place => place.Data.name == placeName).ToList();
|
|
170
|
+
|
|
171
|
+
if (places.Count > 0)
|
|
172
|
+
places[0].CreateMarker(data);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/// <summary>
|
|
176
|
+
///
|
|
177
|
+
/// </summary>
|
|
178
|
+
/// <param name="marker"></param>
|
|
179
|
+
public virtual void RemoveMarker(MarkerVessel marker)
|
|
180
|
+
{
|
|
181
|
+
var places = Places.Where(place => place.GetEntryInstance().MarkerVessels.Contains(marker)).ToList();
|
|
182
|
+
|
|
183
|
+
foreach (var placeManager in places)
|
|
184
|
+
placeManager.DestroyMarker(marker.sprite);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/// <summary>
|
|
188
|
+
///
|
|
189
|
+
/// </summary>
|
|
190
|
+
public virtual void Load() => Places.ForEach(place => place.Load());
|
|
191
|
+
|
|
192
|
+
#endregion
|
|
193
|
+
}
|
|
194
|
+
}
|