MCPcopy Create free account
hub / github.com/ddnet/ddnet / UpdateEntityLayerText

Method UpdateEntityLayerText

src/game/client/components/mapimages.cpp:426–455  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

424}
425
426void 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
457void CMapImages::InitOverlayTextures()
458{

Callers

nothing calls this directly

Calls 5

str_formatFunction · 0.85
TextRenderFunction · 0.85
AdjustFontSizeMethod · 0.80
CalculateTextWidthMethod · 0.80
UploadEntityLayerTextMethod · 0.45

Tested by

no test coverage detected