// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "SettingsTabWidget.h" #include "SettingsGraphicsWidget.generated.h" class USettingRowWidget; class USurvivalUserSettings; /** * L'onglet "Graphismes" : les dix curseurs de scalability du moteur, plus une * qualite globale qui les pousse tous. * * Zero logique metier ici : chaque ligne appelle un Set...Quality(0-3) de * UGameUserSettings, le moteur fait le reste. C'est l'onglet qui rapporte le * plus pour le moins d'effort. * * Vegetation et Distance d'affichage sont places EN HAUT et non dans l'ordre du * moteur : avec SoStylized, ce sont les deux seuls qui decident vraiment si le * jeu tourne sur une machine moyenne. * * Classe Abstract : on cree un WBP_SettingsGraphics qui en herite. */ UCLASS(Abstract) class SURVIVAL_PROJET_API USettingsGraphicsWidget : public USettingsTabWidget { GENERATED_BODY() public: virtual void NativeConstruct() override; virtual void RefreshFromSettings() override; virtual void ResetToDefaults() override; protected: /** Bas / Moyen / Élevé / Épique, plus "Personnalisé" que le joueur ne peut pas choisir. */ UPROPERTY(meta = (BindWidget)) TObjectPtr OverallQualityRow; UPROPERTY(meta = (BindWidget)) TObjectPtr ViewDistanceRow; UPROPERTY(meta = (BindWidget)) TObjectPtr FoliageRow; UPROPERTY(meta = (BindWidget)) TObjectPtr ShadowRow; UPROPERTY(meta = (BindWidget)) TObjectPtr TextureRow; UPROPERTY(meta = (BindWidget)) TObjectPtr VisualEffectRow; UPROPERTY(meta = (BindWidget)) TObjectPtr PostProcessRow; UPROPERTY(meta = (BindWidget)) TObjectPtr AntiAliasingRow; UPROPERTY(meta = (BindWidget)) TObjectPtr ReflectionRow; UPROPERTY(meta = (BindWidget)) TObjectPtr GlobalIlluminationRow; UPROPERTY(meta = (BindWidget)) TObjectPtr ShadingRow; private: UFUNCTION() void HandleOverallQualityChanged(int32 NewIndex); UFUNCTION() void HandleViewDistanceChanged(int32 NewIndex); UFUNCTION() void HandleFoliageChanged(int32 NewIndex); UFUNCTION() void HandleShadowChanged(int32 NewIndex); UFUNCTION() void HandleTextureChanged(int32 NewIndex); UFUNCTION() void HandleVisualEffectChanged(int32 NewIndex); UFUNCTION() void HandlePostProcessChanged(int32 NewIndex); UFUNCTION() void HandleAntiAliasingChanged(int32 NewIndex); UFUNCTION() void HandleReflectionChanged(int32 NewIndex); UFUNCTION() void HandleGlobalIlluminationChanged(int32 NewIndex); UFUNCTION() void HandleShadingChanged(int32 NewIndex); /** Prepare une ligne de qualite : memes quatre libelles partout. */ void SetupQualityRow(USettingRowWidget* Row, const FText& Label); /** Pousse la scalability et rafraichit la ligne de qualite globale. */ void ApplyAndRefreshOverall(); };