Skip to content

История поездок транспортных средств (Trip History) ​

Происходит из embeddedt/OpenTTD-modded (первая партия портирования), адаптировано к новым строковым API и API дат jrpm.

Функция ​

Каждое транспортное средство запоминает данные последних 10 поездок, доступные в новом окне по кнопке History (История) в окне деталей ТС:

КолонкаЗначение
Received (Прибытие)Дата получения груза в этой поездке
Profit (Прибыль)Прибыль за эту поездку (отрицательные значения жёлтым)
% ChangeИзменение прибыли в процентах по сравнению с предыдущей поездкой (зелёный + / красный -)
TBTИнтервал времени с предыдущей поездки (дни)
ChangeИзменение времени по сравнению с предыдущей поездкой (дни)
OccupancyСредняя загрузка пассажирами/грузами за эту поездку (%)

Внизу окна также сводная статистика:

  • Total income for the last N trips: общая прибыль за N поездок + средняя прибыль в день за поездку
  • Average trip length: средний интервал между поездками (дни)
  • Improvement over last N trips: общее процентное изменение прибыли

Механизм записи ​

  • AddValue: при завершении перевозки (деструктор CargoPayment) записывается прибыль, дата, загрузка, расстояние между станциями
  • NewRound: при прибытии на первый пункт назначения по расписанию начинается новая поездка
  • Загрузка: собирается при отправлении со станции (повторно использует существующий механизм trip_occupancy jrpm)

Особенности реализации ​

  • Данные NOSAVE (только во время выполнения, не сохраняются), поэтому не требуется увеличение версии сохранения, полная совместимость со старыми файлами
  • Новый класс окна WindowClass::VehicleTripHistory, ID окна — ID ТС
  • В строке заголовка окна деталей ТС (поезда/не поезда) добавлена кнопка History
  • При удалении ТС окно истории автоматически закрывается

Затронутые файлы ​

  • src/triphistory.h / src/triphistory_cmd.cpp / src/triphistory_gui.cpp (новые)
  • src/vehicle_base.h (Vehicle новое поле trip_history)
  • src/economy.cpp (запись поездки при деструкции CargoPayment)
  • src/timetable_cmd.cpp (прибытие на первую станцию начинает новую поездку)
  • src/vehicle_gui.cpp / src/widgets/vehicle_widget.h (кнопка History)
  • src/lang/english.txt (строки STR_TRIP_HISTORY_*)