#include "stdafx.h"
#include "Render.h"
DWORD dwTextRender = 0;
DWORD dwRenderTextCallAddress = 0;
DWORD dwRenderFontAddress = 0;
typedef int (__cdecl* renderText_t)(void*, float, float, int*, char*, ...);
void Render::renderText(float posX, float posY, int color, char* text)
{
C3DRenderer* pRenderer = C3DRenderer::Singleton();
if(pRenderer == NULL) return;
if(pRenderer->pd3ddev == NULL) return;
if(dwTextRender == NULL)
{
dwTextRender = gApp.FindPattern(GetModuleHandle(NULL),
(BYTE*)"\xC7\x44\x24\x30\x25\x2B\xF3\xFF",
(CHAR*)"\x01\x01\x01\x01\x01\x01\x01\x01");
if(dwTextRender == NULL)
{
return;
}
dwRenderFontAddress = *(DWORD*)(dwTextRender - 0x36);
dwRenderTextCallAddress = gApp.GetCallAddress(dwTextRender + 8);
}
DWORD** pFont = (DWORD**) dwRenderFontAddress;
if(!*pFont) return;
DWORD dwRenderState = 0;
pRenderer->pd3ddev->GetRenderState( D3DRS_ZFUNC, &dwRenderState );
pRenderer->pd3ddev->SetRenderState( D3DRS_ZFUNC, D3DCMP_ALWAYS );
((renderText_t) dwRenderTextCallAddress)(*pFont, posX, posY, &color, text);
pRenderer->pd3ddev->SetRenderState( D3DRS_ZFUNC, dwRenderState );
}
void Render::renderRect(int x, int y, int w, int h, D3DCOLOR Color)
{
C3DRenderer* pRenderer = C3DRenderer::Singleton();
if(pRenderer == NULL) return;
if(pRenderer->pd3ddev == NULL) return;
D3DRECT rect = { x, y, x + w, y + h };
pRenderer->pd3ddev->Clear( 1, &rect, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Color, 0, 0 );
}