2015-01-31 23:27:34 +01:00
|
|
|
#ifndef GAME_BASE_ENVIRONMENT_H
|
|
|
|
#define GAME_BASE_ENVIRONMENT_H
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
#include <memory>
|
|
|
|
|
2020-05-22 00:11:23 +02:00
|
|
|
namespace osg
|
|
|
|
{
|
|
|
|
class Stats;
|
|
|
|
}
|
|
|
|
|
2020-12-29 21:45:59 +01:00
|
|
|
namespace Resource
|
|
|
|
{
|
|
|
|
class ResourceSystem;
|
|
|
|
}
|
|
|
|
|
2012-07-03 12:30:50 +02:00
|
|
|
namespace MWBase
|
2012-04-23 10:57:16 +02:00
|
|
|
{
|
|
|
|
class World;
|
2012-08-08 15:18:55 +02:00
|
|
|
class ScriptManager;
|
2012-08-09 10:35:53 +02:00
|
|
|
class DialogueManager;
|
2012-08-09 12:56:03 +02:00
|
|
|
class Journal;
|
2012-08-09 14:33:21 +02:00
|
|
|
class SoundManager;
|
2012-08-11 17:30:55 +02:00
|
|
|
class MechanicsManager;
|
2012-08-11 17:53:39 +02:00
|
|
|
class InputManager;
|
2012-08-12 18:11:09 +02:00
|
|
|
class WindowManager;
|
2013-11-16 10:31:46 +01:00
|
|
|
class StateManager;
|
2020-12-18 23:21:10 +01:00
|
|
|
class LuaManager;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
|
|
|
/// \brief Central hub for mw-subsystems
|
|
|
|
///
|
|
|
|
/// This class allows each mw-subsystem to access any others subsystem's top-level manager class.
|
|
|
|
///
|
|
|
|
class Environment
|
|
|
|
{
|
|
|
|
static Environment *sThis;
|
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
std::unique_ptr<World> mWorld;
|
|
|
|
std::unique_ptr<SoundManager> mSoundManager;
|
|
|
|
std::unique_ptr<ScriptManager> mScriptManager;
|
|
|
|
std::unique_ptr<WindowManager> mWindowManager;
|
|
|
|
std::unique_ptr<MechanicsManager> mMechanicsManager;
|
|
|
|
std::unique_ptr<DialogueManager> mDialogueManager;
|
|
|
|
std::unique_ptr<Journal> mJournal;
|
|
|
|
std::unique_ptr<InputManager> mInputManager;
|
|
|
|
std::unique_ptr<StateManager> mStateManager;
|
|
|
|
std::unique_ptr<LuaManager> mLuaManager;
|
|
|
|
Resource::ResourceSystem* mResourceSystem{};
|
|
|
|
float mFrameDuration{};
|
|
|
|
float mFrameRateLimit{};
|
2012-04-23 10:57:16 +02:00
|
|
|
|
|
|
|
Environment (const Environment&);
|
|
|
|
///< not implemented
|
|
|
|
|
|
|
|
Environment& operator= (const Environment&);
|
|
|
|
///< not implemented
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
Environment();
|
|
|
|
|
|
|
|
~Environment();
|
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setWorld (std::unique_ptr<World>&& world);
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setSoundManager (std::unique_ptr<SoundManager>&& soundManager);
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setScriptManager (std::unique_ptr<ScriptManager>&& scriptManager);
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setWindowManager (std::unique_ptr<WindowManager>&& windowManager);
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setMechanicsManager (std::unique_ptr<MechanicsManager>&& mechanicsManager);
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setDialogueManager (std::unique_ptr<DialogueManager>&& dialogueManager);
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setJournal (std::unique_ptr<Journal>&& journal);
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setInputManager (std::unique_ptr<InputManager>&& inputManager);
|
2012-04-23 15:27:03 +02:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setStateManager (std::unique_ptr<StateManager>&& stateManager);
|
2013-11-16 10:31:46 +01:00
|
|
|
|
2022-01-29 23:21:39 +02:00
|
|
|
void setLuaManager (std::unique_ptr<LuaManager>&& luaManager);
|
2020-12-18 23:21:10 +01:00
|
|
|
|
2020-12-29 21:45:59 +01:00
|
|
|
void setResourceSystem (Resource::ResourceSystem *resourceSystem);
|
|
|
|
|
2012-04-23 10:57:16 +02:00
|
|
|
void setFrameDuration (float duration);
|
|
|
|
///< Set length of current frame in seconds.
|
|
|
|
|
2017-08-30 21:26:30 +00:00
|
|
|
void setFrameRateLimit(float frameRateLimit);
|
|
|
|
float getFrameRateLimit() const;
|
|
|
|
|
2012-07-03 12:30:50 +02:00
|
|
|
World *getWorld() const;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2012-08-09 14:33:21 +02:00
|
|
|
SoundManager *getSoundManager() const;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2012-08-11 17:30:55 +02:00
|
|
|
ScriptManager *getScriptManager() const;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2012-08-12 18:11:09 +02:00
|
|
|
WindowManager *getWindowManager() const;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2012-08-11 17:30:55 +02:00
|
|
|
MechanicsManager *getMechanicsManager() const;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2012-08-09 10:35:53 +02:00
|
|
|
DialogueManager *getDialogueManager() const;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2012-08-09 12:56:03 +02:00
|
|
|
Journal *getJournal() const;
|
2012-04-23 10:57:16 +02:00
|
|
|
|
2012-08-11 17:53:39 +02:00
|
|
|
InputManager *getInputManager() const;
|
2012-04-23 15:27:03 +02:00
|
|
|
|
2013-11-16 10:31:46 +01:00
|
|
|
StateManager *getStateManager() const;
|
|
|
|
|
2020-12-18 23:21:10 +01:00
|
|
|
LuaManager *getLuaManager() const;
|
|
|
|
|
2020-12-29 21:45:59 +01:00
|
|
|
Resource::ResourceSystem *getResourceSystem() const;
|
|
|
|
|
2012-04-23 10:57:16 +02:00
|
|
|
float getFrameDuration() const;
|
|
|
|
|
2012-05-04 17:20:57 +02:00
|
|
|
void cleanup();
|
|
|
|
///< Delete all mw*-subsystems.
|
|
|
|
|
2012-04-23 10:57:16 +02:00
|
|
|
static const Environment& get();
|
|
|
|
///< Return instance of this class.
|
2020-05-22 00:11:23 +02:00
|
|
|
|
|
|
|
void reportStats(unsigned int frameNumber, osg::Stats& stats) const;
|
2012-04-23 10:57:16 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|