17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-11 12:24:25 +01:00
Files
maszyna/pr-reviews/PR-243.md

30 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Review PR #243 — Editor, NMT location: assign the place from the camera; //$g found in included files
Autor: @miloszunio · base: `feat/switch-blades` · 3 pliki, +55/−1
https://github.com/MaSzyna-EU07/maszyna/pull/243
**Werdykt: Request changes (konflikty + struktura kodu)**
## Podsumowanie
1. „Przypisz z kamery” — odwrotność „The scenery is here”: kliknięty punkt mapy = obecna pozycja kamery, z tego liczony jest początek układu (`E0 = E + x`, `N0 = N − z`).
2. „Środek zapisany w pliku scenerii” — przywraca początek z linii `//$g`.
3. `read_georeference()` szuka `//$g` także w plikach `include` (jeden poziom).
Bardzo przydatne — dziś jeden błędny klik psuł georeferencję.
## Co sprawdziłem
- Wzór kamery jest zgodny z istniejącą konwersją w `editormode.cpp` (`config.north + Camera.Pos.z`, `config.east - Camera.Pos.x`). ✔
- Kolejność `{m_georeference_origin.y, m_georeference_origin.x}` zgadza się z `nmt_place_scenery` (`Point.x = east`). ✔
- `read_georeference()` jest wołane co klatkę w `render_nmt_place`, ale ma cache `m_georeference_read`, więc pliki czytane są raz. ✔
## Uwagi
1. **Konflikty.** GitHub pokazuje stan `dirty` — PR wymaga rebase na aktualny `feat/switch-blades`. Jest też `split/3-switch-blades` — warto ustalić, na którą gałąź ma finalnie trafić.
2. **Zagnieżdżenie i wcięcia w `read_georeference()`.** Wewnętrzna pętla nie została wcięta po dodaniu zewnętrznego `for`, a głębokość to teraz for→for→if→if→if — Sonar zgłosi S134 i prawdopodobnie S3776. Proponuję:
- helper `std::optional<std::filesystem::path> include_target(std::string_view line)` w anonimowym namespace,
- helper `bool parse_georeference_line(std::string const &line, …)`,
- pętlę po plikach z wczesnym `continue`.
3. **Ścieżki include.** `Global.asCurrentSceneryPath / name` — sprawdzić wielkość liter (na Linuksie `irt/IRT_sceneria.inc` vs `irt/irt_sceneria.inc`); funkcja dla głównego pliku już ma fallback na porównanie bez wielkości liter, include'y nie.
4. **Limit `files.size() < 8`** — magiczna liczba, warto nazwaną stałą z komentarzem.
5. **Ochrona przed pomyłką u źródła.** Skoro problemem jest przypadkowe „The scenery is here”, rozważyć potwierdzenie (popup) tego przycisku, gdy sceneria ma już `//$g` albo ułożone tory. Nowe przyciski to dobra droga powrotu, ale prewencja byłaby jeszcze lepsza.
6. Opis PR zawiera link do sesji Claude Code — do usunięcia przed merge (nie wnosi nic dla recenzenta).