Part 3
This commit is contained in:
parent
55972e07af
commit
ede69a2a7a
@ -60,6 +60,10 @@ function _UpdatePlayers(data){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function GetCampaignModuleName(){
|
||||||
|
return GetCampaign().system;
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
_currentCampaign,
|
_currentCampaign,
|
||||||
_currentPlayer,
|
_currentPlayer,
|
||||||
@ -68,5 +72,6 @@ export {
|
|||||||
ConnectToCampaign,
|
ConnectToCampaign,
|
||||||
DisplayCampaign,
|
DisplayCampaign,
|
||||||
UpdateCampaignData,
|
UpdateCampaignData,
|
||||||
|
GetCampaignModuleName,
|
||||||
Disconnect
|
Disconnect
|
||||||
}
|
}
|
@ -24,8 +24,13 @@ function GetModule(id){
|
|||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CreateModule(moduleInfo, registeredWindows){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
ImportModule,
|
ImportModule,
|
||||||
|
CreateModule,
|
||||||
GetModules,
|
GetModules,
|
||||||
GetModule,
|
GetModule,
|
||||||
GetModulesToLoad,
|
GetModulesToLoad,
|
||||||
|
@ -1,7 +1,71 @@
|
|||||||
import { reactive, ref } from 'vue'
|
import { reactive, ref } from 'vue'
|
||||||
import { Disconnect } from './Campaign';
|
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
|
// Presets
|
||||||
const defValues = {
|
const defValues = {
|
||||||
@ -119,11 +183,6 @@ const defValues = {
|
|||||||
title: "Compendium",
|
title: "Compendium",
|
||||||
close: () => ClearWindow('compendium_window')
|
close: () => ClearWindow('compendium_window')
|
||||||
},
|
},
|
||||||
'character_sheet': {
|
|
||||||
id: 'character_sheet',
|
|
||||||
title: 'Character Sheet',
|
|
||||||
close: () => ClearWindow('character_sheet')
|
|
||||||
},
|
|
||||||
'book_anvil_window': {
|
'book_anvil_window': {
|
||||||
id: 'book_anvil_window',
|
id: 'book_anvil_window',
|
||||||
title: "Book Anvil",
|
title: "Book Anvil",
|
||||||
@ -147,6 +206,7 @@ const reload = ref(0);
|
|||||||
|
|
||||||
let ReloadRef = () => { return reload };
|
let ReloadRef = () => { return reload };
|
||||||
let Windows = () => { return windows };
|
let Windows = () => { return windows };
|
||||||
|
let WindowMap = () => { return windowMap };
|
||||||
|
|
||||||
let currentIndex = 10;
|
let currentIndex = 10;
|
||||||
|
|
||||||
@ -403,6 +463,8 @@ export {
|
|||||||
SetPosition,
|
SetPosition,
|
||||||
ResetPosition,
|
ResetPosition,
|
||||||
Windows,
|
Windows,
|
||||||
|
WindowMap,
|
||||||
|
InjectWindow,
|
||||||
ReloadRef,
|
ReloadRef,
|
||||||
ClearWindows,
|
ClearWindows,
|
||||||
CreateWindow,
|
CreateWindow,
|
||||||
|
@ -1,88 +1,17 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, defineComponent, TransitionGroup } from 'vue'
|
import { TransitionGroup } from 'vue'
|
||||||
import { RouterLink, RouterView } from 'vue-router'
|
import { Windows, ReloadRef, WindowMap } from '@/services/Windows';
|
||||||
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'
|
|
||||||
|
|
||||||
// Gestionem ventanas
|
// Gestionem ventanas
|
||||||
const reload = ReloadRef();
|
const reload = ReloadRef();
|
||||||
const windows = Windows();
|
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>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="window-container" :key="reload">
|
<div class="window-container" :key="reload">
|
||||||
<TransitionGroup name="window">
|
<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>
|
</TransitionGroup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -4,7 +4,8 @@ import WindowHandle from '@/views/partials/WindowHandle.vue';
|
|||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { SetupHandle, SetSize, ResetPosition } from '@/services/Windows';
|
import { SetupHandle, SetSize, ResetPosition } from '@/services/Windows';
|
||||||
import GameEntry from '../../partials/GameEntry.vue';
|
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 props = defineProps(['data']);
|
||||||
const data = props.data;
|
const data = props.data;
|
||||||
|
|
||||||
@ -24,7 +25,11 @@ onMounted(() => {
|
|||||||
|
|
||||||
// temp
|
// temp
|
||||||
function openCharacterSheet(){
|
function openCharacterSheet(){
|
||||||
CreateWindow('character_sheet');
|
CreateWindow(`${GetCampaignModuleName()}/character_sheet`, {
|
||||||
|
id: 'character_sheet',
|
||||||
|
title: 'Character Sheet',
|
||||||
|
close: () => ClearWindow(`character_sheet`)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -7,6 +7,7 @@ import IconButton from '@/views/partials/game/IconButton.vue'
|
|||||||
import ConceptList from '../../partials/ConceptList.vue';
|
import ConceptList from '../../partials/ConceptList.vue';
|
||||||
import { FetchConcepts, GetConcepts } from '../../../services/Data';
|
import { FetchConcepts, GetConcepts } from '../../../services/Data';
|
||||||
import Tabs from '../../partials/Tabs.vue';
|
import Tabs from '../../partials/Tabs.vue';
|
||||||
|
import { GetCampaignModuleName } from '../../../services/Campaign';
|
||||||
|
|
||||||
const handle = ref(null);
|
const handle = ref(null);
|
||||||
|
|
||||||
@ -33,12 +34,13 @@ onMounted(() => {
|
|||||||
FetchConcepts();
|
FetchConcepts();
|
||||||
});
|
});
|
||||||
function OpenCreateItemPrompt(){
|
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){
|
function OpenConcept(element){
|
||||||
CreateWindow('item_sheet', {
|
console.log(`${GetCampaignModuleName()}/item_sheet`);
|
||||||
|
CreateWindow(`${GetCampaignModuleName()}/item_sheet`, {
|
||||||
id: 'item_sheet_' + element._id,
|
id: 'item_sheet_' + element._id,
|
||||||
title: 'Edit Item',
|
title: 'Edit Item',
|
||||||
item_id: element._id,
|
item_id: element._id,
|
||||||
|
@ -4,6 +4,23 @@
|
|||||||
function Main(Api){
|
function Main(Api){
|
||||||
console.log("Hello World!");
|
console.log("Hello World!");
|
||||||
console.log(Api);
|
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 };
|
export { Main };
|
@ -53,7 +53,6 @@ console.log("Generated " + iconCount + " icons");
|
|||||||
// #region locales
|
// #region locales
|
||||||
|
|
||||||
const locales = fs.readdirSync("./locales");
|
const locales = fs.readdirSync("./locales");
|
||||||
console.log(locales);
|
|
||||||
|
|
||||||
function deepMerge(obj1, obj2) {
|
function deepMerge(obj1, obj2) {
|
||||||
for (let key in obj2) {
|
for (let key in obj2) {
|
||||||
@ -106,4 +105,5 @@ fs.writeFileSync(outputPath, JSON.stringify({
|
|||||||
icons,
|
icons,
|
||||||
plugins
|
plugins
|
||||||
}, null, "\t"));
|
}, null, "\t"));
|
||||||
|
console.log("Installed plugins")
|
||||||
// #endregion
|
// #endregion
|
Loading…
Reference in New Issue
Block a user