67 lines
2.5 KiB
C++
67 lines
2.5 KiB
C++
// Lot MAPDL1 (MAPDL1-SPEC-05 v3, etape E5) : fenetre "City map: <ville>" (Slate, textes en anglais).
|
|
// Modele : ULPModInfoSubsystem::ShowWarning (LPModInfoSubsystem.cpp:375-422), widget ajoute par AddViewportWidgetContent.
|
|
//
|
|
// Contenu : informations (ville, version, taille, hote du premier lien, provenance, "Active after the next game launch"),
|
|
// titres des licences et bouton "Read the full licence" (texte lu dans Content/<fichier>, avec defilement), case d'accord non
|
|
// cochee (les boutons d'action restent inactifs tant qu'elle ne l'est pas), "Download only", "Full install", "Cancel",
|
|
// barre de progression, messages d'erreur ou de reussite, et le recours si tous les serveurs ont echoue
|
|
// ("Open in browser", "Choose file...", surveillance de Telechargements).
|
|
// Une seule fenetre a la fois, un seul telechargement a la fois (le travail est porte par FLPCityMapsDownload).
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "LPCityMapsDownload.h"
|
|
#include "LPCityMapsSubsystem.h"
|
|
|
|
class SWidget;
|
|
|
|
class FLPCityMapsWindow : public TSharedFromThis<FLPCityMapsWindow>
|
|
{
|
|
public:
|
|
~FLPCityMapsWindow();
|
|
|
|
/** Ouvre la fenetre pour une entree de l'index. Faux s'il n'y a pas de viewport ou si la fenetre est deja ouverte.
|
|
* OnInstalled est appele une fois, sur le fil de jeu, avec le nom de la ville, apres une pose reussie. */
|
|
bool Open(const FLPCityMapEntry& InEntry, const TArray<FLPCityMapLicence>& InLicences, TFunction<void(const FString&)> InOnInstalled);
|
|
|
|
/** Ferme la fenetre. Un telechargement en cours est interrompu, son .part est garde. */
|
|
void Close();
|
|
|
|
bool IsOpen() const { return Widget.IsValid(); }
|
|
|
|
private:
|
|
/** Texte Slate dont le FText ne change que si la chaine change (evite de recalculer la mise en page a chaque image). */
|
|
struct FCachedText
|
|
{
|
|
FString Source;
|
|
FText Text;
|
|
const FText& Get(const FString& Value);
|
|
};
|
|
|
|
TSharedRef<SWidget> BuildWidget();
|
|
ELPCityJobPhase GetPhase() const;
|
|
void OnStart(ELPCityInstallMode Mode);
|
|
void OnCancelOrClose();
|
|
void OnToggleLicence();
|
|
void OnOpenBrowser();
|
|
void OnChooseFile();
|
|
void OnOpenFolder();
|
|
void HandleDownloadChanged();
|
|
void LoadLicenceText();
|
|
|
|
FLPCityMapEntry Entry;
|
|
TArray<FLPCityMapLicence> Licences;
|
|
TFunction<void(const FString&)> OnInstalled;
|
|
TSharedPtr<FLPCityMapsDownload> Download;
|
|
TSharedPtr<SWidget> Widget;
|
|
|
|
bool bAccepted = false;
|
|
bool bShowLicence = false;
|
|
bool bLicenceLoaded = false;
|
|
bool bInstalledReported = false;
|
|
FText LicenceFText;
|
|
|
|
FCachedText MessageCache;
|
|
FCachedText ProgressCache;
|
|
};
|