2025-02-11 15:23:33 +00:00
|
|
|
/*
|
|
|
|
* GameInstance.h, part of VCMI engine
|
|
|
|
*
|
|
|
|
* Authors: listed in file AUTHORS in main folder
|
|
|
|
*
|
|
|
|
* License: GNU General Public License v2.0 or later
|
|
|
|
* Full text of license available in license.txt file, in main folder
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
class CServerHandler;
|
|
|
|
class GlobalLobbyClient;
|
|
|
|
class CPlayerInterface;
|
|
|
|
class CMapHandler;
|
|
|
|
|
2025-02-21 16:00:59 +00:00
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
class INetworkHandler;
|
|
|
|
VCMI_LIB_NAMESPACE_END
|
|
|
|
|
2025-02-11 15:23:33 +00:00
|
|
|
class GameInstance : boost::noncopyable
|
|
|
|
{
|
|
|
|
std::unique_ptr<CServerHandler> serverInstance;
|
|
|
|
std::unique_ptr<CMapHandler> mapInstance;
|
|
|
|
CPlayerInterface * interfaceInstance;
|
|
|
|
|
|
|
|
public:
|
|
|
|
GameInstance();
|
|
|
|
~GameInstance();
|
|
|
|
|
|
|
|
CServerHandler & server();
|
|
|
|
CMapHandler & map();
|
|
|
|
|
|
|
|
CPlayerInterface * interface();
|
|
|
|
|
|
|
|
void setServerInstance(std::unique_ptr<CServerHandler> ptr);
|
|
|
|
void setMapInstance(std::unique_ptr<CMapHandler> ptr);
|
|
|
|
void setInterfaceInstance(CPlayerInterface * ptr);
|
|
|
|
};
|
|
|
|
|
|
|
|
extern std::unique_ptr<GameInstance> GAME;
|