-
추가 정보
-
명성
+
추가 정보
+
명성
{{ formatHonor(general.experience) }} ({{ general.experience.toLocaleString() }})
-
계급
-
{{ general.dedLevelText }} ({{ general.dedication.toLocaleString() }}
-
봉급
+
계급
+
{{ general.dedLevelText }} ({{ general.dedication.toLocaleString() }})
+
봉급
{{ general.bill.toLocaleString() }}
-
전투
+
전투
{{ general.warnum.toLocaleString() }}
-
계략
+
계략
{{ general.firenum.toLocaleString() }}
-
사관
+
사관
{{ general.belong }}년차
-
승률
+
승률
{{ ((general.killnum / Math.max(general.warnum, 1)) * 100).toFixed(2) }} %
-
승리
+
승리
{{ general.killnum.toLocaleString() }}
-
패배
+
패배
{{ general.deathnum.toPrecision() }}
-
살상률
+
살상률
{{
((general.killcrew / Math.max(general.deathcrew, 1)) * 100).toLocaleString(undefined, {
@@ -33,30 +33,30 @@
}}
%
-
사살
+
사살
{{ general.killcrew.toLocaleString() }}
-
피살
+
피살
{{ general.deathcrew.toLocaleString() }}
-
숙련도
+
+
숙련도
- {{ dexType }}
+ {{ dexType }}
{{ dexInfo.name }}
{{ (dex / 1000).toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 }) }}K
-
-
+
예약턴
-
-
- {{ turn.brief }}
-
-
-
NPC
+
+ {{ turn.brief }}
+
@@ -69,6 +69,7 @@ import { formatDexLevel, type DexInfo } from "@/utilGame/formatDexLevel";
import { formatHonor } from "@/utilGame/formatHonor";
const props = defineProps<{
general: GeneralListItemP1;
+ showCommandList?: boolean;
}>();
const dexList = computed((): [string, number, DexInfo][] => {
@@ -83,13 +84,14 @@ const dexList = computed((): [string, number, DexInfo][] => {
diff --git a/hwe/ts/components/SammoBar.vue b/hwe/ts/components/SammoBar.vue
index 83584947..b6005c7d 100644
--- a/hwe/ts/components/SammoBar.vue
+++ b/hwe/ts/components/SammoBar.vue
@@ -1,25 +1,40 @@
@@ -30,6 +45,7 @@ import { clamp } from "lodash";
const imagePath = window.pathConfig.gameImage;
const props = defineProps<{
height: 7 | 10;
+ width?: string;
percent: number;
}>();
diff --git a/hwe/ts/defs/API/Nation.ts b/hwe/ts/defs/API/Nation.ts
index a1f64fe4..b51d68cc 100644
--- a/hwe/ts/defs/API/Nation.ts
+++ b/hwe/ts/defs/API/Nation.ts
@@ -1,4 +1,4 @@
-import type { ValuesOf, TurnObj } from "@/defs";
+import type { ValuesOf, TurnObj, NationStaticItem } from "@/defs";
import type { GameObjClassKey } from "@/defs/GameObj";
import type { ValidResponse } from "@/SammoAPI";
@@ -127,3 +127,29 @@ export type RawGeneralListP2 = ValidResponse & {
}
export type GeneralListResponse = RawGeneralListP0 | RawGeneralListP1 | RawGeneralListP2;
+
+export type NationItem = NationStaticItem & {
+ gold: number;
+ rice: number;
+ bill: number;
+ rate: number;
+ secretlimit: number;
+ chief_set: number;
+ scout: number;
+ war: number;
+ strategic_cmd_limit: number;
+ surlimit: number;
+ tech: number;
+}
+
+export type LiteNationInfoResponse = ValidResponse & {
+ nation: NationStaticItem;
+}
+
+export type NationInfoResponse = (ValidResponse & {
+ nation: NationStaticItem;
+}) | (ValidResponse &{
+ nation: NationItem;
+ impossibleStrategicCommandLists: [string, number][];
+ troops: Record;
+})
\ No newline at end of file
diff --git a/hwe/ts/v_battleCenter.ts b/hwe/ts/v_battleCenter.ts
new file mode 100644
index 00000000..765a8cc5
--- /dev/null
+++ b/hwe/ts/v_battleCenter.ts
@@ -0,0 +1,20 @@
+import "@scss/nationGeneral.scss";
+import "ag-grid-community/dist/styles/ag-grid.css";
+import "ag-grid-community/dist/styles/ag-theme-balham-dark.css";
+import "@scss/battleLog.scss";
+import { createApp } from 'vue'
+import PageBattleCenter from '@/PageBattleCenter.vue';
+import { BootstrapVue3, BToastPlugin } from 'bootstrap-vue-3';
+import { auto500px } from './util/auto500px';
+import { htmlReady } from "./util/htmlReady";
+import { insertCustomCSS } from "./util/customCSS";
+
+
+
+
+auto500px();
+
+htmlReady(() => {
+ insertCustomCSS();
+});
+createApp(PageBattleCenter).use(BootstrapVue3).use(BToastPlugin).mount('#app');
\ No newline at end of file
diff --git a/hwe/v_battleCenter.php b/hwe/v_battleCenter.php
new file mode 100644
index 00000000..0bdcbb64
--- /dev/null
+++ b/hwe/v_battleCenter.php
@@ -0,0 +1,43 @@
+setReadOnly();
+$userID = Session::getUserID();
+
+$db = DB::db();
+$gameStor = KVStorage::getStorage($db, 'game_env');
+$gen = Util::getReq('gen', 'int');
+?>
+
+
+
+
+
+
+
+ = UniqueConst::$serverName ?>: 감찰부
+ = WebUtil::printStaticValues([
+ 'staticValues' => [
+ 'serverNick' => DB::prefix(),
+ 'mapName' => GameConst::$mapName,
+ 'unitSet' => GameConst::$unitSet,
+ ],
+ 'queryValues' => [
+ 'generalID' => $gen,
+ ]
+ ], false) ?>
+ = WebUtil::printJS('../d_shared/common_path.js') ?>
+ = WebUtil::printCSS('../d_shared/common.css') ?>
+
+ = WebUtil::printDist('vue', 'v_battleCenter', true) ?>
+
+
+
+
+
+
+
\ No newline at end of file