feat: GlobalMenu Component(wip)
This commit is contained in:
+36
-5
@@ -15,7 +15,14 @@
|
||||
<!-- eslint-disable-next-line vue/max-attributes-per-line -->
|
||||
<BContainer v-if="asyncReady" id="container" :position="'position-relative'" :toast="{ root: true }" class="bg0">
|
||||
<main class="gx-0">
|
||||
<div class="commonToolbar">툴바?</div>
|
||||
<div class="commonToolbar">
|
||||
<GlobalMenu
|
||||
v-if="globalMenu && globalInfo"
|
||||
:globalInfo="globalInfo"
|
||||
:modelValue="globalMenu"
|
||||
variant="sammo-base2"
|
||||
/>
|
||||
</div>
|
||||
<div class="scenarioName">시나리오</div>
|
||||
<div v-if="frontInfo" class="gameInfo">
|
||||
<div class="subScenarioName">{{ globalInfo.scenarioText }}</div>
|
||||
@@ -111,7 +118,7 @@
|
||||
:showSecret="showSecret"
|
||||
:myLevel="generalInfo.officerLevel"
|
||||
:nationLevel="nationStaticInfo?.level ?? 0"
|
||||
:nationColor="nationStaticInfo?.color.substring(1,7) ?? '000000'"
|
||||
:nationColor="nationStaticInfo?.color.substring(1, 7) ?? '000000'"
|
||||
/>
|
||||
</div>
|
||||
<div id="actionMiniPlateSub" class="gx-0 row">
|
||||
@@ -162,7 +169,14 @@
|
||||
:permissionLevel="generalInfo.permission"
|
||||
ref="msgPanel"
|
||||
/>
|
||||
<div class="commonToolbar">툴바?</div>
|
||||
<div class="commonToolbar">
|
||||
<GlobalMenu
|
||||
v-if="globalMenu && globalInfo"
|
||||
:globalInfo="globalInfo"
|
||||
:modelValue="globalMenu"
|
||||
variant="sammo-base2"
|
||||
/>
|
||||
</div>
|
||||
</main>
|
||||
</BContainer>
|
||||
<div v-else>서버 갱신 중입니다.</div>
|
||||
@@ -188,14 +202,14 @@ declare const formatCityInfo: (city: MapCityParsedRaw) => MapCityParsed;
|
||||
<script lang="ts" setup>
|
||||
import { BContainer, BButton, useToast } from "bootstrap-vue-3";
|
||||
import { isString } from "lodash";
|
||||
import { computed, provide, ref, watch } from "vue";
|
||||
import { computed, onMounted, provide, ref, watch } from "vue";
|
||||
import { GameConstStore, getGameConstStore } from "./GameConstStore";
|
||||
import { SammoAPI, type InvalidResponse } from "./SammoAPI";
|
||||
import { parseTime } from "./util/parseTime";
|
||||
import { unwrap } from "./util/unwrap";
|
||||
import Denque from "denque";
|
||||
import { formatLog } from "@/utilGame/formatLog";
|
||||
import type { ExecuteResponse, GetFrontInfoResponse } from "./defs/API/Global";
|
||||
import type { ExecuteResponse, GetFrontInfoResponse, GetMenuResponse } from "./defs/API/Global";
|
||||
import { delay } from "./util/delay";
|
||||
import CityBasicCard from "./components/CityBasicCard.vue";
|
||||
import NationBasicCard from "./components/NationBasicCard.vue";
|
||||
@@ -210,6 +224,7 @@ import PartialReservedCommand from "./PartialReservedCommand.vue";
|
||||
import AutorunInfo from "./components/AutorunInfo.vue";
|
||||
import { scrollHardTo } from "./util/scrollHardTo";
|
||||
import MainControlBar from "./components/MainControlBar.vue";
|
||||
import GlobalMenu from "./components/GlobalMenu.vue";
|
||||
|
||||
const { serverName, serverNick, serverID } = staticValues;
|
||||
|
||||
@@ -393,6 +408,22 @@ watch(refreshCounter, async () => {
|
||||
}
|
||||
});
|
||||
|
||||
const globalMenu = ref<GetMenuResponse["menu"]>();
|
||||
onMounted(async () => {
|
||||
try {
|
||||
const response = await SammoAPI.Global.GetGlobalMenu();
|
||||
globalMenu.value = response.menu;
|
||||
} catch (e) {
|
||||
if (isString(e)) {
|
||||
toasts.danger({
|
||||
title: "메뉴 갱신 실패",
|
||||
body: `${e}`,
|
||||
});
|
||||
}
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
|
||||
const frontInfo = ref<GetFrontInfoResponse>();
|
||||
const globalInfo = ref<GetFrontInfoResponse["global"]>({} as GetFrontInfoResponse["global"]);
|
||||
const generalInfo = ref<GetFrontInfoResponse["general"]>();
|
||||
|
||||
Reference in New Issue
Block a user