Files
genshin-world/assets/js/Classes/Worldmap.js
2025-07-15 01:15:37 +02:00

338 lines
6.6 KiB
JavaScript

export class Profile {
#__type = "class"
/** @private {string} */
#_slug;
/** @private {string} */
#_name;
/** @private {string} */
#_server;
/** @private {boolean} */
#_isActive;
/**
* @param {string} slug
* @param {string} name
* @param {string} server
* @param {boolean} isActive
*/
constructor(slug = "", name = "", server = "eu", isActive = true) {
this.#_slug = slug;
this.#_name = name;
this.#_server = server;
this.#_isActive = isActive;
}
get __type () {
return this.#__type;
}
get slug() {
return this.#_slug;
}
set slug(value) {
this.#_slug = value;
}
get name() {
return this.#_name;
}
set name(value) {
this.#_name = value;
}
get server() {
return this.#_server;
}
set server(value) {
this.#_server = value;
}
get isActive() {
return this.#_isActive;
}
set isActive(value) {
this.#_isActive = Boolean(value);
}
/**
* @param {string} slug
* @param {string} name
* @param {string} server
* @param {boolean} isActive
*/
hydrate({slug, name, server, isActive}) {
this.slug = slug;
this.name = name;
this.server = server;
this.isActive = isActive;
}
/**
* @return {{slug: string, name: string, server: string, isActive: number}}
*/
dehydrate() {
return {
slug: this.slug,
name: this.name,
server: this.server,
isActive: Number(this.isActive)
}
}
}
export class Region {
#__type = "class";
/** @private {string} */
#_slug;
/** @private {string} */
#_name;
/** @private {number} */
#_scrollLeft;
/** @private {number} */
#_scrollTop;
/** @private {number} */
#_zoomLevel;
/**
* @param {string} slug
* @param {string} name
* @param {number} scrollLeft
* @param {number} scrollTop
* @param {number} zoomLevel
*/
constructor(slug, name, scrollLeft = 50, scrollTop = 50, zoomLevel = 8) {
this.#_slug = slug;
this.#_name = name;
this.#_scrollLeft = scrollLeft;
this.#_scrollTop = scrollTop;
this.#_zoomLevel = zoomLevel;
}
get __type () {
return this.#__type;
}
get slug() {
return this.#_slug;
}
set slug(value) {
this.#_slug = value;
}
get name() {
return this.#_name;
}
set name(value) {
this.#_name = value;
}
get scrollLeft() {
return this.#_scrollLeft;
}
set scrollLeft(value) {
this.#_scrollLeft = Number(value);
}
get scrollTop() {
return this.#_scrollTop;
}
set scrollTop(value) {
this.#_scrollTop = Number(value);
}
get zoomLevel() {
return this.#_zoomLevel;
}
set zoomLevel(value) {
this.#_zoomLevel = Number(value);
}
/**
* @param {string} slug
* @param {string} name
* @param {number} scrollLeft
* @param {number} scrollTop
* @param {number} zoomLevel
*/
hydrate({slug, name, scrollLeft, scrollTop, zoomLevel}) {
this.slug = slug;
this.name = name;
this.scrollLeft = scrollLeft;
this.scrollTop = scrollTop;
this.zoomLevel = zoomLevel;
}
/**
* @return {{slug: string, name: string, scrollLeft: number, scrollTop: number, zoomLevel: number}}
*/
dehydrate() {
return {
slug: this.slug,
name: this.name,
scrollLeft: Number(this.scrollLeft),
scrollTop: Number(this.scrollTop),
zoomLevel: Number(this.zoomLevel)
}
}
}
export class Filter {
#__type = "class";
/** @private {string} */
#_region;
/** @private {string} */
#_slug;
/** @private {boolean} */
#_isActive;
/**
* @param {string} region
* @param {string} slug
* @param {boolean} isActive
*/
constructor(region, slug, isActive=false) {
this.#_region = region;
this.#_slug = slug;
this.#_isActive = isActive;
}
get __type () {
return this.#__type;
}
get slug() {
return this.#_slug;
}
set slug(value) {
this.#_slug = value;
}
get region() {
return this.#_region;
}
set region(value) {
this.#_region = value;
}
get isActive() {
return this.#_isActive;
}
set isActive(value) {
this.#_isActive = Boolean(value);
}
/**
* @param {string} region
* @param {string} slug
* @param {boolean} isActive
*/
hydrate({region, slug, isActive}) {
this.region = region
this.slug = slug
this.isActive = isActive;
}
/**
* @return {{region: string, slug: string, isActive: number}}
*/
dehydrate() {
return {
region: this.region,
slug: this.slug,
isActive: Number(this.isActive)
}
}
}
export class Node {
#__type = "class";
/** @private {string} */
#_profile;
/** @private {string} */
#_region;
/** @private {string} */
#_domId;
/** @private {boolean} */
#_isHidden;
constructor(profile, id, region, isHidden) {
this.#_profile = profile;
this.#_domId = id;
this.#_region = region;
this.#_isHidden = isHidden;
}
get __type () {
return this.#__type;
}
get profile() {
return this.#_profile;
}
set profile(value) {
this.#_profile = value;
}
get region() {
return this.#_region;
}
set region(value) {
this.#_region = value;
}
get domId() {
return this.#_domId;
}
set domId(value) {
this.#_domId = value;
}
get isHidden() {
return this.#_isHidden;
}
set isHidden(value) {
this.#_isHidden = Boolean(value);
}
/**
* @param {string} profile
* @param {string} domId
* @param {string} region
* @param {boolean} isHidden
*/
hydrate({profile, domId, region, isHidden}) {
this.profile = profile;
this.domId = domId;
this.region = region;
this.isHidden = isHidden;
}
/**
* @return {{profile: string, domId: string, region: string, isHidden: number}}
*/
dehydrate() {
return {
profile: this.profile,
domId: this.domId,
region: this.region,
isHidden: Number(this.isHidden)
}
}
}