mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-08-28 15:13:57 +08:00
fix: 适配启动服务
This commit is contained in:
parent
574d765c69
commit
66ec8190c9
@ -1,41 +0,0 @@
|
|||||||
interface MotaConfig {
|
|
||||||
name: string;
|
|
||||||
resourceName?: string;
|
|
||||||
zip?: Record<string, string[]>;
|
|
||||||
}
|
|
||||||
|
|
||||||
function defineConfig(config: MotaConfig): MotaConfig {
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
// 这里修改塔的name,请保持与全塔属性的完全相同,否则发布之后可能无法进行游玩
|
|
||||||
name: 'HumanBreak',
|
|
||||||
resourceName: 'HumanBreakRes',
|
|
||||||
zip: {
|
|
||||||
'resource.zip': [
|
|
||||||
'autotiles/*',
|
|
||||||
'tilesets/*',
|
|
||||||
'images/*',
|
|
||||||
'animates/*',
|
|
||||||
'sounds/*',
|
|
||||||
'fonts/*',
|
|
||||||
'!images/bg.jpg'
|
|
||||||
],
|
|
||||||
'weather.zip': [
|
|
||||||
'materials/fog.png',
|
|
||||||
'materials/cloud.png',
|
|
||||||
'materials/sun.png'
|
|
||||||
],
|
|
||||||
'materials.zip': [
|
|
||||||
'materials/animates.png',
|
|
||||||
'materials/enemy48.png',
|
|
||||||
'materials/enemys.png',
|
|
||||||
'materials/icons.png',
|
|
||||||
'materials/items.png',
|
|
||||||
'materials/npc48.png',
|
|
||||||
'materials/npcs.png',
|
|
||||||
'materials/terrains.png'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
});
|
|
@ -6,7 +6,6 @@ import {
|
|||||||
createServer as http
|
createServer as http
|
||||||
} from 'http';
|
} from 'http';
|
||||||
import { isNil } from 'lodash-es';
|
import { isNil } from 'lodash-es';
|
||||||
import config from '../mota.config.js';
|
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
import { resolve, basename } from 'path';
|
import { resolve, basename } from 'path';
|
||||||
import * as rollup from 'rollup';
|
import * as rollup from 'rollup';
|
||||||
@ -19,6 +18,10 @@ import commonjs from '@rollup/plugin-commonjs';
|
|||||||
import json from '@rollup/plugin-json';
|
import json from '@rollup/plugin-json';
|
||||||
import replace from '@rollup/plugin-replace';
|
import replace from '@rollup/plugin-replace';
|
||||||
|
|
||||||
|
const [, , vitePortStr = '5173', serverPortStr = '3000'] = process.argv;
|
||||||
|
const vitePort = parseInt(vitePortStr);
|
||||||
|
const serverPort = parseInt(serverPortStr);
|
||||||
|
|
||||||
const base = './public';
|
const base = './public';
|
||||||
|
|
||||||
type Request = IncomingMessage;
|
type Request = IncomingMessage;
|
||||||
@ -86,7 +89,7 @@ async function getFile(req: Request, res: Response, path: string) {
|
|||||||
res.writeHead(200, { 'Content-type': 'text/css' });
|
res.writeHead(200, { 'Content-type': 'text/css' });
|
||||||
if (path.endsWith('.html'))
|
if (path.endsWith('.html'))
|
||||||
res.writeHead(200, { 'Content-type': 'text/html' });
|
res.writeHead(200, { 'Content-type': 'text/html' });
|
||||||
return res.end(data), true;
|
return (res.end(data), true);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
return false;
|
return false;
|
||||||
@ -123,7 +126,7 @@ async function getAll(
|
|||||||
});
|
});
|
||||||
await Promise.all(tasks);
|
await Promise.all(tasks);
|
||||||
const result = ids.map(v => data[v]);
|
const result = ids.map(v => data[v]);
|
||||||
return res.end(result.join(join)), true;
|
return (res.end(result.join(join)), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getEsmFile(
|
async function getEsmFile(
|
||||||
@ -468,26 +471,25 @@ ${names}
|
|||||||
async function startHttpServer(port: number = 3000) {
|
async function startHttpServer(port: number = 3000) {
|
||||||
if (h) return h;
|
if (h) return h;
|
||||||
const server = http();
|
const server = http();
|
||||||
|
const data = await fs.readFile('public/project/data.js', 'utf-8');
|
||||||
|
const json = data.split('\n').slice(1).join('\n');
|
||||||
|
const parsed = JSON.parse(json);
|
||||||
|
const name = parsed.firstData.name;
|
||||||
|
|
||||||
|
server.listen(port, '127.0.0.1');
|
||||||
|
|
||||||
const tryNext = () => {
|
|
||||||
server.listen(port++, '127.0.0.1');
|
|
||||||
};
|
|
||||||
server.on('error', () => {
|
|
||||||
tryNext();
|
|
||||||
});
|
|
||||||
server.on('listening', () => {
|
server.on('listening', () => {
|
||||||
console.log(`编辑器地址:http://127.0.0.1:${port - 1}/editor.html`);
|
console.log(`编辑器地址:http://127.0.0.1:${port}/editor.html`);
|
||||||
setupHttp(server);
|
setupHttp(server, name);
|
||||||
});
|
});
|
||||||
tryNext();
|
|
||||||
|
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupHttp(server: Server) {
|
function setupHttp(server: Server, name: string) {
|
||||||
server.on('request', async (req, res) => {
|
server.on('request', async (req, res) => {
|
||||||
const p = req.url
|
const p = req.url
|
||||||
?.replace(`/games/${config.name}`, '')
|
?.replace(`/games/${name}`, '')
|
||||||
.replace('/all/', '/') // 样板中特殊处理的all文件
|
.replace('/all/', '/') // 样板中特殊处理的all文件
|
||||||
.replace('/forceTem/', '/') // 强制用样板的http服务获取文件
|
.replace('/forceTem/', '/') // 强制用样板的http服务获取文件
|
||||||
.replace('/src/', '../src/'); // src在上一级目录
|
.replace('/src/', '../src/'); // src在上一级目录
|
||||||
@ -619,14 +621,20 @@ async function ensureConfig() {
|
|||||||
(async function () {
|
(async function () {
|
||||||
// 1. 启动vite服务
|
// 1. 启动vite服务
|
||||||
const vite = await createServer();
|
const vite = await createServer();
|
||||||
await vite.listen(5173);
|
await vite.listen(vitePort);
|
||||||
console.log(`游戏地址:http://localhost:5173/`);
|
console.log(`游戏地址:http://localhost:${vitePort}/`);
|
||||||
|
|
||||||
// 2. 启动样板http服务
|
// 2. 启动样板http服务
|
||||||
await ensureConfig();
|
await ensureConfig();
|
||||||
const server = await startHttpServer(3000);
|
const server = await startHttpServer(serverPort);
|
||||||
h = server;
|
h = server;
|
||||||
|
|
||||||
// 3. 启动样板ws热重载服务
|
// 3. 启动样板ws热重载服务
|
||||||
await startWsServer(server);
|
await startWsServer(server);
|
||||||
|
|
||||||
|
process.on('SIGTERM', () => {
|
||||||
|
vite.close();
|
||||||
|
server.close();
|
||||||
|
process.exit(0);
|
||||||
|
});
|
||||||
})();
|
})();
|
||||||
|
Loading…
Reference in New Issue
Block a user