// Lot LISIB - textes lisibles hors du panneau Settings (Docs/Migration/etat/ST/LISIB/LISIB-SPEC.md). // // Les SpinBox et les Text Box des menus du jeu gardent souvent le style par defaut du moteur : texte gris clair // (InvertedForeground, 0.47 lineaire) en taille 12 sur un fond gris clair pour une SpinBox, texte herite clair sur un // fond blanc a 80 % pour une Text Box (inventaire LISIB-T1-CART.md, 56 SpinBox et 16 Text Box). Ce sous-systeme leur // pose, une fois par widget, un style lisible : // - SpinBox : fond sombre, texte blanc avec contour noir, remplissage bleu, comme les reglages de // ULPSettingsSubsystem (HardenSettingsControls), police d'au moins 16 et opacite de rendu 1 ; // - Text Box dont la couleur de texte n'est pas fixee : texte noir opaque (comme STE-TXT), police d'au moins 14. // Les widgets du panneau Settings (sous SettingsScrollBox) restent a ULPSettingsSubsystem. Aucun asset n'est modifie. // // Le style d'une Text Box passe par ULPWidgetStyleLibrary::SetEditableTextBoxStyle (ERR-088), jamais par // UEditableTextBox::SetWidgetStyle sur une valeur temporaire. #pragma once #include "CoreMinimal.h" #include "Containers/Ticker.h" #include "Subsystems/GameInstanceSubsystem.h" #include "LPReadableTextSubsystem.generated.h" class UWidget; UCLASS() class LIFEPLAY_API ULPReadableTextSubsystem : public UGameInstanceSubsystem { GENERATED_BODY() public: virtual void Initialize(FSubsystemCollectionBase& Collection) override; virtual void Deinitialize() override; private: bool Tick(float DeltaTime); void ApplyReadableStyles(); bool IsGameWidget(const UWidget* Widget) const; FTSTicker::FDelegateHandle TickHandle; float SinceLastPass = 0.f; // Widgets deja traites : le style n'est pose qu'une fois (il vit ensuite dans les membres UMG). TSet> Done; // Noms deja journalises (classe du menu + nom du widget), pour une ligne par widget d'asset. TSet Logged; };