ui/phase-17: ship-class CRUD without calc

Phase 17 lights up the ship-class table and designer active views,
extends the order-draft pipeline with createShipClass and
removeShipClass commands, and projects pending Save/Delete actions
through applyOrderOverlay so the table reflects the player's
intent before auto-sync lands. The plan is corrected in the same
patch: per game/rules.txt, ship classes are designed once and
cannot be edited — the engine has no Update command, so the UI
exposes only Create + Delete.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Ilia Denisov
2026-05-09 21:44:21 +02:00
parent 8a236bef14
commit 785c3483f8
23 changed files with 2456 additions and 99 deletions
+46
View File
@@ -193,6 +193,52 @@ const ru: Record<keyof typeof en, string> = {
"game.inspector.planet.cargo.pick.no_destinations": "нет планет в зоне полёта {reach} ед.",
"game.sidebar.order.label.cargo_route_set": "маршрут {loadType} с планеты {source} → планета {destination}",
"game.sidebar.order.label.cargo_route_remove": "удалить маршрут {loadType} с планеты {source}",
"game.sidebar.order.label.ship_class_create": "сконструировать класс корабля {name}",
"game.sidebar.order.label.ship_class_remove": "удалить класс корабля {name}",
"game.table.ship_classes.title": "классы кораблей",
"game.table.ship_classes.column.name": "название",
"game.table.ship_classes.column.drive": "двигатель",
"game.table.ship_classes.column.armament": "вооружённость",
"game.table.ship_classes.column.weapons": "оружие",
"game.table.ship_classes.column.shields": "защита",
"game.table.ship_classes.column.cargo": "трюм",
"game.table.ship_classes.column.actions": "действия",
"game.table.ship_classes.empty": "классы кораблей ещё не спроектированы",
"game.table.ship_classes.filter.placeholder": "фильтр по названию",
"game.table.ship_classes.action.new": "+ новый класс корабля",
"game.table.ship_classes.action.delete": "удалить",
"game.table.ship_classes.loading": "загрузка классов кораблей…",
"game.designer.ship_class.title.new": "конструктор нового класса корабля",
"game.designer.ship_class.title.view": "класс корабля {name}",
"game.designer.ship_class.field.name": "название",
"game.designer.ship_class.field.drive": "двигатель",
"game.designer.ship_class.field.armament": "вооружённость",
"game.designer.ship_class.field.weapons": "оружие",
"game.designer.ship_class.field.shields": "защита",
"game.designer.ship_class.field.cargo": "трюм",
"game.designer.ship_class.action.save": "сохранить",
"game.designer.ship_class.action.cancel": "отмена",
"game.designer.ship_class.action.delete": "удалить",
"game.designer.ship_class.action.back": "назад",
"game.designer.ship_class.hint.values": "каждое значение — 0 либо ≥ 1; вооружённость — целое неотрицательное; вооружённость и оружие должны быть оба нулевыми либо оба ненулевыми",
"game.designer.ship_class.read_only_notice": "классы кораблей проектируются один раз; характеристики нельзя изменить после создания",
"game.designer.ship_class.not_found": "класса \"{name}\" не существует",
"game.designer.ship_class.invalid.empty": "название не может быть пустым",
"game.designer.ship_class.invalid.too_long": "название слишком длинное (максимум 30 символов)",
"game.designer.ship_class.invalid.starts_with_special": "название не может начинаться со спецсимвола",
"game.designer.ship_class.invalid.ends_with_special": "название не может заканчиваться спецсимволом",
"game.designer.ship_class.invalid.consecutive_specials": "слишком много спецсимволов подряд",
"game.designer.ship_class.invalid.whitespace": "название не может содержать пробелы",
"game.designer.ship_class.invalid.disallowed_character": "название содержит недопустимые символы",
"game.designer.ship_class.invalid.duplicate_name": "класс с таким названием уже существует",
"game.designer.ship_class.invalid.drive_value": "двигатель должен быть 0 или ≥ 1",
"game.designer.ship_class.invalid.armament_value": "вооружённость должна быть 0 или положительным целым",
"game.designer.ship_class.invalid.armament_not_integer": "вооружённость должна быть целым числом",
"game.designer.ship_class.invalid.weapons_value": "оружие должно быть 0 или ≥ 1",
"game.designer.ship_class.invalid.shields_value": "защита должна быть 0 или ≥ 1",
"game.designer.ship_class.invalid.cargo_value": "трюм должен быть 0 или ≥ 1",
"game.designer.ship_class.invalid.armament_weapons_pair": "вооружённость и оружие должны быть оба нулевыми или оба ненулевыми",
"game.designer.ship_class.invalid.all_zero": "хотя бы одно значение должно быть ненулевым",
};
export default ru;