Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 1, 2008, 7:04:09 PM (16 years ago)
Author:
landauf
Message:

merged objecthierarchy branch back to trunk

Location:
code/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/src/network/GamestateClient.cc

    r1907 r2087  
    2929#include "GamestateClient.h"
    3030
     31#include <cassert>
    3132#include <zlib.h>
    3233
     
    4041namespace network
    4142{
    42   struct GameStateItem{
     43  struct _NetworkExport GameStateItem{
    4344    packet::Gamestate *state;
    44     int id;
     45    unsigned int id;
    4546  };
    4647
     
    5051    last_gamestate_=GAMESTATEID_INITIAL-1;
    5152    tempGamestate_=NULL;
    52     myShip_=NULL;
    5353  }
    5454
     
    5656  }
    5757
    58   bool GamestateClient::ack(int gamestateID, int clientID){
     58  bool GamestateClient::ack(unsigned int gamestateID, unsigned int clientID){
    5959    return true;
    6060  }
    6161
    62   bool GamestateClient::add(packet::Gamestate *gs, int clientID){
     62  bool GamestateClient::add(packet::Gamestate *gs, unsigned int clientID){
    6363    if(tempGamestate_!=NULL){
    6464      //delete the obsolete gamestate
     
    7575      return false;
    7676    int id = GAMESTATEID_INITIAL;
    77     bool b = saveShipCache();
    7877    packet::Gamestate *processed = processGamestate(tempGamestate_);
    79     if(!processed){
    80       if(b)
    81         loadShipCache();
    82       return false;
    83     }
    8478//    assert(processed);
     79    if (!processed)
     80        return false;
    8581    //successfully loaded data from gamestate. now save gamestate for diff and delete the old gs
    8682    tempGamestate_=NULL;
    8783    gamestateMap_[processed->getID()]=processed;
    8884    last_diff_ = processed->getID();
    89     if(b)
    90       loadShipCache();
    9185    id = processed->getID();
    9286    sendAck(id);
     
    108102  packet::Gamestate *GamestateClient::getGamestate(){
    109103    packet::Gamestate *gs = new packet::Gamestate();
    110     gs->collectData(0);
     104    if(!gs->collectData(0)){
     105      delete gs;
     106      return 0;
     107    }
    111108    return gs;
    112109  }
    113110
    114111  void GamestateClient::cleanup(){
    115     std::map<int, packet::Gamestate*>::iterator temp, it = gamestateMap_.begin();
     112    std::map<unsigned int, packet::Gamestate*>::iterator temp, it = gamestateMap_.begin();
    116113    while(it!=gamestateMap_.end()){
    117114      if(it->first>=last_diff_)
     
    126123
    127124  void GamestateClient::printGamestateMap(){
    128     std::map<int, packet::Gamestate*>::iterator it;
     125    std::map<unsigned int, packet::Gamestate*>::iterator it;
    129126    COUT(4) << "gamestates: ";
    130127    for(it=gamestateMap_.begin(); it!=gamestateMap_.end(); it++){
     
    134131
    135132  }
    136  
     133
    137134  bool GamestateClient::sendAck(unsigned int gamestateID){
    138135    packet::Acknowledgement *ack = new packet::Acknowledgement(gamestateID, 0);
     
    142139    }
    143140    else{
    144       COUT(3) << "acked a gamestate: " << gamestateID << std::endl;
     141      COUT(5) << "acked a gamestate: " << gamestateID << std::endl;
    145142      return true;
    146143    }
    147   }
    148 
    149   bool GamestateClient::saveShipCache(){
    150     if(myShip_==NULL){
    151       myShip_ = orxonox::SpaceShip::getLocalShip();
    152 //      COUT(2) << "myShip_: " << myShip_ << " getLocalShip(): " << orxonox::SpaceShip::getLocalShip() << std::endl;
    153       if(!myShip_)
    154         return false;
    155     }
    156     if(myShip_){
    157       //      unsigned char *data = new unsigned char[myShip_->getSize()];
    158       int size=myShip_->getSize(0, 0x1);
    159       if(size==0)
    160         return false;
    161       shipCache_ = new unsigned char [size];
    162       unsigned char *temp = shipCache_;
    163       if(!myShip_->getData(temp, 0, 0x1))
    164         COUT(3) << "could not save shipCache" << std::endl;
    165       return true;
    166     }else
    167       return false;
    168   }
    169 
    170   bool GamestateClient::loadShipCache(){
    171     myShip_=orxonox::SpaceShip::getLocalShip(); //TODO: remove this (only a hack)
    172     if(myShip_ && shipCache_){
    173       assert(myShip_->getIdentifier());
    174       unsigned char *temp = shipCache_;
    175       myShip_->updateData(temp, 0x2);
    176       delete shipCache_;
    177       return true;
    178     }else
    179       return false;
    180144  }
    181145
     
    196160      delete gs;
    197161      gs=undiffed;
    198       COUT(3) << "successfully undiffed gamestate id: " << undiffed->getID() << std::endl;
     162      COUT(5) << "successfully undiffed gamestate id: " << undiffed->getID() << std::endl;
    199163    }
    200164    if(gs->spreadData())
Note: See TracChangeset for help on using the changeset viewer.