TombEngine/TR5Main/Game/draw.cpp

83 lines
1.9 KiB
C++
Raw Normal View History

2018-08-19 09:46:58 +02:00
#include "draw.h"
#include "lara.h"
#include "..\Renderer\Renderer.h"
Renderer* g_Renderer;
__int32 __cdecl DrawPhaseGame()
{
// Control routines uses joints calculated here for getting Lara joint positions
CalcLaraMatrices(0);
phd_PushUnitMatrix();
CalcLaraMatrices(1);
// Calls my new rock & roll renderer :)
g_Renderer->Draw();
nFrames = g_Renderer->SyncRenderer();
// We need to pop the matrix stack or the game will crash
MatrixPtr -= 12;
DxMatrixPtr -= 48;
return nFrames;
}
2018-09-07 18:34:18 +02:00
__int32 DrawGame()
{
// Control routines uses joints calculated here for getting Lara joint positions
CalcLaraMatrices(0);
phd_PushUnitMatrix();
CalcLaraMatrices(1);
// Calls my new rock & roll renderer :)
g_Renderer->Draw();
nFrames = g_Renderer->SyncRenderer();
// We need to pop the matrix stack or the game will crash
MatrixPtr -= 12;
DxMatrixPtr -= 48;
return nFrames;
}
__int32 DrawInventory()
{
return g_Renderer->DrawInventory();
}
2018-08-19 09:46:58 +02:00
void __cdecl DoBootScreen(__int32 language)
{
//printf("DoBootScreen\n");
//DrawFullScreenImage((char*)"load.bmp");
}
2018-09-12 20:37:37 +02:00
__int32 __cdecl GetFrame_D2(ITEM_INFO* item, __int16* framePtr[], __int32* rate)
{
ANIM_STRUCT *anim;
int frm;
int first, second;
int frame_size;
int interp, rat;
frm = item->frameNumber;
anim = &Anims[item->animNumber];
framePtr[0] = framePtr[1] = anim->framePtr;
rat = *rate = anim->interpolation & 0x00ff;
frame_size = anim->interpolation >> 8;
frm -= anim->frameBase;
first = frm / rat;
interp = frm % rat;
framePtr[0] += first * frame_size; // Get Frame pointers
framePtr[1] = framePtr[0] + frame_size; // and store away
if (interp == 0)
return(0);
second = first * rat + rat;
if (second>anim->frameEnd) // Clamp KeyFrame to End if need be
*rate = anim->frameEnd - (second - rat);
return(interp);
}
2018-08-19 09:46:58 +02:00
void Inject_Draw()
{
INJECT(0x004B8A80, DoBootScreen);
}