diff --git a/src/social_integration.h b/src/social_integration.h new file mode 100644 --- /dev/null +++ b/src/social_integration.h @@ -0,0 +1,85 @@ +/* + * 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 */