Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 6000 in orxonox.OLD for branches/network/src/util/loading


Ignore:
Timestamp:
Dec 9, 2005, 1:04:31 PM (19 years ago)
Author:
patrick
Message:

network: implemented the gameloader network loading functions again

btw: this is commit 6k so take yourself a minute time to think about Orxonox and all the furiouse coders. Then lay back and take a beer to celebrate it!

On 10k we will make a party.. count on it! :D

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/network/src/util/loading/game_loader.cc

    r5982 r6000  
    117117}
    118118
     119
     120/**
     121 *  reads a campaign definition file into a campaign class
     122 * @param fileName to be loaded
     123 * @returns the loaded campaign
     124
     125   this will interprete the map/campaign files and recursivly load a tree of worlds/campaigns
     126 */
     127ErrorMessage GameLoader::loadNetworkCampaign(const char* fileName)
     128{
     129  ErrorMessage errorCode;
     130  char* campaignName = ResourceManager::getFullName(fileName);
     131  if (campaignName)
     132  {
     133    this->currentCampaign = this->fileToNetworkCampaign(campaignName);
     134    delete[] campaignName;
     135  }
     136//   World* world0 = new World(DEBUG_WORLD_0);
     137//   world0->setNextStoryID(WORLD_ID_GAMEEND);
     138//   this->currentCampaign->addEntity(world0, WORLD_ID_2);
     139}
     140
     141
     142
    119143/**
    120144 *  loads a debug campaign for test purposes only.
     
    272296
    273297
     298
     299/**
     300 *  reads a campaign definition file into a campaign class
     301 * @param fileName to be loaded
     302 * @returns the loaded campaign
     303
     304   this will interprete the map/campaign files and recursivly load a tree of worlds/campaigns
     305 */
     306Campaign* GameLoader::fileToNetworkCampaign(const char* fileName)
     307{
     308  /* do not entirely load the campaign. just the current world
     309  before start of each world, it has to be initialized so it
     310  can load everything it needs into memory then.
     311  */
     312
     313  if( fileName == NULL)
     314  {
     315    PRINTF(2)("No filename specified for loading");
     316    return NULL;
     317  }
     318
     319  TiXmlDocument* XMLDoc = new TiXmlDocument( fileName);
     320  // load the campaign document
     321  if( !XMLDoc->LoadFile())
     322  {
     323      // report an error
     324    PRINTF(1)("Could not load XML File %s: %s @ %d:%d\n", fileName, XMLDoc->ErrorDesc(), XMLDoc->ErrorRow(), XMLDoc->ErrorCol());
     325    delete XMLDoc;
     326    return NULL;
     327  }
     328
     329  // check basic validity
     330  TiXmlElement* root = XMLDoc->RootElement();
     331  assert( root != NULL);
     332
     333  if( strcmp( root->Value(), "Campaign"))
     334  {
     335      // report an error
     336    PRINTF(2)("Specified XML File is not an orxonox campaign file (Campaign element missing)\n");
     337    delete XMLDoc;
     338    return NULL;
     339  }
     340
     341  // construct campaign
     342  Campaign* c = new Campaign( root);
     343
     344  // free the XML data
     345  delete XMLDoc;
     346
     347  return c;
     348}
     349
     350
    274351/**
    275352 *  handle keyboard commands
Note: See TracChangeset for help on using the changeset viewer.