Decompile fn_21258 (CGameMode::DrawMiniMapCoordinates)

Batch #5922 by superintelligence: 0 byte-identical, 1 confirmed by peer review.

- fn_21258 CGameMode::DrawMiniMapCoordinates: logic confirmed by peer review

Peer-reviewed-by: ragnarok-clanker, KWDev, Snow, SapitoSucio
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
ragnarok-clanker 2026-10-30 18:18:43 +00:00
commit 494d0a3b98
2 changed files with 72 additions and 0 deletions

View file

@ -2,11 +2,15 @@
#include "Contents/Actors/Pc.h"
#include "Contents/Ground/TerrainHeight.h"
#include "Contents/World/World.h"
#include "Render/ActionSpriteDrawing.h"
#include "Render/Primitives/RenderPrimitivePool.h"
#include "Render/Primitives/RenderQueues.h"
#include "Render/Renderer.h"
#include "Render/TextureQuad.h"
#include "Render/Textures/TextureCache.h"
#include "Resource/ResourceMgr.h"
#include "Resource/Sprites/ActionResource.h"
#include "Resource/Sprites/SpriteResource.h"
#include "Resource/World/TerrainResource.h"
#include "UI/Window/UIWindow.h"
#include "UI/Window/UIWindowMgr.h"
@ -312,3 +316,70 @@ void CGameMode::DrawMiniMapMarker(
}
}
}
// OFFSET: 0x00CD1C50
// FUNCTION: fn_21258
void CGameMode::DrawMiniMapCoordinates() {
const char* player = reinterpret_cast<const char*>(this->scene->player);
const int coordinateX = *reinterpret_cast<const int*>(player + 0x494);
const int coordinateY = *reinterpret_cast<const int*>(player + 0x498);
if (coordinateY <= 0 || coordinateX <= 0) {
return;
}
CActRes* action = static_cast<CActRes*>(ResourceMgr::Instance().Load("이팩트\\RankFont.act"));
CSprRes* sprite = static_cast<CSprRes*>(ResourceMgr::Instance().Load("이팩트\\RankFont.spr"));
int digits[4];
int count;
int value = coordinateY;
if (value > 9999) {
value = 9999;
count = 4;
} else {
count = 1;
if (value > 999) {
count = 4;
} else if (value > 99) {
count = 3;
} else if (value > 9) {
count = 2;
}
}
digits[0] = value % 10;
digits[1] = value / 10 % 10;
digits[2] = value / 100 % 10;
digits[3] = value / 1000 % 10;
int x = g_renderer->viewport.width - 80 + count * 25;
const int y = g_renderer->viewport.height - 30;
for (int index = 0; index < count; ++index, x -= 25) {
DrawActionSprite(reinterpret_cast<CRenderSystemBase&>(*this), x, y, action, sprite, 0, digits[index], 1.0f, 0.0f, 0xFFFFFFFF, 0x201);
}
DrawActionSprite(
reinterpret_cast<CRenderSystemBase&>(*this), g_renderer->viewport.width - 80, g_renderer->viewport.height - 40, action, sprite, 0, 10, 1.0f, 0.0f, 0xFFFFFFFF, 0x201
);
value = coordinateX;
count = 1;
if (value > 999) {
count = 4;
} else if (value > 99) {
count = 3;
} else if (value > 9) {
count = 2;
}
digits[0] = value % 10;
digits[1] = value / 10 % 10;
digits[2] = value / 100 % 10;
digits[3] = value / 1000 % 10;
x = g_renderer->viewport.width - 105;
const int secondY = g_renderer->viewport.height - 50;
for (int index = 0; index < count; ++index, x -= 25) {
DrawActionSprite(reinterpret_cast<CRenderSystemBase&>(*this), x, secondY, action, sprite, 0, digits[index], 1.0f, 0.0f, 0xFFFFFFFF, 0x201);
}
}