MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / onScrollMouseOver

Function onScrollMouseOver

src/OpenLoco/src/Ui/Windows/VehicleList.cpp:946–1021  ·  view source on GitHub ↗

0x004C26A4

Source from the content-addressed store, hash-verified

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)

Callers

nothing calls this directly

Calls 8

setTooltipTimeoutFunction · 0.85
getStringFunction · 0.85
closeAndResetFunction · 0.85
formatStringFunction · 0.85
EntityIdEnum · 0.85
setFormatArgumentsMethod · 0.80
OrderRingViewClass · 0.50

Tested by

no test coverage detected