dragonroll/plugins/dnd-5e/client/main.js

94 lines
3.0 KiB
JavaScript
Raw Normal View History

2024-10-22 12:53:24 +00:00
import { FetchConcepts, GetConcepts, InitData } from "./data";
2024-10-16 11:12:29 +00:00
import { Global } from '@/services/PluginGlobals';
2024-09-27 10:23:36 +00:00
2024-10-16 11:12:29 +00:00
var dndModule;
2024-10-11 22:35:06 +00:00
2024-10-16 11:12:29 +00:00
function Main(Api){
2024-10-16 11:32:28 +00:00
Global('dnd-5e')['Api'] = Api;
console.log("Module registered!");
dndModule = Api.createModule('dnd-5e');
2024-09-27 13:02:19 +00:00
dndModule.setData({
title: "Dungeons & Dragons 5e",
description: "Dungeons & Dragons Fifth edition game system support",
version: "0.1",
color: "#e92026",
authors: [{
name: "Aran Roig",
webpage: "aranroig.com"
}],
icon: "icon.png"
});
2024-10-05 23:36:18 +00:00
let databaseWindow = Api.registerWindow('database', Api.createView('Database'));
let actorsWindow = Api.registerWindow('actors', Api.createView('Actors'));
2024-10-21 18:05:21 +00:00
let booksWindow = Api.registerWindow('books', Api.createView('Books'))
2024-10-16 11:32:28 +00:00
Global('dnd-5e').Data = {
windows: {
2024-10-21 18:05:21 +00:00
database: databaseWindow,
actors: actorsWindow,
2024-10-16 11:32:28 +00:00
character_sheet: Api.registerWindow('character_sheet', Api.createView('CharacterSheet')),
item_sheet: Api.registerWindow('item_sheet', Api.createView('ItemSheet')),
create_item_prompt: Api.registerWindow('create_item_prompt', Api.createView('CreateItemPrompt'))
}
}
dndModule.setButtons({
right: [
{
id: 'database-button',
2024-10-21 18:05:21 +00:00
icon: '/icons/iconoir/regular/book.svg',
action: () => {
Api.createWindow(databaseWindow, {
2024-10-21 18:05:21 +00:00
title: "Campaign items",
id: 'campaign-items-window',
2024-10-22 12:53:24 +00:00
fetchConcepts: FetchConcepts, // Requests reactive ref update
getConcepts: GetConcepts, // Needs to return reactive ref value
2024-10-21 18:05:21 +00:00
close: () => Api.clearWindow("campaign-items-window")
});
}
2024-10-21 18:05:21 +00:00
},
{
id: 'database-button',
icon: '/icons/iconoir/regular/bookmark-book.svg',
action: () => {
Api.createWindow(booksWindow, {
title: "Books",
id: booksWindow,
close: () => Api.clearWindow(booksWindow)
});
}
},
{
id: 'group-button',
icon: '/icons/iconoir/regular/group.svg',
action: () => {
Api.createWindow(actorsWindow, {
title: "Actors",
id: actorsWindow,
close: () => Api.clearWindow(actorsWindow)
});
}
}]
});
2024-10-10 13:06:45 +00:00
2024-10-21 17:36:34 +00:00
dndModule.socket.on('update-item-all', () => {
FetchConcepts();
});
dndModule.onInit = () => {
2024-10-16 11:12:29 +00:00
InitData();
2024-10-21 18:05:21 +00:00
FetchConcepts();
2024-10-11 22:35:06 +00:00
}
2024-10-05 23:36:18 +00:00
Api.registerModule(dndModule);
2024-10-16 11:12:29 +00:00
2024-10-16 11:57:33 +00:00
Global('dnd-5e').DndModule = dndModule;
}
export {
Main
};