zone data now contains aetheryte list

This commit is contained in:
2024-07-18 19:59:05 +02:00
parent b3ec17f2c0
commit a50ea1273d
4 changed files with 205 additions and 200 deletions
-173
View File
@@ -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"
}
}
]
+185
View File
@@ -2,36 +2,221 @@
"labyrinthos": {
"name": {
"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": {
"name": {
"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": {
"name": {
"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": {
"name": {
"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": {
"name": {
"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": {
"name": {
"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": {
"name": {
"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
View File
@@ -58,23 +58,22 @@ export default defineComponent({
data: () => ({
eorzeaTime: new EorzeaTime() as EorzeaTime,
nodes: [] as Node[],
aetherytes: [] as Aetheryte[],
items: {} as { [key: string]: Item },
zones: {} as { [key: string]: Zone },
filtersActive: false,
filters: new Filters(),
}),
methods: {
findNearestAetheryte(zone: string, x: number, y: number): Aetheryte | null {
findNearestAetheryte(zoneName: string, x: number, y: number): Aetheryte | null {
let result = null;
let distance = Number.MAX_SAFE_INTEGER;
for (const aetheryte of this.aetherytes) {
if (aetheryte.position.zone !== zone) continue;
const zone = this.zones[zoneName]
if (!zone) return null;
for (const aetheryte of zone.aetherytes) {
const a = aetheryte.position.x - x;
const b = aetheryte.position.y - y;
const distanceToAetheryte = Math.hypot(a, b);
if (distanceToAetheryte < distance) {
`Aetheryte ${aetheryte.name.en} (${distance}) is new nearest aetheryte`;
distance = distanceToAetheryte;
result = aetheryte;
}
@@ -88,20 +87,6 @@ export default defineComponent({
this.eorzeaTime = new EorzeaTime();
}, 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")
.catch((): null => {
return null;
+9 -1
View File
@@ -1,13 +1,21 @@
import Aetheryte from "@/entities/Aetheryte";
export default class Zone {
name: {
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 = {
en: data.name.en
};
if (!Array.isArray(data.aetherytes)) return;
for (const aetheryte of data.aetherytes) {
this.aetherytes.push(new Aetheryte(aetheryte));
}
}
}