mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-26 01:28:30 -05:00
Squashed commit of the following:
commita41a442f5a
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> commit5768cf4a0c
Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 08:04:37 2023 +0300 add legoutil commit7d6b00c831
Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 08:02:17 2023 +0300 Update CMakeLists.txt commitd9b49087f8
Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 08:01:06 2023 +0300 Update CMakeLists.txt commitd5a2891965
Author: Misha <mishakeys20@gmail.com> Date: Fri Jun 30 07:59:03 2023 +0300 Update CMakeLists.txt commit519253bff4
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 commit6cefa2e9e2
Author: Misha <mishakeys20@gmail.com> Date: Thu Jun 29 16:51:53 2023 +0300 add back stuff to mak file after merge commitc2b16eb8ff
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 commit3c8add2f19
Author: Misha <mishakeys20@gmail.com> Date: Thu Jun 29 13:34:15 2023 +0300 Update legobackgroundcolor.cpp commit6879f30e79
Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 18:22:35 2023 +0300 add fixme + rename MxStringVariable functions commita883f37b9d
Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 18:15:42 2023 +0300 address review commita919eeb7f4
Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 08:19:45 2023 +0300 Update mxbackgroundcolor.cpp commit710c1dd5ea
Author: Misha <mishakeys20@gmail.com> Date: Wed Jun 28 08:11:13 2023 +0300 add back mak file commit25e9bbbfb0
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 commit78b0e8dd62
Author: Misha <mishakeys20@gmail.com> Date: Tue Jun 27 18:35:58 2023 +0300 improve accuracy commit4c2e1ca95c
Author: Misha <mishakeys20@gmail.com> Date: Mon Jun 26 13:50:40 2023 +0300 improve accuracy commit7dd3469ca3
Author: Misha <mishakeys20@gmail.com> Date: Mon Jun 26 13:24:11 2023 +0300 ConvertColor wip commitb0288803a8
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 commit3d16867a90
Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 17:03:14 2023 +0300 90% match commit2208573eb2
Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 12:23:47 2023 +0300 improve accuracy + add editorconfig commit288f861428
Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:57:14 2023 +0300 fix makefile commit3590e59a3a
Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:51:35 2023 +0300 Update isle.mak commitfb52ad5781
Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:47:06 2023 +0300 fix build commit791cf1301a
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 commitb9ecd15ca6
Author: Misha <mishakeys20@gmail.com> Date: Sun Jun 25 07:40:22 2023 +0300 undo change commit6327a797bc
Author: Misha <mishakeys20@gmail.com> Date: Sat Jun 24 21:48:08 2023 +0300 delete accidently committed files commit7ae1c05df9
Author: Misha <mishakeys20@gmail.com> Date: Sat Jun 24 21:47:05 2023 +0300 implement SetColorString commit323a2ee0e7
Author: Misha <mishakeys20@gmail.com> Date: Sat Jun 24 20:47:03 2023 +0300 constructor and some methods are matching commit0ce6fab3d0
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 @@ 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;
|
||||
|
|
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…
Reference in a new issue