feat: 사령턴 대상 선택 정보를 보강

도시·수도 지도와 명령별 국가/장수 상세 목록을 추가한다.\nRef 금액 프리셋과 현재 조건 기반 우선 정렬을 예약 입력에 연결한다.
This commit is contained in:
2026-08-18 13:12:24 +00:00
parent e4c4bd946f
commit 7da67da40f
13 changed files with 1292 additions and 129 deletions
@@ -22,6 +22,7 @@ const props = defineProps<{
showName: boolean;
mapScale: number;
selectOnly?: boolean;
readonly?: boolean;
}>();
const emit = defineEmits<{
@@ -33,18 +34,27 @@ const emit = defineEmits<{
const size = computed(() => (6 + props.city.level * 2) * props.mapScale);
const stateSize = computed(() => 8 * props.mapScale);
const stateOffset = computed(() => -6 * props.mapScale);
const selectCity = () => emit('select', props.city.id);
const selectCity = () => {
if (!props.readonly) emit('select', props.city.id);
};
</script>
<template>
<component
:is="props.selectOnly ? 'button' : RouterLink"
:is="props.readonly ? 'div' : props.selectOnly ? 'button' : RouterLink"
class="map-city"
:type="props.selectOnly ? 'button' : undefined"
:to="props.selectOnly ? undefined : { name: 'current-city', query: { cityId: props.city.id } }"
:type="!props.readonly && props.selectOnly ? 'button' : undefined"
:to="
props.selectOnly || props.readonly ? undefined : { name: 'current-city', query: { cityId: props.city.id } }
"
:class="[
`state-${props.city.stateClass}`,
{ mine: props.city.isMyCity, selected: props.city.selected, 'supply-off': !props.city.supply },
{
mine: props.city.isMyCity,
selected: props.city.selected,
'supply-off': !props.city.supply,
readonly: props.readonly,
},
]"
:style="{ left: `${props.city.x}px`, top: `${props.city.y}px` }"
@mouseenter="emit('hover', props.city.id)"
@@ -86,6 +96,10 @@ const selectCity = () => emit('select', props.city.id);
background: transparent;
}
.map-city.readonly {
cursor: default;
}
.city-dot {
border: 1px solid rgba(232, 221, 196, 0.6);
display: flex;