Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 24, 2005, 2:15:49 PM (18 years ago)
Author:
rennerc
Message:

synchronizeable: added macros to help write/read data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/network/src/world_entities/terrain.cc

    r6142 r6275  
    2424#include "resource_manager.h"
    2525#include "model.h"
     26#include "network_game_manager.h"
     27
    2628
    2729#include "glincl.h"
     
    5759    {
    5860      this->loadModel(fileName);
     61      strncpy( terrainFile, fileName, 1024 );
    5962    }
    6063  else
     
    98101  this->ssp = NULL;
    99102  this->vegetation = NULL;
     103  strncpy( this->vegetationFile, "", 1024 );
     104  strncpy( this->terrainFile, "", 1024 );
    100105}
    101106
     
    111116void Terrain::loadVegetation(const char* vegetationFile)
    112117{
     118  PRINTF(0)("loadVegetation: %s\n", vegetationFile);
    113119  if (this->vegetation)
    114120    ResourceManager::getInstance()->unload(this->vegetation, RP_LEVEL);
     
    116122  {
    117123    PRINTF(4)("fetching %s\n", vegetationFile);
    118       this->vegetation = (Model*)ResourceManager::getInstance()->load(vegetationFile, OBJ, RP_CAMPAIGN);
     124    this->vegetation = (Model*)ResourceManager::getInstance()->load(vegetationFile, OBJ, RP_CAMPAIGN);
     125    strncpy( this->vegetationFile, vegetationFile, 1024);
    119126  }
    120127  else
     
    315322    }
    316323}
     324
     325void Terrain::writeBytes( const byte * data, int length, int sender )
     326{
     327  setRequestedSync( false );
     328  setIsOutOfSync( false );
     329
     330  int n = Converter::byteArrayToString( data, vegetationFile, length );
     331  Converter::byteArrayToString( data+n, terrainFile, length-n );
     332
     333  //PRINT(0)("GOT DATA: size=%f texture=%s\n", size, textureName);
     334
     335  if ( strcmp(vegetationFile, "") )
     336    this->loadVegetation( vegetationFile );
     337  if ( strcmp(terrainFile, "") )
     338    this->loadModel( terrainFile );
     339
     340}
     341
     342int Terrain::readBytes( byte * data, int maxLength, int * reciever )
     343{
     344  if ( isOutOfSync() && !requestedSync() && this->getHostID()!=this->getOwner() )
     345  {
     346    //PRINTF(0)("Requesting sync! %d\n", this->getUniqueID());
     347    (NetworkGameManager::getInstance())->sync( this->getUniqueID(), this->getOwner() );
     348    setRequestedSync( true );
     349  }
     350
     351  int rec = this->getRequestSync();
     352  if ( rec > 0 )
     353  {
     354    //PRINTF(0)("Serving client %d which requested sync %d size=%f texture=%s\n", rec, this->getUniqueID(), this->size, this->textureName);
     355    *reciever = rec;
     356
     357    if ( strlen(vegetationFile)+INTSIZE > maxLength )
     358    {
     359      PRINTF(1)("Byte array is too small (%d) to store data\n", maxLength );
     360      return 0;
     361    }
     362
     363    int n = Converter::stringToByteArray( vegetationFile, data, strlen(vegetationFile), maxLength );
     364
     365    return n + Converter::stringToByteArray( terrainFile, data+n, strlen(terrainFile), maxLength-n );
     366
     367  }
     368
     369  *reciever = 0;
     370  return 0;
     371}
     372
     373void Terrain::writeDebug( ) const
     374{
     375}
     376
     377void Terrain::readDebug( ) const
     378{
     379}
Note: See TracChangeset for help on using the changeset viewer.