Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 480


Ignore:
Timestamp:
Dec 12, 2007, 7:54:44 PM (16 years ago)
Author:
nicolape
Message:

Level loader working, see test1 class

Location:
code/branches/FICN
Files:
1 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • code/branches/FICN/bin/levels/sample.oxw

    r470 r480  
    1515       
    1616        <world>
    17 
    18 
     17                <Test1>
     18                        sdafa sdfj askjfdskdalfj
     19                </Test1>
    1920        </world>
    2021
  • code/branches/FICN/src/CMakeLists.txt

    r396 r480  
    77ADD_SUBDIRECTORY(orxonox)
    88ADD_SUBDIRECTORY(audio)
     9ADD_SUBDIRECTORY(tinyxml)
    910
    1011# xml gets handled by loader
  • code/branches/FICN/src/loader/CMakeLists.txt

    r471 r480  
    44SET( LOADER_SRC_FILES
    55  LevelLoader.cc
    6   #../xml/xmlParser.cc
    7   ../tinyxml/tinystr.cc
    8   ../tinyxml/tinyxml.cc
    9   ../tinyxml/tinyxmlerror.cc
    10   ../tinyxml/tinyxmlparser.cc
    116)
    127
    138ADD_LIBRARY(loader SHARED ${LOADER_SRC_FILES})
     9
     10TARGET_LINK_LIBRARIES( loader
     11  xml
     12)
  • code/branches/FICN/src/loader/LevelLoader.cc

    r474 r480  
    55#include "tinyxml/tinyxml.h"
    66#include "orxonox/core/IdentifierIncludes.h"
     7#include "orxonox/core/Error.h"
     8#include "orxonox/objects/BaseObject.h"
    79
    810using namespace std;
     
    1113{
    1214
    13 LevelLoader::LevelLoader(string file, string dir)
    14 {
     15LevelLoader::LevelLoader(string file, string path)
     16{
     17        valid_ = false;
     18       
    1519        // Load XML level file
    16         dir.append("/");
    17         dir.append(file);       
     20        path.append("/");
     21        path.append(file);     
    1822       
    1923        // Open xml file
    20         TiXmlDocument doc(file);
     24        doc.LoadFile(path);
    2125
    2226        // Check if file was loaded
     
    2428        {
    2529                TiXmlHandle hDoc(&doc);
    26                 TiXmlHandle hRoot(0);   
    27 
     30                TiXmlHandle hRoot(0);           
    2831                TiXmlElement* pElem;
    29                
    3032
    3133                // Check for root element
     
    3537                        // Set root element
    3638                        hRoot = TiXmlHandle(pElem);
     39                        rootElement = hRoot.Element();
    3740
    3841                        // Set level description
     
    4447                       
    4548                        // Set level name
    46                         pElem = hRoot.Element();
    47                         name_ = pElem->Attribute("name");
    48                         image_ = pElem->Attribute("image");
     49                        name_ = rootElement->Attribute("name");
     50                        image_ = rootElement->Attribute("image");
     51                       
     52                        valid_ = true;
     53                }
     54                else
     55                {
     56                        orxonox::Error("Level file has no valid root node");
     57                }       
     58        }
     59        else
     60        {
     61                orxonox::Error("Could not load level file ");
     62        }       
     63}
     64
     65        void LevelLoader::loadLevel()
     66        {
     67                if (valid_)
     68                {
     69                        TiXmlElement* loadElem;
     70                        TiXmlElement* worldElem;
     71                        TiXmlElement* tElem;
     72                        TiXmlNode* tNode;
     73                       
    4974                       
    5075                        // Set loading screen
    51                         pElem = hRoot.FirstChild("loading").Element();
    52                         if (pElem)
     76                        loadElem = rootElement->FirstChildElement("loading");
     77                        if (loadElem)
    5378                        {
    5479                                // Set background
    55                                 pElem = hRoot.FirstChild("loading").FirstChild("background").Element();
    56                                 if (pElem)
     80                                tElem = loadElem->FirstChildElement("background");
     81                                if (tElem)
    5782                                {
    58                                         loadingBackgroundColor_ = pElem->Attribute("color");
    59                                         loadingBackgroundImage_ = pElem->Attribute("image");
     83                                        loadingBackgroundColor_ = tElem->Attribute("color");
     84                                        loadingBackgroundImage_ = tElem->Attribute("image");
    6085                                }
    6186                                // Set bar
    62                                 pElem = hRoot.FirstChild("loading").FirstChild("bar").Element();
    63                                 if (pElem)
     87                                tElem = loadElem->FirstChildElement("bar");
     88                                if (tElem)
    6489                                {
    65                                         loadingBarImage_ = pElem->Attribute("image");;
    66                                         loadingBarTop_ = pElem->Attribute("top");
    67                                         loadingBarLeft_ = pElem->Attribute("left");
    68                                         loadingBarWidth_ = pElem->Attribute("width");
    69                                         loadingBarHeight_ = pElem->Attribute("height");
     90                                        loadingBarImage_ = tElem->Attribute("image");;
     91                                        loadingBarTop_ = tElem->Attribute("top");
     92                                        loadingBarLeft_ = tElem->Attribute("left");
     93                                        loadingBarWidth_ = tElem->Attribute("width");
     94                                        loadingBarHeight_ = tElem->Attribute("height");
    7095                                }
     96                                showLoadingScreen();
    7197                        }
    72                                                
    73                        
    74                 }
    75                 else
    76                 {
    77                         std::string err = "Level file has no valid root node";
    78                         std::cout << err << std::endl;
    79                 }       
    80         }
    81         else
    82         {
    83                 std::string err = "Could not load level file ";
    84                 err.append(file);
    85                 std::cout << err << std::endl;
    86         }       
     98                       
     99                        // Load audio
     100                        // TODO
     101                       
     102                        // Load scripts
     103                        // TODO
     104                       
     105                        // Load world
     106                        worldElem = rootElement->FirstChildElement("world");
     107                        if (worldElem)
     108                        {       
     109                                tNode = 0;
     110                                while( tNode = worldElem->IterateChildren( tNode ) )
     111                                {
     112                                        tElem = tNode->ToElement();
     113                                        orxonox::BaseObject* obj = orxonox::ID(tElem->Value())->fabricate();
     114                                        obj->loadParams(tElem);
     115                                }                       
     116                        }
     117                       
     118                        std::cout << "Loading finished!\n\n\n\n\n";                                             
     119                }
     120        }
     121       
     122        void LevelLoader::showLoadingScreen()
     123        {
     124                std::cout << "\n\n\nThis is Orxonox\nthe hottest 3D action shooter ever to exist\n\n\n";
     125                std::cout << "Level: " << name() << "\nDescription:" << description() << "\nImage:"<<image()<<"\n\n\n";
     126                std::cout << "Backgroundcolor: " << loadingBackgroundColor_ << "\nBackgroundimage:" << loadingBackgroundImage_ << "\n\n\n";
     127        }
    87128       
    88129       
     
    130171*/
    131172
    132 }
     173
    133174
    134175LevelLoader::~LevelLoader()
     
    154195}
    155196
    156 void LevelLoader::showLoadingScreen()
    157 {
    158         cout << "\n\n\nThis is Orxonox\nthe hottest 3D action shooter ever to exist\n\n\n";
    159         cout << "Level: " << name() << "\nDescription:" << description() << "\nImage:"<<image()<<"\n\n\n";
    160 }
    161197
    162198/*
  • code/branches/FICN/src/loader/LevelLoader.h

    r474 r480  
    2424        {
    2525        private:
    26                 /*
    27                 // XML Nodes
    28                 XMLNode rootNode;
    29                 XMLNode loadingScreenNode;
    30                 XMLNode worldNode;
    31                 XMLNode audioNode;
    32                 XMLNode scriptsNode;
    33                 */
    3426                // Level information
    3527                std::string name_;
    3628                std::string description_;
    3729                std::string image_;
    38                
    3930                std::string loadingBackgroundColor_;
    4031                std::string loadingBackgroundImage_;
     
    4435                std::string loadingBarWidth_;
    4536                std::string loadingBarHeight_;
     37               
     38                bool valid_;
    4639                       
     40                TiXmlDocument doc;
     41                TiXmlElement* rootElement;     
    4742        public:
    4843
     
    5247               
    5348                void showLoadingScreen();
     49                void loadLevel();
    5450               
    5551                // Getters
  • code/branches/FICN/src/orxonox/CMakeLists.txt

    r462 r480  
    3232  objects
    3333  weapon
     34  xml
    3435)
    3536
  • code/branches/FICN/src/orxonox/core/OrxonoxClass.h

    r474 r480  
    9292            inline const bool isVisible() const { return this->bVisible_; }
    9393
    94                         //virtual void loadParams(TIXMLNode n);
    9594
    9695        private:
  • code/branches/FICN/src/orxonox/objects/BaseObject.cc

    r258 r480  
    1313    {
    1414    }
     15   
    1516}
  • code/branches/FICN/src/orxonox/objects/BaseObject.h

    r384 r480  
    1111            BaseObject();
    1212            virtual ~BaseObject();
     13                        virtual void loadParams(TiXmlElement* xmlElem) {}
     14           
    1315    };
    1416}
  • code/branches/FICN/src/orxonox/objects/CMakeLists.txt

    r376 r480  
    99
    1010ADD_LIBRARY(objects SHARED ${OBJECTS_SRC_FILES})
     11
     12TARGET_LINK_LIBRARIES( objects
     13  xml
     14)
  • code/branches/FICN/src/orxonox/objects/test1.cc

    r384 r480  
    22#include "test2.h"
    33#include "test3.h"
     4#include "../../tinyxml/tinyxml.h"
    45
    56namespace orxonox
     
    6667        this->usefullClass3_ = identifier;
    6768    }
     69   
     70    void Test1::loadParams(TiXmlElement* xmlElem)
     71    {
     72        std::cout<< xmlElem->GetText()<<std::endl;
     73    }
    6874}
  • code/branches/FICN/src/orxonox/objects/test1.h

    r384 r480  
    55#include "Tickable.h"
    66#include "test3.h"
     7#include "../../tinyxml/tinyxml.h"
    78
    89namespace orxonox
     
    2223            void setUsefullClass2(Identifier* identifier);
    2324            void setUsefullClassOfTypeTest3(Identifier* identifier);
     25           
     26            void loadParams(TiXmlElement* xmlElem);
    2427
    2528        private:
  • code/branches/FICN/src/orxonox/orxonox.cc

    r473 r480  
    218218  {
    219219    //TODO: start modules
    220     ogre_->startRender();
    221     auMan_ = new audio::AudioManager();
    222     // load this file from config
    223     string levelFile = "sample.oxw";
    224     //loader_ = new loader::LevelLoader(levelFile);
     220
    225221    //TODO: run engine
    226222  }
     
    339335  void Orxonox::createScene(void)
    340336  {
     337        // Init audio
    341338    auMan_ = new audio::AudioManager();
    342 
     339   
     340    // load this file from config
     341    loader_ = new loader::LevelLoader("sample.oxw");
     342    loader_->loadLevel();
     343
     344        /*
    343345    auMan_->ambientAdd("a1");
    344346    auMan_->ambientAdd("a2");
     
    346348                                //auMan->ambientAdd("ambient1");
    347349    auMan_->ambientStart();
    348 
    349     string levelFile = "sp_level_moonstation.oxw";
    350 //       loader::LevelLoader* loader = new loader::LevelLoader(levelFile);
     350        */
    351351  }
    352352
Note: See TracChangeset for help on using the changeset viewer.