feat: 新增NPC与外交逻辑,优化UI组件结构

重构并精简了部分UI组件,移除冗余弹窗与详情组件,新增NPC相关逻辑(npcBehaviorLogic、npcGrowthLogic、npcStore等)及外交逻辑(diplomaticLogic、DiplomacyView)。完善分页、标签、复选框等通用UI组件。优化战报弹窗,调整README下载链接为相对路径,修复部分国际化内容。
This commit is contained in:
谦君
2025-12-15 08:23:45 +08:00
parent 44580909a3
commit 9b9fda0400
164 changed files with 18628 additions and 2775 deletions

View File

@@ -62,6 +62,7 @@ export default {
officers: 'Офицеры',
simulator: 'Симулятор',
galaxy: 'Галактика',
diplomacy: 'Diplomacy',
messages: 'Сообщения',
settings: 'Настройки',
gm: 'GM'
@@ -97,6 +98,8 @@ export default {
coordinates: 'Координаты',
switchToMoon: 'На луну',
backToPlanet: 'Вернуться на планету',
switchPlanet: 'Переключить планету',
currentPlanet: 'Текущая планета',
fields: 'Поля',
temperature: 'Температура',
homePlanet: 'Родная планета',
@@ -112,6 +115,7 @@ export default {
crystalMine: 'Рудник кристалла',
deuteriumSynthesizer: 'Синтезатор дейтерия',
solarPlant: 'Солнечная электростанция',
fusionReactor: 'Термоядерный реактор',
roboticsFactory: 'Фабрика роботов',
naniteFactory: 'Нанитная фабрика',
shipyard: 'Верфь',
@@ -120,6 +124,8 @@ export default {
crystalStorage: 'Хранилище кристалла',
deuteriumTank: 'Цистерна дейтерия',
darkMatterCollector: 'Коллектор тёмной материи',
darkMatterTank: 'Резервуар тёмной материи',
missileSilo: 'Ракетная шахта',
terraformer: 'Терраформер',
lunarBase: 'Лунная база',
sensorPhalanx: 'Сенсорная фаланга',
@@ -130,13 +136,26 @@ export default {
consumption: 'Потребление',
totalCost: 'Общая стоимость',
totalPoints: 'Общие очки',
levelRange: 'Диапазон уровней'
levelRange: 'Диапазон уровней',
capacity: 'Capacity/Effect',
storageCapacity: 'Capacity',
energyProduction: 'Energy Production',
fleetStorage: 'Fleet Storage',
buildQueue: 'Build Queue',
buildQueueBonus: 'Очередь строительства',
spaceBonus: 'Бонус пространства',
buildSpeedBonus: 'Бонус скорости строительства',
researchSpeedBonus: 'Бонус скорости исследования',
planetSpace: 'Planet Space',
moonSpace: 'Moon Space',
missileCapacity: 'Missile Capacity'
},
buildingDescriptions: {
metalMine: 'Добывает металлические ресурсы',
crystalMine: 'Добывает кристаллические ресурсы',
deuteriumSynthesizer: 'Синтезирует дейтериевые ресурсы',
solarPlant: 'Обеспечивает энергией',
fusionReactor: 'Использует дейтерий для производства большого количества энергии',
roboticsFactory: 'Ускоряет скорость строительства',
naniteFactory: 'Увеличивает вместимость очереди строительства, +1 за уровень (макс 10 уровней)',
shipyard: 'Строит корабли',
@@ -145,6 +164,8 @@ export default {
crystalStorage: 'Увеличивает ёмкость хранилища кристалла',
deuteriumTank: 'Увеличивает ёмкость хранилища дейтерия',
darkMatterCollector: 'Собирает редкие ресурсы тёмной материи',
darkMatterTank: 'Увеличивает ёмкость хранилища тёмной материи',
missileSilo: 'Хранит и запускает ракеты, 10 ракет на уровень',
terraformer: 'Терраформирует поверхность планеты, увеличивает доступное пространство на 5 за уровень',
lunarBase: 'Увеличивает доступное пространство на луне, +5 пространства за уровень',
sensorPhalanx: 'Обнаруживает активность флота в окружающих системах',
@@ -156,11 +177,15 @@ export default {
heavyFighter: 'Тяжёлый истребитель',
cruiser: 'Крейсер',
battleship: 'Линкор',
battlecruiser: 'Линейный крейсер',
bomber: 'Бомбардировщик',
destroyer: 'Эсминец',
smallCargo: 'Малый транспорт',
largeCargo: 'Большой транспорт',
colonyShip: 'Колонизатор',
recycler: 'Переработчик',
espionageProbe: 'Шпионский зонд',
solarSatellite: 'Солнечный спутник',
darkMatterHarvester: 'Сборщик тёмной материи',
deathstar: 'Звезда Смерти'
},
@@ -169,11 +194,15 @@ export default {
heavyFighter: 'Тяжелобронированный истребитель',
cruiser: 'Средний боевой корабль, сбалансированная атака и защита',
battleship: 'Мощный боевой корабль',
battlecruiser: 'Быстрый мощный боевой корабль, отлично атакует линкоры',
bomber: 'Специализированный корабль для атаки оборонительных сооружений',
destroyer: 'Охотник, специализирующийся на уничтожении крупных кораблей',
smallCargo: 'Транспортирует небольшое количество ресурсов',
largeCargo: 'Транспортирует большое количество ресурсов',
colonyShip: 'Используется для колонизации новых планет',
recycler: 'Собирает ресурсы с поля обломков',
espionageProbe: 'Разведывает вражеские планеты',
solarSatellite: 'Обеспечивает дополнительную энергию, генерирует 50 энергии на спутник',
darkMatterHarvester: 'Специальный корабль для сбора тёмной материи',
deathstar: 'Абсолютное оружие, способное уничтожать целые планеты'
},
@@ -186,6 +215,8 @@ export default {
plasmaTurret: 'Плазменная турель',
smallShieldDome: 'Малый щитовой купол',
largeShieldDome: 'Большой щитовой купол',
antiBallisticMissile: 'Противоракета',
interplanetaryMissile: 'Межпланетная ракета',
planetaryShield: 'Планетарный щит'
},
defenseDescriptions: {
@@ -197,13 +228,23 @@ export default {
plasmaTurret: 'Мощное оборонительное сооружение',
smallShieldDome: 'Малый щит, защищающий всю планету',
largeShieldDome: 'Большой щит, защищающий всю планету',
antiBallisticMissile: 'Перехватывает вражеские ракеты, может перехватить 1 межпланетную ракету',
interplanetaryMissile: 'Может атаковать оборонительные сооружения на других планетах',
planetaryShield: 'Суперщит, защищающий планету от атак уничтожения'
},
research: {
researchTime: 'Время исследования',
totalCost: 'Общая стоимость',
totalPoints: 'Общие очки',
levelRange: 'Диапазон уровней'
levelRange: 'Диапазон уровней',
capacity: 'Capacity/Effect',
storageCapacity: 'Capacity',
energyProduction: 'Energy Production',
fleetStorage: 'Fleet Storage',
buildQueue: 'Build Queue',
planetSpace: 'Planet Space',
moonSpace: 'Moon Space',
missileCapacity: 'Missile Capacity'
},
technologies: {
energyTechnology: 'Энергетическая технология',
@@ -212,6 +253,12 @@ export default {
hyperspaceTechnology: 'Гиперпространственная технология',
plasmaTechnology: 'Плазменная технология',
computerTechnology: 'Компьютерная технология',
espionageTechnology: 'Шпионаж',
weaponsTechnology: 'Оружие',
shieldingTechnology: 'Щиты',
armourTechnology: 'Броня',
astrophysics: 'Астрофизика',
gravitonTechnology: 'Гравитоны',
combustionDrive: 'Реактивный двигатель',
impulseDrive: 'Импульсный двигатель',
hyperspaceDrive: 'Гиперпространственный двигатель',
@@ -226,11 +273,18 @@ export default {
hyperspaceTechnology: 'Технология гиперпространственных прыжков',
plasmaTechnology: 'Технология плазменного оружия',
computerTechnology: 'Увеличивает вместимость очереди исследований, +1 за уровень (макс 10 уровней)',
espionageTechnology: 'Повышает эффективность зондов, +1 уровень шпионажа за уровень',
weaponsTechnology: 'Увеличивает силу атаки кораблей и обороны на 10% за уровень',
shieldingTechnology: 'Увеличивает щиты кораблей и обороны на 10% за уровень',
armourTechnology: 'Увеличивает броню кораблей и обороны на 10% за уровень',
astrophysics: 'Каждый уровень добавляет 1 слот колонии и повышает шанс успеха экспедиций',
gravitonTechnology: 'Изучает манипуляцию гравитонами, требуется для Звезды смерти',
combustionDrive: 'Базовая технология двигателей',
impulseDrive: 'Средняя технология двигателей',
hyperspaceDrive: 'Продвинутая технология двигателей',
darkMatterTechnology: 'Исследование свойств и применения тёмной материи',
terraformingTechnology: 'Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 3 за уровень',
terraformingTechnology:
'Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 3 за уровень',
planetDestructionTech: 'Исследование ужасающей технологии уничтожения целых планет'
},
officers: {
@@ -293,7 +347,9 @@ export default {
demolish: 'Снести',
demolishRefund: 'Возврат от сноса',
demolishFailed: 'Снос не удался',
demolishFailedMessage: 'Невозможно снести это здание. Проверьте, не заполнена ли очередь строительства или уровень здания не равен 0.'
demolishFailedMessage: 'Невозможно снести это здание. Проверьте, не заполнена ли очередь строительства или уровень здания не равен 0.',
confirmDemolish: '',
confirmDemolishMessage: ''
},
researchView: {
title: 'Исследования',
@@ -382,6 +438,7 @@ export default {
all: 'Все',
targetCoordinates: 'Целевые координаты',
galaxy: 'Галактика',
diplomacy: 'Diplomacy',
system: 'Система',
position: 'Позиция',
missionType: 'Тип миссии',
@@ -415,7 +472,11 @@ export default {
cannotSendToOwnPlanet: 'Невозможно отправить флот на свою планету',
cargoExceedsCapacity: 'Груз превышает вместимость',
noColonyShip: 'Для колонизационной миссии требуется колониальный корабль',
noDebrisAtTarget: 'Нет поля обломков по целевым координатам или поле обломков пусто'
noDebrisAtTarget: 'Нет поля обломков по целевым координатам или поле обломков пусто',
noDeathstar: 'Для миссии разрушения требуется Звезда Смерти',
giftMode: 'Режим подарка',
giftModeDescription: 'Отправить ресурсы в подарок',
estimatedReputationGain: 'Ожидаемый прирост репутации'
},
officersView: {
title: 'Офицеры',
@@ -455,11 +516,15 @@ export default {
title: 'Галактика',
selectCoordinates: 'Выбрать координаты',
galaxy: 'Галактика',
diplomacy: 'Diplomacy',
selectGalaxy: 'Выбрать галактику',
system: 'Система',
selectSystem: 'Выбрать систему',
view: 'Показать',
myPlanet: 'Моя планета',
myPlanets: 'Мои планеты',
npcPlanets: 'Планеты NPC',
selectPlanetToView: 'Выберите планету для просмотра',
totalPositions: 'Всего 10 позиций планет',
mine: 'Моя',
hostile: 'Враждебная',
@@ -481,12 +546,18 @@ export default {
colonizePlanetMessage:
'Вы уверены, что хотите колонизировать позицию [{coordinates}]?\n\nПерейдите на страницу флота, чтобы отправить колонизационный корабль.',
recyclePlanetMessage:
'Вы уверены, что хотите переработать обломки в позиции [{coordinates}]?\n\nПерейдите на страницу флота, чтобы отправить переработчики.'
'Вы уверены, что хотите переработать обломки в позиции [{coordinates}]?\n\nПерейдите на страницу флота, чтобы отправить переработчики.',
sendGift: 'Отправить подарок',
debris: 'Обломки',
giftPlanetTitle: 'Отправить подарок',
giftPlanetMessage:
'Вы уверены, что хотите отправить ресурсы в подарок планете [{coordinates}]?\n\nПерейдите на страницу флота, чтобы выбрать транспортные корабли и загрузить ресурсы.'
},
messagesView: {
title: 'Сообщения',
battles: 'Битвы',
spy: 'Разведка',
npc: 'NPC',
battleReports: 'Отчёты о боях',
spyReports: 'Отчёты разведки',
noBattleReports: 'Нет отчётов о боях',
@@ -517,7 +588,48 @@ export default {
hideRoundDetails: 'Скрыть детали раундов',
round: 'Раунд {round}',
attackerRemainingPower: 'Оставшаяся мощь нападающего',
defenderRemainingPower: 'Оставшаяся мощь защитника'
defenderRemainingPower: 'Оставшаяся мощь защитника',
spied: 'Шпионаж',
spiedNotification: 'Уведомление о шпионаже',
noSpiedNotifications: 'Нет уведомлений о шпионаже',
detected: 'Обнаружено',
undetected: 'Не обнаружено',
missions: 'Миссии',
noMissionReports: 'Нет отчётов о миссиях',
success: 'Успех',
failed: 'Неудача',
npcActivity: 'Активность NPC',
noNPCActivity: 'Нет уведомлений об активности NPC',
npcRecycleActivity: 'NPC перерабатывает обломки',
gifts: 'Подарки',
giftRejected: 'Отклонено',
noGiftNotifications: 'Нет уведомлений о подарках',
noGiftRejected: 'Нет отклоненных подарков',
giftFrom: 'Подарок от {npcName}',
giftRejectedBy: '{npcName} отклонил подарок',
giftResources: 'Ресурсы подарка',
rejectedResources: 'Отклоненные ресурсы',
expectedReputation: 'Ожидаемая репутация',
currentReputation: 'Текущая репутация',
acceptGift: 'Принять',
rejectGift: 'Отклонить',
rejectionReason: {
hostile: 'Они враждебны и не принимают подарки',
neutral_distrust: 'Они вам не доверяют',
polite_decline: 'Вежливо отказались'
}
},
missionReports: {
transportSuccess: 'Миссия транспортировки успешно завершена',
transportFailed: 'Миссия транспортировки провалена',
colonizeSuccess: 'Миссия колонизации успешна, новая планета создана',
colonizeFailed: 'Миссия колонизации провалена',
deploySuccess: 'Миссия размещения успешно завершена',
deployFailed: 'Миссия размещения провалена',
recycleSuccess: 'Миссия переработки успешно завершена',
recycleFailed: 'Миссия переработки провалена, нет обломков в целевой позиции',
destroySuccess: 'Миссия уничтожения планеты успешно выполнена',
destroyFailed: 'Миссия уничтожения планеты провалена'
},
simulatorView: {
title: 'Симулятор боя',
@@ -619,9 +731,82 @@ export default {
modifyOfficers: 'Изменить офицеров',
officersDesc: 'Быстрая установка времени истечения офицеров',
days: 'д',
npcTesting: 'Тестирование NPC',
npcTestingDesc: 'Тестирование разведки и атак NPC',
selectNPC: 'Выбрать NPC',
chooseNPC: 'Выберите NPC',
targetPlanet: 'Целевая планета',
chooseTarget: 'Выберите целевую планету',
testSpy: 'Тест разведки',
testAttack: 'Тест атаки',
testSpyAndAttack: 'Тест разведки и атаки',
initializeFleet: 'Инициализировать флот NPC',
accelerateMissions: 'Ускорить все миссии (5с)',
selectNPCFirst: 'Сначала выберите NPC',
npcNoProbes: 'У NPC нет шпионских зондов',
npcNoSpyReport: 'NPC нужно сначала разведать',
npcMissionFailed: 'Не удалось создать миссию',
dangerZone: 'Опасная зона',
dangerZoneDesc: 'Следующие операции необратимы',
resetGame: 'Сбросить игру',
resetGameConfirm: 'Вы уверены, что хотите сбросить игру? Все данные будут удалены!'
},
alerts: {
npcSpyIncoming: 'Приближается шпионский зонд NPC',
npcAttackIncoming: 'Атака флота NPC приближается!',
npcFleetIncoming: 'Приближается флот NPC',
ships: 'кораблей',
spiedBy: 'Разведан',
attackedBy: 'Атакован',
detectionSuccess: 'Разведка обнаружена',
detectionFailed: 'Разведка не обнаружена',
npcSpiedYourPlanet: 'NPC разведал вашу планету',
npcAttackedYourPlanet: 'NPC атаковал вашу планету'
},
diplomacy: {
title: 'Дипломатия',
description: 'Управление дипломатическими отношениями с NPC',
tabs: {
all: 'Все',
friendly: 'Дружественные',
neutral: 'Нейтральные',
hostile: 'Враждебные'
},
noNpcs: 'Нет NPC',
noFriendlyNpcs: 'Нет дружественных NPC',
noNeutralNpcs: 'Нет нейтральных NPC',
noHostileNpcs: 'Нет враждебных NPC',
recentEvents: 'Недавние события',
recentEventsDescription: 'Журнал последних дипломатических действий',
ago: 'назад',
status: {
friendly: 'Дружественный',
neutral: 'Нейтральный',
hostile: 'Враждебный'
},
planets: 'планет',
allies: 'союзников',
reputation: 'Репутация',
alliedWith: 'В союзе с',
more: 'еще',
actions: {
gift: 'Отправить подарок',
viewPlanets: 'Посмотреть планеты'
},
lastEvent: 'Последнее событие',
events: {
gift: 'Подарок отправлен',
attack: 'Атака',
allyAttacked: 'Союзник атакован',
spy: 'Шпионаж',
stealDebris: 'Обломки украдены'
}
},
pagination: {
previous: 'Предыдущая',
next: 'Следующая',
first: 'Первая',
last: 'Последняя',
page: 'Страница {page}'
}
}