diff --git a/.gitignore b/.gitignore index 45cac7b..eeeace3 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ docs *.njsproj *.sln *.sw? +/docs +/docs/assets diff --git a/package.json b/package.json index e28483d..03b4898 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,11 @@ }, "private": true, "version": "1.2.5", +<<<<<<< Updated upstream "buildDate": "2025/12/15 21:21:23", +======= + "buildDate": "2025/12/15 21:59:38", +>>>>>>> Stashed changes "main": "dist-electron/main.js", "type": "module", "scripts": { diff --git a/src/locales/de.ts b/src/locales/de.ts index c802afd..b83d1cb 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -475,6 +475,11 @@ export default { arrivalTime: 'Ankunftszeit', returnTime: 'Rückkehrzeit', recallFleet: 'Flotte zurückrufen', + abortMission: '', + abortMissionTitle: '', + abortMissionWarning: '', + abortMissionSuccess: '', + abortMissionSuccessMessage: '', sendFailed: 'Senden fehlgeschlagen', sendFailedMessage: 'Bitte überprüfen Sie Flottenanzahl, Treibstoffverfügbarkeit oder Ladekapazitätsgrenzen.', recallFailed: 'Zurückrufen fehlgeschlagen', @@ -760,6 +765,8 @@ export default { officers: 'Offiziere', modifyResources: 'Ressourcen ändern', resourcesDesc: 'Planetenressourcen schnell ändern', + maxAllResources: '', + maxAllResourcesSuccess: '', modifyBuildings: 'Gebäude ändern', buildingsDesc: 'Gebäudelevel schnell festlegen', modifyResearch: 'Forschung ändern', @@ -799,7 +806,11 @@ export default { dangerZone: 'Gefahrenzone', dangerZoneDesc: 'Die folgenden Vorgänge sind irreversibel', resetGame: 'Spiel zurücksetzen', - resetGameConfirm: 'Möchten Sie das Spiel wirklich zurücksetzen? Alle Daten werden gelöscht!' + resetGameConfirm: 'Möchten Sie das Spiel wirklich zurücksetzen? Alle Daten werden gelöscht!', + completeAllQueues: '', + completeAllQueuesDesc: '', + completeQueues: '', + completeQueuesSuccess: '' }, alerts: { npcSpyIncoming: 'NPC-Spionagesonde nähert sich', diff --git a/src/locales/en.ts b/src/locales/en.ts index ecf2da3..56bcb83 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -475,6 +475,11 @@ export default { arrivalTime: 'Arrival Time', returnTime: 'Return Time', recallFleet: 'Recall Fleet', + abortMission: 'Abort Mission', + abortMissionTitle: 'Confirm Abort Mission', + abortMissionWarning: 'WARNING: Aborting this mission will permanently lose {ships} ships and {resources} resources!\n\nThis action is irreversible and the fleet and resources will not return.', + abortMissionSuccess: 'Mission Aborted', + abortMissionSuccessMessage: 'Mission has been aborted, fleet and resources are lost.', sendFailed: 'Send Failed', sendFailedMessage: 'Please check fleet count, fuel availability, or cargo capacity limits.', recallFailed: 'Recall Failed', @@ -756,6 +761,8 @@ export default { officers: 'Officers', modifyResources: 'Modify Resources', resourcesDesc: 'Quickly modify planet resources', + maxAllResources: 'Max All', + maxAllResourcesSuccess: 'All resources maxed out', modifyBuildings: 'Modify Buildings', buildingsDesc: 'Quickly set building levels', modifyResearch: 'Modify Research', @@ -795,7 +802,11 @@ export default { dangerZone: 'Danger Zone', dangerZoneDesc: 'The following operations are irreversible', resetGame: 'Reset Game', - resetGameConfirm: 'Are you sure you want to reset the game? This will delete all data!' + resetGameConfirm: 'Are you sure you want to reset the game? This will delete all data!', + completeAllQueues: 'Complete All Queues', + completeAllQueuesDesc: 'Instantly complete all building, research, ship, defense queues and fleet missions', + completeQueues: 'Complete Queues', + completeQueuesSuccess: 'Completed {buildingCount} building queues, {researchCount} research queues, {missionCount} fleet missions, {missileCount} missile attacks' }, alerts: { npcSpyIncoming: 'NPC Spy Probe Incoming', diff --git a/src/locales/ja.ts b/src/locales/ja.ts index eb17250..e5aed93 100644 --- a/src/locales/ja.ts +++ b/src/locales/ja.ts @@ -473,6 +473,11 @@ export default { arrivalTime: '到着時刻', returnTime: '帰還時刻', recallFleet: '艦隊召還', + abortMission: '', + abortMissionTitle: '', + abortMissionWarning: '', + abortMissionSuccess: '', + abortMissionSuccessMessage: '', sendFailed: '派遣失敗', sendFailedMessage: '艦隊数、燃料の充足、または積載量の制限を確認してください。', recallFailed: '召還失敗', @@ -751,6 +756,8 @@ export default { officers: '士官', modifyResources: '資源を変更', resourcesDesc: '惑星の資源を素早く変更', + maxAllResources: '', + maxAllResourcesSuccess: '', modifyBuildings: '建物を変更', buildingsDesc: '建物レベルを素早く設定', modifyResearch: '研究を変更', @@ -790,7 +797,11 @@ export default { dangerZone: '危険ゾーン', dangerZoneDesc: '以下の操作は元に戻せません', resetGame: 'ゲームをリセット', - resetGameConfirm: 'ゲームをリセットしてもよろしいですか?すべてのデータが削除されます!' + resetGameConfirm: 'ゲームをリセットしてもよろしいですか?すべてのデータが削除されます!', + completeAllQueues: '', + completeAllQueuesDesc: '', + completeQueues: '', + completeQueuesSuccess: '' }, alerts: { npcSpyIncoming: 'NPC偵察プローブが接近中', diff --git a/src/locales/ko.ts b/src/locales/ko.ts index 4717d9f..6b15975 100644 --- a/src/locales/ko.ts +++ b/src/locales/ko.ts @@ -473,6 +473,11 @@ export default { arrivalTime: '도착 시간', returnTime: '귀환 시간', recallFleet: '함대 소환', + abortMission: '', + abortMissionTitle: '', + abortMissionWarning: '', + abortMissionSuccess: '', + abortMissionSuccessMessage: '', sendFailed: '파견 실패', sendFailedMessage: '함대 수, 연료 충분 여부 또는 적재량 한계를 확인하세요.', recallFailed: '소환 실패', @@ -752,6 +757,8 @@ export default { officers: '장교', modifyResources: '자원 수정', resourcesDesc: '행성 자원을 빠르게 수정', + maxAllResources: '', + maxAllResourcesSuccess: '', modifyBuildings: '건물 수정', buildingsDesc: '건물 레벨을 빠르게 설정', modifyResearch: '연구 수정', @@ -791,7 +798,11 @@ export default { dangerZone: '위험 구역', dangerZoneDesc: '다음 작업은 되돌릴 수 없습니다', resetGame: '게임 초기화', - resetGameConfirm: '게임을 초기화하시겠습니까? 모든 데이터가 삭제됩니다!' + resetGameConfirm: '게임을 초기화하시겠습니까? 모든 데이터가 삭제됩니다!', + completeAllQueues: '', + completeAllQueuesDesc: '', + completeQueues: '', + completeQueuesSuccess: '' }, alerts: { npcSpyIncoming: 'NPC 정찰 프로브 접근 중', diff --git a/src/locales/ru.ts b/src/locales/ru.ts index f5efe03..d12fe11 100644 --- a/src/locales/ru.ts +++ b/src/locales/ru.ts @@ -476,6 +476,11 @@ export default { arrivalTime: 'Время прибытия', returnTime: 'Время возврата', recallFleet: 'Отозвать флот', + abortMission: '', + abortMissionTitle: '', + abortMissionWarning: '', + abortMissionSuccess: '', + abortMissionSuccessMessage: '', sendFailed: 'Отправка не удалась', sendFailedMessage: 'Пожалуйста, проверьте количество флота, наличие топлива или ограничения грузоподъёмности.', recallFailed: 'Отзыв не удался', @@ -759,6 +764,8 @@ export default { officers: 'Офицеры', modifyResources: 'Изменить ресурсы', resourcesDesc: 'Быстрое изменение ресурсов планеты', + maxAllResources: '', + maxAllResourcesSuccess: '', modifyBuildings: 'Изменить здания', buildingsDesc: 'Быстрая установка уровней зданий', modifyResearch: 'Изменить исследования', @@ -798,7 +805,11 @@ export default { dangerZone: 'Опасная зона', dangerZoneDesc: 'Следующие операции необратимы', resetGame: 'Сбросить игру', - resetGameConfirm: 'Вы уверены, что хотите сбросить игру? Все данные будут удалены!' + resetGameConfirm: 'Вы уверены, что хотите сбросить игру? Все данные будут удалены!', + completeAllQueues: '', + completeAllQueuesDesc: '', + completeQueues: '', + completeQueuesSuccess: '' }, alerts: { npcSpyIncoming: 'Приближается шпионский зонд NPC', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 0a66091..0671600 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -469,6 +469,11 @@ export default { arrivalTime: '到达时间', returnTime: '返回时间', recallFleet: '召回舰队', + abortMission: '终止任务', + abortMissionTitle: '确认终止任务', + abortMissionWarning: '警告:终止任务将永久损失 {ships} 艘舰船和 {resources} 资源!\n\n此操作不可撤销,舰队和资源将不会返回。', + abortMissionSuccess: '任务已终止', + abortMissionSuccessMessage: '任务已终止,舰队和资源已损失。', sendFailed: '派遣失败', sendFailedMessage: '请检查舰队数量、燃料是否充足,或载货量是否超出限制。', recallFailed: '召回失败', @@ -751,6 +756,8 @@ export default { officers: '军官', modifyResources: '修改资源', resourcesDesc: '快速修改星球资源数量', + maxAllResources: '一键拉满', + maxAllResourcesSuccess: '所有资源已拉满', modifyBuildings: '修改建筑', buildingsDesc: '快速设置建筑等级', modifyResearch: '修改科技', @@ -790,7 +797,11 @@ export default { dangerZone: '危险区域', dangerZoneDesc: '以下操作不可撤销,请谨慎操作', resetGame: '重置游戏', - resetGameConfirm: '确定要重置游戏吗?这将删除所有数据!' + resetGameConfirm: '确定要重置游戏吗?这将删除所有数据!', + completeAllQueues: '一键完成所有队列', + completeAllQueuesDesc: '立即完成所有建筑、科技、舰船、防御队列和飞行任务', + completeQueues: '完成队列', + completeQueuesSuccess: '已完成 {buildingCount} 个建筑队列、{researchCount} 个科技队列、{missionCount} 个飞行任务、{missileCount} 个导弹任务' }, alerts: { npcSpyIncoming: 'NPC侦查即将到达', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index a6b0eeb..661c9d9 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -475,6 +475,11 @@ export default { arrivalTime: '到達時間', returnTime: '返回時間', recallFleet: '召回艦隊', + abortMission: '', + abortMissionTitle: '', + abortMissionWarning: '', + abortMissionSuccess: '', + abortMissionSuccessMessage: '', sendFailed: '派遣失敗', sendFailedMessage: '請檢查艦隊數量、燃料是否充足,或載貨量是否超出限制。', recallFailed: '召回失敗', @@ -753,6 +758,8 @@ export default { officers: '軍官', modifyResources: '修改資源', resourcesDesc: '快速修改星球資源數量', + maxAllResources: '', + maxAllResourcesSuccess: '', modifyBuildings: '修改建築', buildingsDesc: '快速設定建築等級', modifyResearch: '修改科技', @@ -792,7 +799,11 @@ export default { dangerZone: '危險區域', dangerZoneDesc: '以下操作不可撤銷,請謹慎操作', resetGame: '重置遊戲', - resetGameConfirm: '確定要重置遊戲嗎?這將刪除所有資料!' + resetGameConfirm: '確定要重置遊戲嗎?這將刪除所有資料!', + completeAllQueues: '', + completeAllQueuesDesc: '', + completeQueues: '', + completeQueuesSuccess: '' }, alerts: { npcSpyIncoming: 'NPC偵查即將到達', diff --git a/src/views/FleetView.vue b/src/views/FleetView.vue index b06c353..0a6bb4d 100644 --- a/src/views/FleetView.vue +++ b/src/views/FleetView.vue @@ -303,6 +303,15 @@ > {{ t('fleetView.recallFleet') }} + @@ -319,7 +328,8 @@ - {{ t('common.confirm') }} + {{ t('common.cancel') }} + {{ t('common.confirm') }} @@ -348,6 +358,7 @@ import { AlertDialog, AlertDialogAction, + AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, @@ -377,6 +388,7 @@ const alertDialogOpen = ref(false) const alertDialogTitle = ref('') const alertDialogMessage = ref('') + const alertDialogCallback = ref<(() => void) | null>(null) // 当前时间(响应式) const currentTime = ref(Date.now()) @@ -688,10 +700,54 @@ if (!success) { alertDialogTitle.value = t('fleetView.recallFailed') alertDialogMessage.value = t('fleetView.recallFailedMessage') + alertDialogCallback.value = null alertDialogOpen.value = true } } + // 处理终止任务(返航中) + const handleAbortMission = (missionId: string) => { + const mission = gameStore.player.fleetMissions.find(m => m.id === missionId) + if (!mission) return + + // 计算损失资源总量 + const totalResources = mission.cargo.metal + mission.cargo.crystal + mission.cargo.deuterium + mission.cargo.darkMatter + + // 计算舰队总数 + const totalShips = Object.values(mission.fleet).reduce((sum, count) => sum + count, 0) + + alertDialogTitle.value = t('fleetView.abortMissionTitle') + alertDialogMessage.value = t('fleetView.abortMissionWarning', { + ships: totalShips.toString(), + resources: formatNumber(totalResources) + }) + alertDialogCallback.value = () => { + abortMission(missionId) + } + alertDialogOpen.value = true + } + + // 终止任务(不返还任何东西) + const abortMission = (missionId: string) => { + const missionIndex = gameStore.player.fleetMissions.findIndex(m => m.id === missionId) + if (missionIndex > -1) { + gameStore.player.fleetMissions.splice(missionIndex, 1) + alertDialogTitle.value = t('fleetView.abortMissionSuccess') + alertDialogMessage.value = t('fleetView.abortMissionSuccessMessage') + alertDialogCallback.value = null + alertDialogOpen.value = true + } + } + + // 处理 AlertDialog 确认 + const handleAlertConfirm = () => { + if (alertDialogCallback.value) { + alertDialogCallback.value() + alertDialogCallback.value = null + } + alertDialogOpen.value = false + } + // 获取任务剩余时间 const getRemainingTime = (mission: any): number => { const now = currentTime.value diff --git a/src/views/GMView.vue b/src/views/GMView.vue index b5dbf66..788c2c3 100644 --- a/src/views/GMView.vue +++ b/src/views/GMView.vue @@ -60,6 +60,11 @@ {{ t('gmView.resourcesDesc') }} + + +
@@ -242,6 +247,17 @@ + + + + {{ t('gmView.completeAllQueues') }} + {{ t('gmView.completeAllQueuesDesc') }} + + + + + + @@ -289,6 +305,7 @@