Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 19, 2009, 12:19:11 AM (15 years ago)
Author:
rgrieder
Message:

Cleaned out the lua script files for the GUI.
Also replaced "require" function to support resources.
Fixed a problem with the return value of doFile, includeFile and require being discarded because the tolua binding is for a C++ function returning void.

File:
1 edited

Legend:

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

    r5658 r5661  
    2727 *
    2828 */
    29 
    30 /**
    31 @file
    32 @brief
    33     Implementation of the GUIManager class.
    34 */
    3529
    3630#include "GUIManager.h"
     
    6054#include "Clock.h"
    6155#include "LuaState.h"
     56#include "Resource.h"
    6257
    6358namespace orxonox
     
    115110
    116111        // setup scripting
    117         scriptModule_.reset(new LuaScriptModule());
    118         luaState_ = scriptModule_->getLuaState();
     112        luaState_.reset(new LuaState());
     113        scriptModule_.reset(new LuaScriptModule(luaState_->getInternalLuaState()));
    119114
    120115        // Create our own logger to specify the filepath
     
    129124        guiSystem_.reset(new System(guiRenderer_.get(), resourceProvider_, 0, scriptModule_.get()));
    130125
    131         // do this after 'new CEGUI::Sytem' because that creates the lua state in the first place
    132         LuaState::openToluaInterfaces(this->luaState_);
    133 
    134         // initialise the basic lua code
    135         this->loadLuaCode();
    136     }
    137 
    138     /**
    139     @brief
    140         Destructor of the GUIManager
    141 
     126        // Initialise the basic lua code
     127        rootFileInfo_ = Resource::getInfo("InitialiseGUI.lua", "GUI");
     128        this->luaState_->doFile("InitialiseGUI.lua", "GUI", false);
     129    }
     130
     131    /**
     132    @brief
    142133        Basically shuts down CEGUI (member smart pointers) but first unloads our Tolua modules.
    143134    */
    144135    GUIManager::~GUIManager()
    145136    {
    146         // destroy our own tolua interfaces
    147         LuaState::closeToluaInterfaces(this->luaState_);
    148     }
    149 
    150     /**
    151     @brief
    152         Calls main Lua script
    153     @todo
    154         This function calls the main Lua script for our GUI.
    155 
    156         Additionally we set the datapath variable in Lua. This is needed so Lua can access the data used for the GUI.
    157     */
    158     void GUIManager::loadLuaCode()
    159     {
    160         // set datapath for GUI data
    161         lua_pushfstring(this->scriptModule_->getLuaState(), Core::getDataPathString().c_str());
    162         lua_setglobal(this->scriptModule_->getLuaState(), "datapath");
    163         // call main Lua script
    164         this->scriptModule_->executeScriptFile("loadGUI_3.lua", "GUI");
    165137    }
    166138
     
    209181    void GUIManager::executeCode(const std::string& str)
    210182    {
    211         try
    212         {
    213             this->scriptModule_->executeString(str);
    214         }
    215         catch (const CEGUI::Exception& ex)
    216         {
    217             COUT(2) << "CEGUI Error: \"" << ex.getMessage() << "\" while executing code \"" << str << "\"" << std::endl;
    218         }
    219         catch (...)
    220         {
    221             COUT(2) << "Couldn't execute GUI related Lua code due to unknown reasons." << std::endl;
    222         }
     183        this->luaState_->doString(str, rootFileInfo_);
    223184    }
    224185
     
    234195    void GUIManager::showGUI(const std::string& name)
    235196    {
    236         this->executeCode(std::string("showGUI(\"") + name + "\")");
     197        this->luaState_->doString("showGUI(\"" + name + "\")", rootFileInfo_);
    237198    }
    238199
Note: See TracChangeset for help on using the changeset viewer.