17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-09 05:54:43 +01:00
Files
maszyna/pr-reviews/PR-243.md

2.5 KiB
Raw Blame History

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).