17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-09 02:50:59 +01:00
Files
maszyna/pr-reviews/PR-167.md

2.3 KiB
Raw Blame History

Review PR #167 — whois: add lookahead mode for the timetable entry after the next stop

Autor: @pwarszawski · base: master · 3 pliki, +42/−1 · Closes #164 https://github.com/MaSzyna-EU07/maszyna/pull/167

Werdykt: Approve z drobnymi uwagami

Podsumowanie

Nowy tryb whois +48 (whois_name | whois_load, bez mode_alt): do komórki pamięci trafia nazwa wpisu rozkładu o jedną pozycję za StationIndex, 0 i flaga postoju (1/0). Akcesor TTrainParameters::TimeTableEntryAhead(Offset) zwraca TimeTable[0] („nowhere”, Ah == -1) poza zakresem.

Co jest dobrze

  • Kontynuacja sekwencji +0…+40, +56 zostaje wolne — zgodnie z wcześniejszym review.
  • Uczciwie opisana zmiana dla +48 (dotąd działało jak +32) — wymagane przez zasady kompatybilności formatów.
  • Akcesor z kontrolą zakresu, TimeTable[0] jako bezpieczna wartość.

Uwagi

  1. Kompatybilność +48. Zmiana znaczenia istniejącej wartości flagi formalnie łamie regułę „every existing file must still be read the way it was”. Ryzyko jest małe, ale proponuję sprawdzić (grep po SVN pctga, katalog scenery/) czy żadna sceneria nie używa whois z wartością 48–55 — i dopisać wynik do opisu PR.
  2. Przeloty. „passthroughs are not skipped” — dla dyżurnego rozróżniającego kierunki zwykle liczy się następna stacja rozgałęźna, a w rozkładzie po stacji często stoi kilka punktów przelotowych (posterunki, podg). Wtedy +48 zwróci posterunek, a nie kierunek. Warto to opisać w dokumentacji eventu albo przewidzieć w przyszłości wariant (+56?) z pomijaniem przelotów.
  3. Nazwa „none”. Gdy brak maszynisty/właściciela, wpisuje się "none", a poza końcem rozkładu "nowhere". Dwie różne wartości dla „nic” to OK, ale proszę je udokumentować razem z trybem (wiki / dokumentacja eventów), bo skrypty scenerii będą je porównywać.
  4. Log. WriteLog z konkatenacją — w nowym kodzie Sonar woli std::format (S6185). Treść logu można zachować identyczną.
  5. TimeTableEntryAhead(int Offset) — komentarz w nagłówku mówi Offset>=1, ale funkcja przyjmuje też 0 i ujemne (zwraca odpowiednie wpisy lub [0]). Albo zaktualizować komentarz, albo dodać assert.
  6. Na PR są 4 wcześniejsze komentarze review — upewnić się, że wszystkie są rozwiązane przed merge.