mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-17 05:37:46 +00:00
feat: card
This commit is contained in:
parent
cd0793655d
commit
ce3c509cd9
43 changed files with 508 additions and 7 deletions
86
lib/convert/char.js
Normal file
86
lib/convert/char.js
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
import settings from '../settings.js';
|
||||
import PartnerId2SpriteId from '../../resources/map/PartnerId2SpriteId.json';
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} id
|
||||
* @param {boolean} full 显示全称
|
||||
* @param {boolean} en 是否为英文
|
||||
* @returns string
|
||||
*/
|
||||
export const IDToCharName = (id, full = true, en = false) => {
|
||||
const data = PartnerId2SpriteId?.[id];
|
||||
if (!data) return null;
|
||||
if (en) return data?.['en_name'];
|
||||
if (full) return data?.['full_name'];
|
||||
return data?.['name'];
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} id
|
||||
* @returns string
|
||||
*/
|
||||
export const IDToCharSprite = id => {
|
||||
const data = PartnerId2SpriteId?.[id];
|
||||
if (!data) return null;
|
||||
return data?.['sprite'];
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} name
|
||||
* @returns string
|
||||
*/
|
||||
export const charNameToID = name => {
|
||||
for (const [id, data] of Object.entries(PartnerId2SpriteId)) {
|
||||
if (data['full_name'] === name) return id;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} name
|
||||
* @returns string
|
||||
*/
|
||||
export const charNameToSprite = name => {
|
||||
for (const [_id, data] of Object.entries(PartnerId2SpriteId)) {
|
||||
if (data['full_name'] === name) return data['sprite'];
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} atlas
|
||||
* @returns string
|
||||
*/
|
||||
export const atlasToName = atlas => {
|
||||
const atlas = settings.getConfig('atlas');
|
||||
for (const [id, data] of Object.entries(atlas)) {
|
||||
if (data.includes(atlas)) return id;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} atlas
|
||||
* @returns string
|
||||
*/
|
||||
export const atlasToSprite = atlas => {
|
||||
const atlas = settings.getConfig('atlas');
|
||||
for (const [_id, data] of Object.entries(atlas)) {
|
||||
if (data.includes(atlas)) return data['sprite'];
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} name
|
||||
* @returns string
|
||||
*/
|
||||
export const atlasToID = name => {
|
||||
const atlas = settings.getConfig('atlas');
|
||||
for (const [id, data] of Object.entries(atlas)) {
|
||||
if (data.includes(name)) return charNameToID(id);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
21
lib/convert/weapon.js
Normal file
21
lib/convert/weapon.js
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import WeaponId2Sprite from '../../resources/map/WeaponId2Sprite.json';
|
||||
|
||||
/**
|
||||
* @param {string} id
|
||||
* @returns string
|
||||
*/
|
||||
export const IDToWeaponName = id => {
|
||||
const data = WeaponId2Sprite?.[id];
|
||||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} name
|
||||
* @returns string
|
||||
*/
|
||||
export const weaponNameToID = name => {
|
||||
for (const [id, data] of Object.entries(WeaponId2Sprite)) {
|
||||
if (data === name) return id;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
53
lib/download.js
Normal file
53
lib/download.js
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import { ZZZ_SQUARE_AVATAR, ZZZ_SQUARE_BANGBOO } from './mysapi/api.js';
|
||||
import { resourcesPath } from './path.js';
|
||||
|
||||
const ZZZ_SQUARE_AVATAR_PATH = path.join(resourcesPath, 'square_avatar');
|
||||
const ZZZ_SQUARE_BANGBOO_PATH = path.join(
|
||||
resourcesPath,
|
||||
'bangboo_square_avatar'
|
||||
);
|
||||
const ZZZ_GUIDES_PATH = path.join(resourcesPath, 'guides');
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string | number} charID
|
||||
* @returns Promise<string>
|
||||
*/
|
||||
export const getSquareAvatar = async charID => {
|
||||
const filename = `role_square_avatar_${charID}.png`;
|
||||
const avatarPath = path.join(ZZZ_SQUARE_AVATAR_PATH, filename);
|
||||
if (fs.existsSync(avatarPath)) return avatarPath;
|
||||
const url = `${ZZZ_SQUARE_AVATAR}/${filename}`;
|
||||
const savePath = avatarPath;
|
||||
const download = await fetch(url);
|
||||
const arrayBuffer = await download.arrayBuffer();
|
||||
const buffer = Buffer.from(arrayBuffer);
|
||||
if (!fs.existsSync(ZZZ_SQUARE_AVATAR_PATH)) {
|
||||
fs.mkdirSync(ZZZ_SQUARE_AVATAR_PATH, { recursive: true });
|
||||
}
|
||||
fs.writeFileSync(savePath, buffer);
|
||||
return avatarPath;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string | number} bangbooId
|
||||
* @returns Promise<string>
|
||||
*/
|
||||
export const getSquareBangboo = async bangbooId => {
|
||||
const filename = `bangboo_rectangle_avatar_${bangbooId}.png`;
|
||||
const bangbooPath = path.join(ZZZ_SQUARE_BANGBOO_PATH, filename);
|
||||
if (fs.existsSync(bangbooPath)) return bangbooPath;
|
||||
const url = `${ZZZ_SQUARE_BANGBOO}/${filename}`;
|
||||
const savePath = bangbooPath;
|
||||
const download = await fetch(url);
|
||||
const arrayBuffer = await download.arrayBuffer();
|
||||
const buffer = Buffer.from(arrayBuffer);
|
||||
if (!fs.existsSync(ZZZ_SQUARE_BANGBOO_PATH)) {
|
||||
fs.mkdirSync(ZZZ_SQUARE_BANGBOO_PATH, { recursive: true });
|
||||
}
|
||||
fs.writeFileSync(savePath, buffer);
|
||||
return bangbooPath;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue