/**************/ /*** Export ***/ /**************/ #include "stdafx.h" #include #include "LayerTile.h" #include "Map.h" #include "utils.h" #include "Core.h" #include "TexCache.h" #include "TileSet.h" #include "Tile.h" #include "Layer.h" #include "LayerTile.h" #include "Export.h" /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ CExport::CExport(char *Filename) { File=fopen(Filename,"wb"); // Write Dummy File Header fwrite(&FileHdr,sizeof(sExpFileHdr),1,File); } /*****************************************************************************/ CExport::~CExport() { int LayerCount=LayerOfs.size(); FileHdr.LayerCount=LayerCount; for (int i=0;iGetTileBank(); FileHdr.TileW=TileBank->GetTile(1,0).GetPCTexW(); FileHdr.TileH=TileBank->GetTile(1,0).GetPCTexH(); // Write Tiles ListSize=UsedTileList.size(); FileHdr.TileCount=ListSize; FileHdr.TileOfs=ftell(File); for (i=0; iGetTileBank(); CTile &ThisTile=TileBank->GetTile(OutTile.Set,OutTile.Tile); int RGBW=ThisTile.GetPCTexW(); int RGBH=ThisTile.GetPCTexH(); u8 *RGB=ThisTile.GetPCTexRGB(); GString SetName=TileBank->GetSet(OutTile.Set).GetFilename(); if (ThisTile.IsTile3d()) { ExportTile3d(Core,ThisTile,OutTile); } else { } // change set name to set mappping if (OutTile.Set==0) { SetName="BLANK"; } OutTile.Set=SetNames.Add(SetName); fwrite(&OutTile,sizeof(sExpTile),1,File); // Write RGB ASSERT(RGBW==FileHdr.TileW); ASSERT(RGBH==FileHdr.TileH); fwrite(RGB,RGBW*RGBH*3,1,File); } /*****************************************************************************/ void CExport::ExportTile3d(CCore *Core,CTile &ThisTile,sExpTile &OutTile) { CTexCache &TexCache=Core->GetTexCache(); std::vector &TileTriList=ThisTile.GetTriList(); int TriCount=TileTriList.size(); OutTile.TriStart=TriList.size(); OutTile.TriCount=TriCount; for (int T=0; T