LifePlay-Revival/Source/LifePlay/LPReadableTextSubsystem.h
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

45 lines
1.9 KiB
C++

// 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<TWeakObjectPtr<UWidget>> Done;
// Noms deja journalises (classe du menu + nom du widget), pour une ligne par widget d'asset.
TSet<FString> Logged;
};