From 9042dd85893bd664eb1474a8b9d648ca279a6bc4 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sun, 2 Jul 2023 12:25:37 +0200 Subject: [PATCH] lego: fix/match SetColorString --- LEGO1/legobackgroundcolor.cpp | 57 +++++++++++++++++------------------ 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/LEGO1/legobackgroundcolor.cpp b/LEGO1/legobackgroundcolor.cpp index b818267f..89051ed7 100644 --- a/LEGO1/legobackgroundcolor.cpp +++ b/LEGO1/legobackgroundcolor.cpp @@ -19,38 +19,35 @@ LegoBackgroundColor::LegoBackgroundColor(const char *name, const char *colorStri // OFFSET: LEGO1 0x1003c070 void LegoBackgroundColor::SetColorString(const char *colorString) { - m_name = colorString; + m_string = colorString; m_string.ToLowerCase(); - float converted_r; - float converted_b; - float converted_g; LegoVideoManager *videomanager = VideoManager(); + if (!videomanager || !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(colorString) + 1], colorString); + char *colorStringSplit = strtok(colorStringCopy, Delimiter); + + if (!strcmp(colorStringSplit, set)) { + colorStringSplit = strtok(0, Delimiter); + if (colorStringSplit) + h = atoi(colorStringSplit) * 0.01; + colorStringSplit = strtok(0, Delimiter); + if (colorStringSplit) + s = atoi(colorStringSplit) * 0.01; + colorStringSplit = strtok(0, Delimiter); + if (colorStringSplit) + v = 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, reset)) { + ConvertHSVToRGB(this->h, this->s, this->v, &converted_r, &converted_g, &converted_b); + videomanager->SetSkyColor(converted_r, converted_g, converted_b); + } + + delete[] colorStringCopy; +} \ No newline at end of file