mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 23:57:54 -05:00
MxVariable subclass for fsmovie setting (#147)
* LegoFullScreenMovie variable and related * Changes after review - Reduce scope on global strings - Size assert for LegoGameState (based on the constructor references only) - 1 -> TRUE for EnableFullScreenMovie
This commit is contained in:
parent
b77cd067d3
commit
0dc8dd641a
11 changed files with 103 additions and 5 deletions
|
@ -65,6 +65,7 @@ add_library(lego1 SHARED
|
||||||
LEGO1/legoentity.cpp
|
LEGO1/legoentity.cpp
|
||||||
LEGO1/legoentitypresenter.cpp
|
LEGO1/legoentitypresenter.cpp
|
||||||
LEGO1/legoflctexturepresenter.cpp
|
LEGO1/legoflctexturepresenter.cpp
|
||||||
|
LEGO1/legofullscreenmovie.cpp
|
||||||
LEGO1/legogamestate.cpp
|
LEGO1/legogamestate.cpp
|
||||||
LEGO1/legohideanimpresenter.cpp
|
LEGO1/legohideanimpresenter.cpp
|
||||||
LEGO1/legoinputmanager.cpp
|
LEGO1/legoinputmanager.cpp
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
#include "legoomni.h"
|
#include "legoomni.h"
|
||||||
#include "legoutil.h"
|
#include "legoutil.h"
|
||||||
#include "legovideomanager.h"
|
#include "legovideomanager.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(LegoBackgroundColor, 0x30)
|
||||||
|
|
||||||
const char *g_delimiter = "\t";
|
const char *g_delimiter = "\t";
|
||||||
const char *g_set = "set";
|
const char *g_set = "set";
|
||||||
|
|
|
@ -3,11 +3,13 @@
|
||||||
|
|
||||||
#include "mxvariable.h"
|
#include "mxvariable.h"
|
||||||
|
|
||||||
|
// VTABLE 0x100d74a8
|
||||||
|
// SIZE 0x30
|
||||||
class LegoBackgroundColor : public MxVariable
|
class LegoBackgroundColor : public MxVariable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
__declspec(dllexport) LegoBackgroundColor(const char *p_key, const char *p_value);
|
__declspec(dllexport) LegoBackgroundColor(const char *p_key, const char *p_value);
|
||||||
void SetValue(const char *p_colorString);
|
virtual void SetValue(const char *p_colorString) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float h;
|
float h;
|
||||||
|
|
41
LEGO1/legofullscreenmovie.cpp
Normal file
41
LEGO1/legofullscreenmovie.cpp
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#include "legofullscreenmovie.h"
|
||||||
|
#include "mxtypes.h"
|
||||||
|
#include "legoomni.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(LegoFullScreenMovie, 0x24)
|
||||||
|
|
||||||
|
// 0x100f3be8
|
||||||
|
const char *g_str_enable = "enable";
|
||||||
|
|
||||||
|
// 0x100f3bf4
|
||||||
|
const char *g_str_disable = "disable";
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1003c500
|
||||||
|
LegoFullScreenMovie::LegoFullScreenMovie(const char *p_key, const char *p_value)
|
||||||
|
{
|
||||||
|
m_key = p_key;
|
||||||
|
m_key.ToUpperCase();
|
||||||
|
SetValue(p_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1003c5c0
|
||||||
|
void LegoFullScreenMovie::SetValue(const char *p_option)
|
||||||
|
{
|
||||||
|
m_value = p_option;
|
||||||
|
m_value.ToLowerCase();
|
||||||
|
|
||||||
|
LegoVideoManager *videomanager = VideoManager();
|
||||||
|
if (videomanager) {
|
||||||
|
|
||||||
|
if (!strcmp(m_value.GetData(), g_str_enable)) {
|
||||||
|
videomanager->EnableFullScreenMovie(TRUE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(m_value.GetData(), g_str_disable)) {
|
||||||
|
videomanager->EnableFullScreenMovie(FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
LEGO1/legofullscreenmovie.h
Normal file
15
LEGO1/legofullscreenmovie.h
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef LEGOFULLSCREENMOVIE_H
|
||||||
|
#define LEGOFULLSCREENMOVIE_H
|
||||||
|
|
||||||
|
#include "mxvariable.h"
|
||||||
|
|
||||||
|
// VTABLE 0x100d74b8
|
||||||
|
// SIZE 0x24
|
||||||
|
class LegoFullScreenMovie : public MxVariable
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LegoFullScreenMovie(const char *p_key, const char *p_value);
|
||||||
|
virtual void SetValue(const char *p_option) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // LEGOFULLSCREENMOVIE_H
|
|
@ -1,10 +1,26 @@
|
||||||
#include "legogamestate.h"
|
#include "legogamestate.h"
|
||||||
#include "legoomni.h"
|
#include "legoomni.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
// Based on the highest dword offset (0x42c) referenced in the constructor.
|
||||||
|
// There may be other members that come after.
|
||||||
|
DECOMP_SIZE_ASSERT(LegoGameState, 0x430)
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10039550
|
// OFFSET: LEGO1 0x10039550
|
||||||
LegoGameState::LegoGameState()
|
LegoGameState::LegoGameState()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
|
m_backgroundColor = new LegoBackgroundColor("backgroundcolor", "set 56 54 68");
|
||||||
|
VariableTable()->SetVariable(m_backgroundColor);
|
||||||
|
|
||||||
|
m_tempBackgroundColor = new LegoBackgroundColor("tempBackgroundcolor", "set 56 54 68");
|
||||||
|
VariableTable()->SetVariable(m_tempBackgroundColor);
|
||||||
|
|
||||||
|
m_fullScreenMovie = new LegoFullScreenMovie("fsmovie", "disable");
|
||||||
|
VariableTable()->SetVariable(m_fullScreenMovie);
|
||||||
|
|
||||||
|
VariableTable()->SetVariable("lightposition", "2");
|
||||||
|
SerializeScoreHistory(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10039720
|
// OFFSET: LEGO1 0x10039720
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#ifndef LEGOGAMESTATE_H
|
#ifndef LEGOGAMESTATE_H
|
||||||
#define LEGOGAMESTATE_H
|
#define LEGOGAMESTATE_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
#include "legobackgroundcolor.h"
|
||||||
|
#include "legofullscreenmovie.h"
|
||||||
|
|
||||||
|
// SIZE 0x430 (at least)
|
||||||
class LegoGameState
|
class LegoGameState
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -15,7 +19,12 @@ class LegoGameState
|
||||||
__declspec(dllexport) void SetSavePath(char *p);
|
__declspec(dllexport) void SetSavePath(char *p);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *m_savePath;
|
char *m_savePath; // 0x0
|
||||||
|
undefined m_unk04[20];
|
||||||
|
LegoBackgroundColor *m_backgroundColor; // 0x18
|
||||||
|
LegoBackgroundColor *m_tempBackgroundColor; // 0x1c
|
||||||
|
LegoFullScreenMovie *m_fullScreenMovie; // 0x20
|
||||||
|
undefined m_unk24[1036];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOGAMESTATE_H
|
#endif // LEGOGAMESTATE_H
|
||||||
|
|
|
@ -27,8 +27,14 @@ int LegoVideoManager::DisableRMDevice()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1007c300
|
||||||
|
void LegoVideoManager::EnableFullScreenMovie(MxBool p_enable)
|
||||||
|
{
|
||||||
|
EnableFullScreenMovie(p_enable, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x1007c310 STUB
|
// OFFSET: LEGO1 0x1007c310 STUB
|
||||||
void LegoVideoManager::EnableFullScreenMovie(unsigned char a, unsigned char b)
|
void LegoVideoManager::EnableFullScreenMovie(MxBool p_enable, MxBool p_scale)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,8 @@ class LegoVideoManager : public MxVideoManager
|
||||||
|
|
||||||
__declspec(dllexport) int EnableRMDevice();
|
__declspec(dllexport) int EnableRMDevice();
|
||||||
__declspec(dllexport) int DisableRMDevice();
|
__declspec(dllexport) int DisableRMDevice();
|
||||||
__declspec(dllexport) void EnableFullScreenMovie(unsigned char a, unsigned char b);
|
void EnableFullScreenMovie(MxBool p_enable);
|
||||||
|
__declspec(dllexport) void EnableFullScreenMovie(MxBool p_enable, MxBool p_scale);
|
||||||
__declspec(dllexport) void MoveCursor(int x, int y);
|
__declspec(dllexport) void MoveCursor(int x, int y);
|
||||||
|
|
||||||
inline Lego3DManager *Get3DManager() { return this->m_3dManager; }
|
inline Lego3DManager *Get3DManager() { return this->m_3dManager; }
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#include "mxvariable.h"
|
#include "mxvariable.h"
|
||||||
#include "mxstring.h"
|
#include "mxstring.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(MxVariable, 0x24)
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x1003bea0
|
// OFFSET: LEGO1 0x1003bea0
|
||||||
MxString *MxVariable::GetValue()
|
MxString *MxVariable::GetValue()
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
#include "mxstring.h"
|
#include "mxstring.h"
|
||||||
#include "mxcore.h"
|
#include "mxcore.h"
|
||||||
|
|
||||||
//VTABLE: 0x100d74a8
|
// VTABLE 0x100d7498
|
||||||
|
// SIZE 0x24
|
||||||
class MxVariable
|
class MxVariable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in a new issue