// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class EmberWild : ModuleRules
{
	public EmberWild(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		// GameplayTags : Enhanced Input rend ses erreurs de remappage sous forme
		// de FGameplayTagContainer. Sans ce module on peut declarer le type mais
		// pas l'inspecter, et on perdrait la raison d'un echec dans le log.
		// Niagara : ACookingStation pilote sa flamme depuis le C++ (allumage,
		// extinction). Passer par un evenement Blueprint marcherait aussi, mais
		// l'etat du feu appartient au C++ -- le Blueprint ne doit brancher que
		// l'asset, pas decider quand il s'allume.
		// DeveloperSettings : USurvivalAudioSettings derive de UDeveloperSettings dans
		// un header public, donc la dependance doit l'etre aussi. C'est ce qui donne
		// la page "Survival Audio" dans les Project Settings.
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "GameplayTags", "UMG", "Niagara", "DeveloperSettings" });

		// EngineSettings : UGameMapsSettings::GetGameDefaultMap(), qui evite de
		// redeclarer le chemin de la map de menu dans le C++ alors qu'il est
		// deja dans DefaultEngine.ini.
		// AnimGraphRuntime : UKismetAnimationLibrary::CalculateDirection, qui remplace
		// la methode homonyme d'UAnimInstance depreciee en 5.8. Prive et pas public --
		// seul le .cpp de UPlayerBodyAnimInstance l'appelle, son header n'en montre rien.
		// PhysicsCore : EPhysicalSurface, la cle de la table de UFootstepSoundsDataAsset.
		// Le header passe sans, Engine l'exposant deja, mais le LIEN echoue --
		// l'enum est REFLECHIE, donc UHT genere un appel a son constructeur
		// Z_Construct_UEnum_PhysicsCore_EPhysicalSurface, qui vit dans ce module.
		// Symptome : ca compile et ca casse a l'edition de liens (LNK2019).
		// Public parce que FootstepSoundsDataAsset.h montre le type dans sa TMap.
		PublicDependencyModuleNames.Add("PhysicsCore");

		PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore", "EngineSettings", "AnimGraphRuntime" });

		// Coop Steam : on ne depend QUE de l'API generique (OnlineSubsystem) et de
		// ses helpers (OnlineSubsystemUtils, qui porte le resolveur d'adresses).
		// Surtout PAS de OnlineSubsystemSteam en dur -- le code appellerait alors
		// du Steam explicitement et ne compilerait plus sur une plateforme sans
		// Steam. Le choix du service se fait par ini.
		//
		// Public et non Private : SessionSubsystem.h expose IOnlineSessionPtr et
		// FOnlineSessionSearchResult dans sa declaration. Un header public qui
		// montre les types d'un module prive ne compile pas chez celui qui l'inclut.
		PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });
	}
}
