17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-08 22:07:20 +01:00
Files
maszyna/pr-reviews/PR-231.md

2.1 KiB
Raw Blame History

Review PR #231 — driveruilayer: Allow to toggle AI driver from the menu

Autor: @dos1 · base: master · 1 plik, +13/−0 https://github.com/MaSzyna-EU07/maszyna/pull/231

Werdykt: Request changes (drobne)

Podsumowanie

Nowe menu „Vehicle” z przełącznikiem „Autopilot”, wysyłające aidriverenable / aidriverdisable przez m_relay. Świetny pomysł dla nowych graczy, mała i czysta zmiana.

Uwagi

  1. Warunek widoczności jest bardziej restrykcyjny niż klawiatura. Menu jest ukryte, gdy Global.RealisticControlMode && !DebugModeFlag — zawsze, także gdy gracz siedzi w kabinie. Tymczasem command_relay::post() (input/command.cpp ~l. 891) blokuje komendy pojazdu w trybie realistycznym tylko przy FreeFlyModeFlag. Czyli Shift+Q w kabinie działa, a pozycja menu znika. Proponuję warunek zgodny z relay'em:
    bool const blocked = FreeFlyModeFlag && Global.RealisticControlMode && !DebugModeFlag;
    
    i najlepiej ImGui::BeginDisabled(blocked) zamiast ukrywania — gracz widzi, że opcja istnieje.
  2. Skrót w menu. MenuItem przyjmuje skrót — warto podać "Shift+Q" / "Q" (domyślne bindy z driverkeyboardinput.cpp), tak jak robią to pozycje w „Mode windows”. Uwaga: bindy są konfigurowalne, więc albo pobrać aktualny z mapy klawiszy, albo pominąć.
  3. Tłumaczenia. STR_C("Vehicle") i STR_C("Autopilot") to nowe klucze — trzeba je dodać do lang/*.po w SVN (w repo jest tylko editor_pl.po). Proszę napisać w opisie PR, co dodać do SVN; bez tego gracze PL zobaczą angielskie napisy. Sprawdzić też, czy w innych miejscach UI tryb AI nie nazywa się inaczej (np. „AI driver”) — lepiej trzymać jedną nazwę.
  4. Multiplayer (#173): przy sterowaniu cudzym pojazdem/wspólną sesją przełączanie AI z menu może wymagać dodatkowych warunków — nie blokuje tego PR, ale warto mieć na uwadze.
  5. Drobne: auto const *driver — Mechanik to wskaźnik nie-const, a AIControllFlag tylko czytamy, więc OK; Sonar może jednak zgłosić S6004 (zmienna używana tylko w warunku → if (auto const *driver = …; driver && …)).