feat: MapViewer와 API의 버전이 같을 때에만 지도 출력

This commit is contained in:
2022-04-21 23:51:03 +09:00
parent 01d5f2cda9
commit 85f801df4d
3 changed files with 21 additions and 9 deletions
+9 -8
View File
@@ -35,7 +35,7 @@ function getHistoryMap($year, $month, ?string $serverID=null){
$map = DB::db()->queryFirstField('SELECT map FROM ng_history WHERE server_id = %s AND year=%i and month=%i',
$serverID,
$year,
$year,
$month);
if(!$map){
@@ -53,7 +53,7 @@ function getWorldMap($req){
if(is_array($req)){
$req = new MapRequest($req);
}
if($req->year && $req->month){
return getHistoryMap($req->year, $req->month, $req->serverID??null);
}
@@ -98,7 +98,7 @@ function getWorldMap($req){
$spyInfo = (object)null;
if($myNation){
$rawSpy = $db->queryFirstField('select `spy` from `nation` where `nation`=%i',
$rawSpy = $db->queryFirstField('select `spy` from `nation` where `nation`=%i',
$myNation);
if(strpos($rawSpy, '|') !== false || is_numeric($rawSpy)){
@@ -123,16 +123,16 @@ function getWorldMap($req){
$nationList = [];
foreach($db->query('select `nation`, `name`, `color`, `capital` from `nation`') as $row){
$nationList[] = [
Util::toInt($row['nation']),
$row['name'],
$row['color'],
Util::toInt($row['nation']),
$row['name'],
$row['color'],
Util::toInt($row['capital'])
];
}
if($myNation){
//굳이 타국 도시에 있는 아국 장수 리스트를 뽑을 이유가 없음. 일단 다 뽑자.
$shownByGeneralList =
$shownByGeneralList =
array_map('\\sammo\\Util::toInt',
$db->queryFirstColumn('select distinct `city` from `general` where `nation` = %i',
$myNation));
@@ -143,7 +143,7 @@ function getWorldMap($req){
$cityList = [];
foreach($db->query('select `city`, `level`, `state`, `nation`, `region`, `supply` from `city`') as $r){
$cityList[] =
$cityList[] =
array_map('\\sammo\\Util::toInt', [$r['city'], $r['level'], $r['state'], $r['nation'], $r['region'], $r['supply']]);
}
@@ -164,6 +164,7 @@ function getWorldMap($req){
'shownByGeneralList' => $shownByGeneralList,
'myCity' => $myCity,
'myNation' => $myNation,
'version' => 0,
'result' => true
];
}
+9 -1
View File
@@ -1,5 +1,6 @@
<template>
<div
v-if="(modelValue.version ?? 0) == CURRENT_MAP_VERSION"
:id="uuid"
:class="[
'world_map',
@@ -99,6 +100,13 @@
<div class="nation_name">{{ activatedCity?.nation }}</div>
</div>
</div>
<div v-else class="world_map">
<span class="map_title_text">
버전이 맞지 않습니다.<br />
렌더러 버전: {{ CURRENT_MAP_VERSION }}<br />
API 버전: {{ modelValue.version ?? 0 }}
</span>
</div>
</template>
<script lang="ts">
@@ -156,7 +164,7 @@ export type CityPositionMap = {
import "@/../scss/map.scss";
import { type PropType, toRef, inject, type Ref, ref, watch, type ComponentPublicInstance } from "vue";
import { v4 as uuidv4 } from "uuid";
import type { MapResult } from "@/defs";
import { CURRENT_MAP_VERSION, type MapResult } from "@/defs";
import { joinYearMonth } from "@/util/joinYearMonth";
import { parseYearMonth } from "@/util/parseYearMonth";
import vMyTooltip from "@/directives/vMyTooltip";
+3
View File
@@ -230,11 +230,14 @@ export const diplomacyStateInfo: Record<diplomacyState, diplomacyInfo> = {
7: { name: '불가침', color: 'green' },
}
export const CURRENT_MAP_VERSION = 0 as const;
//Map
type MapCityCompact = [number, number, number, number, number, number];
type MapNationCompact = [number, string, string, number];
export type MapResult = {
result: true,
version?: typeof CURRENT_MAP_VERSION,
startYear: number,
year: number,
month: number,