LifePlay-Revival/Source/LifePlay/LPMapMarkersGuardSubsystem.h

32 lines
1.1 KiB
C
Raw Normal View History

// Garde ERR-008 : GI.FocusOnMapMarkers lit MapMarkers.WidgetComponents[0] sans test de longueur.
// Apres HideAllMarkers (ou un spawn sans amenite), le tableau est vide → spam log + SetInputMode None.
// Ce sous-systeme retire les entrees detruites, reconstitue le tableau depuis les composants existants et
// vide Vector2Ds quand le tableau est vide, pour eviter le desync AddMarker. Depuis STB-MAP (decision C10,
// option B), il ne cree plus de composant de focus : FocusOnMapMarkers teste le tableau (CHG-282).
#pragma once
#include "CoreMinimal.h"
#include "Containers/Ticker.h"
#include "Subsystems/GameInstanceSubsystem.h"
#include "LPMapMarkersGuardSubsystem.generated.h"
class AActor;
UCLASS()
class LIFEPLAY_API ULPMapMarkersGuardSubsystem : public UGameInstanceSubsystem
{
GENERATED_BODY()
public:
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
virtual void Deinitialize() override;
private:
bool Tick(float DeltaTime);
void Guard(AActor* Markers);
FTSTicker::FDelegateHandle TickHandle;
bool bLoggedOnce = false;
};