plugin.ts 748 B

12345678910111213141516171819202122232425262728293031323334
  1. type plugin_t = {
  2. draw_ui?: (ui: zui_t)=>void;
  3. draw?: ()=>void;
  4. update?: ()=>void;
  5. delete?: ()=>void;
  6. version?: string;
  7. name?: string;
  8. };
  9. let plugin_map: map_t<string, plugin_t> = map_create();
  10. let _plugin_name: string;
  11. function plugin_create(): plugin_t {
  12. let p: plugin_t = {};
  13. p.name = _plugin_name;
  14. map_set(plugin_map, p.name, p);
  15. return p;
  16. }
  17. function plugin_start(plugin: string) {
  18. let blob: buffer_t = data_get_blob("plugins/" + plugin);
  19. _plugin_name = plugin;
  20. js_eval(sys_buffer_to_string(blob), plugin);
  21. data_delete_blob("plugins/" + plugin);
  22. }
  23. function plugin_stop(plugin: string) {
  24. let p: plugin_t = map_get(plugin_map, plugin);
  25. if (p != null && p.delete != null) {
  26. p.delete();
  27. }
  28. map_delete(plugin_map, plugin);
  29. }