64 lines
2.9 KiB
TypeScript
64 lines
2.9 KiB
TypeScript
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
|
|
|
|
type ManifestConfig = {
|
|
|
|
initial: string[],
|
|
|
|
game: string[]
|
|
|
|
}
|
|
|
|
export class BricksPlugin implements plugins.Command {
|
|
|
|
constructor() {
|
|
}
|
|
async onFile(file: plugins.File) {
|
|
const filename = file.basename;
|
|
if (filename == 'manifest.json') {
|
|
const contents = file.contents.toString();
|
|
const jsonData: ManifestConfig = JSON.parse(contents);
|
|
|
|
let content = '';
|
|
content += `BK.Script.loadlib("GameRes://js/promise.js");\n`;
|
|
for (let item of jsonData.initial) {
|
|
if (item != 'js/promise.js' && item != 'js/promise.min.js') {
|
|
content += `BK.Script.loadlib("GameRes://${item}");\n`
|
|
}
|
|
}
|
|
for (let item of jsonData.game) {
|
|
content += `BK.Script.loadlib("GameRes://${item}");\n`
|
|
}
|
|
content += `BK.Script.loadlib("GameRes://egret.bricks.js");\n`
|
|
file.path = file.dirname + '/manifest.js'
|
|
file.contents = new Buffer(content);
|
|
} else if (filename == 'main.js') {
|
|
const content = file.contents.toString();
|
|
let result = content.replace(/RES\.loadConfig\("resource\/default\.res\.json", "resource\/"\)/gm, 'RES.loadConfig("GameRes://resource/default.res.json", "GameRes://resource/")');
|
|
result = result.replace(/eui\.Theme\("resource\/default\.thm\.json", _this\.stage\)/gm, 'eui.Theme("GameRes://resource/default.thm.json", _this.stage)');
|
|
result += ";global.Main = Main;";
|
|
file.path = file.dirname + '/main.js'
|
|
file.contents = new Buffer(result);
|
|
} else if (filename == 'promise.js') {
|
|
return null;
|
|
}
|
|
return file;
|
|
}
|
|
async onFinish(pluginContext: plugins.CommandContext) {
|
|
//同步index.html 配置到main.js
|
|
let mainJSPath = path.join(pluginContext.outputDir, 'main.js');
|
|
let mainJSContent = fs.readFileSync(mainJSPath, { encoding: "utf8" });
|
|
let projectConfig = pluginContext.buildConfig.projectConfig;
|
|
|
|
mainJSContent = mainJSContent.replace(/frameRate: 30/gm, `frameRate: ${projectConfig.frameRate}`);
|
|
mainJSContent = mainJSContent.replace(/contentWidth: 640/gm, `contentWidth: ${projectConfig.contentWidth}`);
|
|
mainJSContent = mainJSContent.replace(/contentHeight: 1136/gm, `contentHeight: ${projectConfig.contentHeight}`);
|
|
mainJSContent = mainJSContent.replace(/entryClassName: "Main"/gm, `entryClassName: ${projectConfig.entryClassName}`);
|
|
mainJSContent = mainJSContent.replace(/scaleMode: "showAll"/gm, `scaleMode: ${projectConfig.scaleMode}`);
|
|
mainJSContent = mainJSContent.replace(/orientation: "auto"/gm, `orientation: ${projectConfig.orientation}`);
|
|
fs.writeFileSync(mainJSPath, mainJSContent);
|
|
}
|
|
}
|
|
|
|
declare var egret; |