Files

112 lines
2.9 KiB
C++

// 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<USettingRowWidget> OverallQualityRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> ViewDistanceRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> FoliageRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> ShadowRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> TextureRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> VisualEffectRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> PostProcessRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> AntiAliasingRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> ReflectionRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> GlobalIlluminationRow;
UPROPERTY(meta = (BindWidget))
TObjectPtr<USettingRowWidget> 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();
};