mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-11 12:24:25 +01:00
30 lines
2.5 KiB
Markdown
30 lines
2.5 KiB
Markdown
# 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).
|