/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see .
*/
/** @file social_integration.h Interface definitions for game to report/respond to social integration. */
#ifndef SOCIAL_INTEGRATION_H
#define SOCIAL_INTEGRATION_H
class SocialIntegrationPlugin {
public:
enum State {
RUNNING, ///< The plugin is successfully loaded and running.
FAILED, ///< The plugin failed to initialize.
PLATFORM_NOT_RUNNING, ///< The plugin failed to initialize because the Social Platform is not running.
UNLOADED, ///< The plugin is unloaded upon request.
DUPLICATE, ///< Another plugin of the same Social Platform is already loaded.
UNSUPPORTED_API, ///< The plugin does not support the current API version.
INVALID_SIGNATURE, ///< The signature of the plugin is invalid.
};
std::string basepath; ///< Base path of the plugin.
std::string social_platform = "unknown"; ///< Social platform this plugin is for.
std::string name = ""; ///< Name of the plugin.
std::string version = ""; ///< Version of the plugin.
State state = FAILED; ///< Result of the plugin's init function.
SocialIntegrationPlugin(const std::string &basepath) : basepath(basepath) {}
};
class SocialIntegration {
public:
/**
* Get the list of loaded social integration plugins.
*/
static std::vector GetPlugins();
/**
* Initialize the social integration system, loading any social integration plugins that are available.
*/
static void Initialize();
/**
* Shutdown the social integration system, and all social integration plugins that are loaded.
*/
static void Shutdown();
/**
* Allow any social integration library to handle their own events.
*/
static void RunCallbacks();
/**
* Event: user entered the main menu.
*/
static void EventEnterMainMenu();
/**
* Event: user entered the Scenario Editor.
*/
static void EventEnterScenarioEditor(uint map_width, uint map_height);
/**
* Event: user entered a singleplayer game.
*/
static void EventEnterSingleplayer(uint map_width, uint map_height);
/**
* Event: user entered a multiplayer game.
*/
static void EventEnterMultiplayer(uint map_width, uint map_height);
/**
* Event: user is joining a multiplayer game.
*/
static void EventJoiningMultiplayer();
};
#endif /* SOCIAL_INTEGRATION_H */