112 lines
2.9 KiB
C++
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 EMBERWILD_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();
|
|
};
|