17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-08 14:59:43 +01:00
Files
maszyna/pr-reviews/PR-259.md

2.6 KiB
Raw Blame History

Review PR #259 — fix(cab): a diesel with only the starter button stops its engine with the main switch off command

Autor: @jerrrrycho · base: master · 4 pliki, +136/−1 · Fixes eu07/maszyna#427 https://github.com/MaSzyna-EU07/maszyna/pull/259

Werdykt: Approve z drobnymi uwagami

Podsumowanie

SM03/SM04/2Ls150 (i DL2, ST44, TEM2) mają w kabinie tylko main_on_bt. OnCommand_linebreakeropen() dla takich pojazdów tylko animowało przycisk i wychodziło — silnika nie dało się zgasić. Teraz dla DieselEngine/DieselElectric komenda otwiera obwód (MainSwitch(false)), a przycisk rozruchu nie jest animowany.

Co jest dobrze

  • Bardzo dobra analiza przyczyny (automatyczna pompa paliwa + przetwornica podtrzymująca 110 V).
  • Tabela „przed/po” z gry, lista dotkniętych pojazdów — zgodnie z CLAUDE.md (zmiana zachowania z istniejącymi danymi jest opisana).
  • Świadome nieruszanie kwestii „pozycja 0 = stop” (to zmiana danych, wymaga decyzji).

Uwagi

  1. Testy nie pokrywają właściwej zmiany. Testy sprawdzają MainSwitch(false) w fizyce, co działało już przed PR. Zmieniona jest gałąź w TTrain::OnCommand_linebreakeropen(), której testy nie dotykają (TTrain nie jest linkowany w unit testach?). Test REQUIRE(shunter->MainCircuitOpensWithStarterOnly()) sprawdza tylko typ silnika. Proponuję albo opisać to uczciwie w komentarzu testu, albo wydzielić decyzję „czy komenda otwiera obwód” do funkcji, którą da się przetestować bez TTrain (np. wolna funkcja przyjmująca: jest main_off_bt/main_bt/main_on_bt + typ silnika).
  2. Nazwa MainCircuitOpensWithStarterOnly() myli. Funkcja nie sprawdza nic o kabinie/starterze — tylko typ silnika. Czytając Train.cpp można pomyśleć, że sprawdza konfigurację przycisków. Propozycja: MainSwitchOffStopsEngine() albo IsDieselEngine(); warunek o samym main_on_bt zostaje w Train.cpp.
  3. ST44 / TEM2 — dotąd gaszone pompą paliwa, teraz także m. Warto upewnić się u twórców tych pojazdów (lub w dokumentacji), że to pożądane — w realu TEM2 ma przycisk „stop silnika”, więc raczej tak, ale niech to będzie świadome.
  4. Brak wizualnej reakcji po m na tych pojazdach — uzasadnione (trzymany przycisk uruchomiłby silnik), ale gracz może sądzić, że klawisz nie działa. Może dźwięk przełącznika (dsbSwitch) mimo braku animacji? Teraz fMainRelayTimer = 0 daje dźwięk przekaźnika — proszę potwierdzić, że coś słychać.
  5. Test JSON diesel_shunter.json — dobry, ale _comment zawiera opis SM03; warto dodać nazwę pliku .fiz, z którego pochodzą parametry, żeby dało się je zaktualizować.