This commit is contained in:
parent
98ff69a23e
commit
5a8d2b0d90
11 changed files with 267 additions and 198 deletions
|
@ -53,6 +53,7 @@ enum CmdMsg
|
||||||
// Misc
|
// Misc
|
||||||
CmdMsg_Report, // 35
|
CmdMsg_Report, // 35
|
||||||
CmdMsg_Undo, // 36
|
CmdMsg_Undo, // 36
|
||||||
|
CmdMsg_Filter, // 37
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -30,10 +30,15 @@ void CGUILayerRGB::DoDataExchange(CDataExchange* pDX)
|
||||||
{
|
{
|
||||||
CDialog::DoDataExchange(pDX);
|
CDialog::DoDataExchange(pDX);
|
||||||
//{{AFX_DATA_MAP(CGUILayerRGB)
|
//{{AFX_DATA_MAP(CGUILayerRGB)
|
||||||
|
DDX_Control(pDX, IDC_LAYERSHADE_SHADEBSPIN, m_BSpin);
|
||||||
|
DDX_Control(pDX, IDC_LAYERSHADE_SHADEB, m_B);
|
||||||
|
DDX_Control(pDX, IDC_LAYERSHADE_SHADEGSPIN, m_GSpin);
|
||||||
|
DDX_Control(pDX, IDC_LAYERSHADE_SHADEG, m_G);
|
||||||
|
DDX_Control(pDX, IDC_LAYERSHADE_SHADERSPIN, m_RSpin);
|
||||||
|
DDX_Control(pDX, IDC_LAYERSHADE_SHADER, m_R);
|
||||||
DDX_Control(pDX, IDC_LAYERSHADE_RATELIST, m_RateList);
|
DDX_Control(pDX, IDC_LAYERSHADE_RATELIST, m_RateList);
|
||||||
DDX_Control(pDX, IDC_LAYERSHADE_BRUSHLIST, m_BrushList);
|
DDX_Control(pDX, IDC_LAYERSHADE_BRUSHLIST, m_BrushList);
|
||||||
DDX_Control(pDX, IDC_LAYERSHADE_MODELIST, m_ModeList);
|
DDX_Control(pDX, IDC_LAYERSHADE_MODELIST, m_ModeList);
|
||||||
DDX_Control(pDX, IDC_LAYERSHADE_SHADE, m_Shade);
|
|
||||||
//}}AFX_DATA_MAP
|
//}}AFX_DATA_MAP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,14 +46,18 @@ void CGUILayerRGB::DoDataExchange(CDataExchange* pDX)
|
||||||
BEGIN_MESSAGE_MAP(CGUILayerRGB, CDialog)
|
BEGIN_MESSAGE_MAP(CGUILayerRGB, CDialog)
|
||||||
//{{AFX_MSG_MAP(CGUILayerRGB)
|
//{{AFX_MSG_MAP(CGUILayerRGB)
|
||||||
ON_CBN_SELCHANGE(IDC_LAYERSHADE_MODELIST, OnParamChange)
|
ON_CBN_SELCHANGE(IDC_LAYERSHADE_MODELIST, OnParamChange)
|
||||||
|
ON_BN_CLICKED(IDC_LAYERSHADE_TRIFILTER, OnLayershadeTrifilter)
|
||||||
|
ON_BN_CLICKED(IDC_LAYERSHADE_BIFILTER, OnLayershadeBifilter)
|
||||||
ON_CBN_SELCHANGE(IDC_LAYERSHADE_BRUSHLIST, OnParamChange)
|
ON_CBN_SELCHANGE(IDC_LAYERSHADE_BRUSHLIST, OnParamChange)
|
||||||
ON_CBN_SELCHANGE(IDC_LAYERSHADE_RATELIST, OnParamChange)
|
ON_CBN_SELCHANGE(IDC_LAYERSHADE_RATELIST, OnParamChange)
|
||||||
|
ON_EN_CHANGE(IDC_LAYERSHADE_SHADER, OnParamChange)
|
||||||
|
ON_EN_CHANGE(IDC_LAYERSHADE_SHADEG, OnParamChange)
|
||||||
|
ON_EN_CHANGE(IDC_LAYERSHADE_SHADEB, OnParamChange)
|
||||||
//}}AFX_MSG_MAP
|
//}}AFX_MSG_MAP
|
||||||
END_MESSAGE_MAP()
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
/*
|
|
||||||
void CGUILayerRGB::SetVal(CEdit &Dlg,int &Val,int Min,int Max)
|
void CGUILayerRGB::SetVal(CEdit &Dlg,int &Val,int Min,int Max)
|
||||||
{
|
{
|
||||||
CString Str;
|
CString Str;
|
||||||
|
@ -116,6 +125,10 @@ int iR,iG,iB;
|
||||||
B=iB;
|
B=iB;
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
void CGUILayerRGB::OnParamChange() {if (CallbackFlag) theApp.GetCurrent()->GUIChanged();}
|
void CGUILayerRGB::OnParamChange() {if (CallbackFlag) theApp.GetCurrent()->GUIChanged();}
|
||||||
|
void CGUILayerRGB::OnLayershadeBifilter() {theApp.GetCurrent()->Command(CmdMsg_Filter,0);}
|
||||||
|
void CGUILayerRGB::OnLayershadeTrifilter() {theApp.GetCurrent()->Command(CmdMsg_Filter,1);}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,10 +22,15 @@ public:
|
||||||
// Dialog Data
|
// Dialog Data
|
||||||
//{{AFX_DATA(CGUILayerRGB)
|
//{{AFX_DATA(CGUILayerRGB)
|
||||||
enum { IDD = IDD_LAYER_RGB };
|
enum { IDD = IDD_LAYER_RGB };
|
||||||
|
CSpinButtonCtrl m_BSpin;
|
||||||
|
CEdit m_B;
|
||||||
|
CSpinButtonCtrl m_GSpin;
|
||||||
|
CEdit m_G;
|
||||||
|
CSpinButtonCtrl m_RSpin;
|
||||||
|
CEdit m_R;
|
||||||
CComboBox m_RateList;
|
CComboBox m_RateList;
|
||||||
CComboBox m_BrushList;
|
CComboBox m_BrushList;
|
||||||
CComboBox m_ModeList;
|
CComboBox m_ModeList;
|
||||||
CButton m_Shade;
|
|
||||||
//}}AFX_DATA
|
//}}AFX_DATA
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,10 +46,10 @@ public:
|
||||||
void EnableCallback() {CallbackFlag=true;}
|
void EnableCallback() {CallbackFlag=true;}
|
||||||
void DisableCallback() {CallbackFlag=false;}
|
void DisableCallback() {CallbackFlag=false;}
|
||||||
|
|
||||||
// void SetVal(CEdit &Dlg,int &Val,int Min=-1,int Max=-1);
|
void SetVal(CEdit &Dlg,int &Val,int Min=-1,int Max=-1);
|
||||||
// void GetVal(CEdit &Dlg,int &Val,int Min=-1,int Max=-1);
|
void GetVal(CEdit &Dlg,int &Val,int Min=-1,int Max=-1);
|
||||||
// void SetRGB(u8 &R,u8 &G,u8 &B);
|
void SetRGB(u8 &R,u8 &G,u8 &B);
|
||||||
// void GetRGB(u8 &R,u8 &G,u8 &B);
|
void GetRGB(u8 &R,u8 &G,u8 &B);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool CallbackFlag;
|
bool CallbackFlag;
|
||||||
|
@ -52,6 +57,9 @@ protected:
|
||||||
// Generated message map functions
|
// Generated message map functions
|
||||||
//{{AFX_MSG(CGUILayerRGB)
|
//{{AFX_MSG(CGUILayerRGB)
|
||||||
afx_msg void OnParamChange();
|
afx_msg void OnParamChange();
|
||||||
|
afx_msg void OnLayershadeTrifilter();
|
||||||
|
afx_msg void OnLayershadeStrifilter();
|
||||||
|
afx_msg void OnLayershadeBifilter();
|
||||||
//}}AFX_MSG
|
//}}AFX_MSG
|
||||||
DECLARE_MESSAGE_MAP()
|
DECLARE_MESSAGE_MAP()
|
||||||
};
|
};
|
||||||
|
|
|
@ -40,13 +40,12 @@ CLayerRGB::CLayerRGB(sLayerDef &Def)
|
||||||
{
|
{
|
||||||
InitLayer(Def);
|
InitLayer(Def);
|
||||||
|
|
||||||
CurrentRGB.R=128;
|
ShadeRGB.R=224;
|
||||||
CurrentRGB.G=128;
|
ShadeRGB.G=224;
|
||||||
CurrentRGB.B=128;
|
ShadeRGB.B=224;
|
||||||
CurrentMode=0;
|
CurrentMode=0;
|
||||||
CurrentBrush=0;
|
CurrentBrush=0;
|
||||||
CurrentRate=0;
|
CurrentRate=0;
|
||||||
ShadeFlag=false;
|
|
||||||
LastCursPos.x=-1;
|
LastCursPos.x=-1;
|
||||||
LastCursPos.y=-1;
|
LastCursPos.y=-1;
|
||||||
CurrentUndo=0;
|
CurrentUndo=0;
|
||||||
|
@ -71,10 +70,10 @@ void CLayerRGB::Load(CFile *File,int Version)
|
||||||
{
|
{
|
||||||
InitLayer(LayerDef);
|
InitLayer(LayerDef);
|
||||||
|
|
||||||
File->Read(&CurrentRGB,sizeof(sRGBElem));
|
File->Read(&ShadeRGB,sizeof(sRGBElem));
|
||||||
File->Read(&CurrentBrush,sizeof(int));
|
File->Read(&CurrentBrush,sizeof(int));
|
||||||
File->Read(&CurrentMode,sizeof(int));
|
File->Read(&CurrentMode,sizeof(int));
|
||||||
File->Read(&ShadeFlag,sizeof(bool));
|
File->Read(&SpareFlag,sizeof(bool));
|
||||||
|
|
||||||
// Read Map
|
// Read Map
|
||||||
File->Read(&MapWidth,sizeof(int));
|
File->Read(&MapWidth,sizeof(int));
|
||||||
|
@ -95,10 +94,10 @@ void CLayerRGB::Load(CFile *File,int Version)
|
||||||
void CLayerRGB::Save(CFile *File)
|
void CLayerRGB::Save(CFile *File)
|
||||||
{
|
{
|
||||||
// Always Save current version
|
// Always Save current version
|
||||||
File->Write(&CurrentRGB,sizeof(sRGBElem));
|
File->Write(&ShadeRGB,sizeof(sRGBElem));
|
||||||
File->Write(&CurrentBrush,sizeof(int));
|
File->Write(&CurrentBrush,sizeof(int));
|
||||||
File->Write(&CurrentMode,sizeof(int));
|
File->Write(&CurrentMode,sizeof(int));
|
||||||
File->Write(&ShadeFlag,sizeof(bool));
|
File->Write(&SpareFlag,sizeof(bool));
|
||||||
|
|
||||||
// Read Map
|
// Read Map
|
||||||
File->Write(&MapWidth,sizeof(int));
|
File->Write(&MapWidth,sizeof(int));
|
||||||
|
@ -192,6 +191,12 @@ bool Ret=false;
|
||||||
case CmdMsg_Undo:
|
case CmdMsg_Undo:
|
||||||
Undo();
|
Undo();
|
||||||
break;
|
break;
|
||||||
|
case CmdMsg_Filter:
|
||||||
|
CreateUndo();
|
||||||
|
if (Param0==0) BiFilter(Core);
|
||||||
|
if (Param0==1) TriFilter(Core);
|
||||||
|
if (Param0==2) STriFilter(Core);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -418,6 +423,9 @@ int ListSize,i;
|
||||||
GUIRGB.m_RateList.AddString(Str);
|
GUIRGB.m_RateList.AddString(Str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GUIRGB.m_RSpin.SetRange(0,255);
|
||||||
|
GUIRGB.m_GSpin.SetRange(0,255);
|
||||||
|
GUIRGB.m_BSpin.SetRange(0,255);
|
||||||
GUIRGB.EnableCallback();
|
GUIRGB.EnableCallback();
|
||||||
Core->RedrawView();
|
Core->RedrawView();
|
||||||
}
|
}
|
||||||
|
@ -438,7 +446,7 @@ void CLayerRGB::GUIUpdate(CCore *Core)
|
||||||
GUIRGB.m_ModeList.SetCurSel(CurrentMode);
|
GUIRGB.m_ModeList.SetCurSel(CurrentMode);
|
||||||
GUIRGB.m_BrushList.SetCurSel(CurrentBrush);
|
GUIRGB.m_BrushList.SetCurSel(CurrentBrush);
|
||||||
GUIRGB.m_RateList.SetCurSel(CurrentRate);
|
GUIRGB.m_RateList.SetCurSel(CurrentRate);
|
||||||
GUIRGB.m_Shade.SetCheck(ShadeFlag);
|
GUIRGB.SetRGB(ShadeRGB.R,ShadeRGB.G,ShadeRGB.B);
|
||||||
GUIRGB.EnableCallback();
|
GUIRGB.EnableCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -448,7 +456,8 @@ void CLayerRGB::GUIChanged(CCore *Core)
|
||||||
CurrentMode=GUIRGB.m_ModeList.GetCurSel();
|
CurrentMode=GUIRGB.m_ModeList.GetCurSel();
|
||||||
CurrentBrush=GUIRGB.m_BrushList.GetCurSel();
|
CurrentBrush=GUIRGB.m_BrushList.GetCurSel();
|
||||||
CurrentRate=GUIRGB.m_RateList.GetCurSel();
|
CurrentRate=GUIRGB.m_RateList.GetCurSel();
|
||||||
ShadeFlag=GUIRGB.m_Shade.GetCheck()!=0;
|
GUIRGB.GetRGB(ShadeRGB.R,ShadeRGB.G,ShadeRGB.B);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -568,7 +577,6 @@ int Ofs=0;
|
||||||
RGB=MapElem.R+RGBInc;
|
RGB=MapElem.R+RGBInc;
|
||||||
break;
|
break;
|
||||||
case GUI_MODE_DARKEN:
|
case GUI_MODE_DARKEN:
|
||||||
// RGBInc=255-RGBInc;
|
|
||||||
RGB=MapElem.R-RGBInc;
|
RGB=MapElem.R-RGBInc;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -593,20 +601,150 @@ void CLayerRGB::Grab(CCore *Core,CPoint &CursorPos)
|
||||||
GUIUpdate(Core);
|
GUIUpdate(Core);
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CLayerRGB::BiFilter(CCore *Core)
|
||||||
|
{
|
||||||
|
for(int Y=0;Y<MapHeight; Y++)
|
||||||
|
{
|
||||||
|
for(int X=0; X<MapWidth; X++)
|
||||||
|
{
|
||||||
|
int SCol=0,SCount=0;
|
||||||
|
|
||||||
|
// *p=(( (*p) + ( ( *(p+1)+*(p-1)+*(p-WIDTH)+*(p+WIDTH) ) >>2 ) )>>1);
|
||||||
|
GetFilterCol(Core,X-1,Y+0,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+1,Y+0,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+0,Y-1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+0,Y+1,SCol,SCount);
|
||||||
|
if (SCount)
|
||||||
|
{
|
||||||
|
SCol/=SCount;
|
||||||
|
SetFilterCol(Core,X,Y,SCol,2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CLayerRGB::TriFilter(CCore *Core)
|
||||||
|
{
|
||||||
|
for(int Y=0;Y<MapHeight; Y++)
|
||||||
|
{
|
||||||
|
for(int X=0; X<MapWidth; X++)
|
||||||
|
{
|
||||||
|
int SCol=0,SCount=0;
|
||||||
|
|
||||||
|
// *p=(( (*p) + ( (*(p+1)+*(p-1)+*(p-WIDTH)+*(p+WIDTH)+*(p-WIDTH-1)+*(p-WIDTH+1)+*(p+WIDTH-1)+*(p+WIDTH+1)) >>3 ) )>>1);
|
||||||
|
GetFilterCol(Core,X-1,Y-1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+0,Y-1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+1,Y-1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X-1,Y+0,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+1,Y+0,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X-1,Y+1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+0,Y+1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+1,Y+1,SCol,SCount);
|
||||||
|
if (SCount)
|
||||||
|
{
|
||||||
|
SCol/=SCount;
|
||||||
|
SetFilterCol(Core,X,Y,SCol,2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CLayerRGB::STriFilter(CCore *Core)
|
||||||
|
{
|
||||||
|
for(int Y=0;Y<MapHeight; Y++)
|
||||||
|
{
|
||||||
|
for(int X=0; X<MapWidth; X++)
|
||||||
|
{
|
||||||
|
int SCol=0,SCount=0;
|
||||||
|
// c=(( (*p) + ( (*(p+1)+*(p-1)+*(p-WIDTH)+*(p+WIDTH)+*(p-WIDTH-1)+*(p-WIDTH+1)+*(p+WIDTH-1)+*(p+WIDTH+1)) >>3 ) )>>1);
|
||||||
|
// *(p-WIDTH-1)=c;
|
||||||
|
// *(p-WIDTH+1)=c;
|
||||||
|
// *(p+WIDTH-1)=c;
|
||||||
|
// *(p+WIDTH+1)=c;
|
||||||
|
|
||||||
|
GetFilterCol(Core,X-1,Y-1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+0,Y-1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+1,Y-1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X-1,Y+0,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+1,Y+0,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X-1,Y+1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+0,Y+1,SCol,SCount);
|
||||||
|
GetFilterCol(Core,X+1,Y+1,SCol,SCount);
|
||||||
|
if (SCount)
|
||||||
|
{
|
||||||
|
SCol/=SCount;
|
||||||
|
SetFilterCol(Core,X-1,Y-1,SCol,1);
|
||||||
|
SetFilterCol(Core,X+1,Y-1,SCol,1);
|
||||||
|
SetFilterCol(Core,X-1,Y+1,SCol,1);
|
||||||
|
SetFilterCol(Core,X+1,Y+1,SCol,1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CLayerRGB::GetFilterCol(CCore *Core,int X,int Y,int &SumCol,int &Count)
|
||||||
|
{
|
||||||
|
CLayerTile *ActionLayer=(CLayerTile*)Core->GetActionLayer();
|
||||||
|
|
||||||
|
if (X>=0 && X<MapWidth && Y>=0 && Y<MapHeight)
|
||||||
|
{
|
||||||
|
sMapElem &MapElem=ActionLayer->GetMapElem(X,Y);
|
||||||
|
if (MapElem.Tile)
|
||||||
|
{
|
||||||
|
sRGBElem &C=Map[X][Y];
|
||||||
|
SumCol+=C.R;
|
||||||
|
Count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CLayerRGB::SetFilterCol(CCore *Core,int X,int Y,int Col,int Div)
|
||||||
|
{
|
||||||
|
CLayerTile *ActionLayer=(CLayerTile*)Core->GetActionLayer();
|
||||||
|
|
||||||
|
if (X>=0 && X<MapWidth && Y>=0 && Y<MapHeight)
|
||||||
|
{
|
||||||
|
sMapElem &MapElem=ActionLayer->GetMapElem(X,Y);
|
||||||
|
if (MapElem.Tile)
|
||||||
|
{
|
||||||
|
sRGBElem &ThisElem=Map[X][Y];
|
||||||
|
Col+=ThisElem.R;
|
||||||
|
if (Div) Col/=Div;
|
||||||
|
ThisElem.R=Col;
|
||||||
|
ThisElem.G=Col;
|
||||||
|
ThisElem.B=Col;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLayerRGB::Export(CCore *Core,CExport &Exp)
|
void CLayerRGB::Export(CCore *Core,CExport &Exp)
|
||||||
{
|
{
|
||||||
|
sRGBCol RGB;
|
||||||
|
|
||||||
Exp.ExportLayerHeader(LayerDef);//LAYER_TYPE_RGB,LayerDef.SubType,LayerDef.Width,LayerDef.Height);
|
Exp.ExportLayerHeader(LayerDef);//LAYER_TYPE_RGB,LayerDef.SubType,LayerDef.Width,LayerDef.Height);
|
||||||
|
|
||||||
int f=ShadeFlag;
|
RGB.R=ShadeRGB.R;
|
||||||
Exp.Write(&f,sizeof(int));
|
RGB.G=ShadeRGB.G;
|
||||||
|
RGB.B=ShadeRGB.B;
|
||||||
|
|
||||||
|
Exp.Write(&RGB,sizeof(sRGBCol));
|
||||||
|
|
||||||
for (int Y=0; Y<MapHeight; Y++)
|
for (int Y=0; Y<MapHeight; Y++)
|
||||||
{
|
{
|
||||||
for (int X=0; X<MapWidth; X++)
|
for (int X=0; X<MapWidth; X++)
|
||||||
{
|
{
|
||||||
sRGBElem &ThisElem=Map[X][Y];
|
sRGBElem &ThisElem=Map[X][Y];
|
||||||
sRGBCol RGB;
|
|
||||||
|
|
||||||
RGB.R=ThisElem.R;
|
RGB.R=ThisElem.R;
|
||||||
RGB.G=ThisElem.G;
|
RGB.G=ThisElem.G;
|
||||||
|
|
|
@ -87,6 +87,11 @@ protected:
|
||||||
void LoadBrush(const char *Name);
|
void LoadBrush(const char *Name);
|
||||||
void CreateUndo();
|
void CreateUndo();
|
||||||
void Undo();
|
void Undo();
|
||||||
|
void BiFilter(CCore *Core);
|
||||||
|
void TriFilter(CCore *Core);
|
||||||
|
void STriFilter(CCore *Core);
|
||||||
|
void GetFilterCol(CCore *Core,int X,int Y,int &Col,int &Count);
|
||||||
|
void SetFilterCol(CCore *Core,int X,int Y,int Col,int Div);
|
||||||
|
|
||||||
void Render(CCore *Core,Vector3 &CamPos,CMap &ThisMap,bool Render3d,float Alpha=1.0f,Vector3 *Ofs=0);
|
void Render(CCore *Core,Vector3 &CamPos,CMap &ThisMap,bool Render3d,float Alpha=1.0f,Vector3 *Ofs=0);
|
||||||
void Paint(CCore *Core,CPoint &CursorPos);
|
void Paint(CCore *Core,CPoint &CursorPos);
|
||||||
|
@ -95,11 +100,11 @@ protected:
|
||||||
|
|
||||||
CGUILayerRGB GUIRGB;
|
CGUILayerRGB GUIRGB;
|
||||||
|
|
||||||
sRGBElem CurrentRGB;
|
sRGBElem ShadeRGB;
|
||||||
int CurrentBrush;
|
int CurrentBrush;
|
||||||
int CurrentMode;
|
int CurrentMode;
|
||||||
int CurrentRate;
|
int CurrentRate;
|
||||||
bool ShadeFlag;
|
bool SpareFlag;
|
||||||
int CurrentUndo;
|
int CurrentUndo;
|
||||||
|
|
||||||
int MapWidth,MapHeight;
|
int MapWidth,MapHeight;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[General Info]
|
[General Info]
|
||||||
Version=1
|
Version=1
|
||||||
LastClass=CMapEditDoc
|
LastClass=CGUILayerRGB
|
||||||
LastTemplate=CDialog
|
LastTemplate=CDialog
|
||||||
NewFileInclude1=#include "stdafx.h"
|
NewFileInclude1=#include "stdafx.h"
|
||||||
NewFileInclude2=#include "mapedit.h"
|
NewFileInclude2=#include "mapedit.h"
|
||||||
|
@ -37,27 +37,27 @@ Class25=CMapEditDoc
|
||||||
Class26=CMapEditView
|
Class26=CMapEditView
|
||||||
|
|
||||||
ResourceCount=22
|
ResourceCount=22
|
||||||
Resource1=IDD_ADDLAYER
|
Resource1=IDD_TOOLBAR
|
||||||
Resource2=IDD_LAYER_COLLISION
|
Resource2=IDD_LAYER_ACTOR
|
||||||
Resource3=IDD_LAYER_FX
|
Resource3=IDR_TOOLBAR (English (U.S.))
|
||||||
Resource4=IDD_LAYER_SHADE
|
Resource4=IDD_ELEMLIST
|
||||||
Resource5=IDR_MAINFRAME (English (U.S.))
|
Resource5=IDD_MULTIBAR (English (U.S.))
|
||||||
Resource6=IDD_MULTIBAR (English (U.S.))
|
Resource6=IDD_RESIZE
|
||||||
Resource7=IDD_NEWMAP
|
Resource7=IDD_TILEBANK
|
||||||
Resource8=IDD_LAYER_LIST
|
Resource8=IDD_NEWMAP
|
||||||
Resource9=IDD_ABOUTBOX (English (U.S.))
|
Resource9=IDD_LAYER_LIST
|
||||||
Resource10=IDD_ELEMLIST
|
Resource10=IDD_LAYER_THING
|
||||||
Resource11=IDD_LAYER_THING
|
Resource11=IDD_LAYER_PLATFORM
|
||||||
Resource12=IDD_RESIZE
|
Resource12=IDD_ADDLAYER
|
||||||
Resource13=IDD_LAYER_HAZARD
|
Resource13=IDR_MAINFRAME (English (U.S.))
|
||||||
Resource14=IDD_TOOLBAR
|
Resource14=IDD_LAYER_COLLISION
|
||||||
Resource15=IDD_LAYER_TRIGGER
|
Resource15=IDD_LAYER_HAZARD
|
||||||
Resource16=IDD_LAYER_ACTOR
|
Resource16=IDD_LAYER_THING_POS
|
||||||
Resource17=IDR_MAPEDITYPE (English (U.S.))
|
Resource17=IDR_MAPEDITYPE (English (U.S.))
|
||||||
Resource18=IDD_TILEBANK
|
Resource18=IDD_LAYER_SHADE
|
||||||
Resource19=IDD_LAYER_THING_POS
|
Resource19=IDD_LAYER_TRIGGER
|
||||||
Resource20=IDD_LAYER_PLATFORM
|
Resource20=IDD_LAYER_FX
|
||||||
Resource21=IDR_TOOLBAR (English (U.S.))
|
Resource21=IDD_ABOUTBOX (English (U.S.))
|
||||||
Class27=CGUILayerRGB
|
Class27=CGUILayerRGB
|
||||||
Resource22=IDD_LAYER_RGB
|
Resource22=IDD_LAYER_RGB
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ Type=0
|
||||||
BaseClass=CDialog
|
BaseClass=CDialog
|
||||||
HeaderFile=GUILayerHazard.h
|
HeaderFile=GUILayerHazard.h
|
||||||
ImplementationFile=GUILayerHazard.cpp
|
ImplementationFile=GUILayerHazard.cpp
|
||||||
LastObject=CGUILayerHazard
|
LastObject=IDC_HAZARD_SPEED
|
||||||
|
|
||||||
[CLS:CGUILayerItem]
|
[CLS:CGUILayerItem]
|
||||||
Type=0
|
Type=0
|
||||||
|
@ -619,13 +619,21 @@ ControlCount=0
|
||||||
[DLG:IDD_LAYER_RGB]
|
[DLG:IDD_LAYER_RGB]
|
||||||
Type=1
|
Type=1
|
||||||
Class=CGUILayerRGB
|
Class=CGUILayerRGB
|
||||||
ControlCount=6
|
ControlCount=14
|
||||||
Control1=IDC_LAYERSHADE_BRUSHTEXT,static,1342308352
|
Control1=IDC_LAYERSHADE_BRUSHTEXT,static,1342308352
|
||||||
Control2=IDC_LAYERSHADE_MODELIST,combobox,1344339971
|
Control2=IDC_LAYERSHADE_MODELIST,combobox,1344339971
|
||||||
Control3=IDC_LAYERSHADE_SHADE,button,1342242851
|
Control3=IDC_LAYERSHADE_MODETEXT,static,1342308352
|
||||||
Control4=IDC_LAYERSHADE_MODETEXT,static,1342308352
|
Control4=IDC_LAYERSHADE_BRUSHLIST,combobox,1344339971
|
||||||
Control5=IDC_LAYERSHADE_BRUSHLIST,combobox,1344339971
|
Control5=IDC_LAYERSHADE_RATELIST,combobox,1344339971
|
||||||
Control6=IDC_LAYERSHADE_RATELIST,combobox,1344339971
|
Control6=IDC_LAYERSHADE_BIFILTER,button,1342242816
|
||||||
|
Control7=IDC_LAYERSHADE_TRIFILTER,button,1342242816
|
||||||
|
Control8=IDC_LAYERSHADE_SHADER,edit,1350641792
|
||||||
|
Control9=IDC_LAYERSHADE_SHADERSPIN,msctls_updown32,1342177334
|
||||||
|
Control10=IDC_LAYERSHADE_SHADEG,edit,1350641792
|
||||||
|
Control11=IDC_LAYERSHADE_SHADEGSPIN,msctls_updown32,1342177334
|
||||||
|
Control12=IDC_LAYERSHADE_SHADEB,edit,1350641792
|
||||||
|
Control13=IDC_LAYERSHADE_SHADEBSPIN,msctls_updown32,1342177334
|
||||||
|
Control14=IDC_LAYERSHADE_SHADETEXT,static,1342308352
|
||||||
|
|
||||||
[CLS:CGUILayerRGB]
|
[CLS:CGUILayerRGB]
|
||||||
Type=0
|
Type=0
|
||||||
|
@ -633,6 +641,6 @@ HeaderFile=GUILayerRGB.h
|
||||||
ImplementationFile=GUILayerRGB.cpp
|
ImplementationFile=GUILayerRGB.cpp
|
||||||
BaseClass=CDialog
|
BaseClass=CDialog
|
||||||
Filter=D
|
Filter=D
|
||||||
LastObject=CGUILayerRGB
|
LastObject=IDC_LAYERSHADE_SHADER
|
||||||
VirtualFilter=dWC
|
VirtualFilter=dWC
|
||||||
|
|
||||||
|
|
|
@ -891,13 +891,29 @@ BEGIN
|
||||||
LTEXT "Brush",IDC_LAYERSHADE_BRUSHTEXT,10,5,25,10
|
LTEXT "Brush",IDC_LAYERSHADE_BRUSHTEXT,10,5,25,10
|
||||||
COMBOBOX IDC_LAYERSHADE_MODELIST,35,20,75,65,CBS_DROPDOWNLIST |
|
COMBOBOX IDC_LAYERSHADE_MODELIST,35,20,75,65,CBS_DROPDOWNLIST |
|
||||||
WS_VSCROLL | WS_TABSTOP
|
WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "Shade",IDC_LAYERSHADE_SHADE,"Button",BS_AUTOCHECKBOX |
|
|
||||||
BS_LEFTTEXT | WS_TABSTOP,5,50,35,10
|
|
||||||
LTEXT "Mode",IDC_LAYERSHADE_MODETEXT,10,20,20,10
|
LTEXT "Mode",IDC_LAYERSHADE_MODETEXT,10,20,20,10
|
||||||
COMBOBOX IDC_LAYERSHADE_BRUSHLIST,35,5,115,65,CBS_DROPDOWNLIST |
|
COMBOBOX IDC_LAYERSHADE_BRUSHLIST,35,5,115,65,CBS_DROPDOWNLIST |
|
||||||
WS_VSCROLL | WS_TABSTOP
|
WS_VSCROLL | WS_TABSTOP
|
||||||
COMBOBOX IDC_LAYERSHADE_RATELIST,110,20,40,65,CBS_DROPDOWNLIST |
|
COMBOBOX IDC_LAYERSHADE_RATELIST,110,20,40,65,CBS_DROPDOWNLIST |
|
||||||
WS_VSCROLL | WS_TABSTOP
|
WS_VSCROLL | WS_TABSTOP
|
||||||
|
PUSHBUTTON "Bi-Linear",IDC_LAYERSHADE_BIFILTER,5,35,70,25
|
||||||
|
PUSHBUTTON "Tri-Linear",IDC_LAYERSHADE_TRIFILTER,80,35,70,25
|
||||||
|
EDITTEXT IDC_LAYERSHADE_SHADER,40,65,35,15,ES_AUTOHSCROLL |
|
||||||
|
ES_READONLY | ES_NUMBER
|
||||||
|
CONTROL "Spin1",IDC_LAYERSHADE_SHADERSPIN,"msctls_updown32",
|
||||||
|
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||||
|
UDS_ARROWKEYS,5,80,11,20
|
||||||
|
EDITTEXT IDC_LAYERSHADE_SHADEG,75,65,35,15,ES_AUTOHSCROLL |
|
||||||
|
ES_READONLY | ES_NUMBER
|
||||||
|
CONTROL "Spin1",IDC_LAYERSHADE_SHADEGSPIN,"msctls_updown32",
|
||||||
|
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||||
|
UDS_ARROWKEYS,15,80,11,20
|
||||||
|
EDITTEXT IDC_LAYERSHADE_SHADEB,110,65,35,15,ES_AUTOHSCROLL |
|
||||||
|
ES_READONLY | ES_NUMBER
|
||||||
|
CONTROL "Spin1",IDC_LAYERSHADE_SHADEBSPIN,"msctls_updown32",
|
||||||
|
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||||
|
UDS_ARROWKEYS,25,80,11,20
|
||||||
|
LTEXT "Shade Color",IDC_LAYERSHADE_SHADETEXT,5,65,30,15
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -217,7 +217,15 @@
|
||||||
#define IDC_LAYERSHADE_MODELIST 1218
|
#define IDC_LAYERSHADE_MODELIST 1218
|
||||||
#define IDC_LAYERSHADE_BRUSHLIST 1219
|
#define IDC_LAYERSHADE_BRUSHLIST 1219
|
||||||
#define IDC_LAYERSHADE_RATELIST 1220
|
#define IDC_LAYERSHADE_RATELIST 1220
|
||||||
#define IDC_LAYERSHADE_SHADE 1229
|
#define IDC_LAYERSHADE_BIFILTER 1230
|
||||||
|
#define IDC_LAYERSHADE_TRIFILTER 1231
|
||||||
|
#define IDC_LAYERSHADE_SHADER 1232
|
||||||
|
#define IDC_LAYERSHADE_SHADERSPIN 1233
|
||||||
|
#define IDC_LAYERSHADE_SHADEG 1234
|
||||||
|
#define IDC_LAYERSHADE_SHADEGSPIN 1235
|
||||||
|
#define IDC_LAYERSHADE_SHADEB 1236
|
||||||
|
#define IDC_LAYERSHADE_SHADEBSPIN 1237
|
||||||
|
#define IDC_LAYERSHADE_SHADETEXT 1238
|
||||||
#define ID_TOOLBAR_TILEPALETTE 32774
|
#define ID_TOOLBAR_TILEPALETTE 32774
|
||||||
#define ID_TOOLBAR_PARAMBAR 32783
|
#define ID_TOOLBAR_PARAMBAR 32783
|
||||||
#define ID_TOGGLE_SUBVIEW 32785
|
#define ID_TOGGLE_SUBVIEW 32785
|
||||||
|
@ -245,7 +253,7 @@
|
||||||
#define _APS_3D_CONTROLS 1
|
#define _APS_3D_CONTROLS 1
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 180
|
#define _APS_NEXT_RESOURCE_VALUE 180
|
||||||
#define _APS_NEXT_COMMAND_VALUE 32803
|
#define _APS_NEXT_COMMAND_VALUE 32803
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1230
|
#define _APS_NEXT_CONTROL_VALUE 1239
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,9 +25,10 @@ u8 *Ptr=(u8*)LayerHdr;
|
||||||
|
|
||||||
iPtr=(int*)(Ptr+sizeof(sExpLayerHdr));
|
iPtr=(int*)(Ptr+sizeof(sExpLayerHdr));
|
||||||
|
|
||||||
ShadeFlag=*iPtr++;
|
|
||||||
|
|
||||||
sRGBCol *RGB=(sRGBCol*)iPtr;
|
sRGBCol *RGB=(sRGBCol*)iPtr;
|
||||||
|
|
||||||
|
ShadeRGB=*RGB++;
|
||||||
for (int Y=0; Y<Height; Y++)
|
for (int Y=0; Y<Height; Y++)
|
||||||
{
|
{
|
||||||
for (int X=0; X<Width; X++)
|
for (int X=0; X<Width; X++)
|
||||||
|
@ -101,8 +102,10 @@ int ColorCount=0;
|
||||||
printf("RGB remapped to %i colors\n",ColorCount);
|
printf("RGB remapped to %i colors\n",ColorCount);
|
||||||
// Build Out RGB Table
|
// Build Out RGB Table
|
||||||
OutRGBTable.SetSize(ColorCount,16);
|
OutRGBTable.SetSize(ColorCount,16);
|
||||||
int RGBInc=6;
|
int RInc=(ShadeRGB.R-128)/16;
|
||||||
if (ShadeFlag) RGBInc=-6;
|
int GInc=(ShadeRGB.G-128)/16;
|
||||||
|
int BInc=(ShadeRGB.B-128)/16;
|
||||||
|
|
||||||
for (int c=0;c<ColorCount;c++)
|
for (int c=0;c<ColorCount;c++)
|
||||||
{
|
{
|
||||||
int R=DestPal[(c*3)+0];
|
int R=DestPal[(c*3)+0];
|
||||||
|
@ -114,146 +117,15 @@ int RGBInc=6;
|
||||||
RGB.R=R; RGB.G=G; RGB.B=B;
|
RGB.R=R; RGB.G=G; RGB.B=B;
|
||||||
OutRGBTable.Set(c,s,RGB);
|
OutRGBTable.Set(c,s,RGB);
|
||||||
|
|
||||||
R+=RGBInc;
|
R+=RInc;
|
||||||
G+=RGBInc;
|
G+=GInc;
|
||||||
B+=RGBInc;
|
B+=BInc;
|
||||||
if (R<0) R=0; else if (R>255) R=255;
|
if (R<0) R=0; else if (R>255) R=255;
|
||||||
if (G<0) G=0; else if (G>255) G=255;
|
if (G<0) G=0; else if (G>255) G=255;
|
||||||
if (B<0) B=0; else if (B>255) B=255;
|
if (B<0) B=0; else if (B>255) B=255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
void CMkLevelLayerRGB::PreProcess(CMkLevel *Core)
|
|
||||||
{
|
|
||||||
int X,Y;
|
|
||||||
int ColorCount;
|
|
||||||
int c;
|
|
||||||
|
|
||||||
// build RGB List
|
|
||||||
for (Y=0; Y<Height; Y++)
|
|
||||||
{
|
|
||||||
for (X=0; X<Width; X++)
|
|
||||||
{
|
|
||||||
sRGBElem &ThisElem=RGBMap.Get(X,Y);
|
|
||||||
sRGBList ThisRGB;
|
|
||||||
ThisRGB.RGB=ThisElem.RGB;
|
|
||||||
ThisRGB.Count=0;
|
|
||||||
int Idx=InRGBList.Add(ThisRGB);
|
|
||||||
ThisElem.TableIdx=Idx;
|
|
||||||
InRGBList[Idx].Count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ColorCount=InRGBList.size();
|
|
||||||
printf("------ %i Colors ------\n",ColorCount);
|
|
||||||
|
|
||||||
// Sort RGB List by usage
|
|
||||||
for (c=0; c<ColorCount; c++)
|
|
||||||
{
|
|
||||||
sRGBList &ThisRGB=InRGBList[c];
|
|
||||||
int s=0;
|
|
||||||
int SortListSize=SortRGBList.size();
|
|
||||||
for (; s<SortListSize; s++)
|
|
||||||
{
|
|
||||||
if (SortRGBList[s].Count<ThisRGB.Count) break;
|
|
||||||
|
|
||||||
}
|
|
||||||
SortRGBList.insert(s,ThisRGB);
|
|
||||||
}
|
|
||||||
// Build Remap table
|
|
||||||
for (c=0; c<ColorCount; c++)
|
|
||||||
{
|
|
||||||
int Idx=SortRGBList.Find(InRGBList[c]);
|
|
||||||
RemapTable.push_back(Idx);
|
|
||||||
/*
|
|
||||||
sRGBCol &In=InRGBList[c].RGB;
|
|
||||||
sRGBCol &Out=SortRGBList[RemapTable[c]].RGB;
|
|
||||||
if (In.R!=Out.R || In.G!=Out.G || In.B!=Out.B)
|
|
||||||
{
|
|
||||||
printf("%i %i %i\t%i %i %i\n",In.R,In.G,In.B,Out.R,Out.G,Out.B);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
// Remap all above 256
|
|
||||||
for (c=256;c<ColorCount;c++)
|
|
||||||
{
|
|
||||||
sRGBCol &ThisRGB=InRGBList[RemapTable[c]].RGB;
|
|
||||||
RemapTable[c ]=FindClosestRGB(ThisRGB);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build Out Map
|
|
||||||
OutMap.SetSize(Width,Height);
|
|
||||||
for (Y=0; Y<Height; Y++)
|
|
||||||
{
|
|
||||||
for (X=0; X<Width; X++)
|
|
||||||
{
|
|
||||||
sRGBElem &ThisElem=RGBMap.Get(X,Y);
|
|
||||||
|
|
||||||
u8 Idx=RemapTable[ThisElem.TableIdx];
|
|
||||||
OutMap.Set(X,Y,Idx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build Out RGB Table
|
|
||||||
if (ColorCount>256) ColorCount=256;
|
|
||||||
OutRGBTable.SetSize(ColorCount,16);
|
|
||||||
int RGBInc=6;
|
|
||||||
if (ShadeFlag) RGBInc=-6;
|
|
||||||
for (c=0;c<ColorCount;c++)
|
|
||||||
{
|
|
||||||
sRGBCol &ThisRGB=SortRGBList[c].RGB;
|
|
||||||
int R=ThisRGB.R;
|
|
||||||
int G=ThisRGB.G;
|
|
||||||
int B=ThisRGB.B;
|
|
||||||
for (int s=0; s<16; s++)
|
|
||||||
{
|
|
||||||
sRGBCol RGB;
|
|
||||||
RGB.R=R; RGB.G=G; RGB.B=B;
|
|
||||||
OutRGBTable.Set(c,s,RGB);
|
|
||||||
|
|
||||||
R+=RGBInc;
|
|
||||||
G+=RGBInc;
|
|
||||||
B+=RGBInc;
|
|
||||||
if (R<0) R=0; else if (R>255) R=255;
|
|
||||||
if (G<0) G=0; else if (G>255) G=255;
|
|
||||||
if (B<0) B=0; else if (B>255) B=255;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
int CMkLevelLayerRGB::FindClosestRGB(sRGBCol const &RGB)
|
|
||||||
{
|
|
||||||
int CIdx=-1;
|
|
||||||
int CVal=0;
|
|
||||||
|
|
||||||
for (int i=0; i<256; i++)
|
|
||||||
{
|
|
||||||
sRGBCol &ListRGB=SortRGBList[i].RGB;
|
|
||||||
|
|
||||||
int Dr=abs(ListRGB.R-RGB.R);
|
|
||||||
int Dg=abs(ListRGB.G-RGB.G);
|
|
||||||
int Db=abs(ListRGB.B-RGB.B);
|
|
||||||
/*
|
|
||||||
int ThisVal=(SortRGBList[i].RGB.R*SortRGBList[i].RGB.R)+
|
|
||||||
(SortRGBList[i].RGB.G*SortRGBList[i].RGB.G)+
|
|
||||||
(SortRGBList[i].RGB.B*SortRGBList[i].RGB.B);
|
|
||||||
*/
|
|
||||||
int ThisVal=Dr+Dg+Db;
|
|
||||||
|
|
||||||
if (CIdx==-1 || ThisVal<CVal)
|
|
||||||
{
|
|
||||||
CIdx=i;
|
|
||||||
CVal=ThisVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return(CIdx);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*** Process *****************************************************************/
|
/*** Process *****************************************************************/
|
||||||
|
|
|
@ -38,10 +38,7 @@ protected:
|
||||||
int FindClosestRGB(sRGBCol const &RGB);
|
int FindClosestRGB(sRGBCol const &RGB);
|
||||||
|
|
||||||
CList2d<sRGBElem> RGBMap;
|
CList2d<sRGBElem> RGBMap;
|
||||||
// CList<sRGBList> InRGBList;
|
sRGBCol ShadeRGB;
|
||||||
// CList<sRGBList> SortRGBList;
|
|
||||||
// CList<int> RemapTable;
|
|
||||||
int ShadeFlag;
|
|
||||||
|
|
||||||
CList2d<u8> OutMap;
|
CList2d<u8> OutMap;
|
||||||
CList2d<sRGBCol> OutRGBTable;
|
CList2d<sRGBCol> OutRGBTable;
|
||||||
|
|
|
@ -58,8 +58,11 @@ const int LegXInc=4;
|
||||||
|
|
||||||
void CFXJellyFishLegs::render()
|
void CFXJellyFishLegs::render()
|
||||||
{
|
{
|
||||||
|
CThing *Parent=getParent();
|
||||||
|
|
||||||
CFX::render();
|
CFX::render();
|
||||||
if (!canRender()) return;
|
// if (!canRender()) return;
|
||||||
|
if (!Parent->canRender()) return;
|
||||||
|
|
||||||
SpriteBank *SprBank=CGameScene::getSpriteBank();;
|
SpriteBank *SprBank=CGameScene::getSpriteBank();;
|
||||||
DVECTOR RenderPos=getRenderPos();
|
DVECTOR RenderPos=getRenderPos();
|
||||||
|
|
Loading…
Add table
Reference in a new issue