Removed dynamic imports
This commit is contained in:
parent
3e213e8db9
commit
9db8625faf
6 changed files with 64 additions and 62 deletions
|
@ -306,18 +306,20 @@ const msDisplayOptions = Object.values(AchievementDisplay).map(option => ({
|
||||||
value: option
|
value: option
|
||||||
}));
|
}));
|
||||||
|
|
||||||
registerSettingField(
|
globalBus.on("setupVue", () =>
|
||||||
jsx(() => (
|
registerSettingField(
|
||||||
<Select
|
jsx(() => (
|
||||||
title={jsx(() => (
|
<Select
|
||||||
<span class="option-title">
|
title={jsx(() => (
|
||||||
Show achievements
|
<span class="option-title">
|
||||||
<desc>Select which achievements to display based on criterias.</desc>
|
Show achievements
|
||||||
</span>
|
<desc>Select which achievements to display based on criterias.</desc>
|
||||||
))}
|
</span>
|
||||||
options={msDisplayOptions}
|
))}
|
||||||
onUpdate:modelValue={value => (settings.msDisplay = value as AchievementDisplay)}
|
options={msDisplayOptions}
|
||||||
modelValue={settings.msDisplay}
|
onUpdate:modelValue={value => (settings.msDisplay = value as AchievementDisplay)}
|
||||||
/>
|
modelValue={settings.msDisplay}
|
||||||
))
|
/>
|
||||||
|
))
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
|
@ -364,17 +364,19 @@ globalBus.on("loadSettings", settings => {
|
||||||
setDefault(settings, "hideChallenges", false);
|
setDefault(settings, "hideChallenges", false);
|
||||||
});
|
});
|
||||||
|
|
||||||
registerSettingField(
|
globalBus.on("setupVue", () =>
|
||||||
jsx(() => (
|
registerSettingField(
|
||||||
<Toggle
|
jsx(() => (
|
||||||
title={jsx(() => (
|
<Toggle
|
||||||
<span class="option-title">
|
title={jsx(() => (
|
||||||
Hide maxed challenges
|
<span class="option-title">
|
||||||
<desc>Hide challenges that have been fully completed.</desc>
|
Hide maxed challenges
|
||||||
</span>
|
<desc>Hide challenges that have been fully completed.</desc>
|
||||||
))}
|
</span>
|
||||||
onUpdate:modelValue={value => (settings.hideChallenges = value)}
|
))}
|
||||||
modelValue={settings.hideChallenges}
|
onUpdate:modelValue={value => (settings.hideChallenges = value)}
|
||||||
/>
|
modelValue={settings.hideChallenges}
|
||||||
))
|
/>
|
||||||
|
))
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
|
@ -115,24 +115,26 @@ document.onkeydown = function (e) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerInfoComponent(
|
globalBus.on("setupVue", () =>
|
||||||
jsx(() => {
|
registerInfoComponent(
|
||||||
const keys = Object.values(hotkeys).filter(hotkey => unref(hotkey?.enabled));
|
jsx(() => {
|
||||||
if (keys.length === 0) {
|
const keys = Object.values(hotkeys).filter(hotkey => unref(hotkey?.enabled));
|
||||||
return "";
|
if (keys.length === 0) {
|
||||||
}
|
return "";
|
||||||
return (
|
}
|
||||||
<div>
|
return (
|
||||||
<br />
|
<div>
|
||||||
<h4>Hotkeys</h4>
|
<br />
|
||||||
<div style="column-count: 2">
|
<h4>Hotkeys</h4>
|
||||||
{keys.map(hotkey => (
|
<div style="column-count: 2">
|
||||||
<div>
|
{keys.map(hotkey => (
|
||||||
<Hotkey hotkey={hotkey as GenericHotkey} /> {hotkey?.description}
|
<div>
|
||||||
</div>
|
<Hotkey hotkey={hotkey as GenericHotkey} /> {hotkey?.description}
|
||||||
))}
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
);
|
||||||
);
|
})
|
||||||
})
|
)
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,19 +1,15 @@
|
||||||
|
import { hasWon } from "data/projEntry";
|
||||||
import projInfo from "data/projInfo.json";
|
import projInfo from "data/projInfo.json";
|
||||||
import { globalBus } from "game/events";
|
import { globalBus } from "game/events";
|
||||||
import settings from "game/settings";
|
import settings from "game/settings";
|
||||||
import Decimal from "util/bignum";
|
import Decimal from "util/bignum";
|
||||||
import { loadingSave } from "util/save";
|
import { loadingSave } from "util/save";
|
||||||
import type { Ref } from "vue";
|
|
||||||
import { watch } from "vue";
|
import { watch } from "vue";
|
||||||
import player from "./player";
|
import player from "./player";
|
||||||
import state from "./state";
|
import state from "./state";
|
||||||
|
|
||||||
let intervalID: NodeJS.Timer | null = null;
|
let intervalID: NodeJS.Timer | null = null;
|
||||||
|
|
||||||
// Not imported immediately due to dependency cycles
|
|
||||||
// This gets set during startGameLoop(), and will only be used in the update function
|
|
||||||
let hasWon: null | Ref<boolean> = null;
|
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
let diff = (now - player.time) / 1e3;
|
let diff = (now - player.time) / 1e3;
|
||||||
|
@ -95,15 +91,15 @@ function update() {
|
||||||
|
|
||||||
/** Starts the game loop for the project, which updates the game in ticks. */
|
/** Starts the game loop for the project, which updates the game in ticks. */
|
||||||
export async function startGameLoop() {
|
export async function startGameLoop() {
|
||||||
hasWon = (await import("data/projEntry")).hasWon;
|
|
||||||
watch(hasWon, hasWon => {
|
|
||||||
if (hasWon) {
|
|
||||||
globalBus.emit("gameWon");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (settings.unthrottled) {
|
if (settings.unthrottled) {
|
||||||
requestAnimationFrame(update);
|
requestAnimationFrame(update);
|
||||||
} else {
|
} else {
|
||||||
intervalID = setInterval(update, 50);
|
intervalID = setInterval(update, 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
watch(hasWon, hasWon => {
|
||||||
|
if (hasWon) {
|
||||||
|
globalBus.emit("gameWon");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -3,12 +3,14 @@ import App from "App.vue";
|
||||||
import projInfo from "data/projInfo.json";
|
import projInfo from "data/projInfo.json";
|
||||||
import "game/notifications";
|
import "game/notifications";
|
||||||
import state from "game/state";
|
import state from "game/state";
|
||||||
|
import "util/galaxy";
|
||||||
import { load } from "util/save";
|
import { load } from "util/save";
|
||||||
import { useRegisterSW } from "virtual:pwa-register/vue";
|
import { useRegisterSW } from "virtual:pwa-register/vue";
|
||||||
import type { App as VueApp } from "vue";
|
import type { App as VueApp } from "vue";
|
||||||
import { createApp, nextTick } from "vue";
|
import { createApp, nextTick } from "vue";
|
||||||
import { useToast } from "vue-toastification";
|
import { useToast } from "vue-toastification";
|
||||||
import "util/galaxy";
|
import { globalBus } from "./game/events";
|
||||||
|
import { startGameLoop } from "./game/gameLoop";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
/**
|
/**
|
||||||
|
@ -56,8 +58,6 @@ requestAnimationFrame(async () => {
|
||||||
"padding: 4px;"
|
"padding: 4px;"
|
||||||
);
|
);
|
||||||
await load();
|
await load();
|
||||||
const { globalBus } = await import("./game/events");
|
|
||||||
const { startGameLoop } = await import("./game/gameLoop");
|
|
||||||
|
|
||||||
// Create Vue
|
// Create Vue
|
||||||
const vue = (window.vue = createApp(App));
|
const vue = (window.vue = createApp(App));
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import { LoadablePlayerData } from "components/saves/SavesManager.vue";
|
import { LoadablePlayerData } from "components/saves/SavesManager.vue";
|
||||||
|
import { fixOldSave, getInitialLayers } from "data/projEntry";
|
||||||
import projInfo from "data/projInfo.json";
|
import projInfo from "data/projInfo.json";
|
||||||
import { globalBus } from "game/events";
|
import { globalBus } from "game/events";
|
||||||
|
import { addLayer, layers, removeLayer } from "game/layers";
|
||||||
import type { Player } from "game/player";
|
import type { Player } from "game/player";
|
||||||
import player, { stringifySave } from "game/player";
|
import player, { stringifySave } from "game/player";
|
||||||
import settings, { loadSettings } from "game/settings";
|
import settings, { loadSettings } from "game/settings";
|
||||||
|
@ -101,8 +103,6 @@ export const loadingSave = ref(false);
|
||||||
export async function loadSave(playerObj: Partial<Player>): Promise<void> {
|
export async function loadSave(playerObj: Partial<Player>): Promise<void> {
|
||||||
console.info("Loading save", playerObj);
|
console.info("Loading save", playerObj);
|
||||||
loadingSave.value = true;
|
loadingSave.value = true;
|
||||||
const { layers, removeLayer, addLayer } = await import("game/layers");
|
|
||||||
const { fixOldSave, getInitialLayers } = await import("data/projEntry");
|
|
||||||
|
|
||||||
for (const layer in layers) {
|
for (const layer in layers) {
|
||||||
const l = layers[layer];
|
const l = layers[layer];
|
||||||
|
|
Loading…
Reference in a new issue