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: 'Offiziere',
simulator: 'Simulator',
galaxy: 'Galaxie',
diplomacy: 'Diplomacy',
messages: 'Nachrichten',
settings: 'Einstellungen',
gm: 'GM'
@@ -97,6 +98,8 @@ export default {
coordinates: 'Koordinaten',
switchToMoon: 'Zum Mond',
backToPlanet: 'Zurück zum Planeten',
switchPlanet: 'Planet wechseln',
currentPlanet: 'Aktueller Planet',
fields: 'Felder',
temperature: 'Temperatur',
homePlanet: 'Heimatplanet',
@@ -112,6 +115,7 @@ export default {
crystalMine: 'Kristallmine',
deuteriumSynthesizer: 'Deuterium-Synthesizer',
solarPlant: 'Solarkraftwerk',
fusionReactor: 'Fusionsreaktor',
roboticsFactory: 'Roboterfabrik',
naniteFactory: 'Nanitenfabrik',
shipyard: 'Raumschiffwerft',
@@ -120,6 +124,8 @@ export default {
crystalStorage: 'Kristallspeicher',
deuteriumTank: 'Deuteriumtank',
darkMatterCollector: 'Dunkle-Materie-Kollektor',
darkMatterTank: 'Dunkle-Materie-Tank',
missileSilo: 'Raketensilo',
terraformer: 'Terraformer',
lunarBase: 'Mondbasis',
sensorPhalanx: 'Sensorphalanx',
@@ -130,13 +136,26 @@ export default {
consumption: 'Verbrauch',
totalCost: 'Gesamtkosten',
totalPoints: 'Gesamtpunkte',
levelRange: 'Stufenbereich'
levelRange: 'Stufenbereich',
capacity: 'Capacity/Effect',
storageCapacity: 'Capacity',
energyProduction: 'Energy Production',
fleetStorage: 'Fleet Storage',
buildQueue: 'Build Queue',
buildQueueBonus: 'Bauauftrag',
spaceBonus: 'Raumbonus',
buildSpeedBonus: 'Baugeschwindigkeitsbonus',
researchSpeedBonus: 'Forschungsgeschwindigkeitsbonus',
planetSpace: 'Planet Space',
moonSpace: 'Moon Space',
missileCapacity: 'Missile Capacity'
},
buildingDescriptions: {
metalMine: 'Fördert Metallressourcen',
crystalMine: 'Fördert Kristallressourcen',
deuteriumSynthesizer: 'Synthesiert Deuteriumressourcen',
solarPlant: 'Liefert Energie',
fusionReactor: 'Nutzt Deuterium zur Erzeugung großer Energiemengen',
roboticsFactory: 'Beschleunigt Baugeschwindigkeit',
naniteFactory: 'Erhöht Bauauftragskapazität, +1 pro Stufe (max 10 Stufen)',
shipyard: 'Baut Schiffe',
@@ -145,6 +164,8 @@ export default {
crystalStorage: 'Erhöht Kristallspeicherkapazität',
deuteriumTank: 'Erhöht Deuteriumspeicherkapazität',
darkMatterCollector: 'Sammelt seltene Dunkle-Materie-Ressourcen',
darkMatterTank: 'Erhöht Dunkle-Materie-Speicherkapazität',
missileSilo: 'Lagert und startet Raketen, 10 Raketen pro Stufe',
terraformer: 'Terraformt Planetenoberfläche, erhöht verfügbaren Platz um 5 pro Stufe',
lunarBase: 'Erhöht verfügbaren Platz auf dem Mond, +5 Platz pro Stufe',
sensorPhalanx: 'Erkennt Flottenaktivitäten in umliegenden Systemen',
@@ -156,11 +177,15 @@ export default {
heavyFighter: 'Schwerer Jäger',
cruiser: 'Kreuzer',
battleship: 'Schlachtschiff',
battlecruiser: 'Schlachtkreuzer',
bomber: 'Bomber',
destroyer: 'Zerstörer',
smallCargo: 'Kleiner Transporter',
largeCargo: 'Großer Transporter',
colonyShip: 'Kolonieschiff',
recycler: 'Recycler',
espionageProbe: 'Spionagesonde',
solarSatellite: 'Solarsatellit',
darkMatterHarvester: 'Dunkle-Materie-Ernter',
deathstar: 'Todesstern'
},
@@ -169,11 +194,15 @@ export default {
heavyFighter: 'Schwer gepanzerter Jäger',
cruiser: 'Mittleres Kriegsschiff, ausgewogene Offensive und Defensive',
battleship: 'Mächtiges Kriegsschiff',
battlecruiser: 'Schnelles mächtiges Kriegsschiff, hervorragend gegen Schlachtschiffe',
bomber: 'Spezialisiertes Schiff zum Angriff auf Verteidigungsanlagen',
destroyer: 'Jäger spezialisiert auf Zerstörung großer Schiffe',
smallCargo: 'Transportiert kleine Mengen Ressourcen',
largeCargo: 'Transportiert große Mengen Ressourcen',
colonyShip: 'Zur Kolonisierung neuer Planeten',
recycler: 'Sammelt Trümmerfeld-Ressourcen',
espionageProbe: 'Späht feindliche Planeten aus',
solarSatellite: 'Liefert zusätzliche Energie, erzeugt 50 Energie pro Satellit',
darkMatterHarvester: 'Spezielles Schiff zum Ernten von Dunkler Materie',
deathstar: 'Ultimative Waffe, die ganze Planeten zerstören kann'
},
@@ -186,6 +215,8 @@ export default {
plasmaTurret: 'Plasmawerfer',
smallShieldDome: 'Kleine Schildkuppel',
largeShieldDome: 'Große Schildkuppel',
antiBallisticMissile: 'Abfangrakete',
interplanetaryMissile: 'Interkontinentalrakete',
planetaryShield: 'Planetarschild'
},
defenseDescriptions: {
@@ -197,13 +228,23 @@ export default {
plasmaTurret: 'Mächtige Verteidigungsanlage',
smallShieldDome: 'Kleiner Schild zum Schutz des gesamten Planeten',
largeShieldDome: 'Großer Schild zum Schutz des gesamten Planeten',
antiBallisticMissile: 'Fängt feindliche Raketen ab, kann 1 Interkontinentalrakete abfangen',
interplanetaryMissile: 'Kann Verteidigungsanlagen auf anderen Planeten angreifen',
planetaryShield: 'Superschild zum Schutz des Planeten vor Vernichtungsangriffen'
},
research: {
researchTime: 'Forschungszeit',
totalCost: 'Gesamtkosten',
totalPoints: 'Gesamtpunkte',
levelRange: 'Stufenbereich'
levelRange: 'Stufenbereich',
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: 'Energietechnik',
@@ -212,6 +253,12 @@ export default {
hyperspaceTechnology: 'Hyperraumtechnik',
plasmaTechnology: 'Plasmatechnik',
computerTechnology: 'Computertechnologie',
espionageTechnology: 'Spionagetechnik',
weaponsTechnology: 'Waffentechnik',
shieldingTechnology: 'Schildtechnik',
armourTechnology: 'Panzerung',
astrophysics: 'Astrophysik',
gravitonTechnology: 'Gravitontechnik',
combustionDrive: 'Verbrennungsantrieb',
impulseDrive: 'Impulsantrieb',
hyperspaceDrive: 'Hyperraumantrieb',
@@ -226,6 +273,12 @@ export default {
hyperspaceTechnology: 'Hyperraumsprung-Technologie',
plasmaTechnology: 'Plasmawaffentechnologie',
computerTechnology: 'Erhöht Forschungsauftragskapazität, +1 pro Stufe (max 10 Stufen)',
espionageTechnology: 'Verbessert Sondenwirksamkeit, +1 Spionagestufe pro Stufe',
weaponsTechnology: 'Erhöht Angriffskraft von Schiffen und Verteidigung um 10% pro Stufe',
shieldingTechnology: 'Erhöht Schilde von Schiffen und Verteidigung um 10% pro Stufe',
armourTechnology: 'Erhöht Panzerung von Schiffen und Verteidigung um 10% pro Stufe',
astrophysics: 'Jede Stufe fügt 1 Kolonieslot hinzu und erhöht Expeditionserfolgsrate',
gravitonTechnology: 'Erforscht Gravitonmanipulation, erforderlich für Todesstern',
combustionDrive: 'Grundlegende Antriebstechnologie',
impulseDrive: 'Mittlere Antriebstechnologie',
hyperspaceDrive: 'Fortgeschrittene Antriebstechnologie',
@@ -293,7 +346,9 @@ export default {
demolish: 'Abreißen',
demolishRefund: 'Abriss-Rückerstattung',
demolishFailed: 'Abriss fehlgeschlagen',
demolishFailedMessage: 'Abriss nicht möglich. Bitte überprüfen Sie, ob die Bauqueue voll ist oder die Gebäudestufe 0 ist.'
demolishFailedMessage: 'Abriss nicht möglich. Bitte überprüfen Sie, ob die Bauqueue voll ist oder die Gebäudestufe 0 ist.',
confirmDemolish: '',
confirmDemolishMessage: ''
},
researchView: {
title: 'Forschung',
@@ -382,6 +437,7 @@ export default {
all: 'Alle',
targetCoordinates: 'Zielkoordinaten',
galaxy: 'Galaxie',
diplomacy: 'Diplomacy',
system: 'System',
position: 'Position',
missionType: 'Missionstyp',
@@ -415,7 +471,11 @@ export default {
cannotSendToOwnPlanet: 'Flotte kann nicht zu eigenem Planeten gesendet werden',
cargoExceedsCapacity: 'Fracht überschreitet Kapazität',
noColonyShip: 'Kolonieschiff für Kolonisierungsmission erforderlich',
noDebrisAtTarget: 'Kein Trümmerfeld an Zielkoordinaten oder Trümmerfeld ist leer'
noDebrisAtTarget: 'Kein Trümmerfeld an Zielkoordinaten oder Trümmerfeld ist leer',
noDeathstar: 'Todesstern für Zerstörungsmission erforderlich',
giftMode: 'Geschenkmodus',
giftModeDescription: 'Ressourcen als Geschenk senden an',
estimatedReputationGain: 'Geschätzter Reputationsgewinn'
},
officersView: {
title: 'Offiziere',
@@ -455,11 +515,15 @@ export default {
title: 'Galaxie',
selectCoordinates: 'Koordinaten auswählen',
galaxy: 'Galaxie',
diplomacy: 'Diplomacy',
selectGalaxy: 'Galaxie auswählen',
system: 'System',
selectSystem: 'System auswählen',
view: 'Anzeigen',
myPlanet: 'Mein Planet',
myPlanets: 'Meine Planeten',
npcPlanets: 'NPC-Planeten',
selectPlanetToView: 'Planet zum Anzeigen auswählen',
totalPositions: 'Insgesamt 10 Planetenpositionen',
mine: 'Mein',
hostile: 'Feindlich',
@@ -481,21 +545,32 @@ export default {
colonizePlanetMessage:
'Möchten Sie wirklich Position [{coordinates}] kolonisieren?\n\nBitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.',
recyclePlanetMessage:
'Möchten Sie wirklich Trümmer bei Position [{coordinates}] recyceln?\n\nBitte gehen Sie zur Flottenseite, um Recycler zu senden.'
'Möchten Sie wirklich Trümmer bei Position [{coordinates}] recyceln?\n\nBitte gehen Sie zur Flottenseite, um Recycler zu senden.',
sendGift: 'Geschenk senden',
debris: 'Trümmer',
giftPlanetTitle: 'Geschenk senden',
giftPlanetMessage:
'Möchten Sie wirklich Ressourcen als Geschenk an Planet [{coordinates}] senden?\n\nBitte gehen Sie zur Flottenseite, um Transporter auszuwählen und Ressourcen zu laden.'
},
messagesView: {
title: 'Nachrichten',
battles: 'Kämpfe',
spy: 'Spionage',
npc: 'NPC',
spied: 'Ausspioniert',
battleReports: 'Kampfberichte',
spyReports: 'Spionageberichte',
noBattleReports: 'Keine Kampfberichte',
noSpyReports: 'Keine Spionageberichte',
noSpiedNotifications: 'Keine Ausspionierungs-Benachrichtigungen',
battleReport: 'Kampfbericht',
spyReport: 'Spionagebericht',
spiedNotification: 'Ausspionierungs-Benachrichtigung',
victory: 'Sieg',
defeat: 'Niederlage',
draw: 'Unentschieden',
detected: 'Entdeckt',
undetected: 'Unentdeckt',
attackerFleet: 'Angreiferflotte',
defenderFleet: 'Verteidigerflotte',
defenderDefense: 'Verteidigerverteidigung',
@@ -517,7 +592,43 @@ export default {
hideRoundDetails: 'Rundendetails ausblenden',
round: 'Runde {round}',
attackerRemainingPower: 'Verbleibende Angreiferkraft',
defenderRemainingPower: 'Verbleibende Verteidigerkraft'
defenderRemainingPower: 'Verbleibende Verteidigerkraft',
missions: 'Missionen',
noMissionReports: 'Keine Missionsberichte',
success: 'Erfolg',
failed: 'Fehlgeschlagen',
npcActivity: 'NPC-Aktivität',
noNPCActivity: 'Keine NPC-Aktivitätsbenachrichtigungen',
npcRecycleActivity: 'NPC recycelt Trümmer',
gifts: 'Geschenke',
giftRejected: 'Abgelehnt',
noGiftNotifications: 'Keine Geschenkbenachrichtigungen',
noGiftRejected: 'Keine abgelehnten Geschenke',
giftFrom: 'Geschenk von {npcName}',
giftRejectedBy: '{npcName} hat das Geschenk abgelehnt',
giftResources: 'Geschenk-Ressourcen',
rejectedResources: 'Abgelehnte Ressourcen',
expectedReputation: 'Erwarteter Ruf',
currentReputation: 'Aktueller Ruf',
acceptGift: 'Annehmen',
rejectGift: 'Ablehnen',
rejectionReason: {
hostile: 'Sie sind feindlich und nehmen keine Geschenke an',
neutral_distrust: 'Sie vertrauen Ihnen nicht',
polite_decline: 'Sie lehnten höflich ab'
}
},
missionReports: {
transportSuccess: 'Transportmission erfolgreich abgeschlossen',
transportFailed: 'Transportmission fehlgeschlagen',
colonizeSuccess: 'Kolonisierungsmission erfolgreich, neuer Planet gegründet',
colonizeFailed: 'Kolonisierungsmission fehlgeschlagen',
deploySuccess: 'Einsatzmission erfolgreich abgeschlossen',
deployFailed: 'Einsatzmission fehlgeschlagen',
recycleSuccess: 'Recyclingmission erfolgreich abgeschlossen',
recycleFailed: 'Recyclingmission fehlgeschlagen, keine Trümmer am Zielort',
destroySuccess: 'Planetenzerstörungsmission erfolgreich ausgeführt',
destroyFailed: 'Planetenzerstörungsmission fehlgeschlagen'
},
simulatorView: {
title: 'Kampfsimulator',
@@ -570,13 +681,15 @@ export default {
selectFile: 'Datei auswählen',
importSuccess: 'Import erfolgreich',
importConfirmTitle: 'Import bestätigen',
importConfirmMessage: 'Beim Importieren wird der aktuelle Spielfortschritt überschrieben. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?',
importConfirmMessage:
'Beim Importieren wird der aktuelle Spielfortschritt überschrieben. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?',
importFailed: 'Import fehlgeschlagen, bitte Dateiformat überprüfen',
clearData: 'Daten löschen',
clearDataDesc: 'Alle Spieldaten löschen und zurücksetzen',
clear: 'Löschen',
clearConfirmTitle: 'Löschen bestätigen',
clearConfirmMessage: 'Alle Spieldaten werden gelöscht und von vorne begonnen. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?',
clearConfirmMessage:
'Alle Spieldaten werden gelöscht und von vorne begonnen. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?',
gameSettings: 'Spieleinstellungen',
gameSettingsDesc: 'Spielparameter und Einstellungen anpassen',
gamePause: 'Spielpause',
@@ -619,9 +732,82 @@ export default {
modifyOfficers: 'Offiziere ändern',
officersDesc: 'Offiziersablaufzeit schnell festlegen',
days: 'T',
npcTesting: 'NPC-Test',
npcTestingDesc: 'NPC-Spionage- und Angriffsverhalten testen',
selectNPC: 'NPC auswählen',
chooseNPC: 'Wählen Sie einen NPC',
targetPlanet: 'Zielplanet',
chooseTarget: 'Zielplanet auswählen',
testSpy: 'Spionage testen',
testAttack: 'Angriff testen',
testSpyAndAttack: 'Spionage & Angriff testen',
initializeFleet: 'NPC-Flotte initialisieren',
accelerateMissions: 'Alle Missionen beschleunigen (5s)',
selectNPCFirst: 'Bitte wählen Sie zuerst einen NPC',
npcNoProbes: 'NPC hat keine Spionagesonden',
npcNoSpyReport: 'NPC muss zuerst spionieren',
npcMissionFailed: 'Mission konnte nicht erstellt werden',
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!'
},
alerts: {
npcSpyIncoming: 'NPC-Spionagesonde nähert sich',
npcAttackIncoming: 'NPC-Flotten-Angriff im Anmarsch!',
npcFleetIncoming: 'NPC-Flotte nähert sich',
ships: 'Schiffe',
spiedBy: 'Ausspioniert von',
attackedBy: 'Angegriffen von',
detectionSuccess: 'Spionage entdeckt',
detectionFailed: 'Spionage nicht entdeckt',
npcSpiedYourPlanet: 'NPC hat deinen Planeten ausspioniert',
npcAttackedYourPlanet: 'NPC hat deinen Planeten angegriffen'
},
diplomacy: {
title: 'Diplomatie',
description: 'Verwalte diplomatische Beziehungen mit NPCs',
tabs: {
all: 'Alle',
friendly: 'Freundlich',
neutral: 'Neutral',
hostile: 'Feindlich'
},
noNpcs: 'Keine NPCs',
noFriendlyNpcs: 'Keine freundlichen NPCs',
noNeutralNpcs: 'Keine neutralen NPCs',
noHostileNpcs: 'Keine feindlichen NPCs',
recentEvents: 'Aktuelle Ereignisse',
recentEventsDescription: 'Protokoll der jüngsten diplomatischen Aktivitäten',
ago: 'vor',
status: {
friendly: 'Freundlich',
neutral: 'Neutral',
hostile: 'Feindlich'
},
planets: 'Planeten',
allies: 'Verbündete',
reputation: 'Ansehen',
alliedWith: 'Verbündet mit',
more: 'weitere',
actions: {
gift: 'Geschenk senden',
viewPlanets: 'Planeten ansehen'
},
lastEvent: 'Letztes Ereignis',
events: {
gift: 'Geschenk gesendet',
attack: 'Angriff',
allyAttacked: 'Verbündeter angegriffen',
spy: 'Spionage',
stealDebris: 'Trümmer gestohlen'
}
},
pagination: {
previous: 'Vorherige',
next: 'Nächste',
first: 'Erste',
last: 'Letzte',
page: 'Seite {page}'
}
}