0x004C26A4
| 944 | |
| 945 | // 0x004C26A4 |
| 946 | static void onScrollMouseOver(Window& self, [[maybe_unused]] int16_t x, int16_t y, [[maybe_unused]] uint8_t scroll_index) |
| 947 | { |
| 948 | Ui::ToolTip::setTooltipTimeout(2000); |
| 949 | |
| 950 | self.flags &= ~WindowFlags::notScrollView; |
| 951 | |
| 952 | uint16_t currentRow = y / self.rowHeight; |
| 953 | if (currentRow < self.rowCount) |
| 954 | { |
| 955 | self.rowHover = self.rowInfo[currentRow]; |
| 956 | } |
| 957 | else |
| 958 | { |
| 959 | self.rowHover = -1; |
| 960 | } |
| 961 | |
| 962 | StringId tooltipId = StringIds::buffer_337; |
| 963 | if (self.rowHover == -1) |
| 964 | { |
| 965 | tooltipId = StringIds::null; |
| 966 | } |
| 967 | |
| 968 | char* tooltipBuffer = const_cast<char*>(StringManager::getString(StringIds::buffer_337)); |
| 969 | |
| 970 | // Have we already got the right tooltip? |
| 971 | if (tooltipBuffer[0] != '\0' && self.widgets[Widx::scrollview].tooltip == tooltipId && self.rowHover == self.var_85C) |
| 972 | { |
| 973 | return; |
| 974 | } |
| 975 | |
| 976 | self.widgets[Widx::scrollview].tooltip = tooltipId; |
| 977 | self.var_85C = self.rowHover; |
| 978 | Ui::Windows::ToolTip::closeAndReset(); |
| 979 | |
| 980 | if (self.rowHover == -1) |
| 981 | { |
| 982 | return; |
| 983 | } |
| 984 | |
| 985 | // Initialise tooltip buffer. |
| 986 | char* buffer = StringManager::formatString(tooltipBuffer, StringIds::vehicle_list_tooltip_load); |
| 987 | |
| 988 | // Append load to buffer. |
| 989 | auto head = EntityManager::get<VehicleHead>(EntityId(self.var_85C)); |
| 990 | if (head == nullptr) |
| 991 | { |
| 992 | return; |
| 993 | } |
| 994 | buffer = head->generateCargoTotalString(buffer); |
| 995 | |
| 996 | // Figure out what stations the vehicle stops at. |
| 997 | auto orders = Vehicles::OrderRingView(head->orderTableOffset); |
| 998 | bool isFirstStop = true; |
| 999 | for (auto& order : orders) |
| 1000 | { |
| 1001 | // Is this order a station? |
| 1002 | auto* stopOrder = order.as<Vehicles::OrderStopAt>(); |
| 1003 | if (stopOrder == nullptr) |
nothing calls this directly
no test coverage detected