mirror of
https://github.com/isledecomp/isle-portable.git
synced 2025-04-26 22:33:27 -04:00
Squashed commit of the following:
commit a41a442f5aba5fa2f22efc46e66b055f8e99b04e 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 5768cf4a0cf58778cd1265220936081c43c91769 Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 08:04:37 2023 +0300 add legoutil commit 7d6b00c831d01688749d6cadb8b8ea683d18a52d Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 08:02:17 2023 +0300 Update CMakeLists.txt commit d9b49087f8681a858b7d32b38cc937160b5a5ab0 Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 08:01:06 2023 +0300 Update CMakeLists.txt commit d5a2891965b0e3c992c92e7782c4cc54fc7ae7af Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 07:59:03 2023 +0300 Update CMakeLists.txt commit 519253bff43426d2b4cbb916f0fecba8fd677695 Merge: 6cefa2e13df3f9
Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 07:57:15 2023 +0300 Merge remote-tracking branch 'upstream/master' into legobackgroundcolor commit 6cefa2e9e259f57033d6e50f9be0af5de6e2df61 Author: Misha <mishakeys20@gmail.com> Date: Thu Jun 29 16:51:53 2023 +0300 add back stuff to mak file after merge commit c2b16eb8ff2e99b160bf5d5b75df7960da8f2877 Merge: 3c8add207912eb
Author: Misha <mishakeys20@gmail.com> Date: Thu Jun 29 16:49:51 2023 +0300 Merge remote-tracking branch 'upstream/master' into legobackgroundcolor commit 3c8add2f1979f1ac2372f06c2025cda4104c2db2 Author: Misha <mishakeys20@gmail.com> Date: Thu Jun 29 13:34:15 2023 +0300 Update legobackgroundcolor.cpp commit 6879f30e79caaef23319488b729283cda6f46c25 Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 18:22:35 2023 +0300 add fixme + rename MxStringVariable functions commit a883f37b9d67c57bc336812bf83ee85c363f8931 Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 18:15:42 2023 +0300 address review commit a919eeb7f48b31554b8edf499c131f570b1529bf Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 08:19:45 2023 +0300 Update mxbackgroundcolor.cpp commit 710c1dd5ea53212c43e1564480f27370f28ca7e4 Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 08:11:13 2023 +0300 add back mak file commit 25e9bbbfb0d330e70570f59823b2e88f159ad49d Merge: 78b0e8d2d9af63
Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 08:09:03 2023 +0300 Merge remote-tracking branch 'upstream/master' into legobackgroundcolor commit 78b0e8dd625add18ea9a62dcd72a820e1a0beab5 Author: Misha <mishakeys20@gmail.com> Date: Tue Jun 27 18:35:58 2023 +0300 improve accuracy commit 4c2e1ca95c4463da20266f61299370fa0ecda9f4 Author: Misha <mishakeys20@gmail.com> Date: Mon Jun 26 13:50:40 2023 +0300 improve accuracy commit 7dd3469ca330254e0177c838991b9436bb3c90c2 Author: Misha <mishakeys20@gmail.com> Date: Mon Jun 26 13:24:11 2023 +0300 ConvertColor wip commit b0288803a834a9e4f41486bb60c81935b94a4cd2 Merge: 3d168670b47f3f
Author: MishaProductions <106913236+MishaProductions@users.noreply.github.com> Date: Mon Jun 26 09:42:08 2023 +0300 Merge branch 'isledecomp:master' into legobackgroundcolor commit 3d16867a901862d66aec632e269061c81e7d443d Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 17:03:14 2023 +0300 90% match commit 2208573eb2cf73465c2a5b49a63db66dd8f6f841 Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 12:23:47 2023 +0300 improve accuracy + add editorconfig commit 288f8614281788fd3a19f07a7732b06337253e34 Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:57:14 2023 +0300 fix makefile commit 3590e59a3a9f021b0de3833e80d320238255bc46 Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:51:35 2023 +0300 Update isle.mak commit fb52ad57813214a8af9ef21fdb9ef39005961778 Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:47:06 2023 +0300 fix build commit 791cf1301af1e194025908d8812edaa4faf0f3cf Merge: b9ecd1564d2b9e
Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:42:09 2023 +0300 Merge remote-tracking branch 'upstream/master' into legobackgroundcolor commit b9ecd15ca60b6d4c26fe10405e80b08bbf02d62e Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:40:22 2023 +0300 undo change commit 6327a797bce26c277c21c71e5ec56a446f227aa5 Author: Misha <mishakeys20@gmail.com> Date: Sat Jun 24 21:48:08 2023 +0300 delete accidently committed files commit 7ae1c05df962ff64029c3264aaf824801a3055cc Author: Misha <mishakeys20@gmail.com> Date: Sat Jun 24 21:47:05 2023 +0300 implement SetColorString commit 323a2ee0e7a4c767d80535f2f0e3a8036124da05 Author: Misha <mishakeys20@gmail.com> Date: Sat Jun 24 20:47:03 2023 +0300 constructor and some methods are matching commit 0ce6fab3d085b2e2e68c95bdff59557c483486fe Author: Misha <mishakeys20@gmail.com> Date: Sat Jun 24 20:38:10 2023 +0300 constructor is almost matching
This commit is contained in:
parent
d7b8d6463b
commit
a66dbb8136
10 changed files with 197 additions and 4 deletions
7
.editorconfig
Normal file
7
.editorconfig
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
68
LEGO1/legoutil.cpp
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ public:
|
|||
__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;
|
||||
|
|
23
LEGO1/mxstringvariable.cpp
Normal file
23
LEGO1/mxstringvariable.cpp
Normal 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
20
LEGO1/mxstringvariable.h
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue