Squashed commit of the following:

commit a41a442f5a
Author: MishaProductions <106913236+MishaProductions@users.noreply.github.com>
Date:   Fri Jun 30 08:10:54 2023 +0300

    Update .editorconfig

    Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>

commit 5768cf4a0c
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 08:04:37 2023 +0300

    add legoutil

commit 7d6b00c831
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 08:02:17 2023 +0300

    Update CMakeLists.txt

commit d9b49087f8
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 08:01:06 2023 +0300

    Update CMakeLists.txt

commit d5a2891965
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 07:59:03 2023 +0300

    Update CMakeLists.txt

commit 519253bff4
Merge: 6cefa2e 13df3f9
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 07:57:15 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit 6cefa2e9e2
Author: Misha <mishakeys20@gmail.com>
Date:   Thu Jun 29 16:51:53 2023 +0300

    add back stuff to mak file after merge

commit c2b16eb8ff
Merge: 3c8add2 07912eb
Author: Misha <mishakeys20@gmail.com>
Date:   Thu Jun 29 16:49:51 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit 3c8add2f19
Author: Misha <mishakeys20@gmail.com>
Date:   Thu Jun 29 13:34:15 2023 +0300

    Update legobackgroundcolor.cpp

commit 6879f30e79
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 18:22:35 2023 +0300

    add fixme + rename MxStringVariable functions

commit a883f37b9d
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 18:15:42 2023 +0300

    address review

commit a919eeb7f4
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 08:19:45 2023 +0300

    Update mxbackgroundcolor.cpp

commit 710c1dd5ea
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 08:11:13 2023 +0300

    add back mak file

commit 25e9bbbfb0
Merge: 78b0e8d 2d9af63
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 08:09:03 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit 78b0e8dd62
Author: Misha <mishakeys20@gmail.com>
Date:   Tue Jun 27 18:35:58 2023 +0300

    improve accuracy

commit 4c2e1ca95c
Author: Misha <mishakeys20@gmail.com>
Date:   Mon Jun 26 13:50:40 2023 +0300

    improve accuracy

commit 7dd3469ca3
Author: Misha <mishakeys20@gmail.com>
Date:   Mon Jun 26 13:24:11 2023 +0300

    ConvertColor wip

commit b0288803a8
Merge: 3d16867 0b47f3f
Author: MishaProductions <106913236+MishaProductions@users.noreply.github.com>
Date:   Mon Jun 26 09:42:08 2023 +0300

    Merge branch 'isledecomp:master' into legobackgroundcolor

commit 3d16867a90
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 17:03:14 2023 +0300

    90% match

commit 2208573eb2
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 12:23:47 2023 +0300

    improve accuracy + add editorconfig

commit 288f861428
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:57:14 2023 +0300

    fix makefile

commit 3590e59a3a
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:51:35 2023 +0300

    Update isle.mak

commit fb52ad5781
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:47:06 2023 +0300

    fix build

commit 791cf1301a
Merge: b9ecd15 64d2b9e
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:42:09 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit b9ecd15ca6
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:40:22 2023 +0300

    undo change

commit 6327a797bc
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 21:48:08 2023 +0300

    delete accidently committed files

commit 7ae1c05df9
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 21:47:05 2023 +0300

    implement SetColorString

commit 323a2ee0e7
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 20:47:03 2023 +0300

    constructor and some methods are matching

commit 0ce6fab3d0
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 20:38:10 2023 +0300

    constructor is almost matching
This commit is contained in:
itsmattkc 2023-06-30 16:33:59 -07:00
parent d7b8d6463b
commit a66dbb8136
10 changed files with 197 additions and 4 deletions

7
.editorconfig Normal file
View file

@ -0,0 +1,7 @@
root = true
[*.{cpp,h,py,txt,editorconfig}]
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

View file

@ -50,6 +50,7 @@ add_library(lego1 SHARED
LEGO1/legoanimmmpresenter.cpp
LEGO1/legoanimpresenter.cpp
LEGO1/legobackgroundcolor.cpp
LEGO1/legobackgroundcolor.cpp
LEGO1/legobuildingmanager.cpp
LEGO1/legocachesound.cpp
LEGO1/legocameracontroller.cpp
@ -80,6 +81,7 @@ add_library(lego1 SHARED
LEGO1/legosoundmanager.cpp
LEGO1/legostate.cpp
LEGO1/legotexturepresenter.cpp
LEGO1/legoutil.cpp
LEGO1/legovideomanager.cpp
LEGO1/legoworld.cpp
LEGO1/legoworldpresenter.cpp
@ -136,6 +138,7 @@ add_library(lego1 SHARED
LEGO1/mxstillpresenter.cpp
LEGO1/mxstreamer.cpp
LEGO1/mxstring.cpp
LEGO1/mxstringvariable.cpp
LEGO1/mxtimer.cpp
LEGO1/mxtransitionmanager.cpp
LEGO1/mxunknown100dc6b0.cpp

View file

@ -1,7 +1,56 @@
#include "legobackgroundcolor.h"
#include "legoomni.h"
#include "legoutil.h"
#include "legovideomanager.h"
const char *Delimiter = "\t";
const char *set = "set";
const char *reset = "reset";
// OFFSET: LEGO1 0x1003bfb0
LegoBackgroundColor::LegoBackgroundColor(const char *, const char *)
LegoBackgroundColor::LegoBackgroundColor(const char *name, const char *colorString)
{
// TODO
m_name = name;
m_name.ToUpperCase();
SetColorString(colorString);
}
// OFFSET: LEGO1 0x1003c070
void LegoBackgroundColor::SetColorString(const char *colorString)
{
m_name = colorString;
m_string.ToLowerCase();
float converted_r;
float converted_b;
float converted_g;
LegoVideoManager *videomanager = VideoManager();
if (videomanager && colorString)
{
int length = strlen(colorString) + 1;
char *colorStringCopy = new char[length];
strcpy(colorStringCopy, colorString);
char *colorStringSplit = strtok(colorStringCopy, Delimiter);
if (!strcmp(colorStringSplit, set))
{
char *hue = strtok(0, Delimiter);
if (hue)
h = atoi(hue) * 0.01;
char *sat = strtok(0, Delimiter);
if (sat)
s = atoi(sat) * 0.01;
char *val = strtok(0, Delimiter);
if (val)
v = atoi(val) * 0.01;
}
else if (!strcmp(colorStringSplit, reset))
{
// reset it
ConvertHSVToRGB(this->h, this->s, this->v, &converted_r, &converted_g, &converted_b);
videomanager->SetSkyColor(converted_r, converted_g, converted_b);
}
delete[] colorStringCopy;
}
}

View file

@ -1,10 +1,17 @@
#ifndef LEGOBACKGROUNDCOLOR_H
#define LEGOBACKGROUNDCOLOR_H
class LegoBackgroundColor
#include "mxstring.h"
#include "mxcore.h"
#include "MxStringVariable.h"
class LegoBackgroundColor : public MxStringVariable
{
public:
__declspec(dllexport) LegoBackgroundColor(const char *, const char *);
void SetColorString(const char *colorString);
protected:
float h;
float s;
float v;
};
#endif // LEGOBACKGROUNDCOLOR_H

68
LEGO1/legoutil.cpp Normal file
View file

@ -0,0 +1,68 @@
#include "legoutil.h"
// OFFSET: LEGO1 0x1003eae0
void ConvertHSVToRGB(float h, float s, float v, float *r_out, float *b_out, float *g_out)
{
double calc;
double p;
long hue_index;
double v9;
double v12;
double v13;
if (s > 0.5f)
calc = (1.0f - v) * s + v;
else
calc = (v + 1.0) * s;
if (calc <= 0.0)
{
*g_out = 0.0f;
*b_out = 0.0f;
*r_out = 0.0f;
return;
}
p = s * 2.0 - calc;
hue_index = h * 6.0;
v9 = (h * 6.0 - (float)hue_index) * ((calc - p) / calc) * calc;
v12 = p + v9;
v13 = calc - v9;
switch (hue_index)
{
case 0:
*r_out = calc;
*b_out = v12;
*g_out = p;
break;
case 1:
*r_out = v13;
*b_out = calc;
*g_out = p;
break;
case 2:
*r_out = p;
*b_out = calc;
*g_out = v12;
break;
case 3:
*r_out = p;
*b_out = v13;
*g_out = calc;
break;
case 4:
*r_out = v12;
*b_out = p;
*g_out = calc;
break;
case 5:
*r_out = calc;
*b_out = p;
*g_out = v13;
break;
case 6:
*r_out = calc;
*b_out = p;
*g_out = v13;
break;
default:
return;
}
}

View file

@ -19,4 +19,6 @@ inline T Max(T p_t1, T p_t2)
return p_t1 > p_t2 ? p_t1 : p_t2;
}
void ConvertHSVToRGB(float r, float g, float b, float* out_r, float* out_g, float* out_b);
#endif // LEGOUTIL_H

View file

@ -1,4 +1,5 @@
#include "legovideomanager.h"
#include <ddraw.h>
// OFFSET: LEGO1 0x1007aa20 STUB
LegoVideoManager::LegoVideoManager()
@ -37,3 +38,15 @@ void LegoVideoManager::MoveCursor(int x, int y)
{
// TODO
}
// OFFSET: LEGO1 0x1007c440
void LegoVideoManager::SetSkyColor(float red, float green, float blue)
{
PALETTEENTRY colorStrucure; // [esp+0h] [ebp-4h] BYREF
colorStrucure.peRed = (red* 255.0);
colorStrucure.peGreen = (green * 255.0);
colorStrucure.peBlue = (blue * 255.0);
colorStrucure.peFlags = -124;
// TODO
}

View file

@ -18,6 +18,7 @@ class LegoVideoManager : public MxVideoManager
__declspec(dllexport) void MoveCursor(int x, int y);
inline Lego3DManager *Get3DManager() { return this->m_3dManager; }
void SetSkyColor(float r, float g, float b);
int m_unk64;
Lego3DManager *m_3dManager;

View file

@ -0,0 +1,23 @@
#include "MxStringVariable.h"
#include "mxstring.h"
//FIXME: Figure out what exactly this class is used for. It is used in LegoGameState::LegoGameState when loading the background color, and for loading the "fsmovie" variable
// OFFSET: LEGO1 0x1003bec0
MxStringVariable::~MxStringVariable()
{
delete &m_string;
delete &m_name;
}
// OFFSET: LEGO1 0x1003bea0
MxString *MxStringVariable::GetString()
{
return &m_string;
}
// OFFSET: LEGO1 0x1003beb0
void MxStringVariable::SetString(const char *colorString)
{
m_string = colorString;
}

20
LEGO1/mxstringvariable.h Normal file
View file

@ -0,0 +1,20 @@
#ifndef MXSTRINGVARIABLE_H
#define MXSTRINGVARIABLE_H
#include "mxstring.h"
#include "mxcore.h"
//VTABLE: 0x100d74a8
class MxStringVariable
{
public:
__declspec(dllexport) MxStringVariable(const char *, const char *);
MxStringVariable() {}
virtual MxString *GetString();
virtual void SetString(const char *colorString);
virtual ~MxStringVariable();
protected:
MxString m_name;
MxString m_string;
};
#endif // MXSTRINGVARIABLE_H