Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 9, 2008, 4:31:34 PM (16 years ago)
Author:
scheusso
Message:

merged network branch back into trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/network/GamestateClient.cc

    r1747 r1751  
    7575    int id = GAMESTATEID_INITIAL;
    7676    bool b = saveShipCache();
    77     if(processGamestate(tempGamestate_)){
    78       if(b)
    79         loadShipCache();
    80       id = tempGamestate_->getID();
    81     }
     77    packet::Gamestate *processed = processGamestate(tempGamestate_);
     78    assert(processed);
     79    //successfully loaded data from gamestate. now save gamestate for diff and delete the old gs
     80    tempGamestate_=0;
     81    gamestateMap_[processed->getID()]=processed;
     82    last_diff_ = processed->getBaseID();
     83    last_gamestate_ = processed->getID();
     84    if(b)
     85      loadShipCache();
     86    id = processed->getID();
    8287    cleanup();
    8388    return id;
     
    130135    if(myShip_){
    131136      //      unsigned char *data = new unsigned char[myShip_->getSize()];
    132       int size=myShip_->getSize(0x1);
     137      int size=myShip_->getSize2(0, 0x1);
    133138      if(size==0)
    134139        return false;
    135140      shipCache_ = new unsigned char [size];
    136141      unsigned char *temp = shipCache_;
    137       if(!myShip_->getData2(temp, 0x1))
     142      if(!myShip_->getData(temp, 0, 0x1))
    138143        COUT(3) << "could not save shipCache" << std::endl;
    139144      return true;
     
    152157  }
    153158
    154   bool GamestateClient::processGamestate(packet::Gamestate *gs){
    155     assert(gs->decompressData());
    156     if(gs->isDiffed())
    157       assert(gs->undiff(gamestateMap_[gs->getBaseID()]));
    158     return gs->spreadData();
     159  packet::Gamestate *GamestateClient::processGamestate(packet::Gamestate *gs){
     160    if(gs->isCompressed())
     161      assert(gs->decompressData());
     162    if(gs->isDiffed()){
     163      packet::Gamestate *base = gamestateMap_[gs->getBaseID()];
     164      assert(base);
     165      packet::Gamestate *undiffed = gs->undiff(base);
     166      delete gs;
     167      gs=undiffed;
     168      COUT(3) << "successfully undiffed gamestate id: " << undiffed->getID() << std::endl;
     169    }
     170    if(gs->spreadData())
     171      return gs;
     172    else
     173      return NULL;
    159174  }
    160175
Note: See TracChangeset for help on using the changeset viewer.