Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 16, 2010, 12:22:12 PM (15 years ago)
Author:
rgrieder
Message:

Background image of the GUI is now managed by GUIManager and kept in a very simple manner: Tell it about the image set and the image name and the it will display it in the root node.
Also split SheetManager.lua from InitialiseGUI.lua to have a separate initialisation, required by GUIManager now.
And modified GUISheet.cc/h accordingly.

Location:
code/branches/gamestates2/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • code/branches/gamestates2/src/libraries/core/GUIManager.cc

    r6736 r6737  
    4242#include <CEGUISystem.h>
    4343#include <CEGUIWindow.h>
     44#include <CEGUIWindowManager.h>
    4445#include <ogreceguirenderer/OgreCEGUIRenderer.h>
    4546
     
    147148        guiSystem_->injectMousePosition((float)mousePosition.first, (float)mousePosition.second);
    148149
    149         // Hide the mouse cursor unless playing in full screen mode
    150         if (!GraphicsManager::getInstance().isFullScreen())
    151             CEGUI::MouseCursor::getSingleton().hide();
    152 
    153         // Initialise the basic Lua code
     150        // Initialise the Lua framework and load the schemes
    154151        this->luaState_->doFile("InitialiseGUI.lua");
     152
     153        // Create the root nodes
     154        this->rootWindow_ = CEGUI::WindowManager::getSingleton().createWindow("MenuWidgets/StaticImage", "AbsoluteRootWindow");
     155        this->rootWindow_->setProperty("FrameEnabled", "False");
     156        this->hudRootWindow_ = CEGUI::WindowManager::getSingleton().createWindow("DefaultWindow", "HUDRootWindow");
     157        this->menuRootWindow_ = CEGUI::WindowManager::getSingleton().createWindow("DefaultWindow", "MenuRootWindow");
     158        // And connect them
     159        CEGUI::System::getSingleton().setGUISheet(this->rootWindow_);
     160        this->rootWindow_->addChildWindow(this->hudRootWindow_);
     161        this->rootWindow_->addChildWindow(this->menuRootWindow_);
     162
     163        // Set up the sheet manager in the Lua framework
     164        this->luaState_->doFile("SheetManager.lua");
    155165    }
    156166
     
    203213    @param str
    204214        reference to string object holding the Lua code which is to be executed
    205 
    206         This function gives total access to the GUI. You can execute ANY Lua code here.
    207215    */
    208216    void GUIManager::executeCode(const std::string& str)
     
    217225    void GUIManager::loadGUI(const std::string& name)
    218226    {
    219         this->executeCode("loadGUI(\"" + name + "\")");
     227        this->executeCode("loadSheet(\"" + name + "\")");
    220228    }
    221229
     
    292300    }
    293301
    294     void GUIManager::setBackground(const std::string& name)
    295     {
    296         this->executeCode("setBackground(\"" + name + "\")");
     302    void GUIManager::setBackgroundImage(const std::string& imageSet, const std::string imageName)
     303    {
     304        if (imageSet.empty() || imageName.empty())
     305            this->setBackgroundImage("set: " + imageSet + " image: " + imageName);
     306        else
     307            this->setBackgroundImage("");
     308    }
     309
     310    void GUIManager::setBackgroundImage(const std::string& image)
     311    {
     312        if (image.empty())
     313            this->rootWindow_->setProperty("Alpha", "0.0");
     314        else
     315            this->rootWindow_->setProperty("Alpha", "1.0");
     316        this->rootWindow_->setProperty("Image", image);
    297317    }
    298318
  • code/branches/gamestates2/src/libraries/core/GUIManager.h

    r6736 r6737  
    7979        static void hideGUI(const std::string& name);
    8080        void keyESC();
    81         void setBackground(const std::string& name);
     81        void setBackgroundImage(const std::string& imageSet, const std::string imageName); // tolua_export
     82        void setBackgroundImage(const std::string& image);
    8283
     84        //! Creates a new InputState to be used with a GUI Sheet
    8385        const std::string& createInputState(const std::string& name, TriBool::Value showCursor = TriBool::True, TriBool::Value useKeyboard = TriBool::True, bool bBlockJoyStick = false); // tolua_export
     86
     87        //! Returns the root window for all menu sheets
     88        CEGUI::Window* getMenuRootWindow() { return this->menuRootWindow_; } // tolua_export
     89        //! Returns the root window for all HUD sheets
     90        CEGUI::Window* getHUDRootWindow() { return this->hudRootWindow_; } // tolua_export
    8491
    8592        void setCamera(Ogre::Camera* camera);
     
    120127        CEGUI::ResourceProvider*             resourceProvider_; //!< CEGUI's resource provider
    121128        CEGUI::Logger*                       ceguiLogger_;      //!< CEGUI's logger to be able to log CEGUI errors in our log
     129        CEGUI::Window*                       rootWindow_;       //!< Root node for all windows
     130        CEGUI::Window*                       hudRootWindow_;    //!< Root node for the HUD sheets
     131        CEGUI::Window*                       menuRootWindow_;   //!< Root node for the menu sheets (used by Lua)
    122132        std::map<std::string, PlayerInfo*>   players_;          //!< Stores the player (owner) for each GUI
    123133        Ogre::Camera*                        camera_;           //!< Camera used to render the scene with the GUI
  • code/branches/gamestates2/src/orxonox/overlays/GUISheet.cc

    r6722 r6737  
    4040        : BaseObject(creator)
    4141        , bShowOnLoad_(false)
    42         , bShowCursor_(true)
    4342        , bHidePrevious_(false)
     43        , bHidePreviousSet_(false)
    4444    {
    4545        RegisterObject(GUISheet);
     
    5757        SUPER(GUISheet, XMLPort, xmlElement, mode);
    5858
    59         XMLPortParam(GUISheet, "showOnLoad",   setShowOnLoad,       getShowOnLoad,       xmlElement, mode);
    60         XMLPortParam(GUISheet, "showCursor",   setCursorVisibility, getCursorVisibility, xmlElement, mode);
    61         XMLPortParam(GUISheet, "hidePrevious", setPreviousHiding,   getPreviousHiding,   xmlElement, mode);
    62         XMLPortParam(GUISheet, "script",       setScript,           getScript,           xmlElement, mode);
     59        XMLPortParam(GUISheet, "showOnLoad",   setShowOnLoad,     getShowOnLoad,     xmlElement, mode);
     60        XMLPortParam(GUISheet, "hidePrevious", setPreviousHiding, getPreviousHiding, xmlElement, mode);
     61        XMLPortParam(GUISheet, "sheetName",    setSheetName,      getSheetName,      xmlElement, mode);
     62        XMLPortParam(GUISheet, "backgroundImage",  setBackgroundImage,  getBackgroundImage,  xmlElement, mode);
     63
     64        if (this->bShowOnLoad_)
     65            this->show();
    6366    }
    6467
    6568    void GUISheet::show()
    6669    {
    67         GUIManager::showGUI(this->script_, this->bHidePrevious_);
     70        GUIManager::getInstance().setBackgroundImage(this->backgroundImage_);
     71        if (this->bHidePreviousSet_)
     72            GUIManager::getInstance().showGUI(this->sheetName_, this->bHidePrevious_);
     73        else
     74            GUIManager::getInstance().showGUI(this->sheetName_);
    6875    }
    6976
    7077    void GUISheet::hide()
    7178    {
    72         GUIManager::hideGUI(this->script_);
     79        GUIManager::getInstance().hideGUI(this->sheetName_);
     80        if (!this->backgroundImage_.empty())
     81            GUIManager::getInstance().setBackgroundImage("");
    7382    }
    7483
    75     void GUISheet::setScript(const std::string& filename)
     84    void GUISheet::setSheetName(const std::string& name)
    7685    {
    77         this->script_ = filename;
    78         GUIManager::getInstance().loadGUI(this->script_);
    79         if (this->bShowOnLoad_)
    80             this->show();
    81     }
    82 
    83     void GUISheet::setCursorVisibility(bool bShow)
    84     {
    85         this->bShowCursor_ = bShow;
    86         // TODO: This call has no effect when already showing!
     86        this->sheetName_ = name;
     87        GUIManager::getInstance().loadGUI(this->sheetName_);
    8788    }
    8889
     
    9091    {
    9192        this->bHidePrevious_ = bHide;
    92         // TODO: This call has no effect when already showing!
     93        this->bHidePreviousSet_ = true;
     94        // Note: This call has no effect when already showing!
    9395    }
    9496}
  • code/branches/gamestates2/src/orxonox/overlays/GUISheet.h

    r6595 r6737  
    4949        void hide();
    5050
    51         void setScript(const std::string& filename);
    52         inline const std::string& getScript() const
    53             { return this->script_; }
     51        void setSheetName(const std::string& name);
     52        inline const std::string& getSheetName() const
     53            { return this->sheetName_; }
    5454
    5555        inline void setShowOnLoad(bool bShow)
     
    5858            { return this->bShowOnLoad_; }
    5959
    60         void setCursorVisibility(bool bShow);
    61         inline bool getCursorVisibility() const
    62             { return this->bShowCursor_; }
    63 
    6460        void setPreviousHiding(bool bHide);
    6561        inline bool getPreviousHiding() const
    6662            { return this->bHidePrevious_; }
    6763
     64        void setBackgroundImage(const std::string& image)
     65            { this->backgroundImage_ = image; }
     66        inline const std::string& getBackgroundImage() const
     67            { return this->backgroundImage_; }
     68
    6869    private:
    69         std::string script_;
     70        std::string sheetName_;
    7071        bool bShowOnLoad_;
    71         bool bShowCursor_;
    7272        bool bHidePrevious_;
     73        bool bHidePreviousSet_;
     74        std::string backgroundImage_;
    7375  };
    7476}
Note: See TracChangeset for help on using the changeset viewer.