Files
UnrealEngineUWP/Engine/Source/Developer/FriendsAndChat/Private/FriendsAndChatModule.cpp

66 lines
1.4 KiB
C++
Raw Normal View History

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#include "FriendsAndChatPrivatePCH.h"
/**
* Implements the FriendsAndChat module.
*/
class FFriendsAndChatModule
: public IFriendsAndChatModule
{
public:
// IFriendsAndChatModule interface
virtual TSharedRef<IFriendsAndChatManager> GetFriendsAndChatManager(FName MCPInstanceName, bool InGame) override
{
if(MCPInstanceName == TEXT(""))
{
if (!DefaultManager.IsValid())
{
DefaultManager = MakeShareable(new FFriendsAndChatManager());
DefaultManager->Initialize(InGame);
}
return DefaultManager.ToSharedRef();
}
else
{
TSharedRef<FFriendsAndChatManager>* FoundManager = ManagerMap.Find(MCPInstanceName);
if(FoundManager != nullptr)
{
return *FoundManager;
}
}
TSharedRef<FFriendsAndChatManager> NewManager = MakeShareable(new FFriendsAndChatManager());
NewManager->Initialize(InGame);
ManagerMap.Add(MCPInstanceName, NewManager);
return NewManager;
}
public:
// IModuleInterface interface
virtual void StartupModule() override
{
}
virtual void ShutdownModule() override
{
if(DefaultManager.IsValid())
{
DefaultManager.Reset();
}
ManagerMap.Reset();
}
private:
TSharedPtr<FFriendsAndChatManager> DefaultManager;
TMap<FName, TSharedRef<FFriendsAndChatManager>> ManagerMap;
};
IMPLEMENT_MODULE( FFriendsAndChatModule, FriendsAndChat );