mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-09 05:54:43 +01:00
23 lines
2.3 KiB
Markdown
23 lines
2.3 KiB
Markdown
# 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.
|