This commit is contained in:
Daveo 2000-11-21 21:27:55 +00:00
parent 94be656b68
commit 569ce5a865
9 changed files with 136 additions and 21 deletions

View File

@ -18,6 +18,8 @@
#include "Core.h"
#include "Layer.h"
#include "LayerTile.h"
#include "utils.h"
/*****************************************************************************/
/*****************************************************************************/
@ -182,13 +184,13 @@ int ListSize=Layer.size();
Layer[ActiveLayer]->FindCursorPos(this,View,GetCam(),CurrentMousePos);
}
/*****************************************************************************/
/////////////////////////////////////////////////////////////////////////////
void CCore::RenderTileView(CMapEditView *View)
{
Vec &ThisCam=GetCam();
TileBank.RenderSet(this,ThisCam,Is3dFlag);
// TileBank.RenderCursor(this,ThisCam,Is3dFlag);
// Get Cursor Pos
TileBank.FindCursorPos(this,View,GetCam(),CurrentMousePos);
@ -333,6 +335,29 @@ CMultiBar *ParamBar=Frm->GetParamBar();
}
/*****************************************************************************/
void CCore::UpdateLayerGUI(CMapEditView *View)
{
CMainFrame *Frm=(CMainFrame*)AfxGetApp()->GetMainWnd();
CMultiBar *ParamBar=Frm->GetParamBar();
CLayerList *List=(CLayerList*)Frm->GetDialog(IDD_LAYER_LIST_DIALOG);
int ListSize=Layer.size();
List->ListBox.ResetContent();
for (int i=0; i<ListSize; i++)
{
List->ListBox.AddString(Layer[i]->GetName());
// List->ListBox.SetCheck(i,Layer[i]->IsVisible());
}
// Now sets checks (silly MSoft bug!!)
for (i=0; i<ListSize; i++)
{
List->ListBox.SetCheck(i,Layer[i]->IsVisible());
}
}
/*****************************************************************************/
/*
void CCore::SetActiveLayer(int i)
@ -442,9 +467,9 @@ Vec &CCore::GetCam()
}
/*****************************************************************************/
void CCore::UpdateAll(CMapEditView *View)
void CCore::UpdateGUI(CMapEditView *View)
{
UpdateView(View);
UpdateLayerGUI(View);
UpdateGrid(View);
TileBank.UpdateGUI(this,TileViewFlag);
@ -452,6 +477,13 @@ void CCore::UpdateAll(CMapEditView *View)
}
/*****************************************************************************/
void CCore::UpdateAll(CMapEditView *View)
{
UpdateGUI(View);
UpdateView(View);
}
/*****************************************************************************/
void CCore::UpdateView(CMapEditView *View,Vec Ofs)
{
@ -463,6 +495,7 @@ Vec &ThisCam=GetCam();
if (View) View->Invalidate();
}
/*****************************************************************************/
void CCore::SetMapSize(CMapEditView *View,int Width,int Height)
{

View File

@ -62,6 +62,7 @@ public:
void UpdateParamBar();
// Layers
void UpdateLayerGUI(CMapEditView *View);
// void SetActiveLayer(int Layer);
// int GetActiveLayer() {return(ActiveLayer);}
// CLayer *GetLayer(int i) {return(Layer[i]);}
@ -74,6 +75,7 @@ public:
CTexCache &GetTexCache() {return(TexCache);}
// Misc
void UpdateGUI(CMapEditView *View);
void UpdateAll(CMapEditView *View);
void UpdateView(CMapEditView *View,Vec Ofs=Vec(0,0,0));

View File

@ -34,6 +34,9 @@ virtual ~CLayer(){};
virtual char *GetName();
virtual void SetName(char *_Name);
virtual void SetVisible(BOOL f) {VisibleFlag=f;}
virtual BOOL IsVisible() {return(VisibleFlag);}
virtual int GetType()=0;
virtual float GetLayerZPosDiv() {return(ZPosDiv);}
@ -71,6 +74,7 @@ protected:
BOOL Render3dFlag;
float ZPosDiv,MapSizeDiv;
BOOL ResizeFlag;
BOOL VisibleFlag;
};

View File

@ -32,6 +32,7 @@ CLayerTile::CLayerTile(char *_Name,int Width,int Height,float MapDiv,float ZDiv,
MapSizeDiv=MapDiv;
ResizeFlag=Resizable;
Render3dFlag=Is3d;
VisibleFlag=TRUE;
Mode=MouseModePaint;
Map.SetSize(Width/MapDiv,Height/MapDiv,TRUE);
@ -58,6 +59,7 @@ void CLayerTile::Load(CFile *File,float Version)
File->Read(&ZPosDiv,sizeof(float));
File->Read(&MapSizeDiv,sizeof(float));
File->Read(&ResizeFlag,sizeof(BOOL));
File->Read(&VisibleFlag,sizeof(BOOL));
File->Read(&Mode,sizeof(MouseMode));
Map.Load(File,Version);
}
@ -72,9 +74,9 @@ void CLayerTile::Save(CFile *File)
File->Write(&ZPosDiv,sizeof(float));
File->Write(&MapSizeDiv,sizeof(float));
File->Write(&ResizeFlag,sizeof(BOOL));
File->Write(&VisibleFlag,sizeof(BOOL));
File->Write(&Mode,sizeof(MouseMode));
Map.Save(File);
}
/*****************************************************************************/

View File

@ -2,7 +2,7 @@
[General Info]
Version=1
LastClass=CMapSizeDlg
LastClass=CLayerList
LastTemplate=CDialog
NewFileInclude1=#include "stdafx.h"
NewFileInclude2=#include "mapedit.h"
@ -18,19 +18,19 @@ Class6=CMapEditDoc
Class7=CMapEditView
ResourceCount=10
Resource1=IDD_LAYER_LIST_DIALOG
Resource2=IDR_MAINFRAME (English (U.S.))
Resource3=IDR_TOOLBAR (English (U.S.))
Resource1=IDD_MULTIBAR (English (U.S.))
Resource2=IDD_LAYER_LIST_DIALOG
Resource3=IDD_GFXTOOLBAR
Resource4=IDD_DIALOGBAR (English (U.S.))
Resource5=IDR_MAPEDITYPE (English (U.S.))
Class8=CMultiBar
Resource6=IDD_TILESET_DIALOG
Resource7=IDD_MULTIBAR (English (U.S.))
Resource6=IDR_MAINFRAME (English (U.S.))
Resource7=IDR_TOOLBAR (English (U.S.))
Class9=CLayerList
Class10=CTileSetDlg
Resource8=IDD_GFXTOOLBAR
Resource8=IDD_ABOUTBOX (English (U.S.))
Class11=CGfxToolBar
Resource9=IDD_ABOUTBOX (English (U.S.))
Resource9=IDD_TILESET_DIALOG
Class12=CMapSizeDlg
Resource10=IDD_MAPSIZE
@ -209,7 +209,7 @@ ImplementationFile=LayerList.cpp
BaseClass=CDialog
Filter=D
VirtualFilter=dWC
LastObject=CLayerList
LastObject=IDC_LAYER_LIST
[DLG:IDD_TILESET_DIALOG]
Type=1

View File

@ -61,7 +61,7 @@ CMapEditView::~CMapEditView()
/////////////////////////////////////////////////////////////////////////////
void CMapEditView::VideoMode(ColorsNumber & c, ZAccuracy & z, BOOL & dbuf)
{
c=THOUSANDS; // ask for 65355 colors...
c=MILLIONS; // ask for 65355 colors...
z=NORMAL; // ...16 bit Z-buffer...
dbuf=TRUE; // ...double-buffering
}

View File

@ -44,8 +44,9 @@ CTileBank::CTileBank()
SelStart=-1;
SelEnd=1;
#ifdef _DEBUGx
AddTileSet("c:/temp/rockp/rockp.gin");
#ifdef _DEBUG
// AddTileSet("c:/temp/rockp/rockp.gin");
AddTileSet("c:/temp/3/test.gin");
int W=3;
int H=3;
@ -113,6 +114,7 @@ int ListSize=TileSet.size();
sprintf(Filename,"%s%s.%s",ThisSet.GetPath(),ThisSet.GetName(),"Gin");
File->Write(Filename,256+64);
}
}
/*****************************************************************************/
@ -148,6 +150,7 @@ int ListSize=TileSet.size();
}
LoadFlag=TRUE;
}
/*****************************************************************************/
@ -324,6 +327,7 @@ int ChildCount=ThisNode.GetPruneChildCount();
Tile.push_back(CTile(Core,this,Scene,ThisNode.PruneChildList[Child]));
}
Loaded=TRUE;
}

View File

@ -3,8 +3,7 @@
/*************/
#include "stdafx.h"
//#include <windows.h> // Header File For Windows
//#include <stdio.h> // Header File For Standard Input/Output
#include "gl3d.h"
#include <gl\gl.h>
#include <gl\glu.h>
@ -210,8 +209,8 @@ int Status=FALSE;
// Typical Texture Generation Using Data From The Bitmap
glBindTexture(GL_TEXTURE_2D, Text);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
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);
}
@ -227,3 +226,72 @@ int Status=FALSE;
return Status; // Return The Status
}
/**************************************************************************************/
struct sTgaHdr
{
char id; // 0
char colmaptype; // 1
char imagetype; // 2
char fei[2]; // 3
char cml[2]; // 5
char cmes; // 7
short xorig; // 8
short yorig; // 10
short width; // 12
short height; // 14
char depth; // 15
char imagedesc; // 16
};
void SaveTGA(char *Filename,int SX,int SY,int SW,int SH)
{
FILE *File;
sTgaHdr FileHdr;
File=fopen(Filename,"wb");
//---------------------------------------------------------------------------
// Header
memset(&FileHdr,0 ,sizeof(sTgaHdr));
FileHdr.imagetype= 2; //imagetype
FileHdr.width = SW;
FileHdr.height= SH;
FileHdr.depth=24;
// FileHdr.imagedesc=24;
fwrite(&FileHdr,sizeof(sTgaHdr),1,File);
//---------------------------------------------------------------------------
// Data
for (int Y=0; Y<SH; Y++)
{
for (int X=0; X<SW; X++)
{
float Col[3];
unsigned char R,G,B;
glReadPixels(X,Y,1,1,GL_RED, GL_FLOAT,&Col[0]);
glReadPixels(X,Y,1,1,GL_GREEN, GL_FLOAT,&Col[1]);
glReadPixels(X,Y,1,1,GL_BLUE, GL_FLOAT,&Col[2]);
R=Col[0]*255;
G=Col[1]*255;
B=Col[2]*255;
fwrite(&B,1,1,File);
fwrite(&G,1,1,File);
fwrite(&R,1,1,File);
}
}
//---------------------------------------------------------------------------
fclose(File);
}

View File

@ -22,6 +22,8 @@ TVECTOR TCrossProduct(TVECTOR const &V0,TVECTOR const &V1,const TVECTOR &V2 );
CPoint IDToPoint(int ID,int Width);
int PointToID(CPoint &Pnt,int Width);
void SaveTGA(char *Filename,int SX,int SY,int SW,int SH);
/**************************************************************************************/
#endif