#pragma region Copyright /* Toxid Game Copyright (C) 2002-2008 Nuclex Development Labs */ #pragma endregion #ifndef TOXID_GAME_PLANET_H #define TOXID_GAME_PLANET_H #include "Toxid.h" namespace Toxid { // ------------------------------------------------------------------------------------------- // class WorldScreen; class LoadingScreen; class GameScreen; class Map; // ------------------------------------------------------------------------------------------- // /// Game world consisting of several map that can be played /// /// Planets are Toxid's concept of Episodes. Each planet contains a series of maps /// and controls if, and in which order, these maps are visited by the player. Some /// planets are built into the game, but it is possible for plugins to add their /// own planets (which would be the approach to take for an add-on game) /// class Planet { /// Immediately releases the resources used by a planet public: virtual ~Planet() {} // // Planet implementation // /// Creates a new world navigation screen /// /// A new world navigation screen in which the player can choose which map to /// visit next /// public: virtual shared_ptr createWorldScreen() = 0; /// Creates a new loading screen /// /// A new loading screen that game displays while loading a map in this world /// public: virtual shared_ptr createLoadingScreen() = 0; /// Creates the screen on which the game takes place /// A new game screen that the game will use for the in-game GUI public: virtual shared_ptr createGameScreen() = 0; /// Creates / loads the map with the specified index /// Index of the map to create /// A new instance of the map with the specified index public: virtual shared_ptr createMap(size_t Index) = 0; }; // ------------------------------------------------------------------------------------------- // } // namespace Toxid #endif // TOXID_GAME_PLANET_H