Beispiel #1
0
void ServiceBuilding::unserialize(InputSerialStream &stream)
{
   WorkingBuilding::unserialize(stream);
   _serviceTimer = stream.read_int(2, 0, 1000);
   _serviceDelay = stream.read_int(2, 0, 1000);
   _serviceRange = stream.read_int(2, 0, 65535);
}
Beispiel #2
0
void Market::unserialize(InputSerialStream &stream)
{
   ServiceBuilding::unserialize(stream);
   _goodStore.unserialize(stream);
   stream.read_objectID((void**)&_marketBuyer);
   _buyerDelay = stream.read_int(2, 0, 1000);
}
Beispiel #3
0
void ServiceWalker::unserialize(InputSerialStream &stream)
{
   Walker::unserialize(stream);
   _service = (ServiceType) stream.read_int(1, 0, S_MAX);
   init(_service);

   stream.read_objectID((void**)&_building);
   _maxDistance = stream.read_int(2, 0, 65535);
}
Beispiel #4
0
void Tilemap::unserialize(InputSerialStream &stream)
{
   _size = stream.read_int(2, 0, 1000);
   init(_size);

   // loads the graphics map
   PicLoader &picLoader = PicLoader::instance();
   short int imgId;   // 16bits
   for (int i=0; i<_size; ++i)
   {
      for (int j=0; j<_size; ++j)
      {
         Tile &tile = at(i, j);
         TerrainTile &terrain = tile.get_terrain();

         imgId = (short)stream.read_int(2, 0, 65535);

         // terrain
         terrain.unserialize(stream);
         // cannot access the overlay at this stage (it has not be unserialized yet)

         if (imgId != 0 && !terrain.isBuilding())
         {
            // master landscape tile!
           std::string picName = TerrainTileHelper::convId2PicName( imgId );
           Picture& pic = PicLoader::instance().get_picture( picName );

            int tile_size = (pic.get_width()+2)/60;  // size of the multi-tile. the multi-tile is a square.

            // master is the left-most subtile
            Tile* master;
            if (tile_size == 1)
            {
               master = NULL;
            }
            else
            {
               master = &at(i, j);
            }

            for (int di=0; di<tile_size; ++di)
            {
               // for each subrow of the multi-tile
               for (int dj=0; dj<tile_size; ++dj)
               {
                  // for each subcol of the multi-tile
                  Tile &sub_tile = at(i+di, j+dj);
                  sub_tile.set_master_tile(master);
                  sub_tile.set_picture(&pic);
               }
            }
         }

      }
   }
}
Beispiel #5
0
void TraineeWalker::unserialize(InputSerialStream &stream)
{
   Walker::unserialize(stream);
   _traineeType = (WalkerTraineeType) stream.read_int(1, 0, WTT_MAX);
   init(_traineeType);

   stream.read_objectID((void**)&_originBuilding);
   stream.read_objectID((void**)&_destinationBuilding);
   _maxDistance = stream.read_int(2, 0, 65535);
}
Beispiel #6
0
void Walker::unserialize(InputSerialStream &stream)
{
   _pathWay.unserialize(stream);
   _action._action = (WalkerActionType) stream.read_int(1, 0, WA_MAX);
   _action._direction = (DirectionType) stream.read_int(1, 0, D_MAX);
   _i = stream.read_int(2, 0, 1000);
   _j = stream.read_int(2, 0, 1000);
   _si = stream.read_int(1, 0, 50);
   _sj = stream.read_int(1, 0, 50);
   _ii = stream.read_int(4, 0, 1000000);
   _jj = stream.read_int(4, 0, 1000000);
   _speed = stream.read_int(1, 0, 50);
   _midTileI = stream.read_int(1, 0, 50);
   _midTileJ = stream.read_int(1, 0, 50);
   _animIndex = stream.read_int(1, 0, 50);
}
Beispiel #7
0
void Building::unserialize(InputSerialStream &stream)
{
   Construction::unserialize(stream);
   _damageLevel = (float)stream.read_int(1, 0, 100);
   _fireLevel = (float)stream.read_int(1, 0, 100);

   int size = stream.read_int(1, 0, WTT_MAX);
   for (int i=0; i<size; ++i)
   {
      WalkerTraineeType traineeType = (WalkerTraineeType) stream.read_int(1, 0, WTT_MAX);
      int traineeLevel = stream.read_int(1, 0, 200);
      _traineeMap[traineeType] = traineeLevel;
   }

   size = stream.read_int(1, 0, WTT_MAX);
   for (int i=0; i<size; ++i)
   {
      WalkerTraineeType traineeType = (WalkerTraineeType) stream.read_int(1, 0, WTT_MAX);
      _reservedTrainees.insert(traineeType);
   }
}
Beispiel #8
0
void WorkingBuilding::unserialize(InputSerialStream &stream)
{
   Building::unserialize(stream);
   _currentWorkers = stream.read_int(1, 0, 100);
}
Beispiel #9
0
void TerrainTile::unserialize(InputSerialStream &stream)
{
   int terrainBitset = stream.read_int(2, 0, 65535);
   decode(terrainBitset);
   stream.read_objectID((void**)&_overlay);
}