Part 3
This commit is contained in:
parent
55972e07af
commit
ede69a2a7a
@ -60,6 +60,10 @@ function _UpdatePlayers(data){
|
||||
});
|
||||
}
|
||||
|
||||
function GetCampaignModuleName(){
|
||||
return GetCampaign().system;
|
||||
}
|
||||
|
||||
export {
|
||||
_currentCampaign,
|
||||
_currentPlayer,
|
||||
@ -68,5 +72,6 @@ export {
|
||||
ConnectToCampaign,
|
||||
DisplayCampaign,
|
||||
UpdateCampaignData,
|
||||
GetCampaignModuleName,
|
||||
Disconnect
|
||||
}
|
@ -24,8 +24,13 @@ function GetModule(id){
|
||||
return module;
|
||||
}
|
||||
|
||||
function CreateModule(moduleInfo, registeredWindows){
|
||||
|
||||
}
|
||||
|
||||
export {
|
||||
ImportModule,
|
||||
CreateModule,
|
||||
GetModules,
|
||||
GetModule,
|
||||
GetModulesToLoad,
|
||||
|
@ -1,7 +1,71 @@
|
||||
import { reactive, ref } from 'vue'
|
||||
import { Disconnect } from './Campaign';
|
||||
|
||||
const windows = ref([])
|
||||
const windows = ref([]);
|
||||
|
||||
import LoginWindow from '@/views/windows/LoginWindow.vue'
|
||||
import RegisterWindow from '@/views/windows/RegisterWindow.vue'
|
||||
import ExampleWindow from '@/views/windows/ExampleWindow.vue'
|
||||
import MainMenuWindow from '@/views/windows/MainMenuWindow.vue'
|
||||
import EditProfileWindow from '@/views/windows/EditProfileWindow.vue'
|
||||
import SettingsWindow from '@/views/windows/SettingsWindow.vue'
|
||||
import CampaignListWindow from '@/views/windows/campaigns/CampaignListWindow.vue'
|
||||
import NewCampaignWindow from '@/views/windows/campaigns/NewCampaignWindow.vue'
|
||||
import JoinCampaignWindow from '@/views/windows/campaigns/JoinCampaignWindow.vue'
|
||||
import CampaignPreviewWindow from '@/views/windows/campaigns/CampaignPreviewWindow.vue'
|
||||
import ChatWindow from '@/views/windows/game/ChatWindow.vue'
|
||||
import DiceWindow from '@/views/windows/game/DiceWindow.vue'
|
||||
import MapButtons from '@/views/windows/dm/MapButtons.vue'
|
||||
import EnvironmentWindow from '@/views/windows/dm/EnvironmentWindow.vue'
|
||||
import SystemSelectorWindow from '@/views/windows/campaigns/SystemSelectorWindow.vue'
|
||||
import MapWindow from '@/views/windows/dm/MapWindow.vue'
|
||||
import CombatWindow from '@/views/windows/game/CombatWindow.vue'
|
||||
import EntityWindow from '@/views/windows/dm/EntityWindow.vue'
|
||||
import CharactersWindow from '@/views/windows/game/CharactersWindow.vue'
|
||||
import WelcomeWindow from '@/views/windows/WelcomeWindow.vue'
|
||||
import CompendiumWindow from '@/views/windows/CompendiumWindow.vue'
|
||||
import BookAnvilWindow from '@/views/windows/BookAnvilWindow.vue'
|
||||
import IconSelectorWindow from '@/views/windows/selectors/IconSelectorWindow.vue'
|
||||
import DatabaseWindow from '@/views/windows/game/DatabaseWindow.vue'
|
||||
import AccountManagementWindow from '@/views/windows/settings/AccountManagementWindow.vue'
|
||||
import PluginManagementWindow from '@/views/windows/settings/PluginManagementWindow.vue'
|
||||
|
||||
let windowMap = {
|
||||
test: ExampleWindow,
|
||||
login: LoginWindow,
|
||||
main_menu: MainMenuWindow,
|
||||
welcome: WelcomeWindow,
|
||||
register: RegisterWindow,
|
||||
edit_profile: EditProfileWindow,
|
||||
settings: SettingsWindow,
|
||||
campaign_list: CampaignListWindow,
|
||||
new_campaign: NewCampaignWindow,
|
||||
join_campaign: JoinCampaignWindow,
|
||||
campaign_preview: CampaignPreviewWindow,
|
||||
chat: ChatWindow,
|
||||
dice_menu: DiceWindow,
|
||||
map_buttons: MapButtons,
|
||||
environment: EnvironmentWindow,
|
||||
system_selector: SystemSelectorWindow,
|
||||
map_window: MapWindow,
|
||||
combat_window: CombatWindow,
|
||||
entity_window: EntityWindow,
|
||||
characters_window: CharactersWindow,
|
||||
compendium_window: CompendiumWindow,
|
||||
book_anvil_window: BookAnvilWindow,
|
||||
icon_selector: IconSelectorWindow,
|
||||
database: DatabaseWindow,
|
||||
plugin_management: PluginManagementWindow,
|
||||
account_management: AccountManagementWindow
|
||||
};
|
||||
|
||||
async function InjectWindow(plugin, window_type, window_component){
|
||||
let systemWidows = {};
|
||||
systemWidows[plugin + "/" + window_type] = (await import(`../../plugins/${plugin}/views/${window_component}.vue`)).default;
|
||||
windowMap = {...windowMap, ...systemWidows};
|
||||
|
||||
console.log("Window injected");
|
||||
}
|
||||
|
||||
// Presets
|
||||
const defValues = {
|
||||
@ -119,11 +183,6 @@ const defValues = {
|
||||
title: "Compendium",
|
||||
close: () => ClearWindow('compendium_window')
|
||||
},
|
||||
'character_sheet': {
|
||||
id: 'character_sheet',
|
||||
title: 'Character Sheet',
|
||||
close: () => ClearWindow('character_sheet')
|
||||
},
|
||||
'book_anvil_window': {
|
||||
id: 'book_anvil_window',
|
||||
title: "Book Anvil",
|
||||
@ -147,6 +206,7 @@ const reload = ref(0);
|
||||
|
||||
let ReloadRef = () => { return reload };
|
||||
let Windows = () => { return windows };
|
||||
let WindowMap = () => { return windowMap };
|
||||
|
||||
let currentIndex = 10;
|
||||
|
||||
@ -403,6 +463,8 @@ export {
|
||||
SetPosition,
|
||||
ResetPosition,
|
||||
Windows,
|
||||
WindowMap,
|
||||
InjectWindow,
|
||||
ReloadRef,
|
||||
ClearWindows,
|
||||
CreateWindow,
|
||||
|
@ -1,88 +1,17 @@
|
||||
<script setup>
|
||||
import { ref, reactive, defineComponent, TransitionGroup } from 'vue'
|
||||
import { RouterLink, RouterView } from 'vue-router'
|
||||
import { defineAsyncComponent } from 'vue'
|
||||
|
||||
import LoginWindow from '@/views/windows/LoginWindow.vue'
|
||||
import RegisterWindow from '@/views/windows/RegisterWindow.vue'
|
||||
import ExampleWindow from '@/views/windows/ExampleWindow.vue'
|
||||
import MainMenuWindow from '@/views/windows/MainMenuWindow.vue'
|
||||
import EditProfileWindow from '@/views/windows/EditProfileWindow.vue'
|
||||
import SettingsWindow from '../windows/SettingsWindow.vue'
|
||||
|
||||
import { Windows, ReloadRef } from '@/services/Windows';
|
||||
import CampaignListWindow from '../windows/campaigns/CampaignListWindow.vue'
|
||||
import NewCampaignWindow from '../windows/campaigns/NewCampaignWindow.vue'
|
||||
import JoinCampaignWindow from '../windows/campaigns/JoinCampaignWindow.vue'
|
||||
import CampaignPreviewWindow from '@/views/windows/campaigns/CampaignPreviewWindow.vue'
|
||||
import ChatWindow from '../windows/game/ChatWindow.vue'
|
||||
import DiceWindow from '../windows/game/DiceWindow.vue'
|
||||
import MapButtons from '../windows/dm/MapButtons.vue'
|
||||
import EnvironmentWindow from '../windows/dm/EnvironmentWindow.vue'
|
||||
import SystemSelectorWindow from '../windows/campaigns/SystemSelectorWindow.vue'
|
||||
import MapWindow from '../windows/dm/MapWindow.vue'
|
||||
import CombatWindow from '../windows/game/CombatWindow.vue'
|
||||
import EntityWindow from '../windows/dm/EntityWindow.vue'
|
||||
import CharactersWindow from '../windows/game/CharactersWindow.vue'
|
||||
import WelcomeWindow from '../windows/WelcomeWindow.vue'
|
||||
import CompendiumWindow from '../windows/CompendiumWindow.vue'
|
||||
import BookAnvilWindow from '../windows/BookAnvilWindow.vue'
|
||||
import IconSelectorWindow from '../windows/selectors/IconSelectorWindow.vue'
|
||||
import DatabaseWindow from '../windows/game/DatabaseWindow.vue'
|
||||
import AccountManagementWindow from '../windows/settings/AccountManagementWindow.vue'
|
||||
import PluginManagementWindow from '../windows/settings/PluginManagementWindow.vue'
|
||||
import { TransitionGroup } from 'vue'
|
||||
import { Windows, ReloadRef, WindowMap } from '@/services/Windows';
|
||||
|
||||
// Gestionem ventanas
|
||||
const reload = ReloadRef();
|
||||
const windows = Windows();
|
||||
|
||||
let WindowMap = {
|
||||
test: ExampleWindow,
|
||||
login: LoginWindow,
|
||||
main_menu: MainMenuWindow,
|
||||
welcome: WelcomeWindow,
|
||||
register: RegisterWindow,
|
||||
edit_profile: EditProfileWindow,
|
||||
settings: SettingsWindow,
|
||||
campaign_list: CampaignListWindow,
|
||||
new_campaign: NewCampaignWindow,
|
||||
join_campaign: JoinCampaignWindow,
|
||||
campaign_preview: CampaignPreviewWindow,
|
||||
chat: ChatWindow,
|
||||
dice_menu: DiceWindow,
|
||||
map_buttons: MapButtons,
|
||||
environment: EnvironmentWindow,
|
||||
system_selector: SystemSelectorWindow,
|
||||
map_window: MapWindow,
|
||||
combat_window: CombatWindow,
|
||||
entity_window: EntityWindow,
|
||||
characters_window: CharactersWindow,
|
||||
compendium_window: CompendiumWindow,
|
||||
book_anvil_window: BookAnvilWindow,
|
||||
icon_selector: IconSelectorWindow,
|
||||
database: DatabaseWindow,
|
||||
plugin_management: PluginManagementWindow,
|
||||
account_management: AccountManagementWindow
|
||||
};
|
||||
|
||||
async function InjectSystemWindows(system){
|
||||
// Hack
|
||||
let systemWidows = {
|
||||
character_sheet: (await import(`../../../plugins/${system}/views/CharacterSheet.vue`)).default,
|
||||
item_sheet: (await import(`../../../plugins/${system}/views/ItemSheet.vue`)).default,
|
||||
create_item_prompt: (await import(`../../../plugins/${system}/views/CreateItemPrompt.vue`)).default,
|
||||
};
|
||||
|
||||
WindowMap = {...WindowMap, ...systemWidows};
|
||||
}
|
||||
|
||||
InjectSystemWindows('dnd-5e')
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="window-container" :key="reload">
|
||||
<TransitionGroup name="window">
|
||||
<component v-for="win in windows" :is="WindowMap[win.type]" :key="win.id" :data="win"></component>
|
||||
<component v-for="win in windows" :is="WindowMap()[win.type]" :key="win.id" :data="win"></component>
|
||||
</TransitionGroup>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -4,7 +4,8 @@ import WindowHandle from '@/views/partials/WindowHandle.vue';
|
||||
import { onMounted, ref } from 'vue';
|
||||
import { SetupHandle, SetSize, ResetPosition } from '@/services/Windows';
|
||||
import GameEntry from '../../partials/GameEntry.vue';
|
||||
import { CreateWindow, SetMinSize, SetMaxSize, SetResizable } from '../../../services/Windows';
|
||||
import { CreateWindow, SetMinSize, SetMaxSize, SetResizable, ClearWindow } from '../../../services/Windows';
|
||||
import { GetCampaignModuleName } from '../../../services/Campaign';
|
||||
const props = defineProps(['data']);
|
||||
const data = props.data;
|
||||
|
||||
@ -24,7 +25,11 @@ onMounted(() => {
|
||||
|
||||
// temp
|
||||
function openCharacterSheet(){
|
||||
CreateWindow('character_sheet');
|
||||
CreateWindow(`${GetCampaignModuleName()}/character_sheet`, {
|
||||
id: 'character_sheet',
|
||||
title: 'Character Sheet',
|
||||
close: () => ClearWindow(`character_sheet`)
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
@ -7,6 +7,7 @@ import IconButton from '@/views/partials/game/IconButton.vue'
|
||||
import ConceptList from '../../partials/ConceptList.vue';
|
||||
import { FetchConcepts, GetConcepts } from '../../../services/Data';
|
||||
import Tabs from '../../partials/Tabs.vue';
|
||||
import { GetCampaignModuleName } from '../../../services/Campaign';
|
||||
|
||||
const handle = ref(null);
|
||||
|
||||
@ -33,12 +34,13 @@ onMounted(() => {
|
||||
FetchConcepts();
|
||||
});
|
||||
function OpenCreateItemPrompt(){
|
||||
CreateWindow('create_item_prompt', {id: 'create_item_prompt', title: 'Create Item', close: () => ClearWindow('create_item_prompt')})
|
||||
CreateWindow(`${GetCampaignModuleName()}/create_item_prompt`, {id: 'create_item_prompt', title: 'Create Item', close: () => ClearWindow('create_item_prompt')})
|
||||
}
|
||||
|
||||
|
||||
function OpenConcept(element){
|
||||
CreateWindow('item_sheet', {
|
||||
console.log(`${GetCampaignModuleName()}/item_sheet`);
|
||||
CreateWindow(`${GetCampaignModuleName()}/item_sheet`, {
|
||||
id: 'item_sheet_' + element._id,
|
||||
title: 'Edit Item',
|
||||
item_id: element._id,
|
||||
|
@ -4,6 +4,23 @@
|
||||
function Main(Api){
|
||||
console.log("Hello World!");
|
||||
console.log(Api);
|
||||
|
||||
Api.Modules.CreateModule({
|
||||
"id": "dnd-5e",
|
||||
"title": "Dungeons & Dragons 5e",
|
||||
"description": "Dungeons & Dragons Fifth edition game system support",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Aran Roig"
|
||||
}
|
||||
],
|
||||
"version": "1.0.0",
|
||||
"color": "#e92026"
|
||||
});
|
||||
|
||||
Api.Windows.InjectWindow('dnd-5e', 'character_sheet', 'CharacterSheet');
|
||||
Api.Windows.InjectWindow('dnd-5e', 'item_sheet', 'ItemSheet');
|
||||
Api.Windows.InjectWindow('dnd-5e', 'create_item_prompt', 'CreateItemPrompt');
|
||||
}
|
||||
|
||||
export { Main };
|
@ -53,7 +53,6 @@ console.log("Generated " + iconCount + " icons");
|
||||
// #region locales
|
||||
|
||||
const locales = fs.readdirSync("./locales");
|
||||
console.log(locales);
|
||||
|
||||
function deepMerge(obj1, obj2) {
|
||||
for (let key in obj2) {
|
||||
@ -106,4 +105,5 @@ fs.writeFileSync(outputPath, JSON.stringify({
|
||||
icons,
|
||||
plugins
|
||||
}, null, "\t"));
|
||||
console.log("Installed plugins")
|
||||
// #endregion
|
Loading…
Reference in New Issue
Block a user