diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index bfaa210fd..4aa9ff3fb 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -20,6 +20,8 @@ #include "LayerTile.h" #include "utils.h" +#include "ExportAGB.h" + /*****************************************************************************/ /*****************************************************************************/ @@ -33,7 +35,6 @@ CCore::CCore() MapCam=Vec(0,0,0); TileCam=Vec(0,0,0); Is3dFlag=TRUE; - } /*****************************************************************************/ @@ -516,4 +517,20 @@ void CCore::Toggle2d3d(CMapEditView *View) { Is3dFlag=!Is3dFlag; UpdateView(View); + + Export(); } + +/*****************************************************************************/ +void CCore::Export() +{ +int LayerCount=Layer.size(); +CExportAGB Exp("c:/temp/test.c"); + + for (int i=0;iExport(Exp); + } + Exp.ExportAll(this); + +} \ No newline at end of file diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index b77050740..bc420bfb8 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -15,6 +15,8 @@ const float FileVersion=1.0f; +//#define UseLighting + /*****************************************************************************/ class CMapEditView; class CCore @@ -37,6 +39,8 @@ public: void Render(CMapEditView *View,BOOL ForceRender=FALSE); void RenderLayers(CMapEditView *View); void RenderTileView(CMapEditView *View); + void Export(); + // Control void SetMode(int NewMode); @@ -50,7 +54,7 @@ public: void UpdateTileView(CMapEditView *View,BOOL Toggle=FALSE); CTileBank &GetTileBank() {return(TileBank);} - CTile GetTile(int Bank,int TileNo) {return(TileBank.GetTile(Bank,TileNo));} + CTile &GetTile(int Bank,int TileNo) {return(TileBank.GetTile(Bank,TileNo));} void TileBankLoad(char *Filename); void TileBankReload(); void TileBankSet(); diff --git a/Utils/MapEdit/Export.cpp b/Utils/MapEdit/Export.cpp new file mode 100644 index 000000000..943f2fcfa --- /dev/null +++ b/Utils/MapEdit/Export.cpp @@ -0,0 +1,133 @@ +/**************/ +/*** Export ***/ +/**************/ + +#include "stdafx.h" +#include + +#include "Core.h" +#include "TileSet.h" +#include "Map.h" + +#include "Export.h" +#include "utils.h" + +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +CExport::CExport(char *Filename) +{ + _splitpath(Filename,0,0,Name,0); +} + +/*****************************************************************************/ +CExport::~CExport() +{ + fclose(File); +} + +/*****************************************************************************/ +void CExport::ExportAll(CCore *Core) +{ + ExportTiles(Core); + +} +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +void CExport::ExportTileMap(char *LayerName,CMap &Map) +{ +int Width=Map.GetWidth(); +int Height=Map.GetHeight(); + + ExportTileMapStart(LayerName,Width,Height); + for (int Y=0; YGetTileBank(); +int ListSize=UsedTileList.size(),i; + + PrintTileList(); + for (i=0; iGetTile(ThisElem.Set,ThisElem.Tile); + + ParseTile(ThisTile); + } + CreateTilePalette(); + ExportTileStart(); + for (i=0; iGetTile(ThisElem.Set,ThisElem.Tile); + + ExportTile(ThisTile); + } + ExportTileEnd(); + + +// Palette + ExportPaletteStart(); + ExportPalette(); + ExportPaletteEnd(); + +} +/*****************************************************************************/ diff --git a/Utils/MapEdit/Export.h b/Utils/MapEdit/Export.h new file mode 100644 index 000000000..113a9c969 --- /dev/null +++ b/Utils/MapEdit/Export.h @@ -0,0 +1,62 @@ +/**************/ +/*** Export ***/ +/**************/ + +#ifndef __EXPORT_HEADER__ +#define __EXPORT_HEADER__ + +#include "stdafx.h" +#include + +#include "Quantize.h" + + +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +class CCore; +class CMap; +class CTile; + +class CExport +{ +public: + CExport(char *Filename); + ~CExport(); + + void ExportTileMap(char *LayerName,CMap &Map); + void ExportAll(CCore *Core); + + void PrintTileList(); + +protected: + int FindTileInList(sMapElem &Tile); + int AddTileToList(sMapElem &Tile); + + void ExportTiles(CCore *Core); + void ExportPalette(CCore *Core); + +virtual void ExportTileMapStart(char *LayerName,int Width,int Height)=0; +virtual void ExportTileMap(sMapElem &Elem,int NewIdx)=0; +virtual void ExportTileMapEnd(char *LayerName)=0; + +virtual void ExportTileStart()=0; +virtual void ParseTile(CTile &ThisTile)=0; +virtual void CreateTilePalette()=0; +virtual void ExportTile(CTile &ThisTile)=0; +virtual void ExportTileEnd()=0; + +virtual void ExportPaletteStart()=0; +virtual void ExportPalette()=0; +virtual void ExportPaletteEnd()=0; + + + char Name[256]; + FILE *File; + int Count; + std::vector UsedTileList; + +}; + +/*****************************************************************************/ +#endif \ No newline at end of file diff --git a/Utils/MapEdit/Layer.h b/Utils/MapEdit/Layer.h index ef7e2ba7e..f339720fd 100644 --- a/Utils/MapEdit/Layer.h +++ b/Utils/MapEdit/Layer.h @@ -26,6 +26,7 @@ enum LAYER_TYPE /*****************************************************************************/ class CCore; class CMapEditView; +class CExport; class CLayer { public: @@ -57,6 +58,8 @@ virtual void Resize(int Width,int Height)=0; virtual void Load(CFile *File,float Version)=0; virtual void Save(CFile *File)=0; +virtual void Export(CExport &Exp)=0; + // Functions virtual BOOL SetMode(int NewMode)=0; virtual BOOL InitMode()=0; diff --git a/Utils/MapEdit/LayerTile.cpp b/Utils/MapEdit/LayerTile.cpp index c6ed47404..9a0169794 100644 --- a/Utils/MapEdit/LayerTile.cpp +++ b/Utils/MapEdit/LayerTile.cpp @@ -19,6 +19,7 @@ #include "Layer.h" #include "LayerTile.h" #include "Utils.h" +#include "Export.h" /*****************************************************************************/ @@ -187,7 +188,9 @@ float OverVal=0.5; glDisable(GL_TEXTURE_2D); glBegin(GL_LINES); +#ifdef UseLighting glNormal3f( 1,1,1); +#endif glColor3ub(255,255,255); for (int YLoop=0; YLoopsizeX; RGBData.Height=Aux->sizeY; - RGBData.RGB=(char*)Aux->data; + RGBData.RGB=Aux->data; free(Aux); // Safe to free aux now, contents copied (I HATE AUX) } diff --git a/Utils/MapEdit/TexCache.h b/Utils/MapEdit/TexCache.h index f97492ef5..eaf255bd4 100644 --- a/Utils/MapEdit/TexCache.h +++ b/Utils/MapEdit/TexCache.h @@ -11,12 +11,13 @@ #include #include #include +#include "Utils.h" struct sRGBData { int Width; int Height; - char *RGB; + u8 *RGB; }; struct sTex diff --git a/Utils/MapEdit/TileSet.cpp b/Utils/MapEdit/TileSet.cpp index 7af6d8b4e..3042d250e 100644 --- a/Utils/MapEdit/TileSet.cpp +++ b/Utils/MapEdit/TileSet.cpp @@ -44,7 +44,7 @@ CTileBank::CTileBank() SelStart=-1; SelEnd=1; -#ifdef _DEBUG +#ifdef _DEBUGx AddTileSet("c:/temp/rockp/rockp.gin"); // AddTileSet("c:/temp/3/test.gin"); @@ -397,7 +397,9 @@ int SelFlag; glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin(GL_QUADS); +#ifdef UseLighting glNormal3f( 1,1,1); +#endif switch(SelFlag) { case 1: // L @@ -463,8 +465,9 @@ int MaxTile=Tile.size(); glTranslatef(CamPos.x+X*(1+TileBrowserGap),CamPos.y-Y*(1+TileBrowserGap),CamPos.z); glBegin(GL_QUADS); +#ifdef UseLighting glNormal3f( 1,1,1); - +#endif glColor4f(1,1,0,0.5); BuildGLQuad(TileBrowserX0,TileBrowserX1,TileBrowserY0,TileBrowserY1,0); glEnd(); @@ -494,7 +497,9 @@ int TileID=0; glTranslatef(CamPos.x+Pos.x*(1+TileBrowserGap),CamPos.y-Pos.y*(1+TileBrowserGap),CamPos.z); glBegin(GL_LINES); +#ifdef UseLighting glNormal3f( 1,1,1); +#endif glColor3ub(255,255,255); glVertex3f( TileBrowserX0,TileBrowserY0,0); diff --git a/Utils/MapEdit/utils.cpp b/Utils/MapEdit/utils.cpp index eff56c014..67b3869f8 100644 --- a/Utils/MapEdit/utils.cpp +++ b/Utils/MapEdit/utils.cpp @@ -33,37 +33,49 @@ char szBuf[256]; void BuildGLBox(float XMin,float XMax,float YMin,float YMax,float ZMin,float ZMax) { // Bottom Face +#ifdef UseLighting glNormal3f( 0.0f,-1.0f, 0.0f); +#endif glVertex3f( XMin, YMin, ZMin); glVertex3f( XMax, YMin, ZMin); glVertex3f( XMax, YMin, ZMax); glVertex3f( XMin, YMin, ZMax); // Front Face +#ifdef UseLighting glNormal3f( 0.0f, 0.0f, 1.0f); +#endif glVertex3f( XMin, YMin, ZMax); glVertex3f( XMax, YMin, ZMax); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMin, YMax, ZMax); // Back Face +#ifdef UseLighting glNormal3f( 0.0f, 0.0f,-1.0f); +#endif glVertex3f( XMin, YMin, ZMin); glVertex3f( XMin, YMax, ZMin); glVertex3f( XMax, YMax, ZMin); glVertex3f( XMax, YMin, ZMin); // Right face +#ifdef UseLighting glNormal3f( 1.0f, 0.0f, 0.0f); +#endif glVertex3f( XMax, YMin, ZMin); glVertex3f( XMax, YMax, ZMin); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMax, YMin, ZMax); // Left Face +#ifdef UseLighting glNormal3f(-1.0f, 0.0f, 0.0f); +#endif glVertex3f( XMin, YMin, ZMin); glVertex3f( XMin, YMin, ZMax); glVertex3f( XMin, YMax, ZMax); glVertex3f( XMin, YMax, ZMin); // Top Face +#ifdef UseLighting glNormal3f( 0.0f, 1.0f, 0.0f); +#endif glVertex3f( XMin, YMax, ZMin); glVertex3f( XMin, YMax, ZMax); glVertex3f( XMax, YMax, ZMax); @@ -109,7 +121,9 @@ void BuildGLBoxNoNormals(float XMin,float XMax,float YMin,float YMax,float ZMin, void BuildGLQuad(float XMin,float XMax,float YMin,float YMax,float Z) { // Front Face +#ifdef UseLighting glNormal3f( 0.0f, 0.0f, 1.0f); +#endif glVertex3f( XMin, YMin, Z); glVertex3f( XMax, YMin, Z); glVertex3f( XMax, YMax, Z); @@ -176,67 +190,6 @@ int ID; /**************************************************************************************/ /**************************************************************************************/ /**************************************************************************************/ -#if 0 -AUX_RGBImageRec *LoadBMP(char *Filename) -{ -FILE *File=NULL; - - File=fopen(Filename,"r"); - - if (File) - { - fclose(File); - return auxDIBImageLoad(Filename); - } - - return NULL; -} - -/**************************************************************************************/ -void FreeBMP(AUX_RGBImageRec *TextureImage) -{ - if (TextureImage) // If Texture Exists - { - if (TextureImage->data) // If Texture Image Exists - { - free(TextureImage->data); // Free The Texture Image Memory - } - - free(TextureImage); // Free The Image Structure - } - -} - -/**************************************************************************************/ -int LoadGLTexture(char *FileName, GLuint &Text,int &Width,int &Height) -{ -AUX_RGBImageRec *TextureImage; -int Status=FALSE; - - memset(&TextureImage,0,sizeof(void *)*1); // Init Buffer - - // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit - if (TextureImage=LoadBMP(FileName)) - { - Width=TextureImage->sizeX; - Height=TextureImage->sizeY; - Status=TRUE; // Set The Status To TRUE - - glGenTextures(1, &Text); // Create The Texture - - // Typical Texture Generation Using Data From The Bitmap - glBindTexture(GL_TEXTURE_2D, Text); - glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->sizeX, TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); - glBindTexture(GL_TEXTURE_2D, 0); - } - - FreeBMP(TextureImage); - - return Status; // Return The Status -} -#endif /**************************************************************************************/ struct sTgaHdr @@ -257,7 +210,7 @@ struct sTgaHdr -void SaveTGA(char *Filename,int W,int H,char *Data) +void SaveTGA(char *Filename,int W,int H,u8 *Data) { FILE *File; sTgaHdr FileHdr; @@ -281,13 +234,13 @@ sTgaHdr FileHdr; } /**************************************************************************************/ -void BGR2RGB(int W,int H,char *Data) +void BGR2RGB(int W,int H,u8 *Data) { for (int Y=0; Y -//#include -//#include -//#include // Header File For The Glaux Library +#include +#include +#include +#include // Header File For The Glaux Library +/**************************************************************************************/ +typedef signed char s8; +typedef signed short s16; +typedef signed long s32; +//typedef long long s64; + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; +//typedef unsigned long long u64; + +typedef s8 S8; +typedef s16 S16; +typedef s32 S32; +//typedef s64 S64; + +typedef u8 U8; +typedef u16 U16; +typedef u32 U32; +//typedef u64 U64; /**************************************************************************************/ void DbgMsg(const char * pszFmt,...); @@ -31,8 +51,10 @@ int PointToID(CPoint &Pnt,int Width); //void SaveTGA(char *Filename,int SX,int SY,int SW,int SH); -void SaveTGA(char *Filename,int W,int H,char *Data); -void BGR2RGB(int W,int H,char *Data); +void SaveTGA(char *Filename,int W,int H,u8 *Data); +void SaveBmp(char *Filename,int Width,int Height,RGBQUAD *Pal,u8 *Image); + +void BGR2RGB(int W,int H,u8 *Data);