From d64a04705c9ae8fd4fdb750ff065caca49aeaab5 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sun, 2 Jul 2023 19:17:15 +0200 Subject: [PATCH] lego: fix/match SetColorString (#72) * lego: fix/match SetColorString * explicitly cast to float to avoid warning * style fixes * remove superfluous includes * Update legobackgroundcolor.cpp --- LEGO1/legobackgroundcolor.cpp | 69 +++++++++++++++++------------------ LEGO1/legobackgroundcolor.h | 10 ++--- 2 files changed, 38 insertions(+), 41 deletions(-) diff --git a/LEGO1/legobackgroundcolor.cpp b/LEGO1/legobackgroundcolor.cpp index b818267f..2d8c5348 100644 --- a/LEGO1/legobackgroundcolor.cpp +++ b/LEGO1/legobackgroundcolor.cpp @@ -4,53 +4,50 @@ #include "legoutil.h" #include "legovideomanager.h" -const char *Delimiter = "\t"; -const char *set = "set"; -const char *reset = "reset"; +const char *g_delimiter = "\t"; +const char *g_set = "set"; +const char *g_reset = "reset"; // OFFSET: LEGO1 0x1003bfb0 -LegoBackgroundColor::LegoBackgroundColor(const char *name, const char *colorString) +LegoBackgroundColor::LegoBackgroundColor(const char *p_name, const char *p_colorString) { - m_name = name; + m_name = p_name; m_name.ToUpperCase(); - SetColorString(colorString); + SetColorString(p_colorString); } // OFFSET: LEGO1 0x1003c070 -void LegoBackgroundColor::SetColorString(const char *colorString) +void LegoBackgroundColor::SetColorString(const char *p_colorString) { - m_name = colorString; + m_string = p_colorString; m_string.ToLowerCase(); - float converted_r; - float converted_b; - float converted_g; LegoVideoManager *videomanager = VideoManager(); + if (!videomanager || !p_colorString) + return; - 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; + float converted_r, converted_g, converted_b; + char *colorStringCopy = strcpy(new char[strlen(p_colorString) + 1], p_colorString); + char *colorStringSplit = strtok(colorStringCopy, g_delimiter); + + if (!strcmp(colorStringSplit, g_set)) { + colorStringSplit = strtok(0, g_delimiter); + if (colorStringSplit) + h = (float) (atoi(colorStringSplit) * 0.01); + colorStringSplit = strtok(0, g_delimiter); + if (colorStringSplit) + s = (float) (atoi(colorStringSplit) * 0.01); + colorStringSplit = strtok(0, g_delimiter); + if (colorStringSplit) + v = (float) (atoi(colorStringSplit) * 0.01); + + ConvertHSVToRGB(this->h, this->s, this->v, &converted_r, &converted_g, &converted_b); + videomanager->SetSkyColor(converted_r, converted_g, converted_b); } + else if (!strcmp(colorStringSplit, g_reset)) { + ConvertHSVToRGB(this->h, this->s, this->v, &converted_r, &converted_g, &converted_b); + videomanager->SetSkyColor(converted_r, converted_g, converted_b); + } + + delete[] colorStringCopy; } diff --git a/LEGO1/legobackgroundcolor.h b/LEGO1/legobackgroundcolor.h index 1daa6311..9345c394 100644 --- a/LEGO1/legobackgroundcolor.h +++ b/LEGO1/legobackgroundcolor.h @@ -1,15 +1,15 @@ #ifndef LEGOBACKGROUNDCOLOR_H #define LEGOBACKGROUNDCOLOR_H -#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: + __declspec(dllexport) LegoBackgroundColor(const char *p_name, const char *p_colorString); + void SetColorString(const char *p_colorString); + +private: float h; float s; float v;