0x00470A62
| 109 | |
| 110 | // 0x00470A62 |
| 111 | static void drawRoutingNumbers(Gfx::DrawingContext& drawingCtx) |
| 112 | { |
| 113 | if (!World::hasMapSelectionFlag(World::MapSelectionFlags::unk_04)) |
| 114 | { |
| 115 | return; |
| 116 | } |
| 117 | |
| 118 | const auto& rt = drawingCtx.currentRenderTarget(); |
| 119 | |
| 120 | Gfx::RenderTarget unZoomedRt = rt; |
| 121 | unZoomedRt.zoomLevel = 0; |
| 122 | unZoomedRt.x >>= rt.zoomLevel; |
| 123 | unZoomedRt.y >>= rt.zoomLevel; |
| 124 | unZoomedRt.width >>= rt.zoomLevel; |
| 125 | unZoomedRt.height >>= rt.zoomLevel; |
| 126 | |
| 127 | drawingCtx.pushRenderTarget(unZoomedRt); |
| 128 | |
| 129 | auto tr = Gfx::TextRenderer(drawingCtx); |
| 130 | |
| 131 | auto orderNum = 0; |
| 132 | for (auto& orderFrame : Vehicles::OrderManager::displayFrames()) |
| 133 | { |
| 134 | auto orderRing = Vehicles::OrderRingView(orderFrame.orderOffset); |
| 135 | auto* order = orderRing.atIndex(0); |
| 136 | if (!order || !order->hasFlags(Vehicles::OrderFlags::HasNumber)) |
| 137 | { |
| 138 | continue; |
| 139 | } |
| 140 | orderNum++; |
| 141 | if (!orderFrame.frame.contains(rt.getDrawableRect(), rt.zoomLevel)) |
| 142 | { |
| 143 | continue; |
| 144 | } |
| 145 | auto res = Vehicles::OrderManager::generateOrderUiStringAndLoc(orderFrame.orderOffset, orderNum); |
| 146 | auto& orderString = res.second; |
| 147 | if (orderString.empty()) |
| 148 | { |
| 149 | continue; |
| 150 | } |
| 151 | |
| 152 | tr.setCurrentFont(Gfx::Font::medium_normal); |
| 153 | |
| 154 | auto point = Point(orderFrame.frame.left[rt.zoomLevel] + 1, orderFrame.frame.top[rt.zoomLevel]); |
| 155 | tr.drawString(point, AdvancedColour(Colour::white).outline(), const_cast<char*>(orderString.c_str())); |
| 156 | } |
| 157 | |
| 158 | drawingCtx.popRenderTarget(); |
| 159 | } |
| 160 | |
| 161 | // 0x0045A1A4 |
| 162 | void Viewport::paint(Gfx::DrawingContext& drawingCtx, const Rect& rect) |
no test coverage detected