优化第一阶段
This commit is contained in:
58
lib/menu.js
58
lib/menu.js
@ -1,18 +1,10 @@
|
||||
import color from "picocolors";
|
||||
import boxen from "boxen";
|
||||
import { gridSelect } from "./grid.js";
|
||||
import * as convertTool from "./convert/index.js";
|
||||
import * as ktx2Tool from "./ktx2/index.js";
|
||||
import * as gltfTool from "./gltf/index.js";
|
||||
import * as modelTool from "./model/index.js";
|
||||
import * as imageTool from "./image/index.js";
|
||||
import * as spriteTool from "./sprite/index.js";
|
||||
import * as lodTool from "./lod/index.js";
|
||||
import * as audioTool from "./audio/index.js";
|
||||
import * as scaffoldTool from "./scaffold/index.js";
|
||||
import { getTools } from "./plugins/index.js";
|
||||
|
||||
let poemConfig = {
|
||||
lines: ["你我皆牛马", "生在人世间", "终日奔波苦", "一刻不得闲"],
|
||||
lines: ["你我皆牛马", "生在人世间", "终日赶波涛", "一刻不得闲"],
|
||||
perLine: 2,
|
||||
padding: { top: 2, bottom: 2, left: 6, right: 6 },
|
||||
borderStyle: "double",
|
||||
@ -21,18 +13,6 @@ let poemConfig = {
|
||||
|
||||
let updateInfo = null;
|
||||
|
||||
const tools = [
|
||||
{ name: "格式转换", desc: "支持多种模型格式转换", tool: convertTool },
|
||||
{ name: "KTX2 纹理压缩", desc: "图片转KTX2格式", tool: ktx2Tool },
|
||||
{ name: "glTF扩展", desc: "添加KHR_texture_basisu", tool: gltfTool },
|
||||
{ name: "模型压缩", desc: "压缩glTF/GLB模型", tool: modelTool },
|
||||
{ name: "图片批量处理", desc: "裁剪/缩放/转换", tool: imageTool },
|
||||
{ name: "Sprite图集", desc: "合并精灵图集", tool: spriteTool },
|
||||
{ name: "LOD生成器", desc: "生成多级细节", tool: lodTool },
|
||||
{ name: "音频压缩", desc: "压缩音频文件", tool: audioTool },
|
||||
{ name: "项目脚手架", desc: "快速创建项目模板", tool: scaffoldTool },
|
||||
];
|
||||
|
||||
export function setPoem(lines, perLine = 2) {
|
||||
poemConfig.lines = lines;
|
||||
poemConfig.perLine = perLine;
|
||||
@ -49,7 +29,7 @@ export function setUpdateInfo(info) {
|
||||
function renderPoem() {
|
||||
const merged = [];
|
||||
for (let i = 0; i < poemConfig.lines.length; i += poemConfig.perLine) {
|
||||
merged.push(poemConfig.lines.slice(i, i + poemConfig.perLine).join(","));
|
||||
merged.push(poemConfig.lines.slice(i, i + poemConfig.perLine).join(" | "));
|
||||
}
|
||||
return boxen(color.yellow(merged.join("\n")), {
|
||||
padding: poemConfig.padding,
|
||||
@ -62,15 +42,18 @@ function renderPoem() {
|
||||
|
||||
function renderUpdateInfo(selected) {
|
||||
if (!updateInfo) return "";
|
||||
const btn = selected ? color.cyan("[ 立即更新 ]") :color.white(" 立即更新 ") ;
|
||||
const msg = `📦 发现新版本: ${color.red(updateInfo.current)} → ${color.green(updateInfo.latest)} ${btn}`;
|
||||
return "\n" + boxen(color.yellow(msg), {
|
||||
padding: { top: 0, bottom: 0, left: 2, right: 2 },
|
||||
borderStyle: "round",
|
||||
borderColor: "green",
|
||||
textAlignment: "center",
|
||||
float: "center",
|
||||
});
|
||||
const btn = selected ? color.cyan("[ 立即更新 ]") : color.white(" 立即更新 ");
|
||||
const msg = `📦 发现新版本 ${color.red(updateInfo.current)} → ${color.green(updateInfo.latest)} ${btn}`;
|
||||
return (
|
||||
"\n" +
|
||||
boxen(color.yellow(msg), {
|
||||
padding: { top: 0, bottom: 0, left: 2, right: 2 },
|
||||
borderStyle: "round",
|
||||
borderColor: "green",
|
||||
textAlignment: "center",
|
||||
float: "center",
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
function renderHeader(onUpdate) {
|
||||
@ -78,13 +61,18 @@ function renderHeader(onUpdate) {
|
||||
}
|
||||
|
||||
export async function showMainMenu() {
|
||||
const tools = getTools();
|
||||
|
||||
return gridSelect({
|
||||
items: tools,
|
||||
cols: 3,
|
||||
colWidth: 24,
|
||||
renderHeader: renderHeader,
|
||||
updateInfo: updateInfo,
|
||||
renderHeader,
|
||||
updateInfo,
|
||||
instructions: "←→ 选择 | Enter 确认 | Esc 退出",
|
||||
mapper: (item, isUpdate) => (isUpdate ? { isUpdate: true } : item),
|
||||
showUpdateButton: !!updateInfo,
|
||||
});
|
||||
}
|
||||
|
||||
export { tools, poemConfig };
|
||||
export { poemConfig };
|
||||
|
||||
Reference in New Issue
Block a user