Exemplo n.º 1
0
bool Map::dumpMap(string filename)
{
  PositionI dimensions=layers_.at(0).getDimensions();
  ofstream NewMapData(filename.c_str(),ofstream::binary);
  NewMapData.put((char)dimensions.X);
  NewMapData.put((char)dimensions.Y);
  NewMapData.write(scriptFile_.c_str(),scriptFile_.size());
  NewMapData.put((char)3);
  NewMapData.put((char)tileSetNames_.size());
  for (int i=0;i<tileSetNames_.size();i++)
    {
      NewMapData.write(tileSetNames_.at(i).c_str(),tileSetNames_.at(i).size());
      NewMapData.put((char)3);
    };
	  //Layer
  for (int Layer=0;Layer<getNumberOfLayers();Layer++)
    {
      for (int i=0;i<dimensions.X*dimensions.Y;i++)
	{
	  Tile saveTile=getTile(i-i/dimensions.X*dimensions.X,i/dimensions.X,Layer);
	  NewMapData.put((char)saveTile.TileSet);
	  NewMapData.put((char)saveTile.Type);
	  NewMapData.put((char)saveTile.Passability);
	};
      NewMapData.put('|');
    };
  return true;
};
Exemplo n.º 2
0
static int yp_yajl_map_key(void *o, const unsigned char * key, unsigned int keyLen)
{
	JsonParserCtx *ctx = static_cast<JsonParserCtx*>(o);
	MapArrayNestingChain *head = jp_nesting_chain_head_get(ctx, JsonTypeMap);
	if (!head)
		return CANCEL_PARSE;
	JsonElMap *map = (JsonElMap*)head->el;
	JsonElMapData *mapData = NewMapData(key, keyLen);
	mapData->next = map->firstVal;
	map->firstVal = mapData;
	return CONTINUE_PARSE;
}
Exemplo n.º 3
0
bool Map::loadMap(string filename)
{
  ifstream NewMapData(filename.c_str(),ifstream::binary);
  if (NewMapData==NULL)
    {
      return false;
    };
  PositionI dimensions;
  dimensions.X=NewMapData.get();
  dimensions.Y=NewMapData.get();
  scriptFile_=loadString(&NewMapData,(char)3);
  tileSetNames_.resize(NewMapData.get());
  for (int TileSetsNum=0;TileSetsNum<tileSetNames_.size();TileSetsNum++)
    {
      tileSetNames_.at(TileSetsNum)=loadString(&NewMapData,(char)3);
    };
  string LayerString=loadString(&NewMapData,"|");
  do
    {
      TileLayer newLayer(dimensions.X,dimensions.Y);
      for (int FillMap=0;FillMap<dimensions.X*dimensions.Y;FillMap++)
	{
	  Tile newTile;
	  newTile.TileSet=(int)nextChar(&LayerString);
	  newTile.Type=(TileType)nextChar(&LayerString);
	  newTile.Passability=(int)nextChar(&LayerString);
	  newLayer.changeTile(FillMap-FillMap/dimensions.X*dimensions.X,FillMap/dimensions.X,newTile);
	};
      addLayer(newLayer);
      string LayerString=loadString(&NewMapData,'|');
    } while (LayerString!="");
  CONSOLE_WRITE("Map Scripts");
  CONSOLE_WRITE("===========");
  CONSOLE_RUN_FILE("Maps/"+scriptFile_);
  CONSOLE_WRITE("===========");
  return true;
};