This commit is contained in:
Christian Semmler 2024-01-05 19:15:52 -05:00
parent 10324483a2
commit f5e7fd099c
3 changed files with 46 additions and 33 deletions

View File

@ -224,6 +224,31 @@ void LegoVideoManager::MoveCursor(MxS32 p_cursorX, MxS32 p_cursorY)
m_cursorY = 463; m_cursorY = 463;
} }
inline void LegoVideoManager::CursorMoved()
{
if (m_cursorX != m_cursorXCopy || m_cursorY != m_cursorYCopy) {
if (m_cursorX >= 0 && m_cursorY >= 0) {
m_cursorXCopy = m_cursorX;
m_cursorYCopy = m_cursorY;
}
}
LPDIRECTDRAWSURFACE ddSurface2 = m_displaySurface->GetDirectDrawSurface2();
if (!m_unk0x514) {
m_unk0x518.top = 0;
m_unk0x518.left = 0;
m_unk0x518.bottom = 16;
m_unk0x518.right = 16;
m_unk0x514 = MxDisplaySurface::FUN_100bc070();
if (!m_unk0x514)
m_cursorMoved = FALSE;
}
ddSurface2->BltFast(m_cursorXCopy, m_cursorYCopy, m_unk0x514, &m_unk0x518, DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
}
// FUNCTION: LEGO1 0x1007b770 // FUNCTION: LEGO1 0x1007b770
MxResult LegoVideoManager::Tickle() MxResult LegoVideoManager::Tickle()
{ {
@ -268,45 +293,18 @@ MxResult LegoVideoManager::Tickle()
while (cursor.Next(presenter)) while (cursor.Next(presenter))
presenter->PutData(); presenter->PutData();
if (m_cursorMoved) { if (m_cursorMoved)
if (m_cursorX != m_cursorXCopy || m_cursorY != m_cursorYCopy) { CursorMoved();
if (m_cursorX >= 0 && m_cursorY >= 0) {
m_cursorXCopy = m_cursorX;
m_cursorYCopy = m_cursorY;
}
}
LPDIRECTDRAWSURFACE ddSurface2 = m_displaySurface->GetDirectDrawSurface2();
if (!m_unk0x514) {
m_unk0x518.top = 0;
m_unk0x518.left = 0;
m_unk0x518.bottom = 16;
m_unk0x518.right = 16;
m_unk0x514 = MxDisplaySurface::FUN_100bc070();
if (!m_unk0x514)
m_cursorMoved = FALSE;
}
ddSurface2->BltFast(
m_cursorXCopy,
m_cursorYCopy,
m_unk0x514,
&m_unk0x518,
DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY
);
}
if (m_drawFPS) if (m_drawFPS)
FUN_1007bbc0(); FUN_1007bbc0();
} }
else if (m_unk0x500) { else if (m_unk0x500) {
MxPresenter* presenter2; MxPresenter* presenter;
MxPresenterListCursor cursor2(m_presenters); MxPresenterListCursor cursor(m_presenters);
if (cursor2.Last(presenter2)) if (cursor.Last(presenter))
presenter2->PutData(); presenter->PutData();
} }
if (!m_initialized) { if (!m_initialized) {

View File

@ -5,6 +5,7 @@
#include "lego3dmanager.h" #include "lego3dmanager.h"
#include "mxdirect3d.h" #include "mxdirect3d.h"
#include "mxdirectx/mxstopwatch.h" #include "mxdirectx/mxstopwatch.h"
#include "mxtransitionmanager.h"
#include "mxunknown100d9d00.h" #include "mxunknown100d9d00.h"
#include "mxvideomanager.h" #include "mxvideomanager.h"
@ -45,6 +46,8 @@ class LegoVideoManager : public MxVideoManager {
MxResult ConfigureD3DRM(); MxResult ConfigureD3DRM();
void FUN_1007bbc0(); void FUN_1007bbc0();
inline void CursorMoved();
Tgl::Renderer* m_renderer; Tgl::Renderer* m_renderer;
Lego3DManager* m_3dManager; // 0x68 Lego3DManager* m_3dManager; // 0x68
LegoROI* m_viewROI; // 0x6c LegoROI* m_viewROI; // 0x6c

View File

@ -62,4 +62,16 @@ class MxPresenterListCursor : public MxPtrListCursor<MxPresenter> {
// SYNTHETIC: LEGO1 0x1001d090 // SYNTHETIC: LEGO1 0x1001d090
// MxPtrList<MxPresenter>::`scalar deleting destructor' // MxPtrList<MxPresenter>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001ef40
// MxPtrListCursor<MxPresenter>::~MxPtrListCursor<MxPresenter>
// TEMPLATE: LEGO1 0x1001f070
// MxListCursor<MxPresenter *>::~MxListCursor<MxPresenter *>
// TEMPLATE: LEGO1 0x1001f0c0
// MxPresenterListCursor::~MxPresenterListCursor
// TEMPLATE: LEGO1 0x10020760
// MxListCursor<MxPresenter *>::MxListCursor<MxPresenter *>
#endif // MXPRESENTERLIST_H #endif // MXPRESENTERLIST_H