feat: сборщик 2×2 вместо 3×3#19
Merged
Merged
Conversation
Футпринт assembler ужат 3×3 → 2×2 (меньше клеток на сетке): grid.ts (getSize + входы, убран хардкод 3-го тайла), NODE_DEFS, input.ts SIZES, machines.ts getSize. Порты стали по 2 вместо 3. Спрайт (PNG авторены на 3 тайла) НЕ режем под 2×2 — иначе слайсер кадров даёт кашу. Оставили 3-тайловую текстуру и центрируем её на 2×2: пивот по размеру текстуры (getSpriteSize), позиция по футпринту; прозрачный бортик арта вылезает наружу, центр заполняет клетку. То же центрирование в ghost. Тесты: 5 ассемблеров в graph.ts переставлены под 2×2-геометрию портов; demo.json — лента-мостик (8,5), выход сместился на 1 тайл влево. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Сжатие футпринта assembler с 3×3 до 2×2 по всему пайплайну (core-grid → node registry → game render/input), при этом фактическая текстура assembler остаётся 3×3 и центрируется на новом 2×2 footprint.
Changes:
- Обновлены размеры assembler в core (
grid.ts,NODE_DEFS) и на клиенте (machines.ts,input.ts). - Добавлено центрирование 3×3-текстуры assembler на 2×2 footprint (pivot по размеру текстуры, позиция по footprint) и аналогично для ghost-превью.
- Подправлены core-checks (
__checks__/graph.ts) и демо-мир (public/demo.json) под новую геометрию портов/выходов.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| web/src/game/machines.ts | Перенос assembler в 2×2 footprint + отдельный spriteSize для центрирования 3×3 текстуры. |
| web/src/game/input.ts | Обновление размеров ghost для assembler и центрирование ghost с учётом отличия текстуры от footprint. |
| web/src/core/nodes/index.ts | Обновление NODE_DEFS.assembler.size до 2×2. |
| web/src/core/grid.ts | Обновление getSize и входных тайлов assembler под 2×2. |
| web/src/core/checks/graph.ts | Перестановка тестовых entity-координат assembler под новый footprint/порты. |
| web/public/demo.json | Адаптация демо-мира под новый выход assembler (добавлен “мостик” ленты) и сопутствующие правки. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
21
to
+23
| // Размеры при dir=0 — для пивота ghost (дублирует core/grid, там getSize приватный) | ||
| const SIZES: Record<MachineKind, [number, number]> = { | ||
| belt: [1, 1], miner: [2, 2], furnace: [2, 2], assembler: [3, 3], | ||
| belt: [1, 1], miner: [2, 2], furnace: [2, 2], assembler: [2, 2], |
Comment on lines
+273
to
279
| // Текстура может быть больше футпринта (assembler: спрайт 3×3, футпринт 2×2) — | ||
| // пивот по размеру текстуры, позиция по футпринту → текстура центрируется на клетках. | ||
| const [sw, sh] = tool === 'assembler' ? [3, 3] : [w, h]; | ||
|
|
||
| ghostSprite.visible = true; | ||
| // Пивот — центр базовой текстуры, позиция — центр повёрнутого footprint | ||
| ghostSprite.pivot.set((w * TILE) / 2, (h * TILE) / 2); | ||
| ghostSprite.pivot.set((sw * TILE) / 2, (sh * TILE) / 2); | ||
| ghostSprite.position.set(tile.x * TILE + (rw * TILE) / 2, tile.y * TILE + (rh * TILE) / 2); |
Comment on lines
+210
to
+214
| // BACK входы (весь нижний ряд, 2×2) | ||
| inputDirs = [ | ||
| { | ||
| side: 'back', | ||
| localTiles: [[0, baseSize.h - 1], [1, baseSize.h - 1], [2, baseSize.h - 1]], | ||
| localTiles: [[0, baseSize.h - 1], [1, baseSize.h - 1]], |
Comment on lines
59
to
63
| assembler: { | ||
| kind: 'assembler', | ||
| title: 'Сборочный станок / Агент', | ||
| size: { w: 3, h: 3 }, | ||
| size: { w: 2, h: 2 }, | ||
| outItem: 'text', |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что
Футпринт assembler ужат 3×3 → 2×2 (занимает меньше клеток, у 3×3 было много пустого пространства вокруг спрайта).
grid.ts(getSize + входы, убран хардкод 3-го тайла),NODE_DEFS,input.tsSIZES,machines.tsgetSize. Порты стали по 2 вместо 3 — адаптируются автоматически (loop по baseSize.w).getSpriteSize), позиция по футпринту; прозрачный бортик арта вылезает наружу, центр заполняет клетку. То же центрирование в ghost-превью.graph.tsпереставлены под 2×2-геометрию портов; вdemo.jsonдобавлена лента-мостик (8,5) — выход ассемблера сместился на 1 тайл влево.Проверка
pnpm typecheck✓,pnpm check✓ (grid, graph 9 тестов, demo, 13 AC движка, stress),pnpm build✓🤖 Generated with Claude Code