mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-24 08:41:16 +00:00
Merge branch 'isledecomp:master' into checkorder-changes
This commit is contained in:
commit
2c9d60fe1e
1
.github/workflows/format.yml
vendored
1
.github/workflows/format.yml
vendored
@ -17,6 +17,7 @@ jobs:
|
|||||||
--style=file \
|
--style=file \
|
||||||
ISLE/*.cpp ISLE/*.h \
|
ISLE/*.cpp ISLE/*.h \
|
||||||
LEGO1/*.cpp LEGO1/*.h \
|
LEGO1/*.cpp LEGO1/*.h \
|
||||||
|
LEGO1/mxstl/*.h \
|
||||||
LEGO1/realtime/*.cpp LEGO1/realtime/*.h \
|
LEGO1/realtime/*.cpp LEGO1/realtime/*.h \
|
||||||
LEGO1/tgl/*.h \
|
LEGO1/tgl/*.h \
|
||||||
LEGO1/tgl/d3drm/*.cpp LEGO1/tgl/d3drm/*.h \
|
LEGO1/tgl/d3drm/*.cpp LEGO1/tgl/d3drm/*.h \
|
||||||
|
|||||||
@ -230,6 +230,8 @@ if (MINGW)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Additional include directories
|
# Additional include directories
|
||||||
|
|
||||||
|
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/util")
|
||||||
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/3rdparty/vec")
|
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/3rdparty/vec")
|
||||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
|
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
|
||||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smk")
|
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smk")
|
||||||
@ -264,6 +266,8 @@ if (ISLE_BUILD_APP)
|
|||||||
ISLE/define.cpp
|
ISLE/define.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/util")
|
||||||
|
|
||||||
# Include LEGO1 headers in ISLE
|
# Include LEGO1 headers in ISLE
|
||||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1")
|
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1")
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,7 @@ This repository currently has only one goal: accuracy to the original executable
|
|||||||
* [`ISLE`](/ISLE): Decompilation of `ISLE.EXE`. It depends on some code in `LEGO1`.
|
* [`ISLE`](/ISLE): Decompilation of `ISLE.EXE`. It depends on some code in `LEGO1`.
|
||||||
* [`LEGO1`](/LEGO1): Decompilation of `LEGO1.DLL`. This folder contains code from Mindscape's custom in-house engine called **Omni** (file pattern: `mx*`), the LEGO Island-specific extensions for Omni and the game's code (file pattern: `lego*`) as well as several utility libraries developed by Mindscape.
|
* [`LEGO1`](/LEGO1): Decompilation of `LEGO1.DLL`. This folder contains code from Mindscape's custom in-house engine called **Omni** (file pattern: `mx*`), the LEGO Island-specific extensions for Omni and the game's code (file pattern: `lego*`) as well as several utility libraries developed by Mindscape.
|
||||||
* [`tools`](/tools): A set of tools aiding in the decompilation effort.
|
* [`tools`](/tools): A set of tools aiding in the decompilation effort.
|
||||||
|
* [`util`](/util): Utility headers aiding in the decompilation effort.
|
||||||
|
|
||||||
## Tooling
|
## Tooling
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,10 @@
|
|||||||
|
|
||||||
#include <dsound.h>
|
#include <dsound.h>
|
||||||
|
|
||||||
|
// Might be static functions of IsleApp
|
||||||
|
BOOL FindExistingInstance(void);
|
||||||
|
BOOL StartDirectSound(void);
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x401000
|
// FUNCTION: ISLE 0x401000
|
||||||
IsleApp::IsleApp()
|
IsleApp::IsleApp()
|
||||||
{
|
{
|
||||||
@ -169,9 +173,6 @@ void IsleApp::SetupVideoFlags(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL FindExistingInstance(void);
|
|
||||||
BOOL StartDirectSound(void);
|
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x401610
|
// FUNCTION: ISLE 0x401610
|
||||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
|
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
|
||||||
{
|
{
|
||||||
@ -389,52 +390,46 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_DISPLAYCHANGE:
|
case WM_DISPLAYCHANGE:
|
||||||
if (g_isle && VideoManager() && g_isle->m_fullScreen && VideoManager()->GetDirect3D() &&
|
if (g_isle && VideoManager() && g_isle->m_fullScreen && VideoManager()->GetDirect3D()) {
|
||||||
VideoManager()->GetDirect3D()->GetDeviceModeFinder()) {
|
if (VideoManager()->GetDirect3D()->GetDeviceModeFinder()) {
|
||||||
int targetWidth = LOWORD(lParam);
|
int targetDepth = wParam;
|
||||||
int targetHeight = HIWORD(lParam);
|
int targetWidth = LOWORD(lParam);
|
||||||
int targetDepth = wParam;
|
int targetHeight = HIWORD(lParam);
|
||||||
|
|
||||||
if (g_waitingForTargetDepth) {
|
if (g_waitingForTargetDepth) {
|
||||||
g_waitingForTargetDepth = 0;
|
g_waitingForTargetDepth = 0;
|
||||||
g_targetDepth = targetDepth;
|
g_targetDepth = targetDepth;
|
||||||
}
|
|
||||||
else {
|
|
||||||
BOOL valid = FALSE;
|
|
||||||
if (targetWidth == g_targetWidth && targetHeight == g_targetHeight && g_targetDepth == targetDepth) {
|
|
||||||
valid = TRUE;
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
BOOL valid = FALSE;
|
||||||
|
|
||||||
if (g_rmDisabled) {
|
if (g_targetWidth == targetWidth && g_targetHeight == targetHeight &&
|
||||||
if (valid) {
|
g_targetDepth == targetDepth) {
|
||||||
g_reqEnableRMDevice = 1;
|
valid = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_rmDisabled) {
|
||||||
|
if (valid) {
|
||||||
|
g_reqEnableRMDevice = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!valid) {
|
||||||
|
g_rmDisabled = 1;
|
||||||
|
Lego()->StartTimer();
|
||||||
|
VideoManager()->DisableRMDevice();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (!valid) {
|
|
||||||
g_rmDisabled = 1;
|
|
||||||
Lego()->StartTimer();
|
|
||||||
VideoManager()->DisableRMDevice();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_SETCURSOR:
|
|
||||||
if (g_isle) {
|
|
||||||
HCURSOR hCursor = g_isle->m_cursorCurrent;
|
|
||||||
if (hCursor == g_isle->m_cursorBusy || hCursor == g_isle->m_cursorNo || !hCursor) {
|
|
||||||
SetCursor(hCursor);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
// While this probably should be (HIWORD(lParam) & KF_REPEAT), this seems
|
// While this probably should be (HIWORD(lParam) & KF_REPEAT), this seems
|
||||||
// to be what the assembly is actually doing
|
// to be what the assembly is actually doing
|
||||||
if (lParam & (KF_REPEAT << 16)) {
|
if (lParam & (KF_REPEAT << 16)) {
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
keyCode = wParam;
|
|
||||||
type = c_notificationKeyPress;
|
type = c_notificationKeyPress;
|
||||||
|
keyCode = wParam;
|
||||||
break;
|
break;
|
||||||
case WM_MOUSEMOVE:
|
case WM_MOUSEMOVE:
|
||||||
g_mousemoved = 1;
|
g_mousemoved = 1;
|
||||||
@ -457,6 +452,13 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case WM_SETCURSOR:
|
||||||
|
if (g_isle && (g_isle->m_cursorCurrent == g_isle->m_cursorBusy ||
|
||||||
|
g_isle->m_cursorCurrent == g_isle->m_cursorNo || !g_isle->m_cursorCurrent)) {
|
||||||
|
SetCursor(g_isle->m_cursorCurrent);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
@ -812,10 +814,8 @@ inline void IsleApp::Tick(BOOL sleepIfNotNextFrame)
|
|||||||
}
|
}
|
||||||
this->m_gameStarted = 1;
|
this->m_gameStarted = 1;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else if (sleepIfNotNextFrame != 0)
|
||||||
if (sleepIfNotNextFrame != 0)
|
|
||||||
Sleep(0);
|
Sleep(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#ifndef MXATOMIDCOUNTER_H
|
#ifndef MXATOMIDCOUNTER_H
|
||||||
#define MXATOMIDCOUNTER_H
|
#define MXATOMIDCOUNTER_H
|
||||||
|
|
||||||
#include "compat.h" // STL
|
#include "mxstl/stlcompat.h"
|
||||||
#include "mxstring.h"
|
#include "mxstring.h"
|
||||||
|
|
||||||
// Counts the number of existing MxAtomId objects based
|
// Counts the number of existing MxAtomId objects based
|
||||||
|
|||||||
@ -244,7 +244,7 @@ MxResult MxBackgroundAudioManager::PlayMusic(MxDSAction& p_action, undefined4 p_
|
|||||||
m_action2.SetAtomId(p_action.GetAtomId());
|
m_action2.SetAtomId(p_action.GetAtomId());
|
||||||
m_action2.SetObjectId(p_action.GetObjectId());
|
m_action2.SetObjectId(p_action.GetObjectId());
|
||||||
m_action2.SetUnknown84(this);
|
m_action2.SetUnknown84(this);
|
||||||
m_action2.SetUnknown8c(this);
|
m_action2.SetOrigin(this);
|
||||||
|
|
||||||
MxResult result = Start(&m_action2);
|
MxResult result = Start(&m_action2);
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
#include "mxcompositepresenter.h"
|
#include "mxcompositepresenter.h"
|
||||||
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
|
#include "mxactionnotificationparam.h"
|
||||||
|
#include "mxautolocker.h"
|
||||||
|
#include "mxdsmultiaction.h"
|
||||||
#include "mxnotificationmanager.h"
|
#include "mxnotificationmanager.h"
|
||||||
|
#include "mxobjectfactory.h"
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(MxCompositePresenter, 0x4c);
|
DECOMP_SIZE_ASSERT(MxCompositePresenter, 0x4c);
|
||||||
|
|
||||||
@ -13,6 +17,9 @@ MxBool MxCompositePresenter::VTable0x64(undefined4 p_unknown)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1004ae90
|
||||||
|
// list<MxPresenter *,allocator<MxPresenter *> >::_Buynode
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b60b0
|
// FUNCTION: LEGO1 0x100b60b0
|
||||||
MxCompositePresenter::MxCompositePresenter()
|
MxCompositePresenter::MxCompositePresenter()
|
||||||
{
|
{
|
||||||
@ -43,34 +50,106 @@ MxCompositePresenter::~MxCompositePresenter()
|
|||||||
NotificationManager()->Unregister(this);
|
NotificationManager()->Unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100b6410
|
// FUNCTION: LEGO1 0x100b6410
|
||||||
MxResult MxCompositePresenter::StartAction(MxStreamController*, MxDSAction*)
|
MxResult MxCompositePresenter::StartAction(MxStreamController* p_controller, MxDSAction* p_action)
|
||||||
{
|
{
|
||||||
// TODO
|
MxAutoLocker lock(&m_criticalSection);
|
||||||
return SUCCESS;
|
|
||||||
|
MxResult result = FAILURE;
|
||||||
|
MxDSActionList* actions = ((MxDSMultiAction*) p_action)->GetActionList();
|
||||||
|
MxObjectFactory* factory = ObjectFactory();
|
||||||
|
MxDSActionListCursor cursor(actions);
|
||||||
|
MxDSAction* action;
|
||||||
|
|
||||||
|
if (MxPresenter::StartAction(p_controller, p_action) == SUCCESS) {
|
||||||
|
// The usual cursor.Next() loop doesn't match here, even though
|
||||||
|
// the logic is the same. It does match when "deconstructed" into
|
||||||
|
// the following Head(), Current() and NextFragment() calls,
|
||||||
|
// but this seems unlikely to be the original code.
|
||||||
|
// The alpha debug build also uses Next().
|
||||||
|
cursor.Head();
|
||||||
|
while (cursor.Current(action)) {
|
||||||
|
cursor.NextFragment();
|
||||||
|
|
||||||
|
MxBool success = FALSE;
|
||||||
|
|
||||||
|
action->CopyFlags(m_action->GetFlags());
|
||||||
|
|
||||||
|
const char* presenterName = PresenterNameDispatch(*action);
|
||||||
|
MxPresenter* presenter = (MxPresenter*) factory->Create(presenterName);
|
||||||
|
|
||||||
|
if (presenter && presenter->AddToManager() == SUCCESS) {
|
||||||
|
presenter->SetCompositePresenter(this);
|
||||||
|
if (presenter->StartAction(p_controller, action) == SUCCESS)
|
||||||
|
success = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
action->SetOrigin(this);
|
||||||
|
m_list.push_back(presenter);
|
||||||
|
}
|
||||||
|
else if (presenter)
|
||||||
|
delete presenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100b65e0
|
// FUNCTION: LEGO1 0x100b65e0
|
||||||
void MxCompositePresenter::EndAction()
|
void MxCompositePresenter::EndAction()
|
||||||
{
|
{
|
||||||
// TODO
|
MxAutoLocker lock(&m_criticalSection);
|
||||||
|
|
||||||
|
if (!m_action)
|
||||||
|
return;
|
||||||
|
|
||||||
|
((MxDSMultiAction*) m_action)->GetActionList()->DeleteAll(FALSE);
|
||||||
|
|
||||||
|
while (!m_list.empty()) {
|
||||||
|
MxPresenter* presenter = m_list.front();
|
||||||
|
m_list.pop_front();
|
||||||
|
presenter->SetCompositePresenter(NULL);
|
||||||
|
presenter->EndAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
MxDSAction* action = m_action;
|
||||||
|
MxPresenter::EndAction();
|
||||||
|
|
||||||
|
if (action && action->GetOrigin()) {
|
||||||
|
NotificationManager()->Send(
|
||||||
|
action->GetOrigin(),
|
||||||
|
&MxEndActionNotificationParam(c_notificationEndAction, this, action, FALSE)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100b6760
|
// FUNCTION: LEGO1 0x100b6760
|
||||||
MxLong MxCompositePresenter::Notify(MxParam& p)
|
MxLong MxCompositePresenter::Notify(MxParam& p)
|
||||||
{
|
{
|
||||||
// TODO
|
MxAutoLocker lock(&m_criticalSection);
|
||||||
|
|
||||||
|
switch (((MxNotificationParam&) p).GetNotification()) {
|
||||||
|
case c_notificationEndAction:
|
||||||
|
VTable0x58(p);
|
||||||
|
break;
|
||||||
|
case MXPRESENTER_NOTIFICATION:
|
||||||
|
VTable0x5c(p);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100b67f0
|
// STUB: LEGO1 0x100b67f0
|
||||||
void MxCompositePresenter::VTable0x58()
|
void MxCompositePresenter::VTable0x58(MxParam& p)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100b69b0
|
// STUB: LEGO1 0x100b69b0
|
||||||
void MxCompositePresenter::VTable0x5c()
|
void MxCompositePresenter::VTable0x5c(MxParam& p)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
#ifndef MXCOMPOSITEPRESENTER_H
|
#ifndef MXCOMPOSITEPRESENTER_H
|
||||||
#define MXCOMPOSITEPRESENTER_H
|
#define MXCOMPOSITEPRESENTER_H
|
||||||
|
|
||||||
#include "compat.h" // STL
|
|
||||||
#include "mxpresenter.h"
|
#include "mxpresenter.h"
|
||||||
|
#include "mxstl/stlcompat.h"
|
||||||
|
|
||||||
class MxCompositePresenterList : public list<MxPresenter*> {};
|
class MxCompositePresenterList : public list<MxPresenter*> {};
|
||||||
|
|
||||||
@ -26,15 +26,15 @@ class MxCompositePresenter : public MxPresenter {
|
|||||||
return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name);
|
return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult StartAction(MxStreamController*, MxDSAction*) override; // vtable+0x3c
|
virtual MxResult StartAction(MxStreamController*, MxDSAction* p_action) override; // vtable+0x3c
|
||||||
virtual void EndAction() override; // vtable+0x40
|
virtual void EndAction() override; // vtable+0x40
|
||||||
virtual void SetTickleState(TickleState p_tickleState) override; // vtable+0x44
|
virtual void SetTickleState(TickleState p_tickleState) override; // vtable+0x44
|
||||||
virtual MxBool HasTickleStatePassed(TickleState p_tickleState) override; // vtable+0x48
|
virtual MxBool HasTickleStatePassed(TickleState p_tickleState) override; // vtable+0x48
|
||||||
virtual void Enable(MxBool p_enable) override; // vtable+0x54
|
virtual void Enable(MxBool p_enable) override; // vtable+0x54
|
||||||
virtual void VTable0x58(); // vtable+0x58
|
virtual void VTable0x58(MxParam& p); // vtable+0x58
|
||||||
virtual void VTable0x5c(); // vtable+0x5c
|
virtual void VTable0x5c(MxParam& p); // vtable+0x5c
|
||||||
virtual void VTable0x60(MxPresenter* p_presenter); // vtable+0x60
|
virtual void VTable0x60(MxPresenter* p_presenter); // vtable+0x60
|
||||||
virtual MxBool VTable0x64(undefined4 p_unknown); // vtable+0x64
|
virtual MxBool VTable0x64(undefined4 p_unknown); // vtable+0x64
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxCompositePresenterList m_list; // 0x40
|
MxCompositePresenterList m_list; // 0x40
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
#ifndef MXDISKSTREAMCONTROLLER_H
|
#ifndef MXDISKSTREAMCONTROLLER_H
|
||||||
#define MXDISKSTREAMCONTROLLER_H
|
#define MXDISKSTREAMCONTROLLER_H
|
||||||
|
|
||||||
#include "compat.h" // STL
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
#include "mxdsbuffer.h"
|
#include "mxdsbuffer.h"
|
||||||
|
#include "mxstl/stlcompat.h"
|
||||||
#include "mxstreamcontroller.h"
|
#include "mxstreamcontroller.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@ MxDSAction::MxDSAction()
|
|||||||
this->m_up.Fill(FLT_MAX);
|
this->m_up.Fill(FLT_MAX);
|
||||||
this->m_unk84 = NULL;
|
this->m_unk84 = NULL;
|
||||||
this->m_unk88 = 0;
|
this->m_unk88 = 0;
|
||||||
this->m_unk8c = NULL;
|
this->m_origin = NULL;
|
||||||
this->m_unkTimingField = INT_MIN;
|
this->m_unkTimingField = INT_MIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ void MxDSAction::CopyFrom(MxDSAction& p_dsAction)
|
|||||||
AppendData(p_dsAction.m_extraLength, p_dsAction.m_extraData);
|
AppendData(p_dsAction.m_extraLength, p_dsAction.m_extraData);
|
||||||
this->m_unk84 = p_dsAction.m_unk84;
|
this->m_unk84 = p_dsAction.m_unk84;
|
||||||
this->m_unk88 = p_dsAction.m_unk88;
|
this->m_unk88 = p_dsAction.m_unk88;
|
||||||
this->m_unk8c = p_dsAction.m_unk8c;
|
this->m_origin = p_dsAction.m_origin;
|
||||||
this->m_unkTimingField = p_dsAction.m_unkTimingField;
|
this->m_unkTimingField = p_dsAction.m_unkTimingField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -64,12 +64,20 @@ class MxDSAction : public MxDSObject {
|
|||||||
inline void SetLoopCount(MxS32 p_loopCount) { m_loopCount = p_loopCount; }
|
inline void SetLoopCount(MxS32 p_loopCount) { m_loopCount = p_loopCount; }
|
||||||
inline const Vector3Data& GetLocation() const { return m_location; }
|
inline const Vector3Data& GetLocation() const { return m_location; }
|
||||||
inline void SetUnknown84(MxCore* p_unk84) { m_unk84 = p_unk84; }
|
inline void SetUnknown84(MxCore* p_unk84) { m_unk84 = p_unk84; }
|
||||||
inline MxCore* GetUnknown8c() { return m_unk8c; }
|
inline MxCore* GetOrigin() { return m_origin; }
|
||||||
inline void SetUnknown8c(MxCore* p_unk8c) { m_unk8c = p_unk8c; }
|
inline void SetOrigin(MxCore* p_origin) { m_origin = p_origin; }
|
||||||
|
|
||||||
inline MxBool IsLooping() const { return m_flags & Flag_Looping; }
|
inline MxBool IsLooping() const { return m_flags & Flag_Looping; }
|
||||||
inline MxBool IsBit3() const { return m_flags & Flag_Bit3; }
|
inline MxBool IsBit3() const { return m_flags & Flag_Bit3; }
|
||||||
|
|
||||||
|
inline void CopyFlags(MxU32 p_flags)
|
||||||
|
{
|
||||||
|
if (p_flags & MxDSAction::Flag_Looping)
|
||||||
|
SetFlags(GetFlags() | MxDSAction::Flag_Looping);
|
||||||
|
else if (p_flags & MxDSAction::Flag_Bit3)
|
||||||
|
SetFlags(GetFlags() | MxDSAction::Flag_Bit3);
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MxU32 m_sizeOnDisk; // 0x2c
|
MxU32 m_sizeOnDisk; // 0x2c
|
||||||
MxU32 m_flags; // 0x30
|
MxU32 m_flags; // 0x30
|
||||||
@ -83,7 +91,7 @@ class MxDSAction : public MxDSObject {
|
|||||||
MxU16 m_extraLength; // 0x80
|
MxU16 m_extraLength; // 0x80
|
||||||
MxCore* m_unk84; // 0x84
|
MxCore* m_unk84; // 0x84
|
||||||
undefined4 m_unk88; // 0x88
|
undefined4 m_unk88; // 0x88
|
||||||
MxCore* m_unk8c; // 0x8c
|
MxCore* m_origin; // 0x8c
|
||||||
MxLong m_unkTimingField; // 0x90
|
MxLong m_unkTimingField; // 0x90
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -36,9 +36,11 @@ class MxDSMultiAction : public MxDSAction {
|
|||||||
virtual MxBool HasId(MxU32 p_objectId) override; // vtable+34;
|
virtual MxBool HasId(MxU32 p_objectId) override; // vtable+34;
|
||||||
virtual void SetUnkTimingField(MxLong p_unkTimingField) override; // vtable+38;
|
virtual void SetUnkTimingField(MxLong p_unkTimingField) override; // vtable+38;
|
||||||
|
|
||||||
|
inline MxDSActionList* GetActionList() const { return m_actions; };
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MxU32 m_sizeOnDisk;
|
MxU32 m_sizeOnDisk; // 0x94
|
||||||
MxDSActionList* m_actions;
|
MxDSActionList* m_actions; // 0x98
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MXDSMULTIACTION_H
|
#endif // MXDSMULTIACTION_H
|
||||||
|
|||||||
@ -37,18 +37,16 @@ class MxDSObject : public MxCore {
|
|||||||
virtual void Deserialize(char** p_source, MxS16 p_unk24); // vtable+1c;
|
virtual void Deserialize(char** p_source, MxS16 p_unk24); // vtable+1c;
|
||||||
inline virtual void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; } // vtable+20;
|
inline virtual void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; } // vtable+20;
|
||||||
|
|
||||||
inline const MxAtomId& GetAtomId() { return this->m_atomId; }
|
inline MxDSType GetType() const { return (MxDSType) this->m_type; }
|
||||||
|
inline const char* GetSourceName() const { return this->m_sourceName; }
|
||||||
inline MxU32 GetObjectId() { return this->m_objectId; }
|
inline MxU32 GetObjectId() { return this->m_objectId; }
|
||||||
|
inline const MxAtomId& GetAtomId() { return this->m_atomId; }
|
||||||
inline MxS16 GetUnknown24() { return this->m_unk24; }
|
inline MxS16 GetUnknown24() { return this->m_unk24; }
|
||||||
|
|
||||||
|
inline void SetType(MxDSType p_type) { this->m_type = p_type; }
|
||||||
inline void SetObjectId(MxU32 p_objectId) { this->m_objectId = p_objectId; }
|
inline void SetObjectId(MxU32 p_objectId) { this->m_objectId = p_objectId; }
|
||||||
inline void SetUnknown24(MxS16 p_unk24) { this->m_unk24 = p_unk24; }
|
inline void SetUnknown24(MxS16 p_unk24) { this->m_unk24 = p_unk24; }
|
||||||
|
|
||||||
inline const char* GetSourceName() const { return this->m_sourceName; }
|
|
||||||
|
|
||||||
inline void SetType(MxDSType p_type) { this->m_type = p_type; }
|
|
||||||
inline MxDSType GetType() const { return (MxDSType) this->m_type; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxU32 m_sizeOnDisk; // 0x8
|
MxU32 m_sizeOnDisk; // 0x8
|
||||||
MxU16 m_type; // 0xc
|
MxU16 m_type; // 0xc
|
||||||
|
|||||||
@ -60,7 +60,7 @@ class MxList : protected MxCollection<T> {
|
|||||||
virtual ~MxList() override;
|
virtual ~MxList() override;
|
||||||
|
|
||||||
void Append(T p_obj) { _InsertEntry(p_obj, this->m_last, NULL); };
|
void Append(T p_obj) { _InsertEntry(p_obj, this->m_last, NULL); };
|
||||||
void DeleteAll();
|
void DeleteAll(MxBool p_destroy = TRUE);
|
||||||
MxU32 GetCount() { return this->m_count; }
|
MxU32 GetCount() { return this->m_count; }
|
||||||
void SetDestroy(void (*p_customDestructor)(T)) { this->m_customDestructor = p_customDestructor; }
|
void SetDestroy(void (*p_customDestructor)(T)) { this->m_customDestructor = p_customDestructor; }
|
||||||
|
|
||||||
@ -95,6 +95,13 @@ class MxListCursor : public MxCore {
|
|||||||
void Reset() { m_match = NULL; }
|
void Reset() { m_match = NULL; }
|
||||||
void Prepend(T p_newobj);
|
void Prepend(T p_newobj);
|
||||||
|
|
||||||
|
// TODO: Probably shouldn't exist
|
||||||
|
void NextFragment()
|
||||||
|
{
|
||||||
|
if (m_match)
|
||||||
|
m_match = m_match->GetNext();
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxList<T>* m_list;
|
MxList<T>* m_list;
|
||||||
MxListEntry<T>* m_match;
|
MxListEntry<T>* m_match;
|
||||||
@ -113,14 +120,17 @@ MxList<T>::~MxList()
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline void MxList<T>::DeleteAll()
|
inline void MxList<T>::DeleteAll(MxBool p_destroy)
|
||||||
{
|
{
|
||||||
for (MxListEntry<T>* t = m_first;;) {
|
for (MxListEntry<T>* t = m_first;;) {
|
||||||
if (!t)
|
if (!t)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
MxListEntry<T>* next = t->GetNext();
|
MxListEntry<T>* next = t->GetNext();
|
||||||
this->m_customDestructor(t->GetValue());
|
|
||||||
|
if (p_destroy)
|
||||||
|
this->m_customDestructor(t->GetValue());
|
||||||
|
|
||||||
delete t;
|
delete t;
|
||||||
t = next;
|
t = next;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -170,9 +170,9 @@ void MxMediaPresenter::EndAction()
|
|||||||
m_subscriber = NULL;
|
m_subscriber = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action && action->GetUnknown8c()) {
|
if (action && action->GetOrigin()) {
|
||||||
NotificationManager()->Send(
|
NotificationManager()->Send(
|
||||||
action->GetUnknown8c(),
|
action->GetOrigin(),
|
||||||
&MxEndActionNotificationParam(c_notificationEndAction, this, action, FALSE)
|
&MxEndActionNotificationParam(c_notificationEndAction, this, action, FALSE)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
#ifndef MXNOTIFICATIONMANAGER_H
|
#ifndef MXNOTIFICATIONMANAGER_H
|
||||||
#define MXNOTIFICATIONMANAGER_H
|
#define MXNOTIFICATIONMANAGER_H
|
||||||
|
|
||||||
#include "compat.h"
|
|
||||||
#include "mxcore.h"
|
#include "mxcore.h"
|
||||||
#include "mxcriticalsection.h"
|
#include "mxcriticalsection.h"
|
||||||
#include "mxnotificationparam.h"
|
#include "mxnotificationparam.h"
|
||||||
|
#include "mxstl/stlcompat.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
|
||||||
class MxNotification {
|
class MxNotification {
|
||||||
|
|||||||
@ -195,7 +195,7 @@ void MxPresenter::SendToCompositePresenter(MxOmni* p_omni)
|
|||||||
|
|
||||||
NotificationManager()->Send(m_compositePresenter, &MxNotificationParam(MXPRESENTER_NOTIFICATION, this));
|
NotificationManager()->Send(m_compositePresenter, &MxNotificationParam(MXPRESENTER_NOTIFICATION, this));
|
||||||
|
|
||||||
m_action->SetUnknown8c(p_omni ? p_omni : MxOmni::GetInstance());
|
m_action->SetOrigin(p_omni ? p_omni : MxOmni::GetInstance());
|
||||||
m_compositePresenter = NULL;
|
m_compositePresenter = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,6 +74,11 @@ class MxPresenter : public MxCore {
|
|||||||
inline MxS32 GetDisplayZ() const { return this->m_displayZ; }
|
inline MxS32 GetDisplayZ() const { return this->m_displayZ; }
|
||||||
inline MxDSAction* GetAction() const { return this->m_action; }
|
inline MxDSAction* GetAction() const { return this->m_action; }
|
||||||
|
|
||||||
|
inline void SetCompositePresenter(MxCompositePresenter* p_compositePresenter)
|
||||||
|
{
|
||||||
|
m_compositePresenter = p_compositePresenter;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
__declspec(dllexport) void Init();
|
__declspec(dllexport) void Init();
|
||||||
void SendToCompositePresenter(MxOmni*);
|
void SendToCompositePresenter(MxOmni*);
|
||||||
|
|||||||
@ -42,11 +42,19 @@ MxResult MxRAMStreamController::vtable0x20(MxDSAction* p_action)
|
|||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100c6320
|
// FUNCTION: LEGO1 0x100c6320
|
||||||
MxResult MxRAMStreamController::vtable0x24(undefined4 p_unknown)
|
MxResult MxRAMStreamController::vtable0x24(MxDSAction* p_action)
|
||||||
{
|
{
|
||||||
// TODO STUB
|
MxDSAction action;
|
||||||
return FAILURE;
|
do {
|
||||||
|
if (m_action0x60 != NULL) {
|
||||||
|
delete m_action0x60;
|
||||||
|
m_action0x60 = NULL;
|
||||||
|
}
|
||||||
|
action = *p_action;
|
||||||
|
MxStreamController::vtable0x24(&action);
|
||||||
|
} while (m_action0x60 != NULL);
|
||||||
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100d0d80
|
// STUB: LEGO1 0x100d0d80
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class MxRAMStreamController : public MxStreamController {
|
|||||||
|
|
||||||
virtual MxResult Open(const char* p_filename) override;
|
virtual MxResult Open(const char* p_filename) override;
|
||||||
virtual MxResult vtable0x20(MxDSAction* p_action) override;
|
virtual MxResult vtable0x20(MxDSAction* p_action) override;
|
||||||
virtual MxResult vtable0x24(undefined4 p_unknown) override;
|
virtual MxResult vtable0x24(MxDSAction* p_action) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxDSBuffer m_buffer;
|
MxDSBuffer m_buffer;
|
||||||
|
|||||||
18
LEGO1/mxstl/stlcompat.h
Normal file
18
LEGO1/mxstl/stlcompat.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef STLCOMPAT_H
|
||||||
|
#define STLCOMPAT_H
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER <= MSVC420_VERSION
|
||||||
|
// Disable "nonstandard extension used : 'bool'" warning spam
|
||||||
|
#pragma warning(disable : 4237)
|
||||||
|
#include "mxstl.h"
|
||||||
|
#else
|
||||||
|
#include <algorithm>
|
||||||
|
#include <list>
|
||||||
|
#include <set>
|
||||||
|
using std::list;
|
||||||
|
using std::set;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // STLCOMPAT_H
|
||||||
@ -117,11 +117,20 @@ MxResult MxStreamController::vtable0x20(MxDSAction* p_action)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100c1740
|
// FUNCTION: LEGO1 0x100c1740
|
||||||
MxResult MxStreamController::vtable0x24(undefined4 p_unknown)
|
MxResult MxStreamController::vtable0x24(MxDSAction* p_action)
|
||||||
{
|
{
|
||||||
// TODO STUB
|
MxAutoLocker locker(&m_criticalSection);
|
||||||
return FAILURE;
|
vtable0x30(p_action);
|
||||||
|
m_action0x60 = m_unkList0x54.Find(p_action, TRUE);
|
||||||
|
if (m_action0x60 == NULL) {
|
||||||
|
return FAILURE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
p_action->SetUnknown24(m_action0x60->GetUnknown24());
|
||||||
|
p_action->SetObjectId(m_action0x60->GetObjectId());
|
||||||
|
return FUN_100c1f00(m_action0x60);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100c1800
|
// FUNCTION: LEGO1 0x100c1800
|
||||||
@ -153,9 +162,25 @@ MxResult MxStreamController::vtable0x2c(MxDSAction* p_action, MxU32 p_bufferval)
|
|||||||
return FUN_100c1800(p_action, (p_bufferval / m_provider->GetFileSize()) * m_provider->GetFileSize());
|
return FUN_100c1800(p_action, (p_bufferval / m_provider->GetFileSize()) * m_provider->GetFileSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100c1ce0
|
// FUNCTION: LEGO1 0x100c1ce0
|
||||||
MxResult MxStreamController::vtable0x30(undefined4 p_unknown)
|
MxResult MxStreamController::vtable0x30(MxDSAction* p_unknown)
|
||||||
{
|
{
|
||||||
|
MxAutoLocker locker(&m_criticalSection);
|
||||||
|
MxResult result = FAILURE;
|
||||||
|
MxDSAction* action = m_unkList0x3c.Find(p_unknown, TRUE);
|
||||||
|
if (action != NULL) {
|
||||||
|
MxNextActionDataStart* data = m_nextActionList.Find(action->GetObjectId(), action->GetUnknown24());
|
||||||
|
delete action;
|
||||||
|
delete data;
|
||||||
|
result = SUCCESS;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100c1f00
|
||||||
|
MxResult MxStreamController::FUN_100c1f00(MxDSAction* p_action)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
#ifndef MXSTREAMCONTROLLER_H
|
#ifndef MXSTREAMCONTROLLER_H
|
||||||
#define MXSTREAMCONTROLLER_H
|
#define MXSTREAMCONTROLLER_H
|
||||||
|
|
||||||
#include "compat.h" // STL
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
#include "mxatomid.h"
|
#include "mxatomid.h"
|
||||||
#include "mxcore.h"
|
#include "mxcore.h"
|
||||||
#include "mxcriticalsection.h"
|
#include "mxcriticalsection.h"
|
||||||
#include "mxdsaction.h"
|
#include "mxdsaction.h"
|
||||||
#include "mxdsobject.h"
|
#include "mxdsobject.h"
|
||||||
|
#include "mxstl/stlcompat.h"
|
||||||
#include "mxstreamlist.h"
|
#include "mxstreamlist.h"
|
||||||
#include "mxstreamprovider.h"
|
#include "mxstreamprovider.h"
|
||||||
|
|
||||||
@ -36,14 +36,15 @@ class MxStreamController : public MxCore {
|
|||||||
virtual MxResult vtable0x18(undefined4 p_unknown, undefined4 p_unknown2); // vtable+0x18
|
virtual MxResult vtable0x18(undefined4 p_unknown, undefined4 p_unknown2); // vtable+0x18
|
||||||
virtual MxResult vtable0x1C(undefined4 p_unknown, undefined4 p_unknown2); // vtable+0x1c
|
virtual MxResult vtable0x1C(undefined4 p_unknown, undefined4 p_unknown2); // vtable+0x1c
|
||||||
virtual MxResult vtable0x20(MxDSAction* p_action); // vtable+0x20
|
virtual MxResult vtable0x20(MxDSAction* p_action); // vtable+0x20
|
||||||
virtual MxResult vtable0x24(undefined4 p_unknown); // vtable+0x24
|
virtual MxResult vtable0x24(MxDSAction* p_unknown); // vtable+0x24
|
||||||
MxResult FUN_100c1800(MxDSAction* p_action, MxU32 p_val);
|
MxResult FUN_100c1800(MxDSAction* p_action, MxU32 p_val);
|
||||||
virtual MxResult vtable0x28(); // vtable+0x28
|
virtual MxResult vtable0x28(); // vtable+0x28
|
||||||
virtual MxResult vtable0x2c(MxDSAction* p_action, MxU32 p_bufferval); // vtable+0x2c
|
virtual MxResult vtable0x2c(MxDSAction* p_action, MxU32 p_bufferval); // vtable+0x2c
|
||||||
virtual MxResult vtable0x30(undefined4 p_unknown); // vtable+0x30
|
virtual MxResult vtable0x30(MxDSAction* p_unknown); // vtable+0x30
|
||||||
|
|
||||||
MxBool FUN_100c20d0(MxDSObject& p_obj);
|
MxBool FUN_100c20d0(MxDSObject& p_obj);
|
||||||
MxResult FUN_100c1a00(MxDSAction* p_action, MxU32 p_bufferval);
|
MxResult FUN_100c1a00(MxDSAction* p_action, MxU32 p_bufferval);
|
||||||
|
MxResult FUN_100c1f00(MxDSAction* p_action);
|
||||||
|
|
||||||
inline MxAtomId& GetAtom() { return atom; };
|
inline MxAtomId& GetAtom() { return atom; };
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
#ifndef MXSTREAMLIST_H
|
#ifndef MXSTREAMLIST_H
|
||||||
#define MXSTREAMLIST_H
|
#define MXSTREAMLIST_H
|
||||||
|
|
||||||
#include "compat.h" // STL
|
|
||||||
#include "mxdsaction.h"
|
#include "mxdsaction.h"
|
||||||
#include "mxdssubscriber.h"
|
#include "mxdssubscriber.h"
|
||||||
#include "mxnextactiondatastart.h"
|
#include "mxnextactiondatastart.h"
|
||||||
|
#include "mxstl/stlcompat.h"
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
class MxStreamList : public list<T> {};
|
class MxStreamList : public list<T> {};
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
#ifndef MXTICKLEMANAGER_H
|
#ifndef MXTICKLEMANAGER_H
|
||||||
#define MXTICKLEMANAGER_H
|
#define MXTICKLEMANAGER_H
|
||||||
|
|
||||||
#include "compat.h"
|
|
||||||
#include "mxcore.h"
|
#include "mxcore.h"
|
||||||
|
#include "mxstl/stlcompat.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
|
||||||
class MxTickleClient {
|
class MxTickleClient {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
|
|
||||||
#include "../decomp.h"
|
#include "decomp.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#include "orientableroi.h"
|
#include "orientableroi.h"
|
||||||
|
|
||||||
#include "../decomp.h"
|
#include "decomp.h"
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(OrientableROI, 0xdc)
|
DECOMP_SIZE_ASSERT(OrientableROI, 0xdc)
|
||||||
|
|
||||||
|
|||||||
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
// ROI stands for Real-time Object Instance.
|
// ROI stands for Real-time Object Instance.
|
||||||
|
|
||||||
#include "../compat.h"
|
#include "../mxstl/stlcompat.h"
|
||||||
#include "../mxstl.h"
|
|
||||||
#include "../realtime/realtime.h"
|
#include "../realtime/realtime.h"
|
||||||
|
#include "compat.h"
|
||||||
#include "lodlist.h"
|
#include "lodlist.h"
|
||||||
#include "vector.h"
|
#include "vector.h"
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
#include "vector.h"
|
#include "vector.h"
|
||||||
|
|
||||||
#include "../decomp.h"
|
#include "decomp.h"
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#include "../../decomp.h"
|
|
||||||
#include "../tgl.h"
|
#include "../tgl.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
#include <d3drm.h>
|
#include <d3drm.h>
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
#ifndef VIEWLODLIST_H
|
#ifndef VIEWLODLIST_H
|
||||||
#define VIEWLODLIST_H
|
#define VIEWLODLIST_H
|
||||||
|
|
||||||
#include "../compat.h"
|
|
||||||
#include "../realtime/lodlist.h"
|
#include "../realtime/lodlist.h"
|
||||||
#include "assert.h"
|
#include "assert.h"
|
||||||
|
#include "compat.h"
|
||||||
|
|
||||||
#pragma warning(disable : 4786)
|
#pragma warning(disable : 4786)
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#include "viewroi.h"
|
#include "viewroi.h"
|
||||||
|
|
||||||
#include "../decomp.h"
|
#include "decomp.h"
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(ViewROI, 0xe0)
|
DECOMP_SIZE_ASSERT(ViewROI, 0xe0)
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef ISLECOMPAT_H
|
#ifndef COMPAT_H
|
||||||
#define ISLECOMPAT_H
|
#define COMPAT_H
|
||||||
|
|
||||||
// Various macros to enable compiling with other/newer compilers.
|
// Various macros to enable compiling with other/newer compilers.
|
||||||
|
|
||||||
@ -11,9 +11,6 @@
|
|||||||
#define COMPAT_CONST
|
#define COMPAT_CONST
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// DIsable "nonstandard extension used : 'bool'" warning spam
|
|
||||||
#pragma warning(disable : 4237)
|
|
||||||
|
|
||||||
// Disable "identifier was truncated to '255' characters" warning.
|
// Disable "identifier was truncated to '255' characters" warning.
|
||||||
// Impossible to avoid this if using STL map or set.
|
// Impossible to avoid this if using STL map or set.
|
||||||
// This removes most (but not all) occurrences of the warning.
|
// This removes most (but not all) occurrences of the warning.
|
||||||
@ -21,17 +18,6 @@
|
|||||||
|
|
||||||
#define MSVC420_VERSION 1020
|
#define MSVC420_VERSION 1020
|
||||||
|
|
||||||
// STL compatibility.
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER <= MSVC420_VERSION
|
|
||||||
#include "mxstl.h"
|
|
||||||
#else
|
|
||||||
#include <algorithm>
|
|
||||||
#include <list>
|
|
||||||
#include <set>
|
|
||||||
using std::list;
|
|
||||||
using std::set;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// We use `override` so newer compilers can tell us our vtables are valid,
|
// We use `override` so newer compilers can tell us our vtables are valid,
|
||||||
// however this keyword was added in C++11, so we define it as empty for
|
// however this keyword was added in C++11, so we define it as empty for
|
||||||
// compatibility with older compilers.
|
// compatibility with older compilers.
|
||||||
@ -39,4 +25,4 @@ using std::set;
|
|||||||
#define override
|
#define override
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // ISLECOMPAT_H
|
#endif // COMPAT_H
|
||||||
Loading…
Reference in New Issue
Block a user