Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3501 in orxonox.OLD for orxonox/branches/levelloader


Ignore:
Timestamp:
Mar 11, 2005, 5:28:38 PM (20 years ago)
Author:
chris
Message:

orxonox/branches/levelloader: Feeble attempt to load anything… neither finished nor useful

Location:
orxonox/branches/levelloader/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/levelloader/src/game_loader.cc

    r3499 r3501  
    3535
    3636
    37 GameLoader::GameLoader () {}
     37GameLoader::GameLoader ()
     38{
     39        first = NULL;
     40}
    3841
    3942
     
    155158     can load everything it needs into memory then.
    156159  */
     160 
     161  if( name == NULL)
     162  {
     163                PRINTF(ERR)("No filename specified for loading");
     164  }
     165 
     166        TiXMLDocument* XMLDoc = new TiXMLDocument( name);
     167        // load the campaign document
     168        if( !XMLDoc.LoadFile())
     169        {
     170                // report an error
     171                PRINTF(ERR)("Error loading XML File: %s @ %d:%d\n", XMLDoc.ErrorDesc(), XMLDoc.ErrorRow(), XMLDoc.ErrorCol());
     172                delete XMLDoc;
     173                return NULL;
     174        }
     175       
     176        // check basic validity
     177        TiXMLElement* element = XMLDoc.RootElement();
     178        assert( element != NULL);
     179       
     180        element = element->FirstChildElement( "Campaign");
     181       
     182        if( element == NULL )
     183        {
     184                // report an error
     185                PRINTF(ERR)("Specified XML File is not an orxonox campaign file (Campaign element missing)\n");
     186                delete XMLDoc;
     187                return NULL;
     188        }
     189       
     190        // construct campaign
     191        Campaign c = new Campaign( element);
     192       
     193        // free the XML data
     194        delete XMLDoc;
    157195}
    158196
     
    221259    this->currentCampaign->previousLevel();
    222260}
     261
     262
     263/**
     264   \brief add a Factory to the Factory Q
     265   \param factory a Factory to be registered
     266*/
     267void GameLoader::registerFactory( Factory* factory)
     268{
     269        if( next == NULL) next = factory;
     270        else next->registerFactory( factory);
     271}
     272
     273/**
     274   \brief load a StoryEntity
     275   \param element a XMLElement containing all the needed info
     276*/
     277StoryEntity* GameLoader::fabricate( TiXMLElement* element)
     278{
     279        if( first == NULL)
     280        {
     281                PRINTF(ERR)("GameLoader does not know any factories, fabricate() failed\n");
     282                return NULL;
     283        }
     284       
     285        return first->fabricate( element);
     286}
  • orxonox/branches/levelloader/src/game_loader.h

    r3225 r3501  
    3434  ErrorMessage loadDebugCampaign(Uint32 campaignID);
    3535 
     36  void registerFactory( Factory* factory);
     37  StoryEntity* fabricate( TiXMLElement* data);
     38 
    3639 private:
    3740  GameLoader ();
     
    4548  Campaign* fileToCampaign(char* name);
    4649
     50  Factory* first;
    4751};
    4852
  • orxonox/branches/levelloader/src/story_entities/campaign.cc

    r3499 r3501  
    3333Campaign::~Campaign () {}
    3434
     35Campaign::Campaign ( TiXMLElement* root)
     36{
     37        TiXMLElement* element;
     38       
     39        assert( root != NULL);
     40        GameLoader* loader = GameLoader::getInstance();
     41       
     42  this->entities = new ListTemplate<StoryEntity>();
     43  this->isInit = false;
     44 
     45  // grab all the necessary parameters
     46 
     47  // find WorldList
     48  element = root->FirstChildElement( "WorldList");
     49 
     50  // load Worlds
     51        while( element != NULL)
     52        {
     53                StoryEntity created = loader->fabricate( element);
     54                if( created != NULL) addEntity( created);
     55                element = element->nextSiblingElement();
     56        }
     57}
    3558
    3659ErrorMessage Campaign::init()
  • orxonox/branches/levelloader/src/story_entities/campaign.h

    r3499 r3501  
    11
    2 #ifndef _CAMPAIGN_H
     2#ifndef _CAMPAIGN_HCREATE_FACTORY
    33#define _CAMPAIGN_H
    44
     
    1313 public:
    1414  Campaign ();
     15  Campaign ( TiXMLElement* root);
    1516  ~Campaign ();
    1617
     
    4041};
    4142
     43CREATE_FACTORY(Campaign);
     44
    4245#endif /* _CAMPAIGN_H */
  • orxonox/branches/levelloader/src/story_entities/story_entity.h

    r3499 r3501  
    1616 public:
    1717  StoryEntity ();
     18  StoryEntity ( TiXMLElement* root) {};
    1819  virtual ~StoryEntity ();
    1920
  • orxonox/branches/levelloader/src/story_entities/world.cc

    r3499 r3501  
    3232using namespace std;
    3333
     34
     35World::World( TiXMLElement* root)
     36{
     37        TiXMLElement* element;
     38        // load parameters
     39                // identifier
     40        element = FirstChildrenElement("identifier");
     41        if( element == NULL)
     42        {
     43                PRINTF(ERR)("World created with missing identifier\n");
     44                setStoryID( -1);
     45        }
     46                // file
     47}
    3448
    3549/**
  • orxonox/branches/levelloader/src/story_entities/world.h

    r3499 r3501  
    2828
    2929 public:
     30        World (TiXMLElement* root),
    3031  World (char* name);
    3132  World (int worldID);
     
    8889};
    8990
     91CREATE_FACTORY(World);
     92
    9093#endif /* _WORLD_H */
Note: See TracChangeset for help on using the changeset viewer.