Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 25, 2009, 4:52:37 PM (15 years ago)
Author:
scheusso
Message:

merged menu branch to presentation2 branch with some additional fixes and features ;)

Location:
code/branches/presentation2
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation2

  • code/branches/presentation2/src/libraries/core/CMakeLists.txt

    r6105 r6150  
    8686  TOLUA_FILES
    8787    CommandExecutor.h
     88    Game.h
    8889    Loader.h
    8990    LuaState.h
     91    input/InputManager.h
    9092  DEFINE_SYMBOL
    9193    "CORE_SHARED_BUILD"
  • code/branches/presentation2/src/libraries/core/GUIManager.cc

    r6105 r6150  
    5050
    5151#include "util/Clock.h"
     52#include "util/Convert.h"
    5253#include "util/Debug.h"
    5354#include "util/Exception.h"
    5455#include "util/OrxAssert.h"
     56#include "ConsoleCommand.h"
     57#include "Core.h"
     58#include "input/InputManager.h"
    5559#include "LuaState.h"
    5660#include "PathConfig.h"
     
    8589    GUIManager* GUIManager::singletonPtr_s = 0;
    8690
     91    SetConsoleCommandShortcut(GUIManager, showGUI).accessLevel(AccessLevel::User).defaultValue(1, false).defaultValue(2, true);
     92    SetConsoleCommandShortcut(GUIManager, hideGUI).accessLevel(AccessLevel::User);
     93
    8794    /**
    8895    @brief
     
    101108        , resourceProvider_(0)
    102109        , camera_(NULL)
     110        , bShowIngameGUI_(false)
    103111    {
    104112        using namespace CEGUI;
     
    113121        // setup scripting
    114122        luaState_.reset(new LuaState());
     123        rootFileInfo_ = Resource::getInfo("InitialiseGUI.lua", "GUI");
     124        // This is necessary to ensure that input events also use the right resource info when triggering lua functions
     125        luaState_->setDefaultResourceInfo(this->rootFileInfo_);
    115126        scriptModule_.reset(new LuaScriptModule(luaState_->getInternalLuaState()));
    116127
     
    127138
    128139        // Initialise the basic Lua code
    129         rootFileInfo_ = Resource::getInfo("InitialiseGUI.lua", "GUI");
    130140        this->luaState_->doFile("InitialiseGUI.lua", "GUI", false);
    131141
     
    203213        For more details check out loadGUI_2.lua where the function presides.
    204214    */
    205     void GUIManager::showGUI(const std::string& name)
    206     {
    207         this->luaState_->doString("showGUI(\"" + name + "\")", rootFileInfo_);
     215    /*static*/ void GUIManager::showGUI(const std::string& name, bool hidePrevious, bool showCursor)
     216    {
     217        std::pair<std::set<std::string>::iterator,bool> result = GUIManager::getInstance().showingGUIs_.insert(name);
     218        if(GUIManager::getInstance().showingGUIs_.size() == 1 && result.second == true) //!< If it's the first GUI.
     219        {
     220//             InputManager::getInstance().enterState("guiMouseOnly");
     221        }
     222        GUIManager::getInstance().executeCode("showGUI(\"" + name + "\", " + multi_cast<std::string>(hidePrevious) + ", " + multi_cast<std::string>(showCursor) + ")");
     223    }
     224
     225    /**
     226    @brief
     227        Hack-ish. Needed for GUIOverlay.
     228    */
     229    void GUIManager::showGUIExtra(const std::string& name, const std::string& ptr, bool hidePrevious, bool showCursor)
     230    {
     231        std::pair<std::set<std::string>::iterator,bool> result = this->showingGUIs_.insert(name);
     232        if(this->showingGUIs_.size() == 1 && result.second == true) //!< If it's the first GUI.
     233        {
     234//             this->executeCode("showCursor()");
     235//             InputManager::getInstance().enterState("guiMouseOnly");
     236        }
     237        this->executeCode("showGUI(\"" + name + "\", " + multi_cast<std::string>(hidePrevious) + ", " + multi_cast<std::string>(showCursor) + ", " + ptr + ")");
     238    }
     239
     240    /**
     241    @brief
     242        Hides specified GUI.
     243    @param name
     244        The name of the GUI.
     245    */
     246    /*static*/ void GUIManager::hideGUI(const std::string& name)
     247    {
     248        GUIManager::getInstance().showingGUIs_.erase(name);
     249        GUIManager::getInstance().executeCode("hideGUI(\"" + name + "\")");
     250        if(GUIManager::getInstance().showingGUIs_.size() == 0)
     251        {
     252//             GUIManager::getInstance().executeCode("hideCursor()");
     253//             InputManager::getInstance().leaveState("guiMouseOnly");
     254        }
     255    }
     256
     257    void GUIManager::toggleIngameGUI()
     258    {
     259        if ( this->bShowIngameGUI_==false )
     260        {
     261            GUIManager::showGUI("InGameMenu");
     262            this->bShowIngameGUI_ = true;
     263        }
     264        else
     265        {
     266            GUIManager::hideGUI("InGameMenu");
     267            this->bShowIngameGUI_ = false;
     268        }
     269    }
     270   
     271    void GUIManager::keyESC()
     272    {
     273        this->executeCode("keyESC()");
     274    }
     275   
     276    void GUIManager::setBackground(const std::string& name)
     277    {
     278        this->executeCode("setBackground(\"" + name + "\")");
    208279    }
    209280
  • code/branches/presentation2/src/libraries/core/GUIManager.h

    r5929 r6150  
    3434
    3535#include <map>
     36#include <set>
    3637#include <string>
    3738#include <CEGUIForwardRefs.h>
     
    6566        ~GUIManager();
    6667
    67         void update(const Clock& time);
     68        void update(const Clock& time); 
    6869
    69         void showGUI(const std::string& name);
    70         void executeCode(const std::string& str);
     70        static void showGUI(const std::string& name, bool hidePrevious=false, bool showCursor=true);
     71        void showGUIExtra(const std::string& name, const std::string& ptr, bool hidePrevious=false, bool showCursor=true);
     72        static void hideGUI(const std::string& name);
     73        void toggleIngameGUI();
     74        void keyESC();
     75        void setBackground(const std::string& name);
    7176
    7277        void setCamera(Ogre::Camera* camera);
     
    8287    private:
    8388        GUIManager(const GUIManager& instance); //!< private and undefined copy c'tor (this is a singleton class)
     89
     90        std::set<std::string> showingGUIs_; //!< Keeps track of all the GUIs that are currently showing.
     91
     92        void executeCode(const std::string& str);
    8493
    8594        // keyHandler functions
     
    105114
    106115        static GUIManager*                   singletonPtr_s;    //!< Singleton reference to GUIManager
     116        bool                                 bShowIngameGUI_;
    107117
    108118    };
  • code/branches/presentation2/src/libraries/core/Game.cc

    r6121 r6150  
    5151#include "GameMode.h"
    5252#include "GameState.h"
     53#include "GUIManager.h"
    5354
    5455namespace orxonox
     
    5758        { Game::getInstance().stop(); }
    5859    SetConsoleCommandShortcutExternAlias(stop_game, "exit");
     60    static void key_esc()
     61        { Game::getInstance().keyESC(); }
     62    SetConsoleCommandShortcutExternAlias(key_esc, "keyESC");
    5963    static void printFPS()
    6064        { COUT(0) << Game::getInstance().getAvgFPS() << std::endl; }
     
    327331    }
    328332
     333    void Game::keyESC()
     334    {
     335        if( this->getState("mainMenu") && this->getState("mainMenu")->getActivity().active==true )
     336            this->stop();
     337        else
     338            GUIManager::getInstance().keyESC();
     339    }
     340
    329341    void Game::stop()
    330342    {
     
    557569
    558570        shared_ptr<GameState> state = this->getState(name);
    559         state->activate();
     571        state->activateInternal();
    560572        if (!this->loadedStates_.empty())
    561573            this->loadedStates_.back()->activity_.topState = false;
     
    576588            if (!this->loadedStates_.empty())
    577589                this->loadedStates_.back()->activity_.topState = true;
    578             state->deactivate();
     590            state->deactivateInternal();
    579591        }
    580592        catch (...)
  • code/branches/presentation2/src/libraries/core/Game.h

    r6121 r6150  
    5959#define DeclareGameState(className, stateName, bIgnoreTickTime, bGraphicsMode) \
    6060    static bool BOOST_PP_CAT(bGameStateDummy_##className, __LINE__) = orxonox::Game::declareGameState<className>(#className, stateName, bIgnoreTickTime, bGraphicsMode)
    61 
     61// tolua_begin
    6262namespace orxonox
    6363{
     64// tolua_end
     65
    6466    //! Helper object required before GameStates are being constructed
    6567    struct GameStateInfo
     
    7779        You should only create this singleton once because it owns the Core class! (see remark there)
    7880    */
    79     class _CoreExport Game : public Singleton<Game>, public OrxonoxClass
    80     {
     81// tolua_begin
     82    class _CoreExport Game
     83// tolua_end
     84        : public Singleton<Game>, public OrxonoxClass
     85    { // tolua_export
    8186        friend class Singleton<Game>;
    8287        typedef std::vector<shared_ptr<GameState> > GameStateVector;
     
    95100        void run();
    96101        void stop();
    97 
    98         void requestState(const std::string& name);
    99         void requestStates(const std::string& names);
    100         void popState();
     102        void keyESC();
     103
     104        static Game& getInstance(){ return Singleton<Game>::getInstance(); } // tolua_export
     105
     106        void requestState(const std::string& name); //tolua_export
     107        void requestStates(const std::string& names); //tolua_export
     108        void popState(); //tolua_export
    101109
    102110        const Clock& getGameClock() { return *this->gameClock_; }
     
    188196        static std::map<std::string, GameStateInfo> gameStateDeclarations_s;
    189197        static Game* singletonPtr_s;        //!< Pointer to the Singleton
    190     };
     198    }; //tolua_export
    191199
    192200    template <class T>
     
    214222        return true;
    215223    }
    216 }
     224} //tolua_export
    217225
    218226#endif /* _Game_H__ */
  • code/branches/presentation2/src/libraries/core/GameState.cc

    r5738 r6150  
    8383        this->activity_.active = false;
    8484        this->activity_.deactivating = true;
    85         this->activate();
     85        this->deactivate();
    8686        this->activity_.deactivating = false;
    8787        this->activity_.suspended = false;
  • code/branches/presentation2/src/libraries/core/LuaState.cc

    r6105 r6150  
    116116    }
    117117
    118     void LuaState::includeString(const std::string& code, shared_ptr<ResourceInfo> sourceFileInfo)
     118    void LuaState::includeString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo)
    119119    {
    120120        // Parse string with provided include parser (otherwise don't preparse at all)
     
    138138    }
    139139
    140     void LuaState::doString(const std::string& code, shared_ptr<ResourceInfo> sourceFileInfo)
     140    void LuaState::doString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo)
    141141    {
    142142        // Save the oold source file info
     
    164164            if (sourceFileInfo != NULL)
    165165                origin = " originating from " + sourceFileInfo_->filename;
    166             COUT(2) << "Error in Lua-script" << origin << ": " << lua_tostring(luaState_, -1) << std::endl;
     166            COUT(1) << "Error in Lua-script" << origin << ": " << lua_tostring(luaState_, -1) << std::endl;
    167167            // return value is nil
    168168            lua_pushnil(luaState_);
  • code/branches/presentation2/src/libraries/core/LuaState.h

    r5781 r6150  
    5757
    5858        void doFile(const std::string& filename, const std::string& resourceGroup = "General", bool bSearchOtherPaths = true); // tolua_export
    59         void doString(const std::string& code, shared_ptr<ResourceInfo> sourceFileInfo = shared_ptr<ResourceInfo>());
     59        void doString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
    6060
    6161        void includeFile(const std::string& filename, const std::string& resourceGroup = "General", bool bSearchOtherPaths = true); // tolua_export
    62         void includeString(const std::string& code, shared_ptr<ResourceInfo> sourceFileInfo = shared_ptr<ResourceInfo>());
     62        void includeString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
    6363
    6464        void luaPrint(const std::string& str); // tolua_export
     
    7171        void setIncludeParser(std::string (*function)(const std::string&)) { includeParseFunction_ = function; }
    7272        lua_State* getInternalLuaState() { return luaState_; }
     73
     74        void setDefaultResourceInfo(const shared_ptr<ResourceInfo>& sourceFileInfo) { this->sourceFileInfo_ = sourceFileInfo; }
     75        const shared_ptr<ResourceInfo>& getDefaultResourceInfo() { return this->sourceFileInfo_; }
    7376
    7477        static bool addToluaInterface(int (*function)(lua_State*), const std::string& name);
  • code/branches/presentation2/src/libraries/core/input/InputManager.h

    r6084 r6150  
    4141#include "InputState.h"
    4242
     43// tolua_begin
    4344namespace orxonox
    4445{
     
    6364          If the OIS::InputManager or the Keyboard fail, an exception is thrown.
    6465    */
    65     class _CoreExport InputManager : public Singleton<InputManager>, public WindowEventListener
    66     {
     66    class _CoreExport InputManager
     67// tolua_end
     68        : public Singleton<InputManager>, public WindowEventListener
     69    { // tolua_export
    6770        friend class Singleton<InputManager>;
    6871    public:
     
    139142            False if name was not found, true otherwise.
    140143        */
    141         bool enterState(const std::string& name);
     144        bool enterState(const std::string& name); // tolua_export
    142145        /**
    143146        @brief
     
    146149            False if name was not found, true otherwise.
    147150        */
    148         bool leaveState(const std::string& name);
     151        bool leaveState(const std::string& name); // tolua_export
    149152        /**
    150153        @brief
     
    167170        OIS::InputManager* getOISInputManager() { return this->oisInputManager_; }
    168171        std::pair<int, int> getMousePosition() const;
     172       
     173        static InputManager& getInstance() { return *singletonPtr_s; } // tolua_export
    169174
    170175    private: // functions
     
    207212
    208213        static InputManager*                singletonPtr_s;        //!< Pointer reference to the singleton
    209     };
    210 }
     214    }; // tolua_export
     215} // tolua_export
    211216
    212217#endif /* _InputManager_H__ */
Note: See TracChangeset for help on using the changeset viewer.