diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 5109d80a..0dbeca6e 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -392,6 +392,7 @@ BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/op BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/brightness.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/brightness.dds" ARRAY_NAME "g_brightness" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/control_tutorial.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/control_tutorial.dds" ARRAY_NAME "g_control_tutorial" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/controller_icons.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/controller_icons.dds" ARRAY_NAME "g_controller_icons" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/default.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/default.dds" ARRAY_NAME "g_default" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/effects_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/effects_volume.dds" ARRAY_NAME "g_effects_volume" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/fps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/fps.dds" ARRAY_NAME "g_fps" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/fullscreen.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/fullscreen.dds" ARRAY_NAME "g_fullscreen" COMPRESSION_TYPE "zstd") @@ -408,7 +409,6 @@ BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/op BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/movie_scale_mode.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/movie_scale_mode.dds" ARRAY_NAME "g_movie_scale_mode" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/music_attenuation.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/music_attenuation.dds" ARRAY_NAME "g_music_attenuation" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/music_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/music_volume.dds" ARRAY_NAME "g_music_volume" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/placeholder.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/placeholder.dds" ARRAY_NAME "g_placeholder" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/resolution_scale.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/resolution_scale.dds" ARRAY_NAME "g_resolution_scale" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_original.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_original.dds" ARRAY_NAME "g_shadow_resolution_original" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x512.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x512.dds" ARRAY_NAME "g_shadow_resolution_x512" COMPRESSION_TYPE "zstd") diff --git a/UnleashedRecomp/locale/config_locale.cpp b/UnleashedRecomp/locale/config_locale.cpp index 5e3c2ee8..9a904c00 100644 --- a/UnleashedRecomp/locale/config_locale.cpp +++ b/UnleashedRecomp/locale/config_locale.cpp @@ -141,6 +141,11 @@ CONFIG_DEFINE_LOCALE(BattleTheme) { ELanguage::English, { "Battle Theme", "Play the Werehog battle theme during combat.\n\nThis option will apply the next time you're in combat." } } }; +CONFIG_DEFINE_LOCALE(Monitor) +{ + { ELanguage::English, { "Monitor", "Change which monitor to display the game on." } } +}; + CONFIG_DEFINE_LOCALE(AspectRatio) { { ELanguage::English, { "Aspect Ratio", "Change the aspect ratio." } } diff --git a/UnleashedRecomp/ui/options_menu_thumbnails.cpp b/UnleashedRecomp/ui/options_menu_thumbnails.cpp index 8cd57dc6..c43e2020 100644 --- a/UnleashedRecomp/ui/options_menu_thumbnails.cpp +++ b/UnleashedRecomp/ui/options_menu_thumbnails.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -26,7 +27,6 @@ #include #include #include -#include #include #include #include @@ -46,9 +46,10 @@ #include #include -#define VALUE_THUMBNAIL_MAP(type) std::unordered_map>> +#define VALUE_THUMBNAIL_MAP(type) std::unordered_map> -static std::unordered_map> g_thumbnails; +static std::unordered_map> g_namedThumbnails; +static std::unordered_map> g_configThumbnails; static VALUE_THUMBNAIL_MAP(ETimeOfDayTransition) g_timeOfDayTransitionThumbnails; static VALUE_THUMBNAIL_MAP(bool) g_transparencyAntiAliasingThumbnails; @@ -59,59 +60,59 @@ static VALUE_THUMBNAIL_MAP(bool) g_xboxColorCorrectionThumbnails; void LoadThumbnails() { - g_thumbnails["placeholder"] = LOAD_ZSTD_TEXTURE(g_placeholder); + g_namedThumbnails["Default"] = LOAD_ZSTD_TEXTURE(g_default); + g_namedThumbnails["WindowSize"] = LOAD_ZSTD_TEXTURE(g_window_size); - g_thumbnails[Config::Language.Name] = LOAD_ZSTD_TEXTURE(g_language); - g_thumbnails[Config::Hints.Name] = LOAD_ZSTD_TEXTURE(g_hints); - g_thumbnails[Config::ControlTutorial.Name] = LOAD_ZSTD_TEXTURE(g_control_tutorial); - g_thumbnails[Config::AchievementNotifications.Name] = LOAD_ZSTD_TEXTURE(g_achievement_notifications); + g_configThumbnails[&Config::Language] = LOAD_ZSTD_TEXTURE(g_language); + g_configThumbnails[&Config::Hints] = LOAD_ZSTD_TEXTURE(g_hints); + g_configThumbnails[&Config::ControlTutorial] = LOAD_ZSTD_TEXTURE(g_control_tutorial); + g_configThumbnails[&Config::AchievementNotifications] = LOAD_ZSTD_TEXTURE(g_achievement_notifications); - g_timeOfDayTransitionThumbnails[Config::TimeOfDayTransition.Name][ETimeOfDayTransition::Xbox] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_xbox); - g_timeOfDayTransitionThumbnails[Config::TimeOfDayTransition.Name][ETimeOfDayTransition::PlayStation] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_playstation); + g_timeOfDayTransitionThumbnails[ETimeOfDayTransition::Xbox] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_xbox); + g_timeOfDayTransitionThumbnails[ETimeOfDayTransition::PlayStation] = LOAD_ZSTD_TEXTURE(g_time_of_day_transition_playstation); - g_thumbnails[Config::InvertCameraX.Name] = LOAD_ZSTD_TEXTURE(g_invert_camera_x); - g_thumbnails[Config::InvertCameraY.Name] = LOAD_ZSTD_TEXTURE(g_invert_camera_y); - g_thumbnails[Config::AllowBackgroundInput.Name] = LOAD_ZSTD_TEXTURE(g_allow_background_input); - g_thumbnails[Config::AllowDPadMovement.Name] = LOAD_ZSTD_TEXTURE(g_allow_dpad_movement); - g_thumbnails[Config::ControllerIcons.Name] = LOAD_ZSTD_TEXTURE(g_controller_icons); - g_thumbnails[Config::MusicVolume.Name] = LOAD_ZSTD_TEXTURE(g_music_volume); - g_thumbnails[Config::EffectsVolume.Name] = LOAD_ZSTD_TEXTURE(g_effects_volume); - g_thumbnails[Config::VoiceLanguage.Name] = LOAD_ZSTD_TEXTURE(g_voice_language); - g_thumbnails[Config::Subtitles.Name] = LOAD_ZSTD_TEXTURE(g_subtitles); - g_thumbnails[Config::MusicAttenuation.Name] = LOAD_ZSTD_TEXTURE(g_music_attenuation); - g_thumbnails[Config::BattleTheme.Name] = LOAD_ZSTD_TEXTURE(g_battle_theme); - g_thumbnails["WindowSize"] = LOAD_ZSTD_TEXTURE(g_window_size); - g_thumbnails["Monitor"] = LOAD_ZSTD_TEXTURE(g_monitor); - g_thumbnails[Config::AspectRatio.Name] = LOAD_ZSTD_TEXTURE(g_aspect_ratio); - g_thumbnails[Config::ResolutionScale.Name] = LOAD_ZSTD_TEXTURE(g_resolution_scale); - g_thumbnails[Config::Fullscreen.Name] = LOAD_ZSTD_TEXTURE(g_fullscreen); - g_thumbnails[Config::VSync.Name] = LOAD_ZSTD_TEXTURE(g_vsync); - g_thumbnails[Config::FPS.Name] = LOAD_ZSTD_TEXTURE(g_fps); - g_thumbnails[Config::Brightness.Name] = LOAD_ZSTD_TEXTURE(g_brightness); - g_thumbnails[Config::AntiAliasing.Name] = LOAD_ZSTD_TEXTURE(g_antialiasing); + g_configThumbnails[&Config::InvertCameraX] = LOAD_ZSTD_TEXTURE(g_invert_camera_x); + g_configThumbnails[&Config::InvertCameraY] = LOAD_ZSTD_TEXTURE(g_invert_camera_y); + g_configThumbnails[&Config::AllowBackgroundInput] = LOAD_ZSTD_TEXTURE(g_allow_background_input); + g_configThumbnails[&Config::AllowDPadMovement] = LOAD_ZSTD_TEXTURE(g_allow_dpad_movement); + g_configThumbnails[&Config::ControllerIcons] = LOAD_ZSTD_TEXTURE(g_controller_icons); + g_configThumbnails[&Config::MusicVolume] = LOAD_ZSTD_TEXTURE(g_music_volume); + g_configThumbnails[&Config::EffectsVolume] = LOAD_ZSTD_TEXTURE(g_effects_volume); + g_configThumbnails[&Config::VoiceLanguage] = LOAD_ZSTD_TEXTURE(g_voice_language); + g_configThumbnails[&Config::Subtitles] = LOAD_ZSTD_TEXTURE(g_subtitles); + g_configThumbnails[&Config::MusicAttenuation] = LOAD_ZSTD_TEXTURE(g_music_attenuation); + g_configThumbnails[&Config::BattleTheme] = LOAD_ZSTD_TEXTURE(g_battle_theme); + g_configThumbnails[&Config::Monitor] = LOAD_ZSTD_TEXTURE(g_monitor); + g_configThumbnails[&Config::AspectRatio] = LOAD_ZSTD_TEXTURE(g_aspect_ratio); + g_configThumbnails[&Config::ResolutionScale] = LOAD_ZSTD_TEXTURE(g_resolution_scale); + g_configThumbnails[&Config::Fullscreen] = LOAD_ZSTD_TEXTURE(g_fullscreen); + g_configThumbnails[&Config::VSync] = LOAD_ZSTD_TEXTURE(g_vsync); + g_configThumbnails[&Config::FPS] = LOAD_ZSTD_TEXTURE(g_fps); + g_configThumbnails[&Config::Brightness] = LOAD_ZSTD_TEXTURE(g_brightness); + g_configThumbnails[&Config::AntiAliasing] = LOAD_ZSTD_TEXTURE(g_antialiasing); - g_transparencyAntiAliasingThumbnails[Config::TransparencyAntiAliasing.Name][false] = LOAD_ZSTD_TEXTURE(g_transparency_antialiasing_false); - g_transparencyAntiAliasingThumbnails[Config::TransparencyAntiAliasing.Name][true] = LOAD_ZSTD_TEXTURE(g_transparency_antialiasing_true); + g_transparencyAntiAliasingThumbnails[false] = LOAD_ZSTD_TEXTURE(g_transparency_antialiasing_false); + g_transparencyAntiAliasingThumbnails[true] = LOAD_ZSTD_TEXTURE(g_transparency_antialiasing_true); - g_shadowResolutionThumbnails[Config::ShadowResolution.Name][EShadowResolution::Original] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_original); - g_shadowResolutionThumbnails[Config::ShadowResolution.Name][EShadowResolution::x512] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x512); - g_shadowResolutionThumbnails[Config::ShadowResolution.Name][EShadowResolution::x1024] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x1024); - g_shadowResolutionThumbnails[Config::ShadowResolution.Name][EShadowResolution::x2048] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x2048); - g_shadowResolutionThumbnails[Config::ShadowResolution.Name][EShadowResolution::x4096] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x4096); - g_shadowResolutionThumbnails[Config::ShadowResolution.Name][EShadowResolution::x8192] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x8192); + g_shadowResolutionThumbnails[EShadowResolution::Original] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_original); + g_shadowResolutionThumbnails[EShadowResolution::x512] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x512); + g_shadowResolutionThumbnails[EShadowResolution::x1024] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x1024); + g_shadowResolutionThumbnails[EShadowResolution::x2048] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x2048); + g_shadowResolutionThumbnails[EShadowResolution::x4096] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x4096); + g_shadowResolutionThumbnails[EShadowResolution::x8192] = LOAD_ZSTD_TEXTURE(g_shadow_resolution_x8192); - g_giTextureFilteringThumbnails[Config::GITextureFiltering.Name][EGITextureFiltering::Bilinear] = LOAD_ZSTD_TEXTURE(g_gi_texture_filtering_bilinear); - g_giTextureFilteringThumbnails[Config::GITextureFiltering.Name][EGITextureFiltering::Bicubic] = LOAD_ZSTD_TEXTURE(g_gi_texture_filtering_bicubic); + g_giTextureFilteringThumbnails[EGITextureFiltering::Bilinear] = LOAD_ZSTD_TEXTURE(g_gi_texture_filtering_bilinear); + g_giTextureFilteringThumbnails[EGITextureFiltering::Bicubic] = LOAD_ZSTD_TEXTURE(g_gi_texture_filtering_bicubic); - g_motionBlurThumbnails[Config::MotionBlur.Name][EMotionBlur::Off] = LOAD_ZSTD_TEXTURE(g_motion_blur_off); - g_motionBlurThumbnails[Config::MotionBlur.Name][EMotionBlur::Original] = LOAD_ZSTD_TEXTURE(g_motion_blur_original); - g_motionBlurThumbnails[Config::MotionBlur.Name][EMotionBlur::Enhanced] = LOAD_ZSTD_TEXTURE(g_motion_blur_enhanced); + g_motionBlurThumbnails[EMotionBlur::Off] = LOAD_ZSTD_TEXTURE(g_motion_blur_off); + g_motionBlurThumbnails[EMotionBlur::Original] = LOAD_ZSTD_TEXTURE(g_motion_blur_original); + g_motionBlurThumbnails[EMotionBlur::Enhanced] = LOAD_ZSTD_TEXTURE(g_motion_blur_enhanced); - g_xboxColorCorrectionThumbnails[Config::XboxColorCorrection.Name][false] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction_false); - g_xboxColorCorrectionThumbnails[Config::XboxColorCorrection.Name][true] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction_true); + g_xboxColorCorrectionThumbnails[false] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction_false); + g_xboxColorCorrectionThumbnails[true] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction_true); - g_thumbnails[Config::MovieScaleMode.Name] = LOAD_ZSTD_TEXTURE(g_movie_scale_mode); - g_thumbnails[Config::UIScaleMode.Name] = LOAD_ZSTD_TEXTURE(g_ui_scale_mode); + g_configThumbnails[&Config::MovieScaleMode] = LOAD_ZSTD_TEXTURE(g_movie_scale_mode); + g_configThumbnails[&Config::UIScaleMode] = LOAD_ZSTD_TEXTURE(g_ui_scale_mode); } template @@ -120,13 +121,10 @@ bool TryGetValueThumbnail(const IConfigDef* cfg, VALUE_THUMBNAIL_MAP(T)* thumbna if (!texture) return false; - if (!thumbnails->count(cfg->GetName())) - return false; - if (!cfg->GetValue()) return false; - auto result = thumbnails->at(cfg->GetName())[*(T*)cfg->GetValue()].get(); + auto result = thumbnails->at(*(T*)cfg->GetValue()).get(); if (!result) return false; @@ -136,21 +134,47 @@ bool TryGetValueThumbnail(const IConfigDef* cfg, VALUE_THUMBNAIL_MAP(T)* thumbna return true; } +GuestTexture* GetThumbnail(const std::string_view name) +{ + if (!g_namedThumbnails.count(name)) + return g_namedThumbnails["Default"].get(); + + return g_namedThumbnails[name].get(); +} + GuestTexture* GetThumbnail(const IConfigDef* cfg) { - if (!g_thumbnails.count(cfg->GetName())) + if (!g_configThumbnails.count(cfg)) { - auto texture = g_thumbnails["placeholder"].get(); + auto texture = g_namedThumbnails["Default"].get(); - TryGetValueThumbnail(cfg, &g_timeOfDayTransitionThumbnails, &texture); - TryGetValueThumbnail(cfg, &g_transparencyAntiAliasingThumbnails, &texture); - TryGetValueThumbnail(cfg, &g_shadowResolutionThumbnails, &texture); - TryGetValueThumbnail(cfg, &g_giTextureFilteringThumbnails, &texture); - TryGetValueThumbnail(cfg, &g_motionBlurThumbnails, &texture); - TryGetValueThumbnail(cfg, &g_xboxColorCorrectionThumbnails, &texture); + if (cfg == &Config::TimeOfDayTransition) + { + TryGetValueThumbnail(cfg, &g_timeOfDayTransitionThumbnails, &texture); + } + else if (cfg == &Config::TransparencyAntiAliasing) + { + TryGetValueThumbnail(cfg, &g_transparencyAntiAliasingThumbnails, &texture); + } + else if (cfg == &Config::ShadowResolution) + { + TryGetValueThumbnail(cfg, &g_shadowResolutionThumbnails, &texture); + } + else if (cfg == &Config::GITextureFiltering) + { + TryGetValueThumbnail(cfg, &g_giTextureFilteringThumbnails, &texture); + } + else if (cfg == &Config::MotionBlur) + { + TryGetValueThumbnail(cfg, &g_motionBlurThumbnails, &texture); + } + else if (cfg == &Config::XboxColorCorrection) + { + TryGetValueThumbnail(cfg, &g_xboxColorCorrectionThumbnails, &texture); + } return texture; } - return g_thumbnails[cfg->GetName()].get(); + return g_configThumbnails[cfg].get(); } diff --git a/UnleashedRecomp/ui/options_menu_thumbnails.h b/UnleashedRecomp/ui/options_menu_thumbnails.h index 80286e5e..93d001bf 100644 --- a/UnleashedRecomp/ui/options_menu_thumbnails.h +++ b/UnleashedRecomp/ui/options_menu_thumbnails.h @@ -6,4 +6,5 @@ void LoadThumbnails(); +GuestTexture* GetThumbnail(const std::string_view name); GuestTexture* GetThumbnail(const IConfigDef* cfg); diff --git a/UnleashedRecomp/user/config.h b/UnleashedRecomp/user/config.h index c933aa76..d06fae84 100644 --- a/UnleashedRecomp/user/config.h +++ b/UnleashedRecomp/user/config.h @@ -34,6 +34,7 @@ public: CONFIG_DEFINE("Video", int32_t, WindowWidth, 1280); CONFIG_DEFINE("Video", int32_t, WindowHeight, 720); CONFIG_DEFINE_ENUM("Video", EWindowState, WindowState, EWindowState::Normal); + CONFIG_DEFINE_LOCALISED("Video", size_t, Monitor, 0); CONFIG_DEFINE_ENUM_LOCALISED("Video", EAspectRatio, AspectRatio, EAspectRatio::Auto); CONFIG_DEFINE_CALLBACK("Video", float, ResolutionScale, 1.0f, diff --git a/UnleashedRecompResources b/UnleashedRecompResources index cc048e87..a9f556b4 160000 --- a/UnleashedRecompResources +++ b/UnleashedRecompResources @@ -1 +1 @@ -Subproject commit cc048e877d21f698041352542b3b908c55f50a52 +Subproject commit a9f556b4435cd7217411219dea23760624266ef2