Files
armorpaint/base/Sources/plugin.ts
T

35 lines
748 B
TypeScript
Raw Normal View History

2024-03-09 14:52:33 +01:00
2024-03-21 21:06:41 +01:00
type plugin_t = {
draw_ui?: (ui: zui_t)=>void;
draw?: ()=>void;
update?: ()=>void;
delete?: ()=>void;
version?: string;
name?: string;
};
2024-03-09 14:52:33 +01:00
2024-03-21 21:06:41 +01:00
let plugin_map: map_t<string, plugin_t> = map_create();
2024-03-09 14:52:33 +01:00
let _plugin_name: string;
2024-03-21 21:06:41 +01:00
function plugin_create(): plugin_t {
let p: plugin_t = {};
2024-03-09 14:52:33 +01:00
p.name = _plugin_name;
2024-03-20 16:13:54 +01:00
map_set(plugin_map, p.name, p);
2024-03-09 14:52:33 +01:00
return p;
}
function plugin_start(plugin: string) {
2024-03-21 21:06:41 +01:00
let blob: buffer_t = data_get_blob("plugins/" + plugin);
_plugin_name = plugin;
js_eval(sys_buffer_to_string(blob), plugin);
data_delete_blob("plugins/" + plugin);
2024-03-09 14:52:33 +01:00
}
function plugin_stop(plugin: string) {
2024-03-21 21:06:41 +01:00
let p: plugin_t = map_get(plugin_map, plugin);
2024-03-09 14:52:33 +01:00
if (p != null && p.delete != null) {
p.delete();
}
2024-03-20 16:13:54 +01:00
map_delete(plugin_map, plugin);
2024-03-09 14:52:33 +01:00
}