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
package/MapBaseData.cs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System;
|
|
3
|
+
using UnityEngine;
|
|
4
|
+
|
|
5
|
+
namespace DREditor.Maps
|
|
6
|
+
{
|
|
7
|
+
/// <summary>
|
|
8
|
+
///
|
|
9
|
+
/// </summary>
|
|
10
|
+
[Serializable]
|
|
11
|
+
public class MapBaseData
|
|
12
|
+
{
|
|
13
|
+
/// <summary>
|
|
14
|
+
///
|
|
15
|
+
/// </summary>
|
|
16
|
+
[Tooltip("")]
|
|
17
|
+
public string name;
|
|
18
|
+
|
|
19
|
+
/// <summary>
|
|
20
|
+
///
|
|
21
|
+
/// </summary>
|
|
22
|
+
[Tooltip("")]
|
|
23
|
+
[SerializeField] protected IDHolder Id = new();
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/// <summary>
|
|
27
|
+
///
|
|
28
|
+
/// </summary>
|
|
29
|
+
/// <param name="data"></param>
|
|
30
|
+
public virtual void SetData(MapBaseData data)
|
|
31
|
+
{
|
|
32
|
+
name = data.name;
|
|
33
|
+
|
|
34
|
+
Id.SetID(data.GetID());
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/// <summary>
|
|
38
|
+
///
|
|
39
|
+
/// </summary>
|
|
40
|
+
/// <returns></returns>
|
|
41
|
+
public virtual string GetID() => Id.value;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/// <summary>
|
|
45
|
+
///
|
|
46
|
+
/// </summary>
|
|
47
|
+
/// <param name="name"></param>
|
|
48
|
+
public virtual void SetName(string name) => this.name = name;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
#if UNITY_EDITOR
|
|
52
|
+
|
|
53
|
+
/// <summary>
|
|
54
|
+
///
|
|
55
|
+
/// </summary>
|
|
56
|
+
public virtual void GenerateID()
|
|
57
|
+
{
|
|
58
|
+
if (Id.GenerateID())
|
|
59
|
+
UnityEngine.Debug.Log($"GenerateID Called For {name} and ID is: {Id.value}");
|
|
60
|
+
else
|
|
61
|
+
UnityEngine.Debug.LogWarning($"Map Base Data ID for: {name} has already been Generated! ID: {Id.value} ");
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#endif
|
|
65
|
+
}
|
|
66
|
+
}
|
package/MapData.cs
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System;
|
|
3
|
+
using UnityEngine;
|
|
4
|
+
|
|
5
|
+
namespace DREditor.Maps
|
|
6
|
+
{
|
|
7
|
+
/// <summary>
|
|
8
|
+
///
|
|
9
|
+
/// </summary>
|
|
10
|
+
[Serializable]
|
|
11
|
+
public class MapData
|
|
12
|
+
{
|
|
13
|
+
/// <summary>
|
|
14
|
+
///
|
|
15
|
+
/// </summary>
|
|
16
|
+
[Tooltip("")]
|
|
17
|
+
public MapEntry Entry;
|
|
18
|
+
|
|
19
|
+
/// <summary>
|
|
20
|
+
///
|
|
21
|
+
/// </summary>
|
|
22
|
+
[Tooltip("")]
|
|
23
|
+
public bool allowFastTravel = false;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
public MapData() { }
|
|
27
|
+
|
|
28
|
+
public MapData(MapEntry Entry, bool allowFastTravel)
|
|
29
|
+
{
|
|
30
|
+
this.Entry = Entry;
|
|
31
|
+
|
|
32
|
+
this.allowFastTravel = allowFastTravel;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
package/MapData.cs.meta
ADDED
package/MapDatabase.cs
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using UnityEngine;
|
|
4
|
+
using UnityEngine.Serialization;
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* TO-DO: CREATE EDITOR MENU ITEM THAT TAKES EACH FLOOR DATA AND GAMEOBJECT AND DO THE IMPORT DATA
|
|
8
|
+
* TO REFRESH STUFF DONE TO PREFABS LETS GOOO
|
|
9
|
+
*
|
|
10
|
+
* Problem : If anything in the map data changes , entries containing map data would not be changed
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
//All of these classes in this script might need to be a scriptable object or at least have a better structure to be more dynamic.
|
|
15
|
+
//MapObjectiveData
|
|
16
|
+
//DiscoverableData
|
|
17
|
+
//MapAreaData
|
|
18
|
+
//PlaceData
|
|
19
|
+
|
|
20
|
+
namespace DREditor.Maps
|
|
21
|
+
{
|
|
22
|
+
/// <summary>
|
|
23
|
+
///
|
|
24
|
+
/// </summary>
|
|
25
|
+
/// <remarks></remarks>
|
|
26
|
+
[System.Serializable]
|
|
27
|
+
[CreateAssetMenu(menuName = "DREditor/Map/Map Database", fileName = "Map_Database")]
|
|
28
|
+
public class MapDatabase : ScriptableObject
|
|
29
|
+
{
|
|
30
|
+
/// <summary>
|
|
31
|
+
///
|
|
32
|
+
/// </summary>
|
|
33
|
+
[Header("")]
|
|
34
|
+
[Divider]
|
|
35
|
+
[Tooltip("")]
|
|
36
|
+
[FormerlySerializedAs("floorList")]
|
|
37
|
+
public List<MapAreaData> floors = new();
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
/// <summary>
|
|
41
|
+
///
|
|
42
|
+
/// </summary>
|
|
43
|
+
/// <param name="name"></param>
|
|
44
|
+
/// <returns></returns>
|
|
45
|
+
public virtual MapAreaData GetArea(string name)
|
|
46
|
+
{
|
|
47
|
+
foreach (MapAreaData area in floors)
|
|
48
|
+
if (area.name == name)
|
|
49
|
+
return area;
|
|
50
|
+
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/// <summary>
|
|
55
|
+
///
|
|
56
|
+
/// </summary>
|
|
57
|
+
/// <param name="unlocks"></param>
|
|
58
|
+
/// <returns></returns>
|
|
59
|
+
public virtual List<MapAreaData> ValidFloorList(List<string> unlocks)
|
|
60
|
+
{
|
|
61
|
+
List<MapAreaData> list = new();
|
|
62
|
+
|
|
63
|
+
foreach (var floor in floors)
|
|
64
|
+
if (!floor.Discoverable.isValid ||
|
|
65
|
+
floor.Discoverable.isValid &&
|
|
66
|
+
(unlocks.Contains(floor.GetID()) || unlocks.Contains(floor.name)))
|
|
67
|
+
list.Add(floor);
|
|
68
|
+
|
|
69
|
+
return list;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/// <summary>
|
|
73
|
+
///
|
|
74
|
+
/// </summary>
|
|
75
|
+
/// <param name="name"></param>
|
|
76
|
+
/// <param name="ID"></param>
|
|
77
|
+
/// <returns></returns>
|
|
78
|
+
public virtual PlaceData GetPlace(string name, string ID = "")
|
|
79
|
+
{
|
|
80
|
+
foreach (MapAreaData area in floors)
|
|
81
|
+
foreach (var place in area.places)
|
|
82
|
+
if (place.name == name || place.GetID() == ID)
|
|
83
|
+
return place;
|
|
84
|
+
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/// <summary>
|
|
89
|
+
///
|
|
90
|
+
/// </summary>
|
|
91
|
+
/// <returns></returns>
|
|
92
|
+
public virtual string[] GetAreaNames()
|
|
93
|
+
{
|
|
94
|
+
string[] names = new string[floors.Count];
|
|
95
|
+
|
|
96
|
+
for (int i = 0; i < floors.Count; i++)
|
|
97
|
+
names[i] = floors[i].name;
|
|
98
|
+
|
|
99
|
+
return names;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/// <summary>
|
|
103
|
+
///
|
|
104
|
+
/// </summary>
|
|
105
|
+
/// <returns></returns>
|
|
106
|
+
public virtual List<PlaceData> GetFastTravelablePlaces()
|
|
107
|
+
{
|
|
108
|
+
List<PlaceData> fastTravelablePlaces = new();
|
|
109
|
+
|
|
110
|
+
foreach (var area in floors)
|
|
111
|
+
foreach (var place in area.places)
|
|
112
|
+
if (place.fastTravelable)
|
|
113
|
+
fastTravelablePlaces.Add(place);
|
|
114
|
+
|
|
115
|
+
return fastTravelablePlaces;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/// <summary>
|
|
119
|
+
///
|
|
120
|
+
/// </summary>
|
|
121
|
+
/// <param name="placeData"></param>
|
|
122
|
+
/// <returns></returns>
|
|
123
|
+
public virtual MapAreaData GetAreaDataFromPlace(PlaceData placeData)
|
|
124
|
+
{
|
|
125
|
+
foreach (var area in floors)
|
|
126
|
+
foreach (var place in area.places)
|
|
127
|
+
if (place == placeData)
|
|
128
|
+
return area;
|
|
129
|
+
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
package/MapEntry.cs
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using System.Linq;
|
|
5
|
+
using UnityEngine;
|
|
6
|
+
|
|
7
|
+
namespace DREditor.Maps
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
[Serializable]
|
|
13
|
+
public class MapEntry
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
[Tooltip("")]
|
|
19
|
+
public MapObjectiveData IdentifierData;
|
|
20
|
+
|
|
21
|
+
/// <summary>
|
|
22
|
+
///
|
|
23
|
+
/// </summary>
|
|
24
|
+
[Tooltip("")]
|
|
25
|
+
public List<string> UnlockedAreas = new();
|
|
26
|
+
|
|
27
|
+
/// <summary>
|
|
28
|
+
///
|
|
29
|
+
/// </summary>
|
|
30
|
+
[Tooltip("")]
|
|
31
|
+
public List<MapAreaEntry> AreaEntries = new();
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/// <summary>
|
|
35
|
+
///
|
|
36
|
+
/// </summary>
|
|
37
|
+
/// <param name="UnlockedAreas"></param>
|
|
38
|
+
public virtual void SetUnlockedAreas(List<string> UnlockedAreas) => this.UnlockedAreas = UnlockedAreas;
|
|
39
|
+
|
|
40
|
+
/// <summary>
|
|
41
|
+
///
|
|
42
|
+
/// </summary>
|
|
43
|
+
/// <param name="name"></param>
|
|
44
|
+
/// <returns></returns>
|
|
45
|
+
public virtual MapAreaEntry GetAreaEntry(string name)
|
|
46
|
+
{
|
|
47
|
+
if (AreaEntries.Where(e => e.Data.name == name).ToList() is List<MapAreaEntry> list &&
|
|
48
|
+
list.Count > 0)
|
|
49
|
+
return list[0];
|
|
50
|
+
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/// <summary>
|
|
55
|
+
///
|
|
56
|
+
/// </summary>
|
|
57
|
+
public virtual void Save()
|
|
58
|
+
{
|
|
59
|
+
foreach(var areaEntry in AreaEntries)
|
|
60
|
+
areaEntry.Save();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/// <summary>
|
|
64
|
+
///
|
|
65
|
+
/// </summary>
|
|
66
|
+
/// <param name="areaData"></param>
|
|
67
|
+
/// <returns></returns>
|
|
68
|
+
public virtual MapAreaEntry Contains(MapAreaData areaData)
|
|
69
|
+
{
|
|
70
|
+
for (int i = 0; i < AreaEntries.Count; i++)
|
|
71
|
+
if (AreaEntries[i].Data == areaData)
|
|
72
|
+
return AreaEntries[i];
|
|
73
|
+
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
package/MapEntry.cs.meta
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
// Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Dialogues.Events;
|
|
3
|
+
using UnityEngine;
|
|
4
|
+
using System;
|
|
5
|
+
|
|
6
|
+
#if UNITY_EDITOR
|
|
7
|
+
using UnityEditor;
|
|
8
|
+
using DREditor.Utility;
|
|
9
|
+
using DREditor.Editor.Utility;
|
|
10
|
+
#endif
|
|
11
|
+
|
|
12
|
+
namespace DREditor.Maps
|
|
13
|
+
{
|
|
14
|
+
/// <summary>
|
|
15
|
+
///
|
|
16
|
+
/// </summary>
|
|
17
|
+
/// <remarks></remarks>
|
|
18
|
+
[Serializable]
|
|
19
|
+
public class MapEntryChange : IDataCapsulate
|
|
20
|
+
{
|
|
21
|
+
/// <summary>
|
|
22
|
+
///
|
|
23
|
+
/// </summary>
|
|
24
|
+
public MapEntry Entry = new();
|
|
25
|
+
|
|
26
|
+
/// <summary>
|
|
27
|
+
///
|
|
28
|
+
/// </summary>
|
|
29
|
+
public string unlockArea = "";
|
|
30
|
+
|
|
31
|
+
#if UNITY_EDITOR
|
|
32
|
+
/// <summary>
|
|
33
|
+
///
|
|
34
|
+
/// </summary>
|
|
35
|
+
protected MarkerDatabase markerDB = null;
|
|
36
|
+
|
|
37
|
+
/// <summary>
|
|
38
|
+
///
|
|
39
|
+
/// </summary>
|
|
40
|
+
protected MapDatabase mapDB = null;
|
|
41
|
+
|
|
42
|
+
/// <summary>
|
|
43
|
+
///
|
|
44
|
+
/// </summary>
|
|
45
|
+
protected int areaNum = 0;
|
|
46
|
+
|
|
47
|
+
/// <summary>
|
|
48
|
+
///
|
|
49
|
+
/// </summary>
|
|
50
|
+
protected int placeNum = 0;
|
|
51
|
+
|
|
52
|
+
/// <summary>
|
|
53
|
+
///
|
|
54
|
+
/// </summary>
|
|
55
|
+
protected int markerNum = 0;
|
|
56
|
+
|
|
57
|
+
/// <summary>
|
|
58
|
+
///
|
|
59
|
+
/// </summary>
|
|
60
|
+
protected PlaceData placeData = null;
|
|
61
|
+
|
|
62
|
+
/// <summary>
|
|
63
|
+
///
|
|
64
|
+
/// </summary>
|
|
65
|
+
protected MarkerVessel selectedVessel = null;
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
/// <inheritdoc/>
|
|
69
|
+
public virtual void Display(object o)
|
|
70
|
+
{
|
|
71
|
+
#if UNITY_EDITOR
|
|
72
|
+
InitializeDatabases();
|
|
73
|
+
|
|
74
|
+
if (FailedToInitializeDatabases())
|
|
75
|
+
return;
|
|
76
|
+
|
|
77
|
+
if (GUILayout.Button("Add Fast Travel Places", GUILayout.Width(150)))
|
|
78
|
+
foreach (var place in mapDB.GetFastTravelablePlaces())
|
|
79
|
+
CreateAreaEntry(mapDB.GetAreaDataFromPlace(place), place);
|
|
80
|
+
|
|
81
|
+
GUILayout.Space(10);
|
|
82
|
+
|
|
83
|
+
unlockArea = HandyFields.StringField("Unlock Area: ", unlockArea);
|
|
84
|
+
|
|
85
|
+
GUILayout.Space(10);
|
|
86
|
+
|
|
87
|
+
DisplayAreasSection();
|
|
88
|
+
|
|
89
|
+
GUILayout.Space(10);
|
|
90
|
+
|
|
91
|
+
DisplayCreateEntrySection();
|
|
92
|
+
#endif
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
#if UNITY_EDITOR
|
|
96
|
+
|
|
97
|
+
/// <summary>
|
|
98
|
+
///
|
|
99
|
+
/// </summary>
|
|
100
|
+
protected virtual void InitializeDatabases()
|
|
101
|
+
{
|
|
102
|
+
if (markerDB == null)
|
|
103
|
+
markerDB = DatabaseUtility.LoadDatabase<MarkerDatabase>();
|
|
104
|
+
|
|
105
|
+
if (mapDB == null)
|
|
106
|
+
mapDB = DatabaseUtility.LoadDatabase<MapDatabase>();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/// <summary>
|
|
110
|
+
///
|
|
111
|
+
/// </summary>
|
|
112
|
+
/// <returns></returns>
|
|
113
|
+
protected virtual bool FailedToInitializeDatabases()
|
|
114
|
+
{
|
|
115
|
+
if (markerDB == null || mapDB == null)
|
|
116
|
+
EditorGUILayout.LabelField("Could not find databases of type " + nameof(MarkerDatabase) +
|
|
117
|
+
" or of type " + nameof(MapDatabase) + ". \nPlease ensure that both of these databases exist in your project.");
|
|
118
|
+
|
|
119
|
+
return markerDB == null || mapDB == null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/// <summary>
|
|
123
|
+
///
|
|
124
|
+
/// </summary>
|
|
125
|
+
protected virtual void DisplayAreasSection()
|
|
126
|
+
{
|
|
127
|
+
using (new GUILayout.VerticalScope(GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth)))
|
|
128
|
+
for (int i = 0; i < Entry.AreaEntries.Count; i++)
|
|
129
|
+
DisplayArea(Entry.AreaEntries[i]);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/// <summary>
|
|
133
|
+
///
|
|
134
|
+
/// </summary>
|
|
135
|
+
/// <param name="area"></param>
|
|
136
|
+
protected virtual void DisplayArea(MapAreaEntry area)
|
|
137
|
+
{
|
|
138
|
+
EditorGUILayout.LabelField(area.Data.name);
|
|
139
|
+
|
|
140
|
+
using (new GUILayout.VerticalScope())
|
|
141
|
+
DisplayPlacesSection(area);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/// <summary>
|
|
145
|
+
///
|
|
146
|
+
/// </summary>
|
|
147
|
+
/// <param name="area"></param>
|
|
148
|
+
protected virtual void DisplayPlacesSection(MapAreaEntry area)
|
|
149
|
+
{
|
|
150
|
+
for (int i = 0; i < area.PlaceEntries.Count; i++)
|
|
151
|
+
{
|
|
152
|
+
GUILayout.Space(10);
|
|
153
|
+
|
|
154
|
+
PlaceEntry place = area.PlaceEntries[i];
|
|
155
|
+
|
|
156
|
+
using (new GUILayout.HorizontalScope())
|
|
157
|
+
DisplayPlace(place);
|
|
158
|
+
|
|
159
|
+
using (new GUILayout.VerticalScope())
|
|
160
|
+
DisplayMarkersSection(area, place);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/// <summary>
|
|
165
|
+
///
|
|
166
|
+
/// </summary>
|
|
167
|
+
/// <param name="place"></param>
|
|
168
|
+
protected virtual void DisplayPlace(PlaceEntry place)
|
|
169
|
+
{
|
|
170
|
+
GUILayout.Space(20);
|
|
171
|
+
|
|
172
|
+
EditorGUILayout.LabelField(place.name, GUILayout.MaxWidth(100));
|
|
173
|
+
|
|
174
|
+
if (mapDB.GetPlace(place.name, place.GetID()).fastTravelable)
|
|
175
|
+
place.SetFastTravel(HandyFields.BoolField(place.enableFastTravelForThisEntryInstance, "FT: "));
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/// <summary>
|
|
179
|
+
///
|
|
180
|
+
/// </summary>
|
|
181
|
+
/// <param name="area"></param>
|
|
182
|
+
/// <param name="place"></param>
|
|
183
|
+
protected virtual void DisplayMarkersSection(MapAreaEntry area, PlaceEntry place)
|
|
184
|
+
{
|
|
185
|
+
for (int i = 0; i < place.MarkerVessels.Count; i++)
|
|
186
|
+
{
|
|
187
|
+
using (new GUILayout.HorizontalScope())
|
|
188
|
+
{
|
|
189
|
+
GUILayout.Space(40);
|
|
190
|
+
|
|
191
|
+
if (place.MarkerVessels[i] != null)
|
|
192
|
+
{
|
|
193
|
+
place.Save();
|
|
194
|
+
|
|
195
|
+
EditorGUILayout.LabelField(place.MarkerDatas[i].name);
|
|
196
|
+
|
|
197
|
+
if (GUILayout.Button("Remove", GUILayout.Width(100)))
|
|
198
|
+
RemoveMarker(place.MarkerVessels[i], area, place);
|
|
199
|
+
}
|
|
200
|
+
else
|
|
201
|
+
place.MarkerVessels[i] = markerDB.GetVesselByData(place.MarkerDatas[i]);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/// <summary>
|
|
207
|
+
///
|
|
208
|
+
/// </summary>
|
|
209
|
+
/// <param name="markerVessel"></param>
|
|
210
|
+
/// <param name="area"></param>
|
|
211
|
+
/// <param name="place"></param>
|
|
212
|
+
protected virtual void RemoveMarker(MarkerVessel markerVessel, MapAreaEntry area, PlaceEntry place)
|
|
213
|
+
{
|
|
214
|
+
place.MarkerVessels.Remove(markerVessel);
|
|
215
|
+
|
|
216
|
+
if (place.MarkerVessels.Count == 0)
|
|
217
|
+
area.PlaceEntries.Remove(place);
|
|
218
|
+
|
|
219
|
+
if (area.PlaceEntries.Count == 0)
|
|
220
|
+
Entry.AreaEntries.Remove(area);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/// <summary>
|
|
224
|
+
///
|
|
225
|
+
/// </summary>
|
|
226
|
+
protected virtual void DisplayCreateEntrySection()
|
|
227
|
+
{
|
|
228
|
+
using (new GUILayout.HorizontalScope(GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth)))
|
|
229
|
+
{
|
|
230
|
+
areaNum = EditorGUILayout.IntPopup(areaNum, mapDB.GetAreaNames(),
|
|
231
|
+
ContainerUtil.Iota(mapDB.GetAreaNames().Length, 0), GUILayout.MaxWidth(130));
|
|
232
|
+
|
|
233
|
+
MapAreaData areaData = mapDB.floors[areaNum];
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
if (placeNum > areaData.places.Count)
|
|
237
|
+
placeNum = 0;
|
|
238
|
+
|
|
239
|
+
placeNum = EditorGUILayout.IntPopup(placeNum, areaData.GetPlaceNames(),
|
|
240
|
+
ContainerUtil.Iota(areaData.GetPlaceNames().Length, 0), GUILayout.MaxWidth(130));
|
|
241
|
+
|
|
242
|
+
if (placeNum >= areaData.places.Count)
|
|
243
|
+
placeNum = 0;
|
|
244
|
+
|
|
245
|
+
placeData = areaData.places[placeNum];
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
markerNum = EditorGUILayout.IntPopup(markerNum, markerDB.GetVesselNames(),
|
|
249
|
+
ContainerUtil.Iota(markerDB.GetVesselNames().Length, 0), GUILayout.MaxWidth(130));
|
|
250
|
+
|
|
251
|
+
selectedVessel = markerDB.Entries[markerNum];
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
if (GUILayout.Button("Add"))
|
|
255
|
+
CreateValidEntry(areaData);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/// <summary>
|
|
260
|
+
///
|
|
261
|
+
/// </summary>
|
|
262
|
+
/// <param name="areaData"></param>
|
|
263
|
+
protected virtual void CreateValidEntry(MapAreaData areaData)
|
|
264
|
+
{
|
|
265
|
+
if (Entry.Contains(areaData) is MapAreaEntry existingAreaEntry)
|
|
266
|
+
AddEntryToExistingArea(existingAreaEntry);
|
|
267
|
+
else
|
|
268
|
+
CreateAreaEntry(areaData, placeData);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/// <summary>
|
|
272
|
+
///
|
|
273
|
+
/// </summary>
|
|
274
|
+
/// <param name="existingAreaEntry"></param>
|
|
275
|
+
protected virtual void AddEntryToExistingArea(MapAreaEntry existingAreaEntry)
|
|
276
|
+
{
|
|
277
|
+
if (existingAreaEntry.ContainsPlace(placeData.GetID()) is PlaceEntry existingPlaceEntry)
|
|
278
|
+
existingPlaceEntry.MarkerVessels.Add(selectedVessel);
|
|
279
|
+
else
|
|
280
|
+
CreatePlaceEntry(existingAreaEntry, placeData, "Had Area but not place entry, creating...");
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/// <summary>
|
|
284
|
+
///
|
|
285
|
+
/// </summary>
|
|
286
|
+
/// <param name="areaData"></param>
|
|
287
|
+
/// <param name="placeData"></param>
|
|
288
|
+
protected virtual void CreateAreaEntry(MapAreaData areaData, PlaceData placeData)
|
|
289
|
+
{
|
|
290
|
+
MapAreaEntry existingAreaEntry = new(areaData);
|
|
291
|
+
|
|
292
|
+
CreatePlaceEntry(existingAreaEntry, placeData, "Didn't have area entry, creating...");
|
|
293
|
+
|
|
294
|
+
Entry.AreaEntries.Add(existingAreaEntry);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/// <summary>
|
|
298
|
+
///
|
|
299
|
+
/// </summary>
|
|
300
|
+
/// <param name="existingAreaEntry"></param>
|
|
301
|
+
/// <param name="placeData"></param>
|
|
302
|
+
/// <param name="log"></param>
|
|
303
|
+
protected virtual void CreatePlaceEntry(MapAreaEntry existingAreaEntry, PlaceData placeData, string log)
|
|
304
|
+
{
|
|
305
|
+
PlaceEntry placeEntry = new();
|
|
306
|
+
|
|
307
|
+
placeEntry.SetData(placeData);
|
|
308
|
+
|
|
309
|
+
if (selectedVessel != null)
|
|
310
|
+
placeEntry.MarkerVessels.Add(selectedVessel);
|
|
311
|
+
|
|
312
|
+
existingAreaEntry.PlaceEntries.Add(placeEntry);
|
|
313
|
+
|
|
314
|
+
placeEntry.SetFastTravel(placeData.fastTravelable);
|
|
315
|
+
|
|
316
|
+
UnityEngine.Debug.Log(nameof(MapEntryChange) + ": " + log);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
#endif
|
|
320
|
+
}
|
|
321
|
+
}
|