Skip to content

Commit

Permalink
自定义事件生成实现代码
Browse files Browse the repository at this point in the history
  • Loading branch information
sumneko committed Apr 29, 2024
1 parent d693ed8 commit 8b76eb0
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
57 changes: 57 additions & 0 deletions src/metaBuilder/customEvents.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { define } from '../customDefine';
import { BaseBuilder } from './baseBuilder';

const template =
`---@class ECAHelper
%{FIELDS}
%{IMPLS}
`;

export class CustomEvents extends BaseBuilder {
constructor(path: string) {
super(path);
this.update();
define.自定义事件.onDidChange(() => {
this.update();
});
}

async make() {
let events = await define.自定义事件.getEvents();
if (events.length === 0) {
return;
}
return template
.replace('%{FIELDS}', events.map(event => {
let args = event.args.map((arg, index) => {
return `, v${index + 1}: ${arg.luaType}`;
});
return `---@field call fun(name: '${event.name}'${args.join('')})`;
}).join('\r\n'))
.replace('%{IMPLS}', events.map(event => {
let args = event.args.map((arg, index) => {
return `, v${index + 1}`;
});
return `---@diagnostic disable-next-line: invisible
y3.eca.register_custom_event_impl('${event.name}', function (_${args.join('')})
y3.game.send_custom_event(${event.id}, {
${event.args.map((arg, index) => {
if (
arg.luaType === "boolean" ||
arg.luaType === "number" ||
arg.luaType === "integer" ||
arg.luaType === "string" ||
arg.luaType === "table"
) {
return ` ['${arg.name}'] = v${index + 1}`;
} else {
return ` ['${arg.name}'] = y3.py_converter.lua_to_py_by_lua_type('${arg.luaType}', v${index + 1})`;
}
}).join(',\r\n')}
})
end)`;
}).join('\r\n\r\n'));
}

}
6 changes: 6 additions & 0 deletions src/metaBuilder/initBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { UnitAttrs } from './unitAttrs';
import { BaseBuilder } from './baseBuilder';
import { env } from '../env';
import { PlayerAttrs } from './playerAttrs';
import { CustomEvents } from './customEvents';

let path = 'y3-helper/meta';

Expand Down Expand Up @@ -36,14 +37,19 @@ export function init() {

let unitAttrs = new UnitAttrs(path + '/unitAttrs.lua');
let playerAttrs = new PlayerAttrs(path + '/playerAttrs.lua');
let customEvents = new CustomEvents(path + '/customEvents.lua');

initBuilder.addFile(unitAttrs);
initBuilder.addFile(playerAttrs);
initBuilder.addFile(customEvents);

unitAttrs.onDidChange(() => {
initBuilder.update();
});
playerAttrs.onDidChange(() => {
initBuilder.update();
});
customEvents.onDidChange(() => {
initBuilder.update();
});
}

0 comments on commit 8b76eb0

Please sign in to comment.