История поездок транспортных средств (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_occupancyjrpm)
Особенности реализации
- Данные 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_*)