diff --git a/include/colorizer/NoteColorizer.hpp b/include/colorizer/NoteColorizer.hpp index e257755..96aee1c 100644 --- a/include/colorizer/NoteColorizer.hpp +++ b/include/colorizer/NoteColorizer.hpp @@ -18,7 +18,7 @@ namespace Chroma { class NoteColorizer { private: - static std::vector> NoteColorOverride; + static std::unordered_map> NoteColorOverride; public: static std::optional getNoteColorOverride(int color); @@ -41,7 +41,7 @@ namespace Chroma { { private: inline static int _colorID = -1; - static std::vector> _globalColor; + static std::unordered_map> _globalColor; GlobalNamespace::ColorNoteVisuals* _cnv; GlobalNamespace::NoteController* _nc; GlobalNamespace::ColorManager* _colorManager; diff --git a/src/colorizer/NoteColorizer.cpp b/src/colorizer/NoteColorizer.cpp index 2037e50..05e8975 100644 --- a/src/colorizer/NoteColorizer.cpp +++ b/src/colorizer/NoteColorizer.cpp @@ -21,8 +21,8 @@ using namespace Chroma; // //std::vector SaberColorizer::_bsmColorManagers; -std::vector> NoteColorizer::NoteColorOverride = std::vector>(2, std::nullopt); -std::vector> NoteColorizer::CNVColorManager::_globalColor = std::vector>(2, std::nullopt); +std::unordered_map> NoteColorizer::NoteColorOverride = {{0, std::nullopt}, {1, std::nullopt}}; +std::unordered_map> NoteColorizer::CNVColorManager::_globalColor = {{0, std::nullopt}, {1, std::nullopt}}; void NoteColorizer::Reset(GlobalNamespace::NoteController *nc) { auto m = CNVColorManager::GetCNVColorManager(nc); @@ -91,25 +91,35 @@ void NoteColorizer::EnableNoteColorOverride(GlobalNamespace::NoteController *not if (customData->customData && customData->customData->value) { auto &dynData = *customData->customData->value; - + getLogger().debug("Note color override"); // TODO: Do these execute a similar or exact implementation of the PC version at // https://github.com/Aeroluna/Chroma/blob/e7a72f8b848c822d860361a027034218125af135/Chroma/Colorizer/NoteColorizer.cs#L71-L72 - if (dynData.MemberCount() > 0) { -// PrintJSONValue(dynData); - NoteColorOverride[0] = ChromaUtils::ChromaUtilities::GetColorFromData(&dynData, "color0"); - } else { - NoteColorOverride[0] = std::nullopt; - } + CustomData::NoteData* noteData = reinterpret_cast(customData->customData->associatedData['C']); - if (dynData.MemberCount() > 1) { - NoteColorOverride[1] = ChromaUtils::ChromaUtilities::GetColorFromData(&dynData, "color1"); + if (noteData != nullptr) { + NoteColorOverride[0] = noteData->_color0; + NoteColorOverride[1] = noteData->_color1; } else { + NoteColorOverride[0] = std::nullopt; NoteColorOverride[1] = std::nullopt; } +// if (dynData.MemberCount() > 0) { +//// PrintJSONValue(dynData); +// NoteColorOverride[0] = ChromaUtils::ChromaUtilities::GetColorFromData(&dynData, "color0"); +// } else { +// NoteColorOverride[0] = std::nullopt; +// } +// +// if (dynData.MemberCount() > 1) { +// NoteColorOverride[1] = ChromaUtils::ChromaUtilities::GetColorFromData(&dynData, "color1"); +// } else { +// NoteColorOverride[1] = std::nullopt; +// } + } } @@ -168,6 +178,7 @@ NoteColorizer::CNVColorManager::CNVColorManager(GlobalNamespace::ColorNoteVisual _colorManager = cnv->colorManager; if (il2cpp_functions::class_is_assignable_from(nc->noteData->klass, classof(CustomJSONData::CustomNoteData*))) { _noteData = reinterpret_cast(nc->noteData); + _noteData->customData->associatedData['C'] = new CustomData::NoteData {_globalColor[0], _globalColor[1]}; } }