| 424 | } |
| 425 | |
| 426 | void CMapImages::UpdateEntityLayerText(CImageInfo &TextImage, int TextureSize, int MaxWidth, int YOffset, int NumbersPower, int MaxNumber) |
| 427 | { |
| 428 | char aBuf[4]; |
| 429 | int DigitsCount = NumbersPower + 1; |
| 430 | |
| 431 | int CurrentNumber = std::pow(10, NumbersPower); |
| 432 | |
| 433 | if(MaxNumber == -1) |
| 434 | MaxNumber = CurrentNumber * 10 - 1; |
| 435 | |
| 436 | str_format(aBuf, sizeof(aBuf), "%d", CurrentNumber); |
| 437 | |
| 438 | int CurrentNumberSuitableFontSize = TextRender()->AdjustFontSize(aBuf, DigitsCount, TextureSize, MaxWidth); |
| 439 | int UniversalSuitableFontSize = CurrentNumberSuitableFontSize * 0.92f; // should be smoothed enough to fit any digits combination |
| 440 | |
| 441 | YOffset += ((TextureSize - UniversalSuitableFontSize) / 2); |
| 442 | |
| 443 | for(; CurrentNumber <= MaxNumber; ++CurrentNumber) |
| 444 | { |
| 445 | str_format(aBuf, sizeof(aBuf), "%d", CurrentNumber); |
| 446 | |
| 447 | float x = (CurrentNumber % 16) * 64; |
| 448 | float y = (CurrentNumber / 16) * 64; |
| 449 | |
| 450 | int ApproximateTextWidth = TextRender()->CalculateTextWidth(aBuf, DigitsCount, 0, UniversalSuitableFontSize); |
| 451 | int XOffSet = (MaxWidth - std::clamp(ApproximateTextWidth, 0, MaxWidth)) / 2; |
| 452 | |
| 453 | TextRender()->UploadEntityLayerText(TextImage, (TextImage.m_Width / 16) - XOffSet, (TextImage.m_Height / 16) - YOffset, aBuf, DigitsCount, x + XOffSet, y + YOffset, UniversalSuitableFontSize); |
| 454 | } |
| 455 | } |
| 456 | |
| 457 | void CMapImages::InitOverlayTextures() |
| 458 | { |
nothing calls this directly
no test coverage detected