mirror of
https://github.com/YouHaveTrouble/DiscipleOfLand.git
synced 2026-05-12 06:26:56 +00:00
zone data now contains aetheryte list
This commit is contained in:
@@ -1,173 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "labyrinthos",
|
|
||||||
"x": 30.3,
|
|
||||||
"y": 11.9
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "The Archeion"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "labyrinthos",
|
|
||||||
"x": 21.6,
|
|
||||||
"y": 20.4
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Sharlayan Hamlet"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "labyrinthos",
|
|
||||||
"x": 6.8,
|
|
||||||
"y": 27.5
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Aporia"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "thavnair",
|
|
||||||
"x": 29.5,
|
|
||||||
"y": 16.5
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Palaka's Stand"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "thavnair",
|
|
||||||
"x": 10.9,
|
|
||||||
"y": 22.2
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "The Great Work"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "thavnair",
|
|
||||||
"x": 25.3,
|
|
||||||
"y": 34.0
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Yedlihmad"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "shaaloani",
|
|
||||||
"x": 15.6,
|
|
||||||
"y": 19.2
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Sheshenewezi Springs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "shaaloani",
|
|
||||||
"x": 29.0,
|
|
||||||
"y": 30.8
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Hhusatahwi"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "shaaloani",
|
|
||||||
"x": 27.1,
|
|
||||||
"y": 10.1
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Mehwahhetsoan"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "heritage-found",
|
|
||||||
"x": 17.0,
|
|
||||||
"y": 9.8
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "The Outskirts"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "heritage-found",
|
|
||||||
"x": 31.7,
|
|
||||||
"y": 25.7
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Yyasulani Station"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "heritage-found",
|
|
||||||
"x": 17.0,
|
|
||||||
"y": 23.9
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Electrope Strike"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "living-memory",
|
|
||||||
"x": 21.5,
|
|
||||||
"y": 37.3
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Leynode Mnemo"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "living-memory",
|
|
||||||
"x": 34.7,
|
|
||||||
"y": 15.7
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Leynode Pyro"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "living-memory",
|
|
||||||
"x": 16.4,
|
|
||||||
"y": 13.5
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Leynode Aero"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "urquopacha",
|
|
||||||
"x": 30.5,
|
|
||||||
"y": 34.2
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Worlar's Echo"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"position": {
|
|
||||||
"zone": "urquopacha",
|
|
||||||
"x": 28.1,
|
|
||||||
"y": 13.1
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"en": "Wachunpelo"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
@@ -2,36 +2,221 @@
|
|||||||
"labyrinthos": {
|
"labyrinthos": {
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Labyrinthos"
|
"en": "Labyrinthos"
|
||||||
|
},
|
||||||
|
"aetherytes": [
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 30.3,
|
||||||
|
"y": 11.9
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "The Archeion"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 21.6,
|
||||||
|
"y": 20.4
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Sharlayan Hamlet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 6.8,
|
||||||
|
"y": 27.5
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Aporia"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"thavnair": {
|
"thavnair": {
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Thavnair"
|
"en": "Thavnair"
|
||||||
|
},
|
||||||
|
"aetherytes": [
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 29.5,
|
||||||
|
"y": 16.5
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Palaka's Stand"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 10.9,
|
||||||
|
"y": 22.2
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "The Great Work"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 25.3,
|
||||||
|
"y": 34.0
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Yedlihmad"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"yak-tel": {
|
"yak-tel": {
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Yak T'el"
|
"en": "Yak T'el"
|
||||||
|
},
|
||||||
|
"aetherytes": [
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 13.5,
|
||||||
|
"y": 12.9
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Iq Br'aax"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 35.9,
|
||||||
|
"y": 32.0
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Mamook"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"shaaloani": {
|
"shaaloani": {
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Shaaloani"
|
"en": "Shaaloani"
|
||||||
|
},
|
||||||
|
"aetherytes": [
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 15.6,
|
||||||
|
"y": 19.2
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Sheshenewezi Springs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 29.0,
|
||||||
|
"y": 30.8
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Hhusatahwi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 27.1,
|
||||||
|
"y": 10.1
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Mehwahhetsoan"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"heritage-found": {
|
"heritage-found": {
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Heritage Found"
|
"en": "Heritage Found"
|
||||||
|
},
|
||||||
|
"aetherytes": [
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 17.0,
|
||||||
|
"y": 9.8
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "The Outskirts"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 31.7,
|
||||||
|
"y": 25.7
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Yyasulani Station"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 17.0,
|
||||||
|
"y": 23.9
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Electrope Strike"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"living-memory": {
|
"living-memory": {
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Living Memory"
|
"en": "Living Memory"
|
||||||
|
},
|
||||||
|
"aetherytes": [
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 21.5,
|
||||||
|
"y": 37.3
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Leynode Mnemo"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 34.7,
|
||||||
|
"y": 15.7
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Leynode Pyro"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 16.4,
|
||||||
|
"y": 13.5
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Leynode Aero"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"urquopacha": {
|
"urquopacha": {
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Urquopacha"
|
"en": "Urquopacha"
|
||||||
|
},
|
||||||
|
"aetherytes": [
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 30.5,
|
||||||
|
"y": 34.2
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Worlar's Echo"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"position": {
|
||||||
|
"x": 28.1,
|
||||||
|
"y": 13.1
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"en": "Wachunpelo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+4
-19
@@ -58,23 +58,22 @@ export default defineComponent({
|
|||||||
data: () => ({
|
data: () => ({
|
||||||
eorzeaTime: new EorzeaTime() as EorzeaTime,
|
eorzeaTime: new EorzeaTime() as EorzeaTime,
|
||||||
nodes: [] as Node[],
|
nodes: [] as Node[],
|
||||||
aetherytes: [] as Aetheryte[],
|
|
||||||
items: {} as { [key: string]: Item },
|
items: {} as { [key: string]: Item },
|
||||||
zones: {} as { [key: string]: Zone },
|
zones: {} as { [key: string]: Zone },
|
||||||
filtersActive: false,
|
filtersActive: false,
|
||||||
filters: new Filters(),
|
filters: new Filters(),
|
||||||
}),
|
}),
|
||||||
methods: {
|
methods: {
|
||||||
findNearestAetheryte(zone: string, x: number, y: number): Aetheryte | null {
|
findNearestAetheryte(zoneName: string, x: number, y: number): Aetheryte | null {
|
||||||
let result = null;
|
let result = null;
|
||||||
let distance = Number.MAX_SAFE_INTEGER;
|
let distance = Number.MAX_SAFE_INTEGER;
|
||||||
for (const aetheryte of this.aetherytes) {
|
const zone = this.zones[zoneName]
|
||||||
if (aetheryte.position.zone !== zone) continue;
|
if (!zone) return null;
|
||||||
|
for (const aetheryte of zone.aetherytes) {
|
||||||
const a = aetheryte.position.x - x;
|
const a = aetheryte.position.x - x;
|
||||||
const b = aetheryte.position.y - y;
|
const b = aetheryte.position.y - y;
|
||||||
const distanceToAetheryte = Math.hypot(a, b);
|
const distanceToAetheryte = Math.hypot(a, b);
|
||||||
if (distanceToAetheryte < distance) {
|
if (distanceToAetheryte < distance) {
|
||||||
`Aetheryte ${aetheryte.name.en} (${distance}) is new nearest aetheryte`;
|
|
||||||
distance = distanceToAetheryte;
|
distance = distanceToAetheryte;
|
||||||
result = aetheryte;
|
result = aetheryte;
|
||||||
}
|
}
|
||||||
@@ -88,20 +87,6 @@ export default defineComponent({
|
|||||||
this.eorzeaTime = new EorzeaTime();
|
this.eorzeaTime = new EorzeaTime();
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
const aetheryteData: Response | null = await fetch("/data/aetherytes.json")
|
|
||||||
.catch((): null => {
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
if (aetheryteData === null) {
|
|
||||||
console.error("Failed to fetch aetheryte data!")
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const aetherytes = await aetheryteData.json();
|
|
||||||
for (const aetheryteData of aetherytes) {
|
|
||||||
this.aetherytes.push(new Aetheryte(aetheryteData));
|
|
||||||
}
|
|
||||||
|
|
||||||
const itemData: Response | null = await fetch("/data/items.json")
|
const itemData: Response | null = await fetch("/data/items.json")
|
||||||
.catch((): null => {
|
.catch((): null => {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -1,13 +1,21 @@
|
|||||||
|
import Aetheryte from "@/entities/Aetheryte";
|
||||||
|
|
||||||
export default class Zone {
|
export default class Zone {
|
||||||
|
|
||||||
name: {
|
name: {
|
||||||
en: string,
|
en: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(data: {name: {en: string}}) {
|
aetherytes: Array<Aetheryte> = [];
|
||||||
|
|
||||||
|
constructor(data: {name: {en: string}, aetherytes: Array<{position: {x: number, y: number, zone: string}, name: {en: string}}>}) {
|
||||||
this.name = {
|
this.name = {
|
||||||
en: data.name.en
|
en: data.name.en
|
||||||
};
|
};
|
||||||
|
if (!Array.isArray(data.aetherytes)) return;
|
||||||
|
for (const aetheryte of data.aetherytes) {
|
||||||
|
this.aetherytes.push(new Aetheryte(aetheryte));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user