|
Движковые коллизии: круг поверх сетки + LOS по пропам
Новый чистый модуль map/collision.ts в движке: gridOf (Grid из TileMapData с footprint пропов), точная проверка круга circleFits (ближайшая точка квадрата Blocked-тайла — ловит угловой прокол по диагонали), moveCircle со скольжением по осям, pushOutOfWalls для телепортов, separateCircles для будущего расталкивания тел. Дедупликация четырёх копий worldToTile+isWalkable: движение героя (moveFree), шаги врагов, фауна и валидатор контента теперь на одних функциях. IsometricTileMap.isPropBlocked публичен. Бой против стен: конус удара требует прямой видимости (hasLineOfSight по tall + пропам), снаряды гасятся о стены и дома (вода прозрачна — плевок летит над прудом). Отброс героя — только если тело помещается (circleFits): прищёлкивание к центру тайла после отброса меняло динамику погонь у прудов и валило пробу interact-world. 14 юнит-тестов на коллизии (скольжение, угловой прокол, совместимость с A*-маршрутом, push-out, separateCircles). Доки: maps.md (раздел «Коллизии»), README.md, llms.txt. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| apps/game/src/data/validate.ts |
|---|
| apps/game/src/scenes/LocationScene.ts |
|---|
| apps/game/src/systems/PlayerController.ts |
|---|
| apps/game/src/systems/combat/CombatWorld.ts |
|---|
| apps/game/src/systems/combat/los.ts |
|---|
| apps/game/src/systems/combat/stats.ts |
|---|
| apps/game/src/systems/fauna/FaunaSystem.ts |
|---|
| apps/game/src/testing/combatWorld.ts |
|---|
| docs/engine/README.md |
|---|
| docs/engine/maps.md |
|---|
| docs/llms.txt |
|---|
| packages/engine/src/index.ts |
|---|
| packages/engine/src/map/IsometricTileMap.ts |
|---|
| packages/engine/src/map/__tests__/collision.test.ts 0 → 100644 |
|---|
| packages/engine/src/map/collision.ts 0 → 100644 |
|---|