#pragma once

namespace eui {
class FontMgr;
}

namespace al {
class CameraDirector;
class PadRumbleDirector;
class SceneObjHolder;
class MessageSystem;
class GamePadSystem;

class LayoutSceneInfo {
public:
    LayoutSceneInfo();

    eui::FontMgr* getFontMgr() const { return mFontMgr; }

    CameraDirector* getCameraDirector() const { return mCameraDirector; }

    PadRumbleDirector* getPadRumbleDirector() const { return mPadRumbleDirector; }

    SceneObjHolder* getSceneObjHolder() const { return mSceneObjHolder; }

    const MessageSystem* getMessageSystem() const { return mMessageSystem; }

    const GamePadSystem* getGamePadSystem() const { return mGamePadSystem; }

private:
    eui::FontMgr* mFontMgr = nullptr;
    CameraDirector* mCameraDirector = nullptr;
    PadRumbleDirector* mPadRumbleDirector = nullptr;
    SceneObjHolder* mSceneObjHolder = nullptr;
    const MessageSystem* mMessageSystem = nullptr;
    const GamePadSystem* mGamePadSystem = nullptr;
};
}  // namespace al
