diff --git a/Utils/MapEdit/CmdMsg.h b/Utils/MapEdit/CmdMsg.h index e05c5da19..eb2a03842 100644 --- a/Utils/MapEdit/CmdMsg.h +++ b/Utils/MapEdit/CmdMsg.h @@ -44,6 +44,12 @@ enum CmdMsg CmdMsg_ThingPosUp, // 28 CmdMsg_ThingPosDown, // 29 CmdMsg_ThingPosDelete, // 30 +// Shade + CmdMsg_ShadeGfxNew, // 31 + CmdMsg_ShadeGfxSelect, // 32 + CmdMsg_ShadeGfxGoto, // 33 + CmdMsg_ShadeGfxDelete, // 34 + }; #endif /*****************************************************************************/ diff --git a/Utils/MapEdit/Core.cpp b/Utils/MapEdit/Core.cpp index 6897b754e..fb1bb48a6 100644 --- a/Utils/MapEdit/Core.cpp +++ b/Utils/MapEdit/Core.cpp @@ -82,12 +82,15 @@ int Width,Height; // Create Tile Layers AddLayer(LAYER_TYPE_TILE,LAYER_SUBTYPE_ACTION, Width, Height); #ifdef _DEBUG +// AddLayer(LAYER_TYPE_SHADE,LAYER_SUBTYPE_NONE, Width, Height); AddLayer(LAYER_TYPE_TRIGGER,LAYER_SUBTYPE_NONE, Width, Height); - AddLayer(LAYER_TYPE_PLATFORM,LAYER_SUBTYPE_NONE, Width, Height); +// AddLayer(LAYER_TYPE_PLATFORM,LAYER_SUBTYPE_NONE, Width, Height); +// AddLayer(LAYER_TYPE_HAZARD,LAYER_SUBTYPE_NONE, Width, Height); // AddLayer(LAYER_TYPE_FX,LAYER_SUBTYPE_NONE, Width, Height); // AddLayer(LAYER_TYPE_ACTOR,LAYER_SUBTYPE_NONE, Width, Height); // AddLayer(LAYER_TYPE_ITEM,LAYER_SUBTYPE_NONE, Width, Height); #endif + for (int i=0; iInitSubView(this); @@ -95,7 +98,7 @@ int Width,Height; ActiveLayer=FindLayer(LAYER_TYPE_TILE,LAYER_SUBTYPE_ACTION); #ifdef _DEBUG - ActiveLayer=FindLayer(LAYER_TYPE_PLATFORM,LAYER_SUBTYPE_NONE); + ActiveLayer=FindLayer(LAYER_TYPE_TRIGGER,LAYER_SUBTYPE_NONE); if (ActiveLayer<0) ActiveLayer=0; #endif CurrentLayer=Layer[ActiveLayer]; diff --git a/Utils/MapEdit/Core.h b/Utils/MapEdit/Core.h index fb212643b..67c8a3fd9 100644 --- a/Utils/MapEdit/Core.h +++ b/Utils/MapEdit/Core.h @@ -19,7 +19,7 @@ #include "Layer.h" #include "LayerTile.h" -const s32 FileVersion=8; +const s32 FileVersion=9; #define SCREEN_MAP_WIDTH 30 #define SCREEN_MAP_HEIGHT 20 diff --git a/Utils/MapEdit/Elem.cpp b/Utils/MapEdit/Elem.cpp index ac6255659..e27a28f12 100644 --- a/Utils/MapEdit/Elem.cpp +++ b/Utils/MapEdit/Elem.cpp @@ -350,6 +350,7 @@ float v1=1.0f;//Tex.ScaleU; List=glGenLists(1); glNewList(List,GL_COMPILE); + TexID=Tex.TexID; glBindTexture(GL_TEXTURE_2D, Tex.TexID); glBegin (GL_QUADS); glTexCoord2f(u0,v0); diff --git a/Utils/MapEdit/Elem.h b/Utils/MapEdit/Elem.h index 9593ade4a..016bd7a84 100644 --- a/Utils/MapEdit/Elem.h +++ b/Utils/MapEdit/Elem.h @@ -81,6 +81,8 @@ static bool DefTexFlag; void SetBlank(); void SetInvalid(); + GLint GetTexID() {return(TexID);} + protected: void Build3dElem(CTexCache &TexCache,CScene &ThisScene,int Node); void Build2dElem(CCore *Core,const char *Filename,int TexId); @@ -106,6 +108,7 @@ protected: float UnitWidth,UnitHeight; int ElemID; u8 *ElemRGB; + GLint TexID; }; /*****************************************************************************/ diff --git a/Utils/MapEdit/ExportHdr.h b/Utils/MapEdit/ExportHdr.h index 36d9cba6b..fc79a8fe9 100644 --- a/Utils/MapEdit/ExportHdr.h +++ b/Utils/MapEdit/ExportHdr.h @@ -9,6 +9,17 @@ #include +/*****************************************************************************/ +struct sRGBCol +{ + u8 R,G,B,P; +}; + +struct sXY +{ + int x,y; +}; + /*****************************************************************************/ #define EXPORT_LAYER_COUNT 16 struct sExpFileHdr @@ -87,36 +98,98 @@ bool operator ==(sExpLayerTile const &v1) {return(Tile==v1.Tile && Flags==v1.Fla }; - /*****************************************************************************/ -/* -struct sExpTex +/*****************************************************************************/ +/*****************************************************************************/ +struct sLayerShadeGfx { - char *Filename; - - BOOL operator==(sExpTex const &v1) {return (!strcmp(Filename,v1.Filename));} + sRGBCol RGB[4]; + int Gfx; + sXY Pos; + sXY Ofs[4]; + int TransMode; }; -*/ -/* -struct sExpMapElem -{ - u16 Set; - u16 Tile; - u16 Flags; -BOOL operator==(sExpMapElem const &v1) - { - return(Set==v1.Set && Tile==v1.Tile); - } -}; -*/ /*****************************************************************************/ /*** Things ******************************************************************/ /*****************************************************************************/ +struct sLayerThingDef +{ + int Store[32]; +}; + +struct sLayerThingActor +{ + int ActorSpeed; + int ActorTurnRate; + int ActorHealth; + int ActorAttackStrength; + bool ActorCollisionFlag; +}; + +struct sLayerThingItem +{ +}; + +struct sLayerThingPlatform +{ + int PlatformSpeed; + int PlatformTurnRate; + int PlatformCollisionFlag; + int PlatformType; + int PlatformMoveType; + int PlatformTriStart; + int PlatformTriCount; +}; + +struct sLayerThingTrigger +{ + int TriggerWidth; + int TriggerHeight; + int TriggerTargetX; + int TriggerTargetY; +}; + +struct sLayerThingFX +{ + int FXSpeed; + int FXWidth; + int FXHeight; +}; + +struct sLayerThingHazard +{ + int HazardSpeed; + int HazardTurnRate; + int HazardHealth; + int HazardAttackStrength; + int HazardRespawn; + bool HazardCollisionFlag; + int HazardTriStart; + int HazardTriCount; + +}; + struct sLayerThingData { int WaypointCount; + union + { + sLayerThingDef RESERVE; + sLayerThingActor Actor; + sLayerThingItem Item; + sLayerThingPlatform Platform; + sLayerThingTrigger Trigger; + sLayerThingFX FX; + sLayerThingHazard Hazard; + }; +}; + +struct sLayerThingDataOLD +{ + int WaypointCount; + int Speed; int TurnRate; int Health; @@ -129,11 +202,11 @@ struct sLayerThingData int PlatformType; // Boxes int Width,Height; -// Spare int TriStart,TriCount; - int Spare[2]; - + int TargetX,TargetY; +// NO SPARE!! }; + #endif diff --git a/Utils/MapEdit/GUILayerHazard.cpp b/Utils/MapEdit/GUILayerHazard.cpp index 876a6001d..594cec9bc 100644 --- a/Utils/MapEdit/GUILayerHazard.cpp +++ b/Utils/MapEdit/GUILayerHazard.cpp @@ -1,9 +1,9 @@ -// GUILayerActor.cpp : implementation file +// GUILayerHazard.cpp : implementation file // #include "stdafx.h" #include "mapedit.h" -#include "GUILayerActor.h" +#include "GUILayerHazard.h" #include "MapEditDoc.h" #include "MainFrm.h" @@ -15,49 +15,51 @@ static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// -// CGUILayerActor dialog +// CGUILayerHazard dialog -CGUILayerActor::CGUILayerActor(CWnd* pParent /*=NULL*/) - : CDialog(CGUILayerActor::IDD, pParent) +CGUILayerHazard::CGUILayerHazard(CWnd* pParent /*=NULL*/) + : CDialog(CGUILayerHazard::IDD, pParent) { DisableCallback(true); - //{{AFX_DATA_INIT(CGUILayerActor) + //{{AFX_DATA_INIT(CGUILayerHazard) //}}AFX_DATA_INIT DisableCallback(false); } -void CGUILayerActor::DoDataExchange(CDataExchange* pDX) +void CGUILayerHazard::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CGUILayerActor) - DDX_Control(pDX, IDC_ACTOR_TURNRATE_SPIN, m_TurnRateSpin); - DDX_Control(pDX, IDC_ACTOR_SPEED_SPIN, m_SpeedSpin); - DDX_Control(pDX, IDC_ACTOR_HEALTH_SPIN, m_HealthSpin); - DDX_Control(pDX, IDC_ACTOR_ATTACK_SPIN, m_AttackSpin); - DDX_Control(pDX, IDC_ACTOR_COLLISION, m_Collision); - DDX_Control(pDX, IDC_ACTOR_PLAYER, m_Player); - DDX_Control(pDX, IDC_ACTOR_TURNRATE, m_TurnRate); - DDX_Control(pDX, IDC_ACTOR_SPEED, m_Speed); - DDX_Control(pDX, IDC_ACTOR_ATTACK, m_Attack); - DDX_Control(pDX, IDC_ACTOR_HEALTH, m_Health); + //{{AFX_DATA_MAP(CGUILayerHazard) + DDX_Control(pDX, IDC_HAZARD_TURNRATE_SPIN, m_TurnRateSpin); + DDX_Control(pDX, IDC_HAZARD_SPEED_SPIN, m_SpeedSpin); + DDX_Control(pDX, IDC_HAZARD_HEALTH_SPIN, m_HealthSpin); + DDX_Control(pDX, IDC_HAZARD_ATTACK_SPIN, m_AttackSpin); + DDX_Control(pDX, IDC_HAZARD_RESPAWN_SPIN, m_RespawnSpin); + DDX_Control(pDX, IDC_HAZARD_COLLISION, m_Collision); + DDX_Control(pDX, IDC_HAZARD_TURNRATE, m_TurnRate); + DDX_Control(pDX, IDC_HAZARD_SPEED, m_Speed); + DDX_Control(pDX, IDC_HAZARD_ATTACK, m_Attack); + DDX_Control(pDX, IDC_HAZARD_HEALTH, m_Health); + DDX_Control(pDX, IDC_HAZARD_RESPAWN, m_Respawn); //}}AFX_DATA_MAP } -BEGIN_MESSAGE_MAP(CGUILayerActor, CDialog) - //{{AFX_MSG_MAP(CGUILayerActor) - ON_EN_CHANGE(IDC_ACTOR_HEALTH, OnChangeParam) - ON_EN_CHANGE(IDC_ACTOR_ATTACK, OnChangeParam) - ON_BN_CLICKED(IDC_ACTOR_COLLISION, OnChangeParam) - ON_EN_CHANGE(IDC_ACTOR_SPEED, OnChangeParam) - ON_EN_CHANGE(IDC_ACTOR_TURNRATE, OnChangeParam) +BEGIN_MESSAGE_MAP(CGUILayerHazard, CDialog) + //{{AFX_MSG_MAP(CGUILayerHazard) + ON_EN_CHANGE(IDC_HAZARD_HEALTH, OnChangeParam) + ON_EN_CHANGE(IDC_HAZARD_ATTACK, OnChangeParam) + ON_BN_CLICKED(IDC_HAZARD_COLLISION, OnChangeParam) + ON_EN_CHANGE(IDC_HAZARD_SPEED, OnChangeParam) + ON_EN_CHANGE(IDC_HAZARD_TURNRATE, OnChangeParam) + ON_EN_CHANGE(IDC_HAZARD_RESPAWN, OnChangeParam) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// -void CGUILayerActor::SetVal(CEdit &Dlg,int Val) +void CGUILayerHazard::SetVal(CEdit &Dlg,int Val) { CString Str; if (!Dlg) return; @@ -68,7 +70,7 @@ CString Str; } ///////////////////////////////////////////////////////////////////////////// -int CGUILayerActor::GetVal(CEdit &Dlg) +int CGUILayerHazard::GetVal(CEdit &Dlg) { CString Str; int Val=0; @@ -80,6 +82,6 @@ int Val=0; } ///////////////////////////////////////////////////////////////////////////// -// CGUILayerActor message handlers +// CGUILayerHazard message handlers -void CGUILayerActor::OnChangeParam() {if (!CallbackFlag) theApp.GetCurrent()->GUIChanged();} +void CGUILayerHazard::OnChangeParam() {if (!CallbackFlag) theApp.GetCurrent()->GUIChanged();} diff --git a/Utils/MapEdit/GUILayerHazard.h b/Utils/MapEdit/GUILayerHazard.h index b3c3e25fe..a4eded512 100644 --- a/Utils/MapEdit/GUILayerHazard.h +++ b/Utils/MapEdit/GUILayerHazard.h @@ -1,40 +1,41 @@ -#if !defined(AFX_GUILAYERACTOR_H__D2268E7C_1D7E_4C2F_AF3C_49BB374ED65B__INCLUDED_) -#define AFX_GUILAYERACTOR_H__D2268E7C_1D7E_4C2F_AF3C_49BB374ED65B__INCLUDED_ +#if !defined(AFX_GUILAYERHAZARD_H__D2268E7C_1D7E_4C2F_AF3C_49BB374ED65B__INCLUDED_) +#define AFX_GUILAYERHAZARD_H__D2268E7C_1D7E_4C2F_AF3C_49BB374ED65B__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 -// GUILayerActor.h : header file +// GUILayerHazard.h : header file // ///////////////////////////////////////////////////////////////////////////// -// CGUILayerActor dialog +// CGUILayerHazard dialog -class CGUILayerActor : public CDialog +class CGUILayerHazard : public CDialog { // Construction public: - CGUILayerActor(CWnd* pParent = NULL); // standard constructor + CGUILayerHazard(CWnd* pParent = NULL); // standard constructor // Dialog Data - //{{AFX_DATA(CGUILayerActor) - enum { IDD = IDD_LAYER_ACTOR }; + //{{AFX_DATA(CGUILayerHazard) + enum { IDD = IDD_LAYER_HAZARD }; CSpinButtonCtrl m_TurnRateSpin; CSpinButtonCtrl m_SpeedSpin; CSpinButtonCtrl m_HealthSpin; CSpinButtonCtrl m_AttackSpin; + CSpinButtonCtrl m_RespawnSpin; CButton m_Collision; - CButton m_Player; CEdit m_TurnRate; CEdit m_Speed; CEdit m_Attack; CEdit m_Health; + CEdit m_Respawn; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CGUILayerActor) + //{{AFX_VIRTUAL(CGUILayerHazard) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL @@ -49,7 +50,7 @@ protected: bool CallbackFlag; // Generated message map functions - //{{AFX_MSG(CGUILayerActor) + //{{AFX_MSG(CGUILayerHazard) afx_msg void OnChangeParam(); //}}AFX_MSG DECLARE_MESSAGE_MAP() @@ -58,4 +59,4 @@ protected: //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. -#endif // !defined(AFX_GUILAYERACTOR_H__D2268E7C_1D7E_4C2F_AF3C_49BB374ED65B__INCLUDED_) +#endif // !defined(AFX_GUILAYERHAZARD_H__D2268E7C_1D7E_4C2F_AF3C_49BB374ED65B__INCLUDED_) diff --git a/Utils/MapEdit/GUILayerShade.cpp b/Utils/MapEdit/GUILayerShade.cpp index a03533166..6e7d94bee 100644 --- a/Utils/MapEdit/GUILayerShade.cpp +++ b/Utils/MapEdit/GUILayerShade.cpp @@ -23,12 +23,6 @@ CGUILayerShade::CGUILayerShade(CWnd* pParent /*=NULL*/) { //{{AFX_DATA_INIT(CGUILayerShade) //}}AFX_DATA_INIT - SetFlag=true; - Map[0][0]=&m_R0; Map[0][1]=&m_G0; Map[0][2]=&m_B0; - Map[1][0]=&m_R1; Map[1][1]=&m_G1; Map[1][2]=&m_B1; - Map[2][0]=&m_R2; Map[2][1]=&m_G2; Map[2][2]=&m_B2; - Map[3][0]=&m_R3; Map[3][1]=&m_G3; Map[3][2]=&m_B3; - } @@ -36,63 +30,105 @@ void CGUILayerShade::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGUILayerShade) - DDX_Control(pDX, IDC_SPIN2, m_CountSpin); - DDX_Control(pDX, IDC_LAYERSHADE_SPIN1, m_Spin1); - DDX_Control(pDX, IDC_LAYERSHADE_SPIN0, m_Spin0); - DDX_Control(pDX, IDC_LAYERSHADE_SCALE1, m_Scale1); - DDX_Control(pDX, IDC_LAYERSHADE_SCALE0, m_Scale0); - DDX_Control(pDX, IDC_LAYERSHADE_MOVE1, m_Move1); - DDX_Control(pDX, IDC_LAYERSHADE_MOVE0, m_Move0); - DDX_Control(pDX, IDC_LAYERSHADE_COLOR1, m_Color1); - DDX_Control(pDX, IDC_LAYERSHADE_COLOR0, m_Color0); - DDX_Control(pDX, IDC_LAYERSHADE_TRANS1, m_Trans1); - DDX_Control(pDX, IDC_LAYERSHADE_TRANS0, m_Trans0); - DDX_Control(pDX, IDC_LAYERSHADE_BACKGFX1, m_Gfx1); - DDX_Control(pDX, IDC_LAYERSHADE_BACKGFX0, m_Gfx0); - DDX_Control(pDX, IDC_LAYERSHADE_EDITR0, m_R0); - DDX_Control(pDX, IDC_LAYERSHADE_EDITG0, m_G0); - DDX_Control(pDX, IDC_LAYERSHADE_EDITB0, m_B0); - DDX_Control(pDX, IDC_LAYERSHADE_EDITR1, m_R1); - DDX_Control(pDX, IDC_LAYERSHADE_EDITG1, m_G1); - DDX_Control(pDX, IDC_LAYERSHADE_EDITB1, m_B1); - DDX_Control(pDX, IDC_LAYERSHADE_EDITR2, m_R2); - DDX_Control(pDX, IDC_LAYERSHADE_EDITG2, m_G2); - DDX_Control(pDX, IDC_LAYERSHADE_EDITB2, m_B2); - DDX_Control(pDX, IDC_LAYERSHADE_EDITR3, m_R3); - DDX_Control(pDX, IDC_LAYERSHADE_EDITG3, m_G3); - DDX_Control(pDX, IDC_LAYERSHADE_EDITB3, m_B3); - DDX_Control(pDX, IDC_LAYERSHADE_COUNTEDIT, m_Count); + DDX_Control(pDX, IDC_LAYERSHADE_DEF_LIST, m_DefList); + DDX_Control(pDX, IDC_LAYERSHADE_SHADECOUNT_SPIN, m_ShadeCountSpin); + DDX_Control(pDX, IDC_LAYERSHADE_SHADECOUNT, m_ShadeCount); + DDX_Control(pDX, IDC_LAYERSHADE_SHADER0, m_ShadeR0); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEG0, m_ShadeG0); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEB0, m_ShadeB0); + DDX_Control(pDX, IDC_LAYERSHADE_SHADER1, m_ShadeR1); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEG1, m_ShadeG1); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEB1, m_ShadeB1); + DDX_Control(pDX, IDC_LAYERSHADE_SHADER2, m_ShadeR2); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEG2, m_ShadeG2); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEB2, m_ShadeB2); + DDX_Control(pDX, IDC_LAYERSHADE_SHADER3, m_ShadeR3); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEG3, m_ShadeG3); + DDX_Control(pDX, IDC_LAYERSHADE_SHADEB3, m_ShadeB3); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_CURRENT_SPIN, m_GfxCurrentSpin); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_CURRENT, m_GfxCurrent); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_LIST, m_GfxBankList); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_XSPIN, m_GfxPosXSpin); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_X, m_GfxPosX); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_YSPIN, m_GfxPosYSpin); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_Y, m_GfxPosY); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_X0, m_GfxSpinx0); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_Y0, m_GfxSpiny0); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_X0, m_Gfxx0); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_Y0, m_Gfxy0); + DDX_Control(pDX, IDC_LAYERSHADE_GFXR0, m_GfxR0); + DDX_Control(pDX, IDC_LAYERSHADE_GFXG0, m_GfxG0); + DDX_Control(pDX, IDC_LAYERSHADE_GFXB0, m_GfxB0); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_X1, m_GfxSpinx1); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_Y1, m_GfxSpiny1); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_X1, m_Gfxx1); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_Y1, m_Gfxy1); + DDX_Control(pDX, IDC_LAYERSHADE_GFXR1, m_GfxR1); + DDX_Control(pDX, IDC_LAYERSHADE_GFXG1, m_GfxG1); + DDX_Control(pDX, IDC_LAYERSHADE_GFXB1, m_GfxB1); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_X2, m_GfxSpinx2); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_Y2, m_GfxSpiny2); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_X2, m_Gfxx2); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_Y2, m_Gfxy2); + DDX_Control(pDX, IDC_LAYERSHADE_GFXR2, m_GfxR2); + DDX_Control(pDX, IDC_LAYERSHADE_GFXG2, m_GfxG2); + DDX_Control(pDX, IDC_LAYERSHADE_GFXB2, m_GfxB2); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_X3, m_GfxSpinx3); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_Y3, m_GfxSpiny3); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_X3, m_Gfxx3); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_Y3, m_Gfxy3); + DDX_Control(pDX, IDC_LAYERSHADE_GFXR3, m_GfxR3); + DDX_Control(pDX, IDC_LAYERSHADE_GFXG3, m_GfxG3); + DDX_Control(pDX, IDC_LAYERSHADE_GFXB3, m_GfxB3); + DDX_Control(pDX, IDC_LAYERSHADE_GFX_TRANSLIST, m_GfxTransList); //}}AFX_DATA_MAP } - BEGIN_MESSAGE_MAP(CGUILayerShade, CDialog) //{{AFX_MSG_MAP(CGUILayerShade) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITB0, OnChangeLayershadeEdit) - ON_CBN_SELCHANGE(IDC_LAYERSHADE_BACKGFX0, OnChangeParam) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITB1, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITG0, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITG1, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITR0, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITR1, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITB2, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITB3, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITG2, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITG3, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITR2, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_EDITR3, OnChangeLayershadeEdit) - ON_EN_CHANGE(IDC_LAYERSHADE_COUNTEDIT, OnChangeLayershadeEdit) - ON_CBN_SELCHANGE(IDC_LAYERSHADE_BACKGFX1, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_COLOR0, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_COLOR1, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_MOVE0, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_MOVE1, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_SCALE0, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_SCALE1, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_SPIN0, OnChangeParam) - ON_BN_CLICKED(IDC_LAYERSHADE_SPIN1, OnChangeParam) - ON_CBN_SELCHANGE(IDC_LAYERSHADE_TRANS0, OnChangeParam) - ON_CBN_SELCHANGE(IDC_LAYERSHADE_TRANS1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADECOUNT, OnChangeParam) + ON_BN_CLICKED(IDC_LAYERSHADE_GFX_GOTO, OnGoto) + ON_BN_CLICKED(IDC_LAYERSHADE_GFX_DELETE, OnDelete) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_CURRENT, OnChangeCurrent) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADER0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEG0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEB0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADER1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEG1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEB1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADER2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEG2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEB2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADER3, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEG3, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_SHADEB3, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_XSPIN, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_X, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_YSPIN, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_Y, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_X0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_Y0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXR0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXG0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXB0, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_X1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_Y1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXR1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXG1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXB1, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_X2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_Y2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXR2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXG2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXB2, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_X3, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFX_Y3, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXR3, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXG3, OnChangeParam) + ON_EN_CHANGE(IDC_LAYERSHADE_GFXB3, OnChangeParam) + ON_CBN_SELCHANGE(IDC_LAYERSHADE_GFX_LIST, OnChangeParam) + ON_CBN_SELCHANGE(IDC_LAYERSHADE_GFX_TRANSLIST, OnChangeParam) + ON_CBN_SELCHANGE(IDC_LAYERSHADE_DEF_LIST, OnNew) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -104,110 +140,123 @@ void CGUILayerShade::OnOK() } ///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::SetVal(CEdit &Dlg,int &Val) +void CGUILayerShade::SetVal(CEdit &Dlg,int &Val,int Min,int Max) { CString Str; +bool CF=CallbackFlag; if (!Dlg) return; - SetFlag=true; + if (Min!=-1 && ValMax) Val=Max; + CallbackFlag=false; Str.Format("%i",Val); Dlg.SetWindowText(Str); - SetFlag=false; + CallbackFlag=CF; } ///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::GetVal(CEdit &Dlg,int &Val) +void CGUILayerShade::GetVal(CEdit &Dlg,int &Val,int Min,int Max) { CString Str; + Val=0; if (!Dlg) return; - Dlg.GetWindowText(Str); if (Str.GetLength()) - Val=atoi(Str); - else - Val=0; -} - -///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::LimitVal(int Min,int Max,CEdit &Dlg) -{ -int Val; - if (!Dlg) return; -DWORD Sel=Dlg.GetSel(); // Retain cursor pos :o), Im getting good at this! - - GetVal(Dlg,Val); - if (ValMax) Val=Max; - - SetVal(Dlg,Val); - - Dlg.SetSel(Sel); - -} -///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::SetRGB(RGBQUAD &RGB,int Set) -{ -int Val; - - Val=RGB.rgbRed; SetVal(*Map[Set][0],Val); - Val=RGB.rgbGreen; SetVal(*Map[Set][1],Val); - Val=RGB.rgbBlue; SetVal(*Map[Set][2],Val); -} - -///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::GetRGB(RGBQUAD &RGB,int Set) -{ -int Val; - GetVal(*Map[Set][0],Val); RGB.rgbRed=Val; - GetVal(*Map[Set][1],Val); RGB.rgbGreen=Val; - GetVal(*Map[Set][2],Val); RGB.rgbBlue=Val; -} - -///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::CheckRGB(int Set) -{ - LimitVal(0,255,*Map[Set][0]); - LimitVal(0,255,*Map[Set][1]); - LimitVal(0,255,*Map[Set][2]); -} - -///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::SetStatus(int Set,bool f) -{ - Map[Set][0]->SetReadOnly(f); - Map[Set][1]->SetReadOnly(f); - Map[Set][2]->SetReadOnly(f); -} - -///////////////////////////////////////////////////////////////////////////// -void CGUILayerShade::CheckData() -{ -int i; -int Count; - - SetFlag=true; - LimitVal(2,4,m_Count); - GetCount(Count); - for (i=0; i<4; i++) { - CheckRGB(i); - SetStatus(i,i>=Count); + Val=atoi(Str); + if (Min!=-1 && ValMax) {Val=Max;SetVal(Dlg,Val,Min,Max);} } - - SetFlag=false; } ///////////////////////////////////////////////////////////////////////////// - -void CGUILayerShade::OnChangeLayershadeEdit() +void CGUILayerShade::SetRGB(CEdit &DlgR,CEdit &DlgG,CEdit &DlgB,u8 &R,u8 &G,u8 &B) { - if (SetFlag) return; +int iR,iG,iB; + + iR=R; + iG=G; + iB=B; + + SetVal(DlgR,iR,0,255); + SetVal(DlgG,iG,0,255); + SetVal(DlgB,iB,0,255); + + R=iR; + G=iG; + B=iB; - if (theApp.GetCurrent() && m_R0) - { - CheckData(); - theApp.GetCurrent()->GUIChanged(); - } } -void CGUILayerShade::OnChangeParam() {if (!SetFlag) theApp.GetCurrent()->GUIChanged();} +///////////////////////////////////////////////////////////////////////////// +void CGUILayerShade::GetRGB(CEdit &DlgR,CEdit &DlgG,CEdit &DlgB,u8 &R,u8 &G,u8 &B) +{ +int iR,iG,iB; + + iR=R; + iG=G; + iB=B; + + GetVal(DlgR,iR,0,255); + GetVal(DlgG,iG,0,255); + GetVal(DlgB,iB,0,255); + + R=iR; + G=iG; + B=iB; +} + +///////////////////////////////////////////////////////////////////////////// +void CGUILayerShade::SetShadeRGB(int idx,u8 &R,u8 &G,u8 &B) +{ + switch(idx) + { + case 0: SetRGB(m_ShadeR0,m_ShadeG0,m_ShadeB0,R,G,B); break; + case 1: SetRGB(m_ShadeR1,m_ShadeG1,m_ShadeB1,R,G,B); break; + case 2: SetRGB(m_ShadeR2,m_ShadeG2,m_ShadeB2,R,G,B); break; + case 3: SetRGB(m_ShadeR3,m_ShadeG3,m_ShadeB3,R,G,B); break; + } +} + +///////////////////////////////////////////////////////////////////////////// +void CGUILayerShade::GetShadeRGB(int idx,u8 &R,u8 &G,u8 &B) +{ + switch(idx) + { + case 0: GetRGB(m_ShadeR0,m_ShadeG0,m_ShadeB0,R,G,B); break; + case 1: GetRGB(m_ShadeR1,m_ShadeG1,m_ShadeB1,R,G,B); break; + case 2: GetRGB(m_ShadeR2,m_ShadeG2,m_ShadeB2,R,G,B); break; + case 3: GetRGB(m_ShadeR3,m_ShadeG3,m_ShadeB3,R,G,B); break; + } +} + +///////////////////////////////////////////////////////////////////////////// +void CGUILayerShade::SetGfxRGB(int idx,u8 &R,u8 &G,u8 &B) +{ + switch(idx) + { + case 0: SetRGB(m_GfxR0,m_GfxG0,m_GfxB0,R,G,B); break; + case 1: SetRGB(m_GfxR1,m_GfxG1,m_GfxB1,R,G,B); break; + case 2: SetRGB(m_GfxR2,m_GfxG2,m_GfxB2,R,G,B); break; + case 3: SetRGB(m_GfxR3,m_GfxG3,m_GfxB3,R,G,B); break; + } +} + +///////////////////////////////////////////////////////////////////////////// +void CGUILayerShade::GetGfxRGB(int idx,u8 &R,u8 &G,u8 &B) +{ + switch(idx) + { + case 0: GetRGB(m_GfxR0,m_GfxG0,m_GfxB0,R,G,B); break; + case 1: GetRGB(m_GfxR1,m_GfxG1,m_GfxB1,R,G,B); break; + case 2: GetRGB(m_GfxR2,m_GfxG2,m_GfxB2,R,G,B); break; + case 3: GetRGB(m_GfxR3,m_GfxG3,m_GfxB3,R,G,B); break; + } +} + +///////////////////////////////////////////////////////////////////////////// +void CGUILayerShade::OnChangeParam() {if (CallbackFlag) theApp.GetCurrent()->GUIChanged();} +void CGUILayerShade::OnGoto() {theApp.GetCurrent()->Command(CmdMsg_ShadeGfxGoto);} +void CGUILayerShade::OnDelete() {theApp.GetCurrent()->Command(CmdMsg_ShadeGfxDelete);} +void CGUILayerShade::OnChangeCurrent() {if (CallbackFlag) theApp.GetCurrent()->Command(CmdMsg_ShadeGfxSelect);} +void CGUILayerShade::OnNew() {theApp.GetCurrent()->Command(CmdMsg_ShadeGfxNew,m_DefList.GetCurSel());} diff --git a/Utils/MapEdit/GUILayerShade.h b/Utils/MapEdit/GUILayerShade.h index 927311ec8..eff1a3094 100644 --- a/Utils/MapEdit/GUILayerShade.h +++ b/Utils/MapEdit/GUILayerShade.h @@ -7,6 +7,9 @@ // LayerShadeGUI.h : header file // +#ifndef u8 +typedef unsigned char u8; +#endif ///////////////////////////////////////////////////////////////////////////// // CGUILayerShade dialog @@ -16,50 +19,60 @@ class CGUILayerShade : public CDialog public: CGUILayerShade(CWnd* pParent = NULL); // standard constructor - void SetVal(CEdit &Dlg,int &Val); - void GetVal(CEdit &Dlg,int &Val); - void LimitVal(int Min,int Max,CEdit &Dlg); - - void SetRGB(RGBQUAD &RGB,int Set); - void GetRGB(RGBQUAD &RGB,int Set); - - void SetCount(int &Count) {SetVal(m_Count,Count);} - void GetCount(int &Count) {GetVal(m_Count,Count);} - - void CheckData(); - void CheckRGB(int Set); - - void SetStatus(int Set,bool f); - // Dialog Data //{{AFX_DATA(CGUILayerShade) enum { IDD = IDD_LAYER_SHADE }; - CSpinButtonCtrl m_CountSpin; - CButton m_Spin1; - CButton m_Spin0; - CButton m_Scale1; - CButton m_Scale0; - CButton m_Move1; - CButton m_Move0; - CButton m_Color1; - CButton m_Color0; - CComboBox m_Trans1; - CComboBox m_Trans0; - CComboBox m_Gfx1; - CComboBox m_Gfx0; - CEdit m_R0; - CEdit m_G0; - CEdit m_B0; - CEdit m_R1; - CEdit m_G1; - CEdit m_B1; - CEdit m_R2; - CEdit m_G2; - CEdit m_B2; - CEdit m_R3; - CEdit m_G3; - CEdit m_B3; - CEdit m_Count; + CComboBox m_DefList; + CSpinButtonCtrl m_ShadeCountSpin; + CEdit m_ShadeCount; + CEdit m_ShadeR0; + CEdit m_ShadeG0; + CEdit m_ShadeB0; + CEdit m_ShadeR1; + CEdit m_ShadeG1; + CEdit m_ShadeB1; + CEdit m_ShadeR2; + CEdit m_ShadeG2; + CEdit m_ShadeB2; + CEdit m_ShadeR3; + CEdit m_ShadeG3; + CEdit m_ShadeB3; + CSpinButtonCtrl m_GfxCurrentSpin; + CEdit m_GfxCurrent; + CComboBox m_GfxBankList; + CEdit m_GfxPosXSpin; + CEdit m_GfxPosX; + CEdit m_GfxPosYSpin; + CEdit m_GfxPosY; + CSpinButtonCtrl m_GfxSpinx0; + CSpinButtonCtrl m_GfxSpiny0; + CEdit m_Gfxx0; + CEdit m_Gfxy0; + CEdit m_GfxR0; + CEdit m_GfxG0; + CEdit m_GfxB0; + CSpinButtonCtrl m_GfxSpinx1; + CSpinButtonCtrl m_GfxSpiny1; + CEdit m_Gfxx1; + CEdit m_Gfxy1; + CEdit m_GfxR1; + CEdit m_GfxG1; + CEdit m_GfxB1; + CSpinButtonCtrl m_GfxSpinx2; + CSpinButtonCtrl m_GfxSpiny2; + CEdit m_Gfxx2; + CEdit m_Gfxy2; + CEdit m_GfxR2; + CEdit m_GfxG2; + CEdit m_GfxB2; + CSpinButtonCtrl m_GfxSpinx3; + CSpinButtonCtrl m_GfxSpiny3; + CEdit m_Gfxx3; + CEdit m_Gfxy3; + CEdit m_GfxR3; + CEdit m_GfxG3; + CEdit m_GfxB3; + CComboBox m_GfxTransList; //}}AFX_DATA void OnOK(); @@ -72,17 +85,32 @@ public: //}}AFX_VIRTUAL // Implementation +public: + void EnableCallback() {CallbackFlag=true;} + void DisableCallback() {CallbackFlag=false;} + 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 SetRGB(CEdit &RDlg,CEdit &GDlg,CEdit &BDlg,u8 &R,u8 &G,u8 &B); + void GetRGB(CEdit &RDlg,CEdit &GDlg,CEdit &BDlg,u8 &R,u8 &G,u8 &B); + + void SetShadeRGB(int idx,u8 &R,u8 &G,u8 &B); + void GetShadeRGB(int idx,u8 &R,u8 &G,u8 &B); + void SetGfxRGB(int idx,u8 &R,u8 &G,u8 &B); + void GetGfxRGB(int idx,u8 &R,u8 &G,u8 &B); + protected: + bool CallbackFlag; // Generated message map functions //{{AFX_MSG(CGUILayerShade) - afx_msg void OnChangeLayershadeEdit(); afx_msg void OnChangeParam(); + afx_msg void OnGoto(); + afx_msg void OnDelete(); + afx_msg void OnChangeCurrent(); + afx_msg void OnNew(); //}}AFX_MSG DECLARE_MESSAGE_MAP() - bool SetFlag; - CEdit *Map[4][4]; }; //{{AFX_INSERT_LOCATION}} diff --git a/Utils/MapEdit/GUILayerTrigger.cpp b/Utils/MapEdit/GUILayerTrigger.cpp index 3c93fad86..e34fdcb26 100644 --- a/Utils/MapEdit/GUILayerTrigger.cpp +++ b/Utils/MapEdit/GUILayerTrigger.cpp @@ -32,6 +32,11 @@ void CGUILayerTrigger::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGUILayerTrigger) + DDX_Control(pDX, IDC_TRIGGER_TARGET, m_TargetTxt); + DDX_Control(pDX, IDC_TRIGGER_TARGETY_SPIN, m_TargetYSpin); + DDX_Control(pDX, IDC_TRIGGER_TARGETX_SPIN, m_TargetXSpin); + DDX_Control(pDX, IDC_TRIGGER_TARGETY, m_TargetY); + DDX_Control(pDX, IDC_TRIGGER_TARGETX, m_TargetX); DDX_Control(pDX, IDC_TRIGGER_WIDTH_SPIN, m_WidthSpin); DDX_Control(pDX, IDC_TRIGGER_HEIGHT_SPIN, m_HeightSpin); DDX_Control(pDX, IDC_TRIGGER_WIDTH, m_Width); @@ -44,6 +49,8 @@ BEGIN_MESSAGE_MAP(CGUILayerTrigger, CDialog) //{{AFX_MSG_MAP(CGUILayerTrigger) ON_EN_CHANGE(IDC_TRIGGER_HEIGHT, OnParamChange) ON_EN_CHANGE(IDC_TRIGGER_WIDTH, OnParamChange) + ON_EN_CHANGE(IDC_TRIGGER_TARGETX, OnParamChange) + ON_EN_CHANGE(IDC_TRIGGER_TARGETY, OnParamChange) //}}AFX_MSG_MAP END_MESSAGE_MAP() diff --git a/Utils/MapEdit/GUILayerTrigger.h b/Utils/MapEdit/GUILayerTrigger.h index 865f3b40a..1b52e6e66 100644 --- a/Utils/MapEdit/GUILayerTrigger.h +++ b/Utils/MapEdit/GUILayerTrigger.h @@ -19,6 +19,11 @@ public: // Dialog Data //{{AFX_DATA(CGUILayerTrigger) enum { IDD = IDD_LAYER_TRIGGER }; + CStatic m_TargetTxt; + CSpinButtonCtrl m_TargetYSpin; + CSpinButtonCtrl m_TargetXSpin; + CEdit m_TargetY; + CEdit m_TargetX; CSpinButtonCtrl m_WidthSpin; CSpinButtonCtrl m_HeightSpin; CEdit m_Width; diff --git a/Utils/MapEdit/GUINewMap.cpp b/Utils/MapEdit/GUINewMap.cpp index c14a7edfd..6471d8864 100644 --- a/Utils/MapEdit/GUINewMap.cpp +++ b/Utils/MapEdit/GUINewMap.cpp @@ -30,9 +30,9 @@ void CGUINewMap::DoDataExchange(CDataExchange* pDX) CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CGUINewMap) DDX_Text(pDX, IDC_MAPSIZE_HEIGHT, m_Height); - DDV_MinMaxUInt(pDX, m_Height, 24, 1024); + DDV_MinMaxUInt(pDX, m_Height, 24, 32000); DDX_Text(pDX, IDC_MAPSIZE_WIDTH, m_Width); - DDV_MinMaxUInt(pDX, m_Width, 34, 1024); + DDV_MinMaxUInt(pDX, m_Width, 34, 32000); //}}AFX_DATA_MAP } diff --git a/Utils/MapEdit/Layer.cpp b/Utils/MapEdit/Layer.cpp index d237d44a5..382de26f7 100644 --- a/Utils/MapEdit/Layer.cpp +++ b/Utils/MapEdit/Layer.cpp @@ -26,6 +26,7 @@ #include "LayerPlatform.h" #include "LayerTrigger.h" #include "LayerFX.h" +#include "LayerHazard.h" #include "LayerDef.h" #include "Utils.h" @@ -45,6 +46,7 @@ sLayerInfoTable CLayer::InfoTable[]= {LAYER_TYPE_PLATFORM, LAYER_SUBTYPE_NONE, "Platform", true, 1.0f, false, true, true, LAYER_SUBVIEW_NONE,}, {LAYER_TYPE_TRIGGER, LAYER_SUBTYPE_NONE, "Trigger", true, 1.0f, false, true, true, LAYER_SUBVIEW_NONE,}, {LAYER_TYPE_FX, LAYER_SUBTYPE_NONE, "FX", true, 1.0f, false, true, true, LAYER_SUBVIEW_NONE,}, + {LAYER_TYPE_HAZARD, LAYER_SUBTYPE_NONE, "Hazard", true, 1.0f, false, true, true, LAYER_SUBVIEW_NONE,}, }; int CLayer::InfoTableSize=sizeof(InfoTable)/sizeof(sLayerInfoTable); @@ -100,6 +102,9 @@ CLayer *New; case LAYER_TYPE_FX: New=new CLayerFX(Def); break; + case LAYER_TYPE_HAZARD: + New=new CLayerHazard(Def); + break; default: ASSERT(!"Unknown Layer"); } @@ -140,6 +145,9 @@ CLayer *New; case LAYER_TYPE_FX: New=new CLayerFX(File,Version); break; + case LAYER_TYPE_HAZARD: + New=new CLayerHazard(File,Version); + break; default: ASSERT(!"Unknown Layer"); } @@ -195,6 +203,7 @@ Vector3 &Scale=Core->GetScaleVector(); float Col; const float OverVal=0.1f; + if (GetType()>LAYER_TYPE_COLLISION) return; glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); diff --git a/Utils/MapEdit/LayerActor.cpp b/Utils/MapEdit/LayerActor.cpp index d59fac6cc..fd71cbc9c 100644 --- a/Utils/MapEdit/LayerActor.cpp +++ b/Utils/MapEdit/LayerActor.cpp @@ -40,6 +40,31 @@ void CLayerActor::InitSubView(CCore *Core) { } +/*****************************************************************************/ +void CLayerActor::LoadDefThing(const char *Name,sLayerThing &ThisDef) +{ + ThisDef.Data.Actor.ActorSpeed=ThingScript.GetInt(Name,"Speed"); + ThisDef.Data.Actor.ActorTurnRate=ThingScript.GetInt(Name,"TurnRate"); + ThisDef.Data.Actor.ActorHealth=ThingScript.GetInt(Name,"Health"); + ThisDef.Data.Actor.ActorAttackStrength=ThingScript.GetInt(Name,"AttackStrength"); + ThisDef.Data.Actor.ActorCollisionFlag=ThingScript.GetInt(Name,"Collision")==1; +} + +/*****************************************************************************/ +void CLayerActor::LoadOldThing(CFile *File,sLayerThing &ThisThing) +{ +sLayerThingDataOLD OldThing; + + File->Read(&OldThing,sizeof(sLayerThingDataOLD)); + + ThisThing.Data.Actor.ActorSpeed=OldThing.Speed; + ThisThing.Data.Actor.ActorTurnRate=OldThing.TurnRate; + ThisThing.Data.Actor.ActorHealth=OldThing.Health; + ThisThing.Data.Actor.ActorAttackStrength=OldThing.AttackStrength; + ThisThing.Data.Actor.ActorCollisionFlag=OldThing.CollisionFlag; + +} + /*****************************************************************************/ /*** Gui *********************************************************************/ /*****************************************************************************/ @@ -101,12 +126,13 @@ void CLayerActor::GUIThingUpdate(bool OnlySel) if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - GUIActor.SetVal(GUIActor.m_Speed,ThisThing.Data.Speed); - GUIActor.SetVal(GUIActor.m_TurnRate,ThisThing.Data.TurnRate); - GUIActor.SetVal(GUIActor.m_Health,ThisThing.Data.Health); - GUIActor.SetVal(GUIActor.m_Attack,ThisThing.Data.AttackStrength); - GUIActor.m_Collision.SetCheck(ThisThing.Data.CollisionFlag); - GUIActor.m_Player.SetCheck(ThisThing.Data.PlayerFlag); + GUIActor.SetVal(GUIActor.m_Speed,ThisThing.Data.Actor.ActorSpeed); + GUIActor.SetVal(GUIActor.m_TurnRate,ThisThing.Data.Actor.ActorTurnRate); + GUIActor.SetVal(GUIActor.m_Health,ThisThing.Data.Actor.ActorHealth); + GUIActor.SetVal(GUIActor.m_Attack,ThisThing.Data.Actor.ActorAttackStrength); + GUIActor.m_Collision.SetCheck(ThisThing.Data.Actor.ActorCollisionFlag); + bool IsPlayer=ThingScript.GetInt(ThisThing.Name,"Player")==1; + GUIActor.m_Player.SetCheck(IsPlayer); } else { @@ -132,12 +158,11 @@ void CLayerActor::GUIChanged(CCore *Core) if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - ThisThing.Data.Speed=GUIActor.GetVal(GUIActor.m_Speed); - ThisThing.Data.TurnRate=GUIActor.GetVal(GUIActor.m_TurnRate); - ThisThing.Data.Health=GUIActor.GetVal(GUIActor.m_Health); - ThisThing.Data.AttackStrength=GUIActor.GetVal(GUIActor.m_Attack); - ThisThing.Data.CollisionFlag=GUIActor.m_Collision.GetCheck()!=0; - ThisThing.Data.PlayerFlag=GUIActor.m_Player.GetCheck()!=0; + ThisThing.Data.Actor.ActorSpeed=GUIActor.GetVal(GUIActor.m_Speed); + ThisThing.Data.Actor.ActorTurnRate=GUIActor.GetVal(GUIActor.m_TurnRate); + ThisThing.Data.Actor.ActorHealth=GUIActor.GetVal(GUIActor.m_Health); + ThisThing.Data.Actor.ActorAttackStrength=GUIActor.GetVal(GUIActor.m_Attack); + ThisThing.Data.Actor.ActorCollisionFlag=GUIActor.m_Collision.GetCheck()!=0; } } diff --git a/Utils/MapEdit/LayerActor.h b/Utils/MapEdit/LayerActor.h index 112174a85..372c482e4 100644 --- a/Utils/MapEdit/LayerActor.h +++ b/Utils/MapEdit/LayerActor.h @@ -21,6 +21,9 @@ public: void InitLayer(sLayerDef &Def); void InitSubView(CCore *Core); + void LoadDefThing(const char *Name,sLayerThing &ThisDef); + void LoadOldThing(CFile *File,sLayerThing &ThisThing); + void GUIInit(CCore *Core); void GUIKill(CCore *Core); void GUIUpdate(CCore *Core); diff --git a/Utils/MapEdit/LayerDef.h b/Utils/MapEdit/LayerDef.h index aa33b7315..c5c301255 100644 --- a/Utils/MapEdit/LayerDef.h +++ b/Utils/MapEdit/LayerDef.h @@ -19,6 +19,7 @@ enum LAYER_TYPE LAYER_TYPE_PLATFORM, LAYER_TYPE_TRIGGER, LAYER_TYPE_FX, + LAYER_TYPE_HAZARD, LAYER_TYPE_MAX }; diff --git a/Utils/MapEdit/LayerFX.cpp b/Utils/MapEdit/LayerFX.cpp index b01b87b3f..bf1976a23 100644 --- a/Utils/MapEdit/LayerFX.cpp +++ b/Utils/MapEdit/LayerFX.cpp @@ -40,6 +40,22 @@ void CLayerFX::InitSubView(CCore *Core) { } +/*****************************************************************************/ +void CLayerFX::LoadDefThing(const char *Name,sLayerThing &ThisDef) +{ +} + +/*****************************************************************************/ +void CLayerFX::LoadOldThing(CFile *File,sLayerThing &ThisThing) +{ +sLayerThingDataOLD OldThing; + + File->Read(&OldThing,sizeof(sLayerThingDataOLD)); + ThisThing.Data.FX.FXSpeed=OldThing.Speed; + ThisThing.Data.FX.FXWidth=OldThing.Width; + ThisThing.Data.FX.FXHeight=OldThing.Height; +} + /*****************************************************************************/ void CLayerFX::RenderThing(CCore *Core,Vector3 &ThisCam,sLayerThing &ThisThing,bool Render3d,bool Selected) { @@ -71,8 +87,8 @@ float Col=0.8f,A=0.8f; Core->RenderNumber(0); glEnable(GL_DEPTH_TEST); -float W=(ThisThing.Data.Width); -float H=-(ThisThing.Data.Height); +float W=(ThisThing.Data.FX.FXWidth); +float H=-(ThisThing.Data.FX.FXHeight); // Draw Box glBegin (GL_QUADS); glColor4f(0,0,Col-0.25f,A); @@ -162,9 +178,9 @@ void CLayerFX::GUIThingUpdate(bool OnlySel) if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - GUIFX.SetVal(GUIFX.m_Speed,ThisThing.Data.Speed); - GUIFX.SetVal(GUIFX.m_Width,ThisThing.Data.Width); - GUIFX.SetVal(GUIFX.m_Height,ThisThing.Data.Height); + GUIFX.SetVal(GUIFX.m_Speed,ThisThing.Data.FX.FXSpeed); + GUIFX.SetVal(GUIFX.m_Width,ThisThing.Data.FX.FXWidth); + GUIFX.SetVal(GUIFX.m_Height,ThisThing.Data.FX.FXHeight); } else { @@ -186,9 +202,9 @@ void CLayerFX::GUIChanged(CCore *Core) if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - ThisThing.Data.Speed=GUIFX.GetVal(GUIFX.m_Speed); - ThisThing.Data.Width=GUIFX.GetVal(GUIFX.m_Width); - ThisThing.Data.Height=GUIFX.GetVal(GUIFX.m_Height); + ThisThing.Data.FX.FXSpeed=GUIFX.GetVal(GUIFX.m_Speed); + ThisThing.Data.FX.FXWidth=GUIFX.GetVal(GUIFX.m_Width); + ThisThing.Data.FX.FXHeight=GUIFX.GetVal(GUIFX.m_Height); } } @@ -196,6 +212,6 @@ void CLayerFX::GUIChanged(CCore *Core) void CLayerFX::SetThingParams(sLayerThing &Thing) { Thing.Data.WaypointCount=1; - if (Thing.Data.Width<1) Thing.Data.Width=1; - if (Thing.Data.Height<1) Thing.Data.Height=1; + if (Thing.Data.FX.FXWidth<1) Thing.Data.FX.FXWidth=1; + if (Thing.Data.FX.FXHeight<1) Thing.Data.FX.FXHeight=1; } \ No newline at end of file diff --git a/Utils/MapEdit/LayerFX.h b/Utils/MapEdit/LayerFX.h index 4fcd406da..5cebf7f29 100644 --- a/Utils/MapEdit/LayerFX.h +++ b/Utils/MapEdit/LayerFX.h @@ -22,6 +22,9 @@ public: void InitLayer(sLayerDef &Def); void InitSubView(CCore *Core); + void LoadDefThing(const char *Name,sLayerThing &ThisDef); + void LoadOldThing(CFile *File,sLayerThing &ThisThing); + void GUIInit(CCore *Core); void GUIKill(CCore *Core); void GUIUpdate(CCore *Core); diff --git a/Utils/MapEdit/LayerHazard.cpp b/Utils/MapEdit/LayerHazard.cpp index d59fac6cc..a57c390f6 100644 --- a/Utils/MapEdit/LayerHazard.cpp +++ b/Utils/MapEdit/LayerHazard.cpp @@ -1,6 +1,6 @@ -/*******************/ -/*** Layer Actor ***/ -/*******************/ +/********************/ +/*** Layer Hazard ***/ +/********************/ #include "stdafx.h" #include @@ -15,64 +15,92 @@ #include "Core.h" #include "LayerThing.h" -#include "LayerActor.h" +#include "LayerHazard.h" #include "Utils.h" #include "Export.h" /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -CLayerActor::CLayerActor(sLayerDef &Def) +CLayerHazard::CLayerHazard(sLayerDef &Def) { InitLayer(Def); } /*****************************************************************************/ -void CLayerActor::InitLayer(sLayerDef &Def) +void CLayerHazard::InitLayer(sLayerDef &Def) { ThingBank=new CElemBank(-1,-1,false,CElem::CentreModeLR | CElem::CentreModeB); CLayerThing::InitLayer(Def); - LoadThingScript(theApp.GetConfigStr("LayerScript","ActorScript")); + LoadThingScript(theApp.GetConfigStr("LayerScript","HazardScript")); } /*****************************************************************************/ -void CLayerActor::InitSubView(CCore *Core) +void CLayerHazard::InitSubView(CCore *Core) { } +/*****************************************************************************/ +void CLayerHazard::LoadDefThing(const char *Name,sLayerThing &ThisDef) +{ + ThisDef.Data.Hazard.HazardSpeed=ThingScript.GetInt(Name,"Speed"); + ThisDef.Data.Hazard.HazardTurnRate=ThingScript.GetInt(Name,"TurnRate"); + ThisDef.Data.Hazard.HazardHealth=ThingScript.GetInt(Name,"Health"); + ThisDef.Data.Hazard.HazardAttackStrength=ThingScript.GetInt(Name,"AttackStrength"); + ThisDef.Data.Hazard.HazardRespawn=ThingScript.GetInt(Name,"Respawn"); + ThisDef.Data.Hazard.HazardCollisionFlag=ThingScript.GetInt(Name,"Collision")==1; + +} + +/*****************************************************************************/ +void CLayerHazard::LoadOldThing(CFile *File,sLayerThing &ThisThing) +{ +sLayerThingDataOLD OldThing; + + File->Read(&OldThing,sizeof(sLayerThingDataOLD)); + ThisThing.Data.Hazard.HazardSpeed=OldThing.Speed; + ThisThing.Data.Hazard.HazardTurnRate=OldThing.TurnRate; + ThisThing.Data.Hazard.HazardHealth=OldThing.Health; + ThisThing.Data.Hazard.HazardAttackStrength=OldThing.AttackStrength; + ThisThing.Data.Hazard.HazardRespawn=OldThing.Speed; + ThisThing.Data.Hazard.HazardCollisionFlag=OldThing.CollisionFlag; +} + + /*****************************************************************************/ /*** Gui *********************************************************************/ /*****************************************************************************/ -void CLayerActor::GUIInit(CCore *Core) +void CLayerHazard::GUIInit(CCore *Core) { - GUIActor.DisableCallback(true); + GUIHazard.DisableCallback(true); Core->GUIAdd(GUIThing,IDD_LAYER_THING); Core->GUIAdd(GUIThingPos,IDD_LAYER_THING_POS); - Core->GUIAdd(GUIActor,IDD_LAYER_ACTOR); - GUIActor.DisableCallback(false); + Core->GUIAdd(GUIHazard,IDD_LAYER_HAZARD); + GUIHazard.DisableCallback(false); - GUIActor.m_HealthSpin.SetRange(0,255); - GUIActor.m_AttackSpin.SetRange(0,255); - GUIActor.m_SpeedSpin.SetRange(0,255); - GUIActor.m_TurnRateSpin.SetRange(0,255); + GUIHazard.m_HealthSpin.SetRange(0,255); + GUIHazard.m_AttackSpin.SetRange(0,255); + GUIHazard.m_SpeedSpin.SetRange(0,255); + GUIHazard.m_TurnRateSpin.SetRange(0,255); + GUIHazard.m_RespawnSpin.SetRange(0,255); } /*****************************************************************************/ -void CLayerActor::GUIKill(CCore *Core) +void CLayerHazard::GUIKill(CCore *Core) { Core->GUIRemove(GUIThing,IDD_LAYER_THING); Core->GUIRemove(GUIThingPos,IDD_LAYER_THING_POS); - Core->GUIRemove(GUIActor,IDD_LAYER_ACTOR); + Core->GUIRemove(GUIHazard,IDD_LAYER_HAZARD); } /*****************************************************************************/ -void CLayerActor::GUIUpdate(CCore *Core) +void CLayerHazard::GUIUpdate(CCore *Core) { int i,ListSize; CComboBox &List=GUIThing.m_DefList; -// Setup Def Actor List +// Setup Def Hazard List ListSize=DefList.size(); List.ResetContent(); for (i=0; iRead(&OldThing,sizeof(sLayerThingDataOLD)); +} + + /*****************************************************************************/ /*** Gui *********************************************************************/ /*****************************************************************************/ diff --git a/Utils/MapEdit/LayerItem.h b/Utils/MapEdit/LayerItem.h index 3c4113f3a..c6099c1f9 100644 --- a/Utils/MapEdit/LayerItem.h +++ b/Utils/MapEdit/LayerItem.h @@ -20,6 +20,9 @@ public: void InitLayer(sLayerDef &Def); void InitSubView(CCore *Core); + void LoadDefThing(const char *Name,sLayerThing &ThisDef); + void LoadOldThing(CFile *File,sLayerThing &ThisThing); + void GUIInit(CCore *Core); void GUIKill(CCore *Core); void GUIUpdate(CCore *Core); diff --git a/Utils/MapEdit/LayerPlatform.cpp b/Utils/MapEdit/LayerPlatform.cpp index 70637d0df..ded8749e6 100644 --- a/Utils/MapEdit/LayerPlatform.cpp +++ b/Utils/MapEdit/LayerPlatform.cpp @@ -40,6 +40,28 @@ void CLayerPlatform::InitSubView(CCore *Core) { } +/*****************************************************************************/ +void CLayerPlatform::LoadDefThing(const char *Name,sLayerThing &ThisDef) +{ +} + +/*****************************************************************************/ +void CLayerPlatform::LoadOldThing(CFile *File,sLayerThing &ThisThing) +{ +sLayerThingDataOLD OldThing; + + File->Read(&OldThing,sizeof(sLayerThingDataOLD)); + ThisThing.Data.Platform.PlatformSpeed=OldThing.Speed; + ThisThing.Data.Platform.PlatformTurnRate=OldThing.TurnRate; + ThisThing.Data.Platform.PlatformType=OldThing.PlatformType; + ThisThing.Data.Platform.PlatformMoveType=OldThing.MoveType; + ThisThing.Data.Platform.PlatformCollisionFlag=OldThing.CollisionFlag; + ThisThing.Data.Platform.PlatformTriCount=OldThing.TriCount; // Not needed but what the hell!! + ThisThing.Data.Platform.PlatformTriStart=OldThing.TriStart; // Not needed but what the hell!! + +} + + /*****************************************************************************/ /*** Gui *********************************************************************/ /*****************************************************************************/ @@ -112,11 +134,11 @@ void CLayerPlatform::GUIThingUpdate(bool OnlySel) if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - GUIPlatform.SetVal(GUIPlatform.m_Speed,ThisThing.Data.Speed); - GUIPlatform.SetVal(GUIPlatform.m_TurnRate,ThisThing.Data.TurnRate); - GUIPlatform.m_Collision.SetCheck(ThisThing.Data.CollisionFlag); - GUIPlatform.m_MoveList.SetCurSel(ThisThing.Data.MoveType); - GUIPlatform.m_Type.SetCurSel(ThisThing.Data.PlatformType); + GUIPlatform.SetVal(GUIPlatform.m_Speed,ThisThing.Data.Platform.PlatformSpeed); + GUIPlatform.SetVal(GUIPlatform.m_TurnRate,ThisThing.Data.Platform.PlatformTurnRate); + GUIPlatform.m_Collision.SetCheck(ThisThing.Data.Platform.PlatformCollisionFlag); + GUIPlatform.m_MoveList.SetCurSel(ThisThing.Data.Platform.PlatformMoveType); + GUIPlatform.m_Type.SetCurSel(ThisThing.Data.Platform.PlatformType); } else { @@ -141,11 +163,11 @@ void CLayerPlatform::GUIChanged(CCore *Core) if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - ThisThing.Data.Speed=GUIPlatform.GetVal(GUIPlatform.m_Speed); - ThisThing.Data.TurnRate=GUIPlatform.GetVal(GUIPlatform.m_TurnRate); - ThisThing.Data.CollisionFlag=GUIPlatform.m_Collision.GetCheck()!=0; - ThisThing.Data.MoveType=GUIPlatform.m_MoveList.GetCurSel(); - ThisThing.Data.PlatformType=GUIPlatform.m_Type.GetCurSel(); + ThisThing.Data.Platform.PlatformSpeed=GUIPlatform.GetVal(GUIPlatform.m_Speed); + ThisThing.Data.Platform.PlatformTurnRate=GUIPlatform.GetVal(GUIPlatform.m_TurnRate); + ThisThing.Data.Platform.PlatformCollisionFlag=GUIPlatform.m_Collision.GetCheck()!=0; + ThisThing.Data.Platform.PlatformMoveType=GUIPlatform.m_MoveList.GetCurSel(); + ThisThing.Data.Platform.PlatformType=GUIPlatform.m_Type.GetCurSel(); SetThingParams(ThisThing); } } @@ -153,7 +175,7 @@ void CLayerPlatform::GUIChanged(CCore *Core) /*****************************************************************************/ void CLayerPlatform::SetThingParams(sLayerThing &Thing) { - switch(Thing.Data.MoveType) + switch(Thing.Data.Platform.PlatformMoveType) { case MoveTypeLinear: Thing.Data.WaypointCount=16; @@ -181,6 +203,6 @@ void CLayerPlatform::ExportThingData(CCore *Core,CExport &Exp,sLayerThing &ThisT { CElem &ThisElem=ThingBank->GetElem(ThisThing.ElemID,0); - Exp.ExportElem3d(Core,ThisElem,OutThing.TriStart,OutThing.TriCount); + Exp.ExportElem3d(Core,ThisElem,OutThing.Platform.PlatformTriStart,OutThing.Platform.PlatformTriCount); } diff --git a/Utils/MapEdit/LayerPlatform.h b/Utils/MapEdit/LayerPlatform.h index 03ea155b6..b5823bc8f 100644 --- a/Utils/MapEdit/LayerPlatform.h +++ b/Utils/MapEdit/LayerPlatform.h @@ -28,6 +28,9 @@ public: void InitLayer(sLayerDef &Def); void InitSubView(CCore *Core); + void LoadDefThing(const char *Name,sLayerThing &ThisDef); + void LoadOldThing(CFile *File,sLayerThing &ThisThing); + void GUIInit(CCore *Core); void GUIKill(CCore *Core); void GUIUpdate(CCore *Core); diff --git a/Utils/MapEdit/LayerShade.cpp b/Utils/MapEdit/LayerShade.cpp index 40eac61ea..2da688979 100644 --- a/Utils/MapEdit/LayerShade.cpp +++ b/Utils/MapEdit/LayerShade.cpp @@ -21,6 +21,7 @@ #include "Select.h" #include "Export.h" #include "GUILayerShade.h" +#include "Elem.h" /*****************************************************************************/ @@ -30,101 +31,146 @@ CLayerShade::CLayerShade(sLayerDef &Def) { InitLayer(Def); -// Load script (messy) GString ExecPath; GString ScriptName; - GetExecPath(ExecPath); - ScriptName=ExecPath+theApp.GetConfigStr("LayerScript","BackGfxScript"); - Script.LoadAndImport(ScriptName); + GfxBank=new CElemBank(-1,-1,false,CElem::CentreModeLR | CElem::CentreModeTB); + LoadGfx(); + Cursor.Gfx=-1; + Cursor.Ofs[0].x=-2; Cursor.Ofs[0].y=-2; + Cursor.Ofs[1].x=+2; Cursor.Ofs[1].y=-2; + Cursor.Ofs[2].x=-2; Cursor.Ofs[2].y=+2; + Cursor.Ofs[3].x=+2; Cursor.Ofs[3].y=+2; + Cursor.TransMode=0; -int i,ListSize=Script.GetGroupCount(); - BackGfx.resize(ListSize); - - for (i=0; iCleanUp(); + delete GfxBank; +} + +/*****************************************************************************/ +void CLayerShade::LoadGfx() +{ +GString ExecPath; +GString ScriptName; + GetExecPath(ExecPath); + ScriptName=ExecPath+theApp.GetConfigStr("LayerScript","BackGfxScript"); + Script.LoadAndImport(ScriptName); + +int i,ListSize=Script.GetGroupCount(); + BankList.resize(ListSize); + + for (i=0; iAddSet(Filename); + } + } } /*****************************************************************************/ void CLayerShade::InitLayer(sLayerDef &Def) { CLayer::InitLayer(Def); - LayerDef.Width=TileLayerMinWidth+(Def.Width-TileLayerMinWidth)/GetScaleFactor(); - LayerDef.Height=TileLayerMinHeight+(Def.Height-TileLayerMinHeight)/GetScaleFactor(); +// LayerDef.Width=TileLayerMinWidth+(Def.Width-TileLayerMinWidth)/GetScaleFactor(); +// LayerDef.Height=TileLayerMinHeight+(Def.Height-TileLayerMinHeight)/GetScaleFactor(); - RGB[0].rgbRed=255; RGB[0].rgbGreen=255; RGB[0].rgbBlue=255; - RGB[1].rgbRed=255; RGB[1].rgbGreen=0; RGB[1].rgbBlue=0; - RGB[2].rgbRed=0; RGB[2].rgbGreen=255; RGB[2].rgbBlue=0; - RGB[3].rgbRed=0; RGB[3].rgbGreen=0; RGB[3].rgbBlue=255; - Count=2; + ShadeRGB[0].R=255; ShadeRGB[0].G=255; ShadeRGB[0].B=255; + ShadeRGB[1].R=255; ShadeRGB[1].G=0; ShadeRGB[1].B=0; + ShadeRGB[2].R=0; ShadeRGB[2].G=255; ShadeRGB[2].B=0; + ShadeRGB[3].R=0; ShadeRGB[3].G=0; ShadeRGB[3].B=255; + + ShadeCount=2; } /*****************************************************************************/ void CLayerShade::Load(CFile *File,int Version) { - if (Version<=5) - { - BOOL DB; - float DF; - LayerDef.Type=LAYER_TYPE_SHADE; - File->Read(&DB,sizeof(BOOL)); - File->Read(&DF,sizeof(float)); - File->Read(&DB,sizeof(BOOL)); - File->Read(&LayerDef.VisibleFlag,sizeof(BOOL)); - File->Read(&LayerDef.SubType,sizeof(int)); - File->Read(&LayerDef.Width,sizeof(int)); - File->Read(&LayerDef.Height,sizeof(int)); - } +int i; InitLayer(LayerDef); - File->Read(&Count,sizeof(int)); - for (int i=0; iRead(&Pos[i],sizeof(int)); - File->Read(&RGB[i],sizeof(RGBQUAD)); - } - if (Version>=7) - { - File->Read(&Back0,sizeof(int)); - File->Read(&Back1,sizeof(int)); - } - if (Version>=8) - { - File->Read(&TransMode0,sizeof(int)); - File->Read(&Flags0,sizeof(int)); - File->Read(&TransMode1,sizeof(int)); - File->Read(&Flags1,sizeof(int)); - } + File->Read(&ShadeCount,sizeof(int)); + + if (Version<9) + { // GOD I HATE FILE VERSIONS NOW!! + int DummyInt; + + for (i=0; iRead(&DummyInt,sizeof(int)); + File->Read(&RGB,sizeof(RGBQUAD)); + ShadeRGB[i].R=RGB.rgbRed; + ShadeRGB[i].G=RGB.rgbGreen; + ShadeRGB[i].B=RGB.rgbBlue; + } + File->Read(&DummyInt,sizeof(int)); + File->Read(&DummyInt,sizeof(int)); + if (Version==8) + { + File->Read(&DummyInt,sizeof(int)); + File->Read(&DummyInt,sizeof(int)); + File->Read(&DummyInt,sizeof(int)); + File->Read(&DummyInt,sizeof(int)); + } + } + else + { + int GfxCount; + for (i=0; iRead(&ShadeRGB[i],sizeof(sRGBCol)); + } +// Load GfxList + File->Read(&GfxCount,sizeof(int)); + GfxList.resize(GfxCount); + + for (i=0; iRead(&ThisGfx,sizeof(sLayerShadeGfx)); + } + + } } /*****************************************************************************/ void CLayerShade::Save(CFile *File) { // Always Save current version - File->Write(&Count,sizeof(int)); + File->Write(&ShadeCount,sizeof(int)); for (int i=0; iWrite(&Pos[i],sizeof(int)); - File->Write(&RGB[i],sizeof(RGBQUAD)); + File->Write(&ShadeRGB[i],sizeof(sRGBCol)); } - File->Write(&Back0,sizeof(int)); - File->Write(&Back1,sizeof(int)); - File->Write(&TransMode0,sizeof(int)); - File->Write(&Flags0,sizeof(int)); - File->Write(&TransMode1,sizeof(int)); - File->Write(&Flags1,sizeof(int)); + int GfxCount=GfxList.size(); + File->Write(&GfxCount,sizeof(int)); + + for (i=0; iWrite(&ThisGfx,sizeof(sLayerShadeGfx)); + } + } /*****************************************************************************/ @@ -138,12 +184,12 @@ float ZoomH=Core->GetZoomH(); float ScrOfsX=(ZoomW/2); float ScrOfsY=(ZoomH/2); Vector3 &Scale=Core->GetScaleVector(); -int ThisCount=Count-1; +int ThisCount=ShadeCount-1; float X0=0; float X1=LayerDef.Width; float Y=(0+1); - float YInc=(float)LayerDef.Height/(float)ThisCount; +int i,ListSize; glMatrixMode(GL_MODELVIEW); glPushMatrix(); @@ -153,28 +199,102 @@ float YInc=(float)LayerDef.Height/(float)ThisCount; glTranslatef(-ScrOfsX,ScrOfsY,0); // Bring to top left corner glBegin (GL_QUADS); - for (int i=0; iOffsetCam(CamPos,GetScaleFactor()); +CPoint &CursPos=Core->GetCursorPos(); + + Cursor.Pos.x=CursPos.x; + Cursor.Pos.y=CursPos.y; + if (CursPos.x<0 || CursPos.y<0) return; + if (Cursor.Gfx==-1) return; + RenderBackGfx(Core,ThisCam,Cursor); +} + +/*****************************************************************************/ +void CLayerShade::RenderBackGfx(CCore *Core,Vector3 &ThisCam,sLayerShadeGfx &ThisGfx) +{ +float ZoomW=Core->GetZoomW(); +float ZoomH=Core->GetZoomH(); +Vector3 &Scale=Core->GetScaleVector(); +Vector3 ScrOfs(ZoomW/2,ZoomH/2,0); +int i; + if (GfxBank->NeedLoad()) GfxBank->LoadAllSets(Core); + +CElem Elem=GfxBank->GetElem(ThisGfx.Gfx,0); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + glScalef(Scale.x,Scale.y,Scale.z); + glTranslatef(-ThisCam.x,ThisCam.y,0); // Set scroll offset + glTranslatef(-ScrOfs.x,ScrOfs.y,0); // Bring to top left corner + + glTranslatef(ThisGfx.Pos.x,-ThisGfx.Pos.y,0); // Set Pos + glColor3ub(255,255,255); + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, Elem.GetTexID()); + glBegin (GL_QUADS); + i=0; glColor3ub(ThisGfx.RGB[i].R,ThisGfx.RGB[i].G,ThisGfx.RGB[i].B); glTexCoord2f(0.0f,1.0f); glVertex3f(ThisGfx.Ofs[i].x ,-ThisGfx.Ofs[i].y,0.0f); + i=1; glColor3ub(ThisGfx.RGB[i].R,ThisGfx.RGB[i].G,ThisGfx.RGB[i].B); glTexCoord2f(1.0f,1.0f); glVertex3f(ThisGfx.Ofs[i].x ,-ThisGfx.Ofs[i].y,0.0f); + i=3; glColor3ub(ThisGfx.RGB[i].R,ThisGfx.RGB[i].G,ThisGfx.RGB[i].B); glTexCoord2f(1.0f,0.0f); glVertex3f(ThisGfx.Ofs[i].x ,-ThisGfx.Ofs[i].y,0.0f); + i=2; glColor3ub(ThisGfx.RGB[i].R,ThisGfx.RGB[i].G,ThisGfx.RGB[i].B); glTexCoord2f(0.0f,0.0f); glVertex3f(ThisGfx.Ofs[i].x ,-ThisGfx.Ofs[i].y,0.0f); + glEnd(); + glDisable(GL_TEXTURE_2D); + glPopMatrix(); +} + +/*****************************************************************************/ +void CLayerShade::CheckLayerSize(int Width,int Height) +{ + if (Resize(Width,Height)) + { + CString mexstr; + mexstr.Format("%s Layer Resized to Correct Size\nPlease re-save\n", GetName()); + AfxMessageBox(mexstr,MB_OK | MB_ICONEXCLAMATION); + } +} + /*****************************************************************************/ bool CLayerShade::Resize(int Width,int Height) { - LayerDef.Width=TileLayerMinWidth+(Width-TileLayerMinWidth)/GetScaleFactor(); - LayerDef.Height=TileLayerMinHeight+(Height-TileLayerMinHeight)/GetScaleFactor(); - return(true); + Width=TileLayerMinWidth+(Width-TileLayerMinWidth)/GetScaleFactor(); + Height=TileLayerMinHeight+(Height-TileLayerMinHeight)/GetScaleFactor(); + if (LayerDef.Width!=Width || LayerDef.Height!=Height) + { + LayerDef.Width=Width; + LayerDef.Height=Height; + return(true); + } + + return(false); } /*****************************************************************************/ @@ -182,130 +302,239 @@ bool CLayerShade::Resize(int Width,int Height) /*****************************************************************************/ void CLayerShade::GUIInit(CCore *Core) { - Core->GUIAdd(GUI,IDD_LAYER_SHADE); - for (int i=0; iGUIAdd(GUIShade,IDD_LAYER_SHADE); - if (Flags1 & SpinFlag) GUI.m_Spin1.SetCheck(true); - if (Flags1 & ScaleFlag) GUI.m_Scale1.SetCheck(true); - if (Flags1 & MoveFlag) GUI.m_Move1.SetCheck(true); - if (Flags1 & ColorFlag) GUI.m_Color1.SetCheck(true); - - GUI.m_Trans0.ResetContent(); - GUI.m_Trans0.AddString("Normal"); - GUI.m_Trans0.AddString("50%"); - GUI.m_Trans0.AddString("Subtractive"); - GUI.m_Trans0.AddString("Another one"); - GUI.m_Trans0.SetCurSel(TransMode0); - - GUI.m_Trans1.ResetContent(); - GUI.m_Trans1.AddString("Normal"); - GUI.m_Trans1.AddString("50%"); - GUI.m_Trans1.AddString("Subtractive"); - GUI.m_Trans1.AddString("Another one"); - GUI.m_Trans1.SetCurSel(TransMode1); - - GUI.m_CountSpin.SetRange(1,4); - - -} - -/*****************************************************************************/ -void CLayerShade::InitGfxList() -{ -int i,ListSize=BackGfx.size(); -CComboBox &List0=GUI.m_Gfx0; -CComboBox &List1=GUI.m_Gfx1; - - List0.ResetContent(); - List1.ResetContent(); +// Init BankList + ListSize=BankList.size(); + GUIShade.m_GfxBankList.ResetContent(); + GUIShade.m_DefList.ResetContent(); for (i=0; iRedrawView(); } /*****************************************************************************/ void CLayerShade::GUIKill(CCore *Core) { - Core->GUIRemove(GUI,IDD_LAYER_SHADE); + GUIChanged(Core); + Core->GUIRemove(GUIShade,IDD_LAYER_SHADE); } /*****************************************************************************/ void CLayerShade::GUIUpdate(CCore *Core) { - GUI.CheckData(); +int i,ListSize; + +// Shades + GUIShade.DisableCallback(); + + for (i=0; iGfxList.size()-1) CurrentGfx=GfxList.size()-1; + GUIUpdate(Core); + break; + case CmdMsg_ShadeGfxGoto: + GotoGfx(Core); + break; + case CmdMsg_ShadeGfxDelete: + DeleteGfx(Core); + break; + default: + break; } - Exp.Write(&TransMode0,sizeof(int)); - Exp.Write(&Flags0,sizeof(int)); - Exp.Write(&TransMode1,sizeof(int)); - Exp.Write(&Flags1,sizeof(int)); - -// Back Gfx -char Txt[256]; - - Txt[0]=0; - if (Back0!=-1) sprintf(Txt,BackGfx[Back0]); - Exp.Write(Txt,strlen(Txt)+1); - - Txt[0]=0; - if (Back1!=-1) sprintf(Txt,BackGfx[Back1]); - Exp.Write(Txt,strlen(Txt)+1); + return(Ret); } + +/*****************************************************************************/ +void CLayerShade::AddGfx(CCore *Core) +{ + if (Cursor.Gfx==-1) return; + + CurrentGfx=GfxList.size(); + GfxList.push_back(Cursor); + + Cursor.Gfx=-1; + GUIUpdate(Core); +} + +/*****************************************************************************/ +void CLayerShade::GotoGfx(CCore *Core) +{ + if (CurrentGfx==-1) return; +sLayerShadeGfx &ThisGfx=GfxList[CurrentGfx]; +CPoint Pos; + Pos.x=ThisGfx.Pos.x; + Pos.y=ThisGfx.Pos.y; + Core->SetCamPos(Pos); +} + +/*****************************************************************************/ +void CLayerShade::DeleteGfx(CCore *Core) +{ + if (!GfxList.size()) return; + + GfxList.erase(CurrentGfx); + if (CurrentGfx) CurrentGfx--; + GUIUpdate(Core); + +} + +/*****************************************************************************/ +void CLayerShade::Export(CCore *Core,CExport &Exp) +{ +int i,ListSize; + + Exp.ExportLayerHeader(LayerDef);//LAYER_TYPE_SHADE,LayerDef.SubType,LayerDef.Width,LayerDef.Height); + Exp.Write(&ShadeCount,sizeof(int)); + for (i=0; i BackGfx; - int Back0,Back1; - int TransMode0,TransMode1; - int Flags0,Flags1; + CGUILayerShade GUIShade; + CIni Script; + CList BankList; + CElemBank *GfxBank; + sLayerShadeGfx Cursor; - int Count; - int Pos[LAYER_SHADE_RGB_MAX]; - RGBQUAD RGB[LAYER_SHADE_RGB_MAX]; + int ShadeCount; + sRGBCol ShadeRGB[LAYER_SHADE_RGB_MAX]; + + CList GfxList; + int CurrentGfx; }; diff --git a/Utils/MapEdit/LayerThing.cpp b/Utils/MapEdit/LayerThing.cpp index a221fba41..263ef062d 100644 --- a/Utils/MapEdit/LayerThing.cpp +++ b/Utils/MapEdit/LayerThing.cpp @@ -66,7 +66,14 @@ int i,ListSize; { sLayerThing &ThisThing=ThingList[i]; LoadThing(File,Version,ThisThing); - File->Read(&ThisThing.Data,sizeof(sLayerThingData)); + if (Version<9) + { + LoadOldThing(File,ThisThing); + } + else + { + File->Read(&ThisThing.Data,sizeof(sLayerThingData)); + } } LoadThingNames(File,Version); @@ -179,13 +186,8 @@ int i,ListSize=ThingScript.GetGroupCount(); memset(&ThisDef.Data,0,sizeof(sLayerThingData)); ThisDef.Name=Name; ThisDef.Data.WaypointCount=ThingScript.GetInt(Name,"WayPoints"); - ThisDef.Data.Speed=ThingScript.GetInt(Name,"Speed"); - ThisDef.Data.TurnRate=ThingScript.GetInt(Name,"TurnRate"); - ThisDef.Data.Health=ThingScript.GetInt(Name,"Health"); - ThisDef.Data.AttackStrength=ThingScript.GetInt(Name,"AttackStrength"); - ThisDef.Data.PlayerFlag=ThingScript.GetInt(Name,"Player")==1; - ThisDef.Data.CollisionFlag=ThingScript.GetInt(Name,"Collision")==1; + LoadDefThing(Name,ThisDef); ThisDef.XY.resize(1); TRACE2("%s\t\t%s\n",Name,Gfx); if (Gfx) diff --git a/Utils/MapEdit/LayerThing.h b/Utils/MapEdit/LayerThing.h index 0d93abb33..062ce10c7 100644 --- a/Utils/MapEdit/LayerThing.h +++ b/Utils/MapEdit/LayerThing.h @@ -64,11 +64,13 @@ virtual void GUIThingPointUpdateList(CListBox &List,bool OnlySel=false); virtual void Load(CFile *File,int Version); virtual void LoadThing(CFile *File,int Version,sLayerThing &ThisThing); +virtual void LoadOldThing(CFile *File,sLayerThing &ThisThing)=0; virtual void LoadThingNames(CFile *File,int Version); virtual void Save(CFile *File); virtual void SaveThing(CFile *File,sLayerThing &ThisThing); virtual void SaveThingNames(CFile *File); virtual void LoadThingScript(const char *Filename); +virtual void LoadDefThing(const char *Name,sLayerThing &ThisDef)=0; virtual void Export(CCore *Core,CExport &Exp); virtual void ExportThing(CCore *Core,CExport &Exp,sLayerThing &ThisThing); diff --git a/Utils/MapEdit/LayerTrigger.cpp b/Utils/MapEdit/LayerTrigger.cpp index ab1a49d5a..39002628b 100644 --- a/Utils/MapEdit/LayerTrigger.cpp +++ b/Utils/MapEdit/LayerTrigger.cpp @@ -40,6 +40,24 @@ void CLayerTrigger::InitSubView(CCore *Core) { } +/*****************************************************************************/ +void CLayerTrigger::LoadDefThing(const char *Name,sLayerThing &ThisDef) +{ +} + +/*****************************************************************************/ +void CLayerTrigger::LoadOldThing(CFile *File,sLayerThing &ThisThing) +{ +sLayerThingDataOLD OldThing; + + File->Read(&OldThing,sizeof(sLayerThingDataOLD)); + ThisThing.Data.Trigger.TriggerWidth=OldThing.Width; + ThisThing.Data.Trigger.TriggerHeight=OldThing.Height; + ThisThing.Data.Trigger.TriggerTargetX=OldThing.TargetX; + ThisThing.Data.Trigger.TriggerTargetY=OldThing.TargetY; +} + + /*****************************************************************************/ void CLayerTrigger::RenderThing(CCore *Core,Vector3 &ThisCam,sLayerThing &ThisThing,bool Render3d,bool Selected) { @@ -71,8 +89,8 @@ float Col=0.8f,A=0.8f; Core->RenderNumber(0); glEnable(GL_DEPTH_TEST); -float W=(ThisThing.Data.Width); -float H=-(ThisThing.Data.Height); +float W=(ThisThing.Data.Trigger.TriggerWidth); +float H=-(ThisThing.Data.Trigger.TriggerHeight); // Draw Box glBegin (GL_QUADS); glColor4f(0,Col-0.25f,0,A); @@ -96,9 +114,34 @@ float H=-(ThisThing.Data.Height); glVertex3f( 0,H+1,0); glVertex3f( 0,0+1,0); - glEnd(); + if (Selected && ThingScript.GetInt(ThisThing.Name,"HasTarget")) + { // Draw Target + float ox,oy; + float tx,ty; + + ox=W/2.0f; + oy=H/2.0f; + tx=ThisThing.Data.Trigger.TriggerTargetX-ThisThing.XY[0].x; + ty=ThisThing.XY[0].y-ThisThing.Data.Trigger.TriggerTargetY; + glBegin(GL_LINES); + glColor4f(Col,Col,Col,A); + glVertex3f( ox,oy+1.0f,0); + glVertex3f( tx+0.5f,ty+0.5f,0); + glEnd(); + glBegin (GL_QUADS); + glColor4f(Col,0,Col,A); + glVertex3f(tx+0,ty+0,0); + glVertex3f(tx+1,ty+0,0); + glVertex3f(tx+1,ty+1,0); + glVertex3f(tx+0,ty+1,0); + glEnd(); + + + } + + glDisable(GL_DEPTH_TEST); glPopMatrix(); @@ -109,13 +152,15 @@ float H=-(ThisThing.Data.Height); /*****************************************************************************/ void CLayerTrigger::GUIInit(CCore *Core) { + GUITrigger.DisableCallback(true); Core->GUIAdd(GUIThing,IDD_LAYER_THING); Core->GUIAdd(GUITrigger,IDD_LAYER_TRIGGER); GUITrigger.DisableCallback(false); GUITrigger.m_WidthSpin.SetRange(1,255); GUITrigger.m_HeightSpin.SetRange(1,255); - + GUITrigger.m_TargetXSpin.SetRange(0,32000); + GUITrigger.m_TargetYSpin.SetRange(0,32000); } /*****************************************************************************/ @@ -154,20 +199,36 @@ CComboBox &List=GUIThing.m_DefList; /*****************************************************************************/ void CLayerTrigger::GUIThingUpdate(bool OnlySel) { +int TargetMode=SW_SHOW; + GUIThingUpdateList(GUIThing.m_List,false); // Params GUITrigger.DisableCallback(true); if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - GUITrigger.SetVal(GUITrigger.m_Width,ThisThing.Data.Width); - GUITrigger.SetVal(GUITrigger.m_Height,ThisThing.Data.Height); + GUITrigger.SetVal(GUITrigger.m_Width,ThisThing.Data.Trigger.TriggerWidth); + GUITrigger.SetVal(GUITrigger.m_Height,ThisThing.Data.Trigger.TriggerHeight); + GUITrigger.SetVal(GUITrigger.m_TargetX,ThisThing.Data.Trigger.TriggerTargetX); + GUITrigger.SetVal(GUITrigger.m_TargetY,ThisThing.Data.Trigger.TriggerTargetY); + if (ThingScript.GetInt(ThisThing.Name,"HasTarget")==0) + { + TargetMode=SW_HIDE; + } } else { GUITrigger.m_Width.SetWindowText(""); GUITrigger.m_Height.SetWindowText(""); + TargetMode=SW_HIDE; } + + GUITrigger.m_TargetTxt.ShowWindow(TargetMode); + GUITrigger.m_TargetX.ShowWindow(TargetMode); + GUITrigger.m_TargetY.ShowWindow(TargetMode); + GUITrigger.m_TargetXSpin.ShowWindow(TargetMode); + GUITrigger.m_TargetYSpin.ShowWindow(TargetMode); + GUITrigger.DisableCallback(false); } @@ -183,8 +244,10 @@ void CLayerTrigger::GUIChanged(CCore *Core) if (CurrentThing!=-1) { sLayerThing &ThisThing=ThingList[CurrentThing]; - ThisThing.Data.Width=GUITrigger.GetVal(GUITrigger.m_Width); - ThisThing.Data.Height=GUITrigger.GetVal(GUITrigger.m_Height); + ThisThing.Data.Trigger.TriggerWidth=GUITrigger.GetVal(GUITrigger.m_Width); + ThisThing.Data.Trigger.TriggerHeight=GUITrigger.GetVal(GUITrigger.m_Height); + ThisThing.Data.Trigger.TriggerTargetX=GUITrigger.GetVal(GUITrigger.m_TargetX); + ThisThing.Data.Trigger.TriggerTargetY=GUITrigger.GetVal(GUITrigger.m_TargetY); } } @@ -192,7 +255,6 @@ void CLayerTrigger::GUIChanged(CCore *Core) void CLayerTrigger::SetThingParams(sLayerThing &Thing) { Thing.Data.WaypointCount=1; - if (Thing.Data.Width<1) Thing.Data.Width=1; - if (Thing.Data.Height<1) Thing.Data.Height=1; -// Thing.XY.resize(1); + if (Thing.Data.Trigger.TriggerWidth<1) Thing.Data.Trigger.TriggerWidth=1; + if (Thing.Data.Trigger.TriggerHeight<1) Thing.Data.Trigger.TriggerHeight=1; } \ No newline at end of file diff --git a/Utils/MapEdit/LayerTrigger.h b/Utils/MapEdit/LayerTrigger.h index e8893b174..e9420ad41 100644 --- a/Utils/MapEdit/LayerTrigger.h +++ b/Utils/MapEdit/LayerTrigger.h @@ -22,6 +22,9 @@ public: void InitLayer(sLayerDef &Def); void InitSubView(CCore *Core); + void LoadDefThing(const char *Name,sLayerThing &ThisDef); + void LoadOldThing(CFile *File,sLayerThing &ThisThing); + void GUIInit(CCore *Core); void GUIKill(CCore *Core); void GUIUpdate(CCore *Core); diff --git a/Utils/MapEdit/MapEdit.clw b/Utils/MapEdit/MapEdit.clw index 318f71054..c4afa0e41 100644 --- a/Utils/MapEdit/MapEdit.clw +++ b/Utils/MapEdit/MapEdit.clw @@ -2,59 +2,62 @@ [General Info] Version=1 -LastClass=CGUILayerTrigger +LastClass=CGUINewMap LastTemplate=CDialog NewFileInclude1=#include "stdafx.h" NewFileInclude2=#include "mapedit.h" LastPage=0 -ClassCount=24 +ClassCount=26 Class1=CChildFrame Class2=CGLEnabledView Class3=CGUIAddLayer Class4=CGUIElemList Class5=CGUILayerActor Class6=GUILayerCollision -Class7=CGUILayerList -Class8=CGUILayerPlatform -Class9=CGUILayerShade -Class10=CGUILayerThing -Class11=CGuiLayerThingPos -Class12=CGUIMultiBar -Class13=CGUINewMap -Class14=CGUIResize -Class15=CGUITileBank -Class16=GUIToolBar -Class17=CLayerTileCollision -Class18=CMainFrame -Class19=CMapEditApp -Class20=CAboutDlg -Class21=CMapEditDoc -Class22=CMapEditView +Class7=CGUILayerFX +Class8=CGUILayerHazard +Class9=CGUILayerItem +Class10=CGUILayerList +Class11=CGUILayerPlatform +Class12=CGUILayerShade +Class13=CGUILayerThing +Class14=CGuiLayerThingPos +Class15=CGUILayerTrigger +Class16=CGUIMultiBar +Class17=CGUINewMap +Class18=CGUIResize +Class19=CGUITileBank +Class20=GUIToolBar +Class21=CLayerTileCollision +Class22=CMainFrame +Class23=CMapEditApp +Class24=CAboutDlg +Class25=CMapEditDoc +Class26=CMapEditView -ResourceCount=20 -Resource1=IDD_LAYER_THING_POS -Resource2=IDD_NEWMAP -Resource3=IDD_TILEBANK -Resource4=IDR_MAPEDITYPE (English (U.S.)) +ResourceCount=21 +Resource1=IDD_LAYER_COLLISION +Resource2=IDR_MAPEDITYPE (English (U.S.)) +Resource3=IDD_ELEMLIST +Resource4=IDD_MULTIBAR (English (U.S.)) Resource5=IDD_LAYER_THING -Resource6=IDD_LAYER_TRIGGER -Resource7=IDD_ELEMLIST -Resource8=IDD_MULTIBAR (English (U.S.)) -Resource9=IDD_ABOUTBOX (English (U.S.)) -Resource10=IDD_LAYER_ACTOR -Resource11=IDD_LAYER_PLATFORM -Resource12=IDD_RESIZE -Resource13=IDD_ADDLAYER -Resource14=IDD_LAYER_FX -Resource15=IDR_MAINFRAME (English (U.S.)) -Resource16=IDD_LAYER_SHADE -Resource17=IDD_LAYER_COLLISION -Resource18=IDD_TOOLBAR -Class23=CGUILayerTrigger -Resource19=IDD_LAYER_LIST -Class24=CGUILayerFX -Resource20=IDR_TOOLBAR (English (U.S.)) +Resource6=IDD_NEWMAP +Resource7=IDD_LAYER_PLATFORM +Resource8=IDD_LAYER_TRIGGER +Resource9=IDD_TILEBANK +Resource10=IDR_TOOLBAR (English (U.S.)) +Resource11=IDR_MAINFRAME (English (U.S.)) +Resource12=IDD_ABOUTBOX (English (U.S.)) +Resource13=IDD_LAYER_ACTOR +Resource14=IDD_LAYER_LIST +Resource15=IDD_RESIZE +Resource16=IDD_LAYER_THING_POS +Resource17=IDD_ADDLAYER +Resource18=IDD_LAYER_FX +Resource19=IDD_TOOLBAR +Resource20=IDD_LAYER_SHADE +Resource21=IDD_LAYER_HAZARD [CLS:CChildFrame] Type=0 @@ -85,9 +88,6 @@ Type=0 BaseClass=CDialog HeaderFile=GUILayerActor.h ImplementationFile=GUILayerActor.cpp -Filter=D -VirtualFilter=dWC -LastObject=IDC_ACTOR_SPEED_SPIN [CLS:GUILayerCollision] Type=0 @@ -95,6 +95,25 @@ BaseClass=CDialog HeaderFile=GUILayerCollision.h ImplementationFile=GUILayerCollision.cpp +[CLS:CGUILayerFX] +Type=0 +BaseClass=CDialog +HeaderFile=GUILayerFX.h +ImplementationFile=GUILayerFX.cpp + +[CLS:CGUILayerHazard] +Type=0 +BaseClass=CDialog +HeaderFile=GUILayerHazard.h +ImplementationFile=GUILayerHazard.cpp +LastObject=CGUILayerHazard + +[CLS:CGUILayerItem] +Type=0 +BaseClass=CDialog +HeaderFile=GUILayerItem.h +ImplementationFile=GUILayerItem.cpp + [CLS:CGUILayerList] Type=0 BaseClass=CDialog @@ -106,9 +125,6 @@ Type=0 BaseClass=CDialog HeaderFile=GUILayerPlatform.h ImplementationFile=GUILayerPlatform.cpp -Filter=D -VirtualFilter=dWC -LastObject=CGUILayerPlatform [CLS:CGUILayerShade] Type=0 @@ -117,7 +133,7 @@ HeaderFile=GUILayerShade.h ImplementationFile=GUILayerShade.cpp Filter=D VirtualFilter=dWC -LastObject=IDC_LAYERSHADE_TRANS1 +LastObject=CGUILayerShade [CLS:CGUILayerThing] Type=0 @@ -131,6 +147,12 @@ BaseClass=CDialog HeaderFile=GuiLayerThingPos.h ImplementationFile=GuiLayerThingPos.cpp +[CLS:CGUILayerTrigger] +Type=0 +BaseClass=CDialog +HeaderFile=GUILayerTrigger.h +ImplementationFile=GUILayerTrigger.cpp + [CLS:CGUIMultiBar] Type=0 BaseClass=CDialogBar @@ -142,6 +164,9 @@ Type=0 BaseClass=CDialog HeaderFile=GUINewMap.h ImplementationFile=GUINewMap.cpp +Filter=D +VirtualFilter=dWC +LastObject=CGUINewMap [CLS:CGUIResize] Type=0 @@ -183,6 +208,7 @@ Type=0 BaseClass=CDialog HeaderFile=MapEdit.cpp ImplementationFile=MapEdit.cpp +LastObject=CAboutDlg [CLS:CMapEditDoc] Type=0 @@ -242,6 +268,44 @@ Control6=IDC_LAYERCOLLISION_WATER,button,1342242816 Control7=IDC_LAYERCOLLISION_SOLID,button,1342242816 Control8=IDC_LAYERCOLLISION_DEATH,button,1342242816 +[DLG:IDD_LAYER_FX] +Type=1 +Class=CGUILayerFX +ControlCount=8 +Control1=IDC_FX_SPEED_TEXT,static,1342308354 +Control2=IDC_FX_SIZE_TEXT,static,1342308354 +Control3=IDC_FX_WIDTH,edit,1350633600 +Control4=IDC_FX_WIDTH_SPIN,msctls_updown32,1342177334 +Control5=IDC_FX_HEIGHT,edit,1350633600 +Control6=IDC_FX_HEIGHT_SPIN,msctls_updown32,1342177334 +Control7=IDC_FX_SPEED,edit,1350633600 +Control8=IDC_FX_SPEED_SPIN,msctls_updown32,1342177462 + +[DLG:IDD_LAYER_HAZARD] +Type=1 +Class=CGUILayerHazard +ControlCount=16 +Control1=IDC_HAZARD_SPEED_TEXT,static,1342308354 +Control2=IDC_HAZARD_SPEED,edit,1350633600 +Control3=IDC_HAZARD_SPEED_SPIN,msctls_updown32,1342177334 +Control4=IDC_HAZARD_TURNRATE_TEXT,static,1342308354 +Control5=IDC_HAZARD_TURNRATE,edit,1350633600 +Control6=IDC_HAZARD_TURNRATE_SPIN,msctls_updown32,1342177334 +Control7=IDC_HAZARD_HEALTH_TEXT,static,1342308354 +Control8=IDC_HAZARD_HEALTH,edit,1350633600 +Control9=IDC_HAZARD_HEALTH_SPIN,msctls_updown32,1342177334 +Control10=IDC_HAZARD_ATTACK_TEXT,static,1342308354 +Control11=IDC_HAZARD_ATTACK,edit,1350633600 +Control12=IDC_HAZARD_ATTACK_SPIN,msctls_updown32,1342177334 +Control13=IDC_HAZARD_COLLISION,button,1342243363 +Control14=IDC_HAZARD_RESPAWN_TEXT,static,1342308354 +Control15=IDC_HAZARD_RESPAWN,edit,1350633600 +Control16=IDC_HAZARD_RESPAWN_SPIN,msctls_updown32,1342177334 + +[DLG:IDD_LAYER_ITEM] +Type=1 +Class=CGUILayerItem + [DLG:IDD_LAYER_LIST] Type=1 Class=CGUILayerList @@ -267,35 +331,69 @@ Control9=IDC_PLATFORM_TYPE,combobox,1344339971 [DLG:IDD_LAYER_SHADE] Type=1 Class=CGUILayerShade -ControlCount=28 -Control1=IDC_LAYERSHADE_EDITR0,edit,1350770688 -Control2=IDC_LAYERSHADE_EDITG0,edit,1350770816 -Control3=IDC_LAYERSHADE_EDITB0,edit,1350770816 +ControlCount=62 +Control1=IDC_LAYERSHADE_SHADER0,edit,1350770688 +Control2=IDC_LAYERSHADE_SHADEG0,edit,1350770816 +Control3=IDC_LAYERSHADE_SHADEB0,edit,1350770816 Control4=IDC_LAYERSHADE_COUNTTEXT,static,1342312449 -Control5=IDC_LAYERSHADE_EDITR1,edit,1350770688 -Control6=IDC_LAYERSHADE_EDITG1,edit,1350770816 -Control7=IDC_LAYERSHADE_EDITB1,edit,1350770816 -Control8=IDC_LAYERSHADE_EDITR2,edit,1350770688 -Control9=IDC_LAYERSHADE_EDITG2,edit,1350770816 -Control10=IDC_LAYERSHADE_EDITB2,edit,1350770816 +Control5=IDC_LAYERSHADE_SHADER1,edit,1350770688 +Control6=IDC_LAYERSHADE_SHADEG1,edit,1350770816 +Control7=IDC_LAYERSHADE_SHADEB1,edit,1350770816 +Control8=IDC_LAYERSHADE_SHADER2,edit,1350770688 +Control9=IDC_LAYERSHADE_SHADEG2,edit,1350770816 +Control10=IDC_LAYERSHADE_SHADEB2,edit,1350770816 Control11=IDC_LAYERSHADE_TEXT7,static,1342312449 -Control12=IDC_LAYERSHADE_EDITR3,edit,1350770688 -Control13=IDC_LAYERSHADE_EDITG3,edit,1350770816 -Control14=IDC_LAYERSHADE_EDITB3,edit,1350770816 -Control15=IDC_LAYERSHADE_COUNTEDIT,edit,1350576256 -Control16=IDC_SPIN2,msctls_updown32,1342177302 -Control17=IDC_LAYERSHADE_BACKGFX0,combobox,1344339971 -Control18=IDC_LAYERSHADE_BACKGFX1,combobox,1344339971 -Control19=IDC_LAYERSHADE_SPIN0,button,1342242851 -Control20=IDC_LAYERSHADE_MOVE0,button,1342242851 -Control21=IDC_LAYERSHADE_SCALE0,button,1342242851 -Control22=IDC_LAYERSHADE_COLOR0,button,1342242851 -Control23=IDC_LAYERSHADE_TRANS0,combobox,1344339971 -Control24=IDC_LAYERSHADE_SPIN1,button,1342242851 -Control25=IDC_LAYERSHADE_MOVE1,button,1342242851 -Control26=IDC_LAYERSHADE_SCALE1,button,1342242851 -Control27=IDC_LAYERSHADE_COLOR1,button,1342242851 -Control28=IDC_LAYERSHADE_TRANS1,combobox,1344339971 +Control12=IDC_LAYERSHADE_SHADER3,edit,1350770688 +Control13=IDC_LAYERSHADE_SHADEG3,edit,1350770816 +Control14=IDC_LAYERSHADE_SHADEB3,edit,1350770816 +Control15=IDC_LAYERSHADE_SHADECOUNT,edit,1350576256 +Control16=IDC_LAYERSHADE_SHADECOUNT_SPIN,msctls_updown32,1342177302 +Control17=IDC_LAYERSHADE_GFX_CURRENT,edit,1350576256 +Control18=IDC_LAYERSHADE_GFX_CURRENT_SPIN,msctls_updown32,1342177466 +Control19=IDC_LAYERSHADE_COUNTTEXT2,static,1342312449 +Control20=IDC_LAYERSHADE_GFX_LIST,combobox,1344274435 +Control21=IDC_LAYERSHADE_GFX_GOTO,button,1342177280 +Control22=IDC_LAYERSHADE_GFX_DELETE,button,1342177280 +Control23=IDC_LAYERSHADE_POSTEXT,static,1342312449 +Control24=IDC_LAYERSHADE_XYTEXT0,static,1342312449 +Control25=IDC_LAYERSHADE_GFX_X0,edit,1350576256 +Control26=IDC_LAYERSHADE_GFX_SPIN_X0,msctls_updown32,1342177334 +Control27=IDC_LAYERSHADE_GFX_Y0,edit,1350576256 +Control28=IDC_LAYERSHADE_GFX_SPIN_Y0,msctls_updown32,1342177334 +Control29=IDC_LAYERSHADE_XYTEXT1,static,1342312449 +Control30=IDC_LAYERSHADE_GFX_X1,edit,1350576256 +Control31=IDC_LAYERSHADE_GFX_SPIN_X1,msctls_updown32,1342177334 +Control32=IDC_LAYERSHADE_GFX_Y1,edit,1350576256 +Control33=IDC_LAYERSHADE_GFX_SPIN_Y1,msctls_updown32,1342177334 +Control34=IDC_LAYERSHADE_XYTEXT2,static,1342312449 +Control35=IDC_LAYERSHADE_GFX_X2,edit,1350576256 +Control36=IDC_LAYERSHADE_GFX_SPIN_X2,msctls_updown32,1342177334 +Control37=IDC_LAYERSHADE_GFX_Y2,edit,1350576256 +Control38=IDC_LAYERSHADE_GFX_SPIN_Y2,msctls_updown32,1342177334 +Control39=IDC_LAYERSHADE_XYTEXT3,static,1342312449 +Control40=IDC_LAYERSHADE_GFX_X3,edit,1350576256 +Control41=IDC_LAYERSHADE_GFX_SPIN_X3,msctls_updown32,1342177334 +Control42=IDC_LAYERSHADE_GFX_Y3,edit,1350576256 +Control43=IDC_LAYERSHADE_GFX_SPIN_Y3,msctls_updown32,1342177334 +Control44=IDC_LAYERSHADE_GFX_TRANSLIST,combobox,1342177283 +Control45=IDC_LAYERSHADE_TRANSTEXT,static,1342312449 +Control46=IDC_LAYERSHADE_GFXR0,edit,1350770688 +Control47=IDC_LAYERSHADE_GFXG0,edit,1350770816 +Control48=IDC_LAYERSHADE_GFXB0,edit,1350770816 +Control49=IDC_LAYERSHADE_GFXR1,edit,1350770688 +Control50=IDC_LAYERSHADE_GFXG1,edit,1350770816 +Control51=IDC_LAYERSHADE_GFXB1,edit,1350770816 +Control52=IDC_LAYERSHADE_GFXR2,edit,1350770688 +Control53=IDC_LAYERSHADE_GFXG2,edit,1350770816 +Control54=IDC_LAYERSHADE_GFXB2,edit,1350770816 +Control55=IDC_LAYERSHADE_GFXR3,edit,1350770688 +Control56=IDC_LAYERSHADE_GFXG3,edit,1350770816 +Control57=IDC_LAYERSHADE_GFXB3,edit,1350770816 +Control58=IDC_LAYERSHADE_GFX_X,edit,1350568064 +Control59=IDC_LAYERSHADE_GFX_XSPIN,msctls_updown32,1342177334 +Control60=IDC_LAYERSHADE_GFX_Y,edit,1350568064 +Control61=IDC_LAYERSHADE_GFX_YSPIN,msctls_updown32,1342177334 +Control62=IDC_LAYERSHADE_DEF_LIST,combobox,1342177283 [DLG:IDD_LAYER_THING] Type=1 @@ -315,6 +413,21 @@ Control2=IDC_THING_POS_UP,button,1342242816 Control3=IDC_THING_POS_DOWN,button,1342242816 Control4=IDC_THING_POS_DELETE,button,1342242816 +[DLG:IDD_LAYER_TRIGGER] +Type=1 +Class=CGUILayerTrigger +ControlCount=10 +Control1=IDC_TRIGGER_SIZE,static,1342308354 +Control2=IDC_TRIGGER_WIDTH,edit,1350633600 +Control3=IDC_TRIGGER_WIDTH_SPIN,msctls_updown32,1342177334 +Control4=IDC_TRIGGER_HEIGHT,edit,1350633600 +Control5=IDC_TRIGGER_HEIGHT_SPIN,msctls_updown32,1342177334 +Control6=IDC_TRIGGER_TARGET,static,1342308354 +Control7=IDC_TRIGGER_TARGETX,edit,1350633600 +Control8=IDC_TRIGGER_TARGETX_SPIN,msctls_updown32,1342177334 +Control9=IDC_TRIGGER_TARGETY,edit,1350633600 +Control10=IDC_TRIGGER_TARGETY_SPIN,msctls_updown32,1342177334 + [DLG:IDD_MULTIBAR] Type=1 Class=CGUIMultiBar @@ -467,44 +580,3 @@ Type=1 Class=? ControlCount=0 -[DLG:IDD_LAYER_TRIGGER] -Type=1 -Class=CGUILayerTrigger -ControlCount=5 -Control1=IDC_TRIGGER_SIZE,static,1342308354 -Control2=IDC_TRIGGER_WIDTH,edit,1350633600 -Control3=IDC_TRIGGER_WIDTH_SPIN,msctls_updown32,1342177334 -Control4=IDC_TRIGGER_HEIGHT,edit,1350633600 -Control5=IDC_TRIGGER_HEIGHT_SPIN,msctls_updown32,1342177334 - -[CLS:CGUILayerTrigger] -Type=0 -HeaderFile=GUILayerTrigger.h -ImplementationFile=GUILayerTrigger.cpp -BaseClass=CDialog -Filter=D -VirtualFilter=dWC -LastObject=CGUILayerTrigger - -[DLG:IDD_LAYER_FX] -Type=1 -Class=CGUILayerFX -ControlCount=8 -Control1=IDC_FX_SPEED_TEXT,static,1342308354 -Control2=IDC_FX_SIZE_TEXT,static,1342308354 -Control3=IDC_FX_WIDTH,edit,1350633600 -Control4=IDC_FX_WIDTH_SPIN,msctls_updown32,1342177334 -Control5=IDC_FX_HEIGHT,edit,1350633600 -Control6=IDC_FX_HEIGHT_SPIN,msctls_updown32,1342177334 -Control7=IDC_FX_SPEED,edit,1350633600 -Control8=IDC_FX_SPEED_SPIN,msctls_updown32,1342177462 - -[CLS:CGUILayerFX] -Type=0 -HeaderFile=GUILayerFX.h -ImplementationFile=GUILayerFX.cpp -BaseClass=CDialog -Filter=D -VirtualFilter=dWC -LastObject=IDC_FX_WIDTH - diff --git a/Utils/MapEdit/MapEdit.cpp b/Utils/MapEdit/MapEdit.cpp index 950422b6c..90415a3b9 100644 --- a/Utils/MapEdit/MapEdit.cpp +++ b/Utils/MapEdit/MapEdit.cpp @@ -133,12 +133,12 @@ void CMapEditApp::CloseDoc(CMapEditDoc *Cur) } } -char *CMapEditApp::GetConfigStr(char *Grp,char *Key) +char *CMapEditApp::GetConfigStr(const char *Grp,const char *Key) { return(MainIni.GetStr(Grp,Key)); } -int CMapEditApp::GetConfigInt(char *Grp,char *Key) +int CMapEditApp::GetConfigInt(const char *Grp,const char *Key) { return(MainIni.GetInt(Grp,Key)); } diff --git a/Utils/MapEdit/MapEdit.dsp b/Utils/MapEdit/MapEdit.dsp index 10e6b1aeb..1105c3b5a 100644 --- a/Utils/MapEdit/MapEdit.dsp +++ b/Utils/MapEdit/MapEdit.dsp @@ -131,6 +131,14 @@ SOURCE=.\LayerFX.h # End Source File # Begin Source File +SOURCE=.\LayerHazard.cpp +# End Source File +# Begin Source File + +SOURCE=.\LayerHazard.h +# End Source File +# Begin Source File + SOURCE=.\LayerItem.cpp # End Source File # Begin Source File @@ -425,6 +433,14 @@ SOURCE=.\GUILayerFX.h # End Source File # Begin Source File +SOURCE=.\GUILayerHazard.cpp +# End Source File +# Begin Source File + +SOURCE=.\GUILayerHazard.h +# End Source File +# Begin Source File + SOURCE=.\GUILayerList.cpp # End Source File # Begin Source File @@ -518,10 +534,18 @@ SOURCE=..\..\tools\MapEdit\actor.ini # End Source File # Begin Source File +SOURCE=..\..\tools\MapEdit\BackGfx.ini +# End Source File +# Begin Source File + SOURCE=..\..\tools\MapEdit\fx.ini # End Source File # Begin Source File +SOURCE=..\..\tools\MapEdit\Hazard.ini +# End Source File +# Begin Source File + SOURCE=..\..\tools\MapEdit\Item.ini # End Source File # Begin Source File diff --git a/Utils/MapEdit/MapEdit.h b/Utils/MapEdit/MapEdit.h index 9dc1fcec3..2eea410fc 100644 --- a/Utils/MapEdit/MapEdit.h +++ b/Utils/MapEdit/MapEdit.h @@ -33,8 +33,8 @@ public: { return(CurrentDoc); } - char *GetConfigStr(char *Grp,char *Key); - int GetConfigInt(char *Grp,char *Key); + char *GetConfigStr(const char *Grp,const char *Key); + int GetConfigInt(const char *Grp,const char *Key); // Overrides // ClassWizard generated virtual function overrides diff --git a/Utils/MapEdit/MapEdit.rc b/Utils/MapEdit/MapEdit.rc index 39590ffa1..9a3ec874a 100644 --- a/Utils/MapEdit/MapEdit.rc +++ b/Utils/MapEdit/MapEdit.rc @@ -532,60 +532,129 @@ BEGIN WS_TABSTOP END -IDD_LAYER_SHADE DIALOG DISCARDABLE 0, 0, 156, 166 +IDD_LAYER_SHADE DIALOG DISCARDABLE 0, 0, 156, 296 STYLE WS_CHILD FONT 8, "MS Sans Serif" BEGIN - EDITTEXT IDC_LAYERSHADE_EDITR0,45,15,20,12,ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITG0,65,15,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADER0,45,15,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_SHADEG0,65,15,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITB0,85,15,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADEB0,85,15,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP CTEXT "Count",IDC_LAYERSHADE_COUNTTEXT,5,5,25,10,SS_SUNKEN - EDITTEXT IDC_LAYERSHADE_EDITR1,45,30,20,12,ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITG1,65,30,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADER1,45,30,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_SHADEG1,65,30,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITB1,85,30,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADEB1,85,30,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITR2,45,45,20,12,ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITG2,65,45,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADER2,45,45,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_SHADEG2,65,45,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITB2,85,45,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADEB2,85,45,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP CTEXT "RGB",IDC_LAYERSHADE_TEXT7,45,5,60,8,SS_SUNKEN - EDITTEXT IDC_LAYERSHADE_EDITR3,45,60,20,12,ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITG3,65,60,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADER3,45,60,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_SHADEG3,65,60,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_EDITB3,85,60,20,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADEB3,85,60,20,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP - EDITTEXT IDC_LAYERSHADE_COUNTEDIT,5,15,25,12,ES_AUTOHSCROLL | + EDITTEXT IDC_LAYERSHADE_SHADECOUNT,5,15,25,12,ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER | NOT WS_TABSTOP - CONTROL "Spin2",IDC_SPIN2,"msctls_updown32",UDS_SETBUDDYINT | - UDS_ALIGNRIGHT | UDS_AUTOBUDDY,31,10,11,20 - COMBOBOX IDC_LAYERSHADE_BACKGFX0,5,75,140,220,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_LAYERSHADE_BACKGFX1,5,120,140,220,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - CONTROL "Spin",IDC_LAYERSHADE_SPIN0,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,5,90,30,10 - CONTROL "Move",IDC_LAYERSHADE_MOVE0,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,65,90,30,10 - CONTROL "Scale",IDC_LAYERSHADE_SCALE0,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,35,90,30,10 - CONTROL "Color",IDC_LAYERSHADE_COLOR0,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,95,90,30,10 - COMBOBOX IDC_LAYERSHADE_TRANS0,5,100,140,81,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - CONTROL "Spin",IDC_LAYERSHADE_SPIN1,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,5,135,30,10 - CONTROL "Move",IDC_LAYERSHADE_MOVE1,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,65,135,30,10 - CONTROL "Scale",IDC_LAYERSHADE_SCALE1,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,35,135,30,10 - CONTROL "Color",IDC_LAYERSHADE_COLOR1,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,95,135,30,10 - COMBOBOX IDC_LAYERSHADE_TRANS1,5,146,140,81,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP + CONTROL "Spin2",IDC_LAYERSHADE_SHADECOUNT_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY,31,10, + 11,20 + EDITTEXT IDC_LAYERSHADE_GFX_CURRENT,5,100,30,12,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin1",IDC_LAYERSHADE_GFX_CURRENT_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNLEFT | UDS_AUTOBUDDY | + UDS_ARROWKEYS | UDS_NOTHOUSANDS,125,100,11,15 + CTEXT "Gfx",IDC_LAYERSHADE_COUNTTEXT2,5,75,145,10,SS_SUNKEN + COMBOBOX IDC_LAYERSHADE_GFX_LIST,5,116,145,190,CBS_DROPDOWNLIST | + WS_VSCROLL + PUSHBUTTON "Goto",IDC_LAYERSHADE_GFX_GOTO,5,130,70,15,NOT + WS_TABSTOP + PUSHBUTTON "Delete",IDC_LAYERSHADE_GFX_DELETE,80,130,70,15,NOT + WS_TABSTOP + CTEXT "Pos",IDC_LAYERSHADE_POSTEXT,5,150,25,10,SS_SUNKEN + CTEXT "XY0",IDC_LAYERSHADE_XYTEXT0,5,166,70,10,SS_SUNKEN + EDITTEXT IDC_LAYERSHADE_GFX_X0,5,175,35,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_X0,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,115,5,11,15 + EDITTEXT IDC_LAYERSHADE_GFX_Y0,40,175,34,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_Y0,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,125,5,11,15 + CTEXT "XY1",IDC_LAYERSHADE_XYTEXT1,80,166,70,10,SS_SUNKEN + EDITTEXT IDC_LAYERSHADE_GFX_X1,80,175,35,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_X1,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,135,5,11,15 + EDITTEXT IDC_LAYERSHADE_GFX_Y1,115,175,35,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_Y1,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,145,5,11,15 + CTEXT "XY2",IDC_LAYERSHADE_XYTEXT2,5,201,70,10,SS_SUNKEN + EDITTEXT IDC_LAYERSHADE_GFX_X2,5,210,35,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_X2,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,115,20,11,15 + EDITTEXT IDC_LAYERSHADE_GFX_Y2,40,210,34,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_Y2,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,125,20,11,15 + CTEXT "XY3",IDC_LAYERSHADE_XYTEXT3,80,201,70,10,SS_SUNKEN + EDITTEXT IDC_LAYERSHADE_GFX_X3,80,210,35,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_X3,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,135,20,11,15 + EDITTEXT IDC_LAYERSHADE_GFX_Y3,115,210,35,10,ES_AUTOHSCROLL | + ES_READONLY | ES_NUMBER | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_SPIN_Y3,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,145,20,11,15 + COMBOBOX IDC_LAYERSHADE_GFX_TRANSLIST,5,250,145,70, + CBS_DROPDOWNLIST + CTEXT "Transparency Mode",IDC_LAYERSHADE_TRANSTEXT,5,241,145, + 10,SS_SUNKEN + EDITTEXT IDC_LAYERSHADE_GFXR0,5,185,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXG0,25,185,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXB0,45,185,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXR1,80,185,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXG1,100,185,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXB1,120,185,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXR2,5,220,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXG2,25,220,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXB2,45,220,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXR3,80,220,20,12,ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXG3,100,220,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFXB3,120,220,20,12,ES_AUTOHSCROLL | + ES_NUMBER | WS_GROUP + EDITTEXT IDC_LAYERSHADE_GFX_X,30,150,25,10,ES_AUTOHSCROLL | + ES_READONLY | NOT WS_TABSTOP + CONTROL "Spin1",IDC_LAYERSHADE_GFX_XSPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,95,145,11,15 + EDITTEXT IDC_LAYERSHADE_GFX_Y,55,150,25,10,ES_AUTOHSCROLL | + ES_READONLY | NOT WS_TABSTOP + CONTROL "Spin3",IDC_LAYERSHADE_GFX_YSPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,110,145,11,15 + COMBOBOX IDC_LAYERSHADE_DEF_LIST,5,85,145,100,CBS_DROPDOWNLIST END IDD_LAYER_COLLISION DIALOG DISCARDABLE 0, 0, 156, 41 @@ -692,7 +761,7 @@ BEGIN WS_VSCROLL | WS_TABSTOP END -IDD_LAYER_TRIGGER DIALOG DISCARDABLE 0, 0, 156, 26 +IDD_LAYER_TRIGGER DIALOG DISCARDABLE 0, 0, 156, 46 STYLE WS_CHILD FONT 8, "MS Sans Serif" BEGIN @@ -707,6 +776,17 @@ BEGIN CONTROL "Spin1",IDC_TRIGGER_HEIGHT_SPIN,"msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,100,5,11,10 + RTEXT "Target",IDC_TRIGGER_TARGET,0,25,22,8 + EDITTEXT IDC_TRIGGER_TARGETX,25,25,24,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_TRIGGER_TARGETX_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,90,25,11,10 + EDITTEXT IDC_TRIGGER_TARGETY,50,25,25,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_TRIGGER_TARGETY_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,100,25,11,10 END IDD_LAYER_FX DIALOG DISCARDABLE 0, 0, 156, 56 @@ -729,6 +809,44 @@ BEGIN UDS_ARROWKEYS | UDS_NOTHOUSANDS,50,25,11,13 END +IDD_LAYER_HAZARD DIALOG DISCARDABLE 0, 0, 156, 96 +STYLE WS_CHILD +FONT 8, "MS Sans Serif" +BEGIN + RTEXT "Speed",IDC_HAZARD_SPEED_TEXT,5,5,32,8 + EDITTEXT IDC_HAZARD_SPEED,41,5,35,12,ES_AUTOHSCROLL | ES_READONLY + CONTROL "Spin1",IDC_HAZARD_SPEED_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,75,5,11,10 + RTEXT "TurnRate",IDC_HAZARD_TURNRATE_TEXT,5,20,31,8 + EDITTEXT IDC_HAZARD_TURNRATE,41,20,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_HAZARD_TURNRATE_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,75,20,11,10 + RTEXT "Health",IDC_HAZARD_HEALTH_TEXT,5,39,32,8 + EDITTEXT IDC_HAZARD_HEALTH,41,39,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_HAZARD_HEALTH_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,75,39,11,10 + RTEXT "Attack",IDC_HAZARD_ATTACK_TEXT,5,55,31,8 + EDITTEXT IDC_HAZARD_ATTACK,41,55,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_HAZARD_ATTACK_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,75,55,11,10 + CONTROL "Collision",IDC_HAZARD_COLLISION,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_RIGHT | WS_TABSTOP,90, + 5,50,10 + RTEXT "Respawn",IDC_HAZARD_RESPAWN_TEXT,5,70,31,8 + EDITTEXT IDC_HAZARD_RESPAWN,41,70,35,12,ES_AUTOHSCROLL | + ES_READONLY + CONTROL "Spin1",IDC_HAZARD_RESPAWN_SPIN,"msctls_updown32", + UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | + UDS_ARROWKEYS,75,70,11,10 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -791,7 +909,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 149 TOPMARGIN, 7 - BOTTOMMARGIN, 159 + BOTTOMMARGIN, 289 END IDD_LAYER_COLLISION, DIALOG @@ -847,7 +965,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 149 TOPMARGIN, 7 - BOTTOMMARGIN, 19 + BOTTOMMARGIN, 39 END IDD_LAYER_FX, DIALOG @@ -857,6 +975,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 49 END + + IDD_LAYER_HAZARD, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 149 + TOPMARGIN, 7 + BOTTOMMARGIN, 89 + END END #endif // APSTUDIO_INVOKED diff --git a/Utils/MapEdit/resource.h b/Utils/MapEdit/resource.h index 0474b9445..ae5bd5732 100644 --- a/Utils/MapEdit/resource.h +++ b/Utils/MapEdit/resource.h @@ -24,6 +24,7 @@ #define IDD_LAYER_PLATFORM 183 #define IDD_LAYER_TRIGGER 184 #define IDD_LAYER_FX 185 +#define IDD_LAYER_HAZARD 186 #define IDC_TOOLBAR_COMBO 1018 #define IDC_LAYERLIST_LIST 1019 #define IDD_TILEBANK_UPDATE 1029 @@ -40,37 +41,70 @@ #define IDC_LAYERLIST_DELETE 1057 #define IDC_ADDLAYER_LIST 1058 #define IDC_LAYERSHADE_EDITR0 1060 +#define IDC_LAYERSHADE_SHADER0 1060 #define IDC_LAYERSHADE_EDITG0 1061 +#define IDC_LAYERSHADE_SHADEG0 1061 #define IDC_LAYERSHADE_EDITB0 1062 +#define IDC_LAYERSHADE_SHADEB0 1062 #define IDC_LAYERSHADE_EDITR1 1064 +#define IDC_LAYERSHADE_SHADER1 1064 #define IDC_LAYERSHADE_EDITG1 1065 +#define IDC_LAYERSHADE_SHADEG1 1065 #define IDC_LAYERSHADE_EDITB1 1066 +#define IDC_LAYERSHADE_SHADEB1 1066 #define IDC_LAYERSHADE_COUNTEDIT 1074 +#define IDC_LAYERSHADE_SHADECOUNT 1074 #define IDC_LAYERSHADE_COUNTTEXT 1075 #define IDC_SPIN2 1076 +#define IDC_LAYERSHADE_SHADECOUNT_SPIN 1076 +#define IDC_LAYERSHADE_COUNTTEXT2 1077 #define IDC_LAYERCOLLISION_NORMAL 1078 +#define IDC_LAYERSHADE_POSTEXT 1078 +#define IDC_LAYERSHADE_XYTEXT0 1079 #define IDD_ELEM_LIST 1080 +#define IDC_LAYERSHADE_XYTEXT1 1080 #define IDC_LAYERSHADE_EDITR2 1081 +#define IDC_LAYERSHADE_SHADER2 1081 #define IDC_LAYERSHADE_EDITG2 1082 #define IDC_LAYERCOLLISION_DAMAGE 1082 +#define IDC_LAYERSHADE_SHADEG2 1082 #define IDC_LAYERSHADE_EDITB2 1083 #define IDC_LAYERCOLLISION_SLIPPERY 1083 +#define IDC_LAYERSHADE_SHADEB2 1083 #define IDC_LAYERCOLLISION_ELECTRIC 1084 +#define IDC_LAYERSHADE_XYTEXT2 1084 #define IDC_LAYERCOLLISION_STICKY 1085 +#define IDC_LAYERSHADE_XYTEXT3 1085 #define IDC_LAYERSHADE_TEXT7 1086 #define IDC_LAYERCOLLISION_WATER 1086 #define IDC_ACTOR_SPEED_TEXT 1086 #define IDC_LAYERSHADE_EDITR3 1087 #define IDC_LAYERCOLLISION_SOLID 1087 #define IDC_ACTOR_SPEED 1087 +#define IDC_LAYERSHADE_SHADER3 1087 #define IDC_LAYERSHADE_EDITG3 1088 #define IDC_LAYERCOLLISION_DEATH 1088 +#define IDC_LAYERSHADE_SHADEG3 1088 #define IDC_LAYERSHADE_EDITB3 1089 +#define IDC_LAYERSHADE_SHADEB3 1089 +#define IDC_LAYERSHADE_TRANSTEXT 1090 +#define IDC_LAYERSHADE_GFXR0 1091 #define IDC_ACTOR_SPEED_SPIN 1092 +#define IDC_LAYERSHADE_GFXG0 1092 +#define IDC_LAYERSHADE_GFXB0 1093 #define IDC_ACTOR_PLAYER 1094 +#define IDC_LAYERSHADE_GFXR1 1094 +#define IDC_LAYERSHADE_GFXG1 1095 +#define IDC_LAYERSHADE_GFXB1 1096 #define IDC_ACTOR_TURNRATE_TEXT 1097 #define IDC_ACTOR_TURNRATE 1098 #define IDC_ACTOR_TURNRATE_SPIN 1099 +#define IDC_LAYERSHADE_GFXR2 1101 +#define IDC_LAYERSHADE_GFXG2 1102 +#define IDC_LAYERSHADE_GFXB2 1103 +#define IDC_LAYERSHADE_GFXR3 1107 +#define IDC_LAYERSHADE_GFXG3 1108 +#define IDC_LAYERSHADE_GFXB3 1109 #define IDC_ACTOR_HEALTH_TEXT 1112 #define IDC_ACTOR_HEALTH 1113 #define IDC_ACTOR_HEALTH_SPIN 1114 @@ -100,26 +134,63 @@ #define IDC_TRIGGER_HEIGHT 1142 #define IDC_TRIGGER_WIDTH_SPIN 1143 #define IDC_FX_SPEED_TEXT 1144 +#define IDC_TRIGGER_TARGET 1144 +#define IDC_TRIGGER_TARGETX 1145 #define IDC_FX_SIZE_TEXT 1146 +#define IDC_TRIGGER_TARGETX_SPIN 1146 #define IDC_FX_WIDTH 1147 +#define IDC_TRIGGER_TARGETY 1147 #define IDC_FX_HEIGHT 1148 #define IDC_FX_WIDTH_SPIN 1149 #define IDC_FX_HEIGHT_SPIN 1150 #define IDC_FX_SPEED 1151 #define IDC_FX_SPEED_SPIN 1152 -#define IDC_LAYERSHADE_BACKGFX0 1153 -#define IDC_LAYERSHADE_SPIN0 1154 -#define IDC_LAYERSHADE_BACKGFX1 1155 -#define IDC_LAYERSHADE_MOVE0 1156 -#define IDC_LAYERSHADE_SCALE0 1157 -#define IDC_LAYERSHADE_COLOR0 1158 -#define IDC_LAYERSHADE_SPIN1 1159 -#define IDC_LAYERSHADE_MOVE1 1160 -#define IDC_LAYERSHADE_SCALE1 1161 -#define IDC_LAYERSHADE_TRANS0 1162 -#define IDC_LAYERSHADE_COLOR1 1163 #define IDC_TRIGGER_HEIGHT_SPIN 1163 -#define IDC_LAYERSHADE_TRANS1 1164 +#define IDC_TRIGGER_TARGETY_SPIN 1164 +#define IDC_HAZARD_SPEED_TEXT 1169 +#define IDC_HAZARD_TURNRATE_TEXT 1170 +#define IDC_HAZARD_HEALTH_TEXT 1171 +#define IDC_HAZARD_ATTACK_TEXT 1172 +#define IDC_HAZARD_SPEED 1173 +#define IDC_HAZARD_TURNRATE 1174 +#define IDC_HAZARD_HEALTH 1175 +#define IDC_HAZARD_ATTACK 1176 +#define IDC_HAZARD_SPEED_SPIN 1177 +#define IDC_HAZARD_TURNRATE_SPIN 1178 +#define IDC_HAZARD_HEALTH_SPIN 1179 +#define IDC_HAZARD_ATTACK_SPIN 1180 +#define IDC_HAZARD_COLLISION 1181 +#define IDC_HAZARD_RESPAWN_TEXT 1182 +#define IDC_HAZARD_RESPAWN 1183 +#define IDC_LAYERSHADE_GFX_CURRENT 1183 +#define IDC_HAZARD_RESPAWN_SPIN 1184 +#define IDC_LAYERSHADE_GFX_CURRENT_SPIN 1184 +#define IDC_LAYERSHADE_GFX_LIST 1186 +#define IDC_LAYERSHADE_GFX_GOTO 1190 +#define IDC_LAYERSHADE_GFX_DELETE 1191 +#define IDC_LAYERSHADE_GFX_X0 1192 +#define IDC_LAYERSHADE_GFX_SPIN_X0 1193 +#define IDC_LAYERSHADE_GFX_Y0 1194 +#define IDC_LAYERSHADE_GFX_SPIN_Y0 1195 +#define IDC_LAYERSHADE_GFX_X1 1196 +#define IDC_LAYERSHADE_GFX_SPIN_X1 1197 +#define IDC_LAYERSHADE_GFX_Y1 1198 +#define IDC_LAYERSHADE_GFX_SPIN_Y1 1199 +#define IDC_LAYERSHADE_GFX_X2 1200 +#define IDC_LAYERSHADE_GFX_SPIN_X2 1201 +#define IDC_LAYERSHADE_GFX_Y2 1202 +#define IDC_LAYERSHADE_GFX_SPIN_Y2 1203 +#define IDC_LAYERSHADE_GFX_X3 1204 +#define IDC_LAYERSHADE_GFX_SPIN_X3 1205 +#define IDC_LAYERSHADE_GFX_Y3 1206 +#define IDC_LAYERSHADE_GFX_SPIN_Y3 1207 +#define IDC_LAYERSHADE_GFX_TRANSLIST 1208 +#define IDC_LAYERSHADE_GFX_X 1209 +#define IDC_LAYERSHADE_GFX_NEW 1210 +#define IDC_LAYERSHADE_GFX_XSPIN 1211 +#define IDC_LAYERSHADE_GFX_Y 1212 +#define IDC_LAYERSHADE_GFX_YSPIN 1213 +#define IDC_LAYERSHADE_DEF_LIST 1214 #define ID_TOOLBAR_TILEPALETTE 32774 #define ID_TOOLBAR_PARAMBAR 32783 #define ID_TOGGLE_SUBVIEW 32785 @@ -145,7 +216,7 @@ #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 180 #define _APS_NEXT_COMMAND_VALUE 32801 -#define _APS_NEXT_CONTROL_VALUE 1164 +#define _APS_NEXT_CONTROL_VALUE 1215 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/Utils/MkLevel/Layers/MkLevelLayerActor.cpp b/Utils/MkLevel/Layers/MkLevelLayerActor.cpp index ef1a0cf62..c50733e2c 100644 --- a/Utils/MkLevel/Layers/MkLevelLayerActor.cpp +++ b/Utils/MkLevel/Layers/MkLevelLayerActor.cpp @@ -72,11 +72,11 @@ int i,ListSize=ThingList.size(); sThingActor OutThing; OutThing.Type=ThisThing.Type; - OutThing.Health=ThisThing.Data.Health; - OutThing.AttackStrength=ThisThing.Data.AttackStrength; - OutThing.Speed=ThisThing.Data.Speed; - OutThing.TurnRate=ThisThing.Data.TurnRate; - OutThing.Flags=ThisThing.Data.CollisionFlag; + OutThing.Health=ThisThing.Data.Actor.ActorHealth; + OutThing.AttackStrength=ThisThing.Data.Actor.ActorAttackStrength; + OutThing.Speed=ThisThing.Data.Actor.ActorSpeed; + OutThing.TurnRate=ThisThing.Data.Actor.ActorTurnRate; + OutThing.Flags=ThisThing.Data.Actor.ActorCollisionFlag; OutThing.PointCount=PointCount; fwrite(&OutThing,sizeof(sThingActor),1,File); diff --git a/Utils/MkLevel/Layers/MkLevelLayerFX.cpp b/Utils/MkLevel/Layers/MkLevelLayerFX.cpp index 1b192cfed..6ef9ba82a 100644 --- a/Utils/MkLevel/Layers/MkLevelLayerFX.cpp +++ b/Utils/MkLevel/Layers/MkLevelLayerFX.cpp @@ -50,11 +50,11 @@ int i,ListSize=ThingList.size(); sThingFX OutThing; OutThing.Type=ThisThing.Type; - OutThing.Speed=ThisThing.Data.Speed; + OutThing.Speed=ThisThing.Data.FX.FXSpeed; OutThing.Pos.X=ThisThing.XY[0].x; OutThing.Pos.Y=ThisThing.XY[0].y; - OutThing.Size.X=ThisThing.Data.Width; - OutThing.Size.Y=ThisThing.Data.Height; + OutThing.Size.X=ThisThing.Data.FX.FXWidth; + OutThing.Size.Y=ThisThing.Data.FX.FXHeight; fwrite(&OutThing,sizeof(sThingFX),1,File); } diff --git a/Utils/MkLevel/Layers/MkLevelLayerHazard.cpp b/Utils/MkLevel/Layers/MkLevelLayerHazard.cpp index a37a21a5e..3db581533 100644 --- a/Utils/MkLevel/Layers/MkLevelLayerHazard.cpp +++ b/Utils/MkLevel/Layers/MkLevelLayerHazard.cpp @@ -1,12 +1,12 @@ /**********************/ -/*** Layer Platform ***/ +/*** Layer Hazard ***/ /**********************/ #include #include //#include "MkLevel.h" -#include "MkLevelLayerPlatform.h" +#include "MkLevelLayerHazard.h" /*****************************************************************************/ @@ -14,7 +14,7 @@ /*** Pre-Process *************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -void CMkLevelLayerPlatform::PreProcess(CMkLevel *Core) +void CMkLevelLayerHazard::PreProcess(CMkLevel *Core) { int i,ListSize; ProcessList(Core); @@ -24,10 +24,11 @@ int i,ListSize; for (i=0; iAddModel(ThisThing); + RemapTable[i]=Core->AddModel(ThisThing.Name,ThisThing.Data.Hazard.HazardTriStart,ThisThing.Data.Hazard.HazardTriCount); + } - printf("%i Platforms\n",ThingList.size()); + printf("%i Hazards\n",ThingList.size()); } /*****************************************************************************/ @@ -35,7 +36,7 @@ int i,ListSize; /*** Process *****************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -void CMkLevelLayerPlatform::Process(CMkLevel *Core) +void CMkLevelLayerHazard::Process(CMkLevel *Core) { } @@ -44,7 +45,7 @@ void CMkLevelLayerPlatform::Process(CMkLevel *Core) /** Write ********************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -int CMkLevelLayerPlatform::Write(FILE *File,const char *LayerName,const char *MapName) +int CMkLevelLayerHazard::Write(FILE *File,const char *LayerName,const char *MapName) { int ThisPos=ftell(File); sThingHdr Hdr; @@ -57,15 +58,16 @@ int i,ListSize=ThingList.size(); { sMkLevelLayerThing &ThisThing=ThingList[i]; int p,PointCount=ThisThing.XY.size(); - sThingPlatform OutThing; + sThingHazard OutThing; OutThing.Type=ThisThing.Type; - OutThing.Speed=ThisThing.Data.Platform.PlatformSpeed; - OutThing.TurnRate=ThisThing.Data.Platform.PlatformTurnRate; - OutThing.Flags=ThisThing.Data.Platform.PlatformCollisionFlag; + OutThing.Speed=ThisThing.Data.Hazard.HazardSpeed; + OutThing.TurnRate=ThisThing.Data.Hazard.HazardTurnRate; + OutThing.Flags=ThisThing.Data.Hazard.HazardCollisionFlag; OutThing.PointCount=PointCount; + OutThing.Respawn=ThisThing.Data.Hazard.HazardRespawn; OutThing.Gfx=RemapTable[i]; - fwrite(&OutThing,sizeof(sThingPlatform),1,File); + fwrite(&OutThing,sizeof(sThingHazard),1,File); for (p=0;p /*****************************************************************************/ -class CMkLevelLayerPlatform : public CMkLevelLayerThing +class CMkLevelLayerHazard : public CMkLevelLayerThing { public: - CMkLevelLayerPlatform(sExpLayerHdr *LayerHdr) : CMkLevelLayerThing(LayerHdr){}; -const char *GetTypeName() {return("PLATFORM");} + CMkLevelLayerHazard(sExpLayerHdr *LayerHdr) : CMkLevelLayerThing(LayerHdr){}; +const char *GetTypeName() {return("HAZARD");} void PreProcess(CMkLevel *Core); void Process(CMkLevel *Core); diff --git a/Utils/MkLevel/Layers/MkLevelLayerPlatform.cpp b/Utils/MkLevel/Layers/MkLevelLayerPlatform.cpp index fe682f5b3..2f4de51fa 100644 --- a/Utils/MkLevel/Layers/MkLevelLayerPlatform.cpp +++ b/Utils/MkLevel/Layers/MkLevelLayerPlatform.cpp @@ -24,7 +24,7 @@ int i,ListSize; for (i=0; iAddModel(ThisThing); + RemapTable[i]=Core->AddModel(ThisThing.Name,ThisThing.Data.Platform.PlatformTriStart,ThisThing.Data.Platform.PlatformTriCount); } printf("%i Platforms\n",ThingList.size()); @@ -60,9 +60,9 @@ int i,ListSize=ThingList.size(); sThingPlatform OutThing; OutThing.Type=ThisThing.Type; - OutThing.Speed=ThisThing.Data.Speed; - OutThing.TurnRate=ThisThing.Data.TurnRate; - OutThing.Flags=ThisThing.Data.CollisionFlag; + OutThing.Speed=ThisThing.Data.Platform.PlatformSpeed; + OutThing.TurnRate=ThisThing.Data.Platform.PlatformTurnRate; + OutThing.Flags=ThisThing.Data.Platform.PlatformCollisionFlag; OutThing.PointCount=PointCount; OutThing.Gfx=RemapTable[i]; fwrite(&OutThing,sizeof(sThingPlatform),1,File); diff --git a/Utils/MkLevel/Layers/MkLevelLayerShade.cpp b/Utils/MkLevel/Layers/MkLevelLayerShade.cpp index c850e5314..6170904d1 100644 --- a/Utils/MkLevel/Layers/MkLevelLayerShade.cpp +++ b/Utils/MkLevel/Layers/MkLevelLayerShade.cpp @@ -13,9 +13,9 @@ /*****************************************************************************/ CMkLevelLayerShade::CMkLevelLayerShade(sExpLayerHdr *LayerHdr) { +int i,ListSize; int *iPtr; u8 *Ptr=(u8*)LayerHdr; -u8 *RGB; Type=LayerHdr->Type; SubType=LayerHdr->SubType; @@ -24,32 +24,37 @@ u8 *RGB; iPtr=(int*)(Ptr+sizeof(sExpLayerHdr)); - Count=*iPtr++; - List.resize(LAYER_SHADE_RGB_MAX); - for (int i=0; iR; + ShadeHdr.RGB[i][1]=RGB->G; + ShadeHdr.RGB[i][2]=RGB->B; + RGB++; } - Trans[0]=*iPtr++; - Flags[0]=*iPtr++; - Trans[1]=*iPtr++; - Flags[1]=*iPtr++; + iPtr=(int*)RGB; -// Load back gfx -char *c=(char*)iPtr; - BackGfx[0]=c; - c+=strlen(c)+1; - BackGfx[1]=c; + ListSize=*iPtr++; + GfxList.resize(ListSize); +sLayerShadeGfx *GfxPtr=(sLayerShadeGfx*)iPtr; + for (i=0; iGetConfigStr("MISC","BackGfxDir"); +int i,ListSize=GfxList.size(); +int Idx; +GString Path=Core->GetConfigStr("MISC","BackGfxDir"); +CTexGrab &TexGrab=Core->GetTexGrab(); - for (int i=0; i<2; i++) - { - if (!BackGfx[i].Empty()) + for (i=0; iGetTexGrab(); - - NewGfx.Name=Filename; - NewGfx.TexID=-1; - -int Idx=BackGfxList.Add(NewGfx); - - if (BackGfxList[Idx].TexID==-1) + if (Idx==-1) { TexGrab.ZeroColZero(true); - BackGfxList[Idx].TexID=TexGrab.AddFile(BackGfxList[Idx].Name); + NewType.TexID=TexGrab.AddFile(NewType.Name); TexGrab.ZeroColZero(false); + + Idx=OutTypeList.Add(NewType); } - - return(BackGfxList[Idx].TexID); + ThisGfx.Gfx=Idx; + } } @@ -102,30 +96,24 @@ int Idx=BackGfxList.Add(NewGfx); /*****************************************************************************/ void CMkLevelLayerShade::Process(CMkLevel *Core) { +int i,ListSize=OutTypeList.size(); CTexGrab &TexGrab=Core->GetTexGrab(); //printf("Process Shade Layer\n"); - for (int i=0; i<2; i++) + for (i=0; i -/*****************************************************************************/ -struct SMkLayerShadeRGB -{ - int Pos; - u8 RGB[3]; -}; - /*****************************************************************************/ struct sBackGfxList { - GString Name; - int TexID; + GString Name; + int TexID; + sLayerShadeBackGfxType Out; bool operator ==(sBackGfxList const &v1) {return(Name==v1.Name);} }; @@ -33,18 +27,16 @@ public: void PreProcess(CMkLevel *Core); void Process(CMkLevel *Core); int Write(FILE *File,const char *LayerName,const char *MapName); - int AddBackGfx(CMkLevel *Core,const char *Filename); protected: - int Count; - vector List; - GString BackGfx[2]; - int Flags[2]; - int Trans[2]; + int WriteTypeList(FILE *File); + int WriteGfxList(FILE *File); - CList BackGfxList; - int TexID[2]; - sLayerShadeHdr Data; + CList TypeNameList; + CList GfxList; + + CList OutTypeList; + sLayerShadeHdr ShadeHdr; }; /*****************************************************************************/ diff --git a/Utils/MkLevel/Layers/MkLevelLayerTrigger.cpp b/Utils/MkLevel/Layers/MkLevelLayerTrigger.cpp index bb74d7123..e072e5cdb 100644 --- a/Utils/MkLevel/Layers/MkLevelLayerTrigger.cpp +++ b/Utils/MkLevel/Layers/MkLevelLayerTrigger.cpp @@ -52,8 +52,8 @@ int i,ListSize=ThingList.size(); OutThing.Type=ThisThing.Type; OutThing.Pos.X=ThisThing.XY[0].x; OutThing.Pos.Y=ThisThing.XY[0].y; - OutThing.Width=ThisThing.Data.Width; - OutThing.Height=ThisThing.Data.Height; + OutThing.Width=ThisThing.Data.Trigger.TriggerWidth; + OutThing.Height=ThisThing.Data.Trigger.TriggerHeight; fwrite(&OutThing,sizeof(sThingTrigger),1,File); } diff --git a/Utils/MkLevel/MkLevel.cpp b/Utils/MkLevel/MkLevel.cpp index b41a67bc9..88a004515 100644 --- a/Utils/MkLevel/MkLevel.cpp +++ b/Utils/MkLevel/MkLevel.cpp @@ -23,6 +23,7 @@ #include "Layers\MkLevelLayerPlatform.h" #include "Layers\MkLevelLayerFX.h" #include "Layers\MkLevelLayerTrigger.h" +#include "Layers\MkLevelLayerHazard.h" //*************************************************************************** const GString ConfigFilename="MkLevel.ini"; @@ -172,12 +173,12 @@ int ChildCount=ThisNode.GetPruneChildCount(); } //*************************************************************************** -int CMkLevel::AddModel(sMkLevelLayerThing &ThisThing) +int CMkLevel::AddModel(const char *Name,int TriStart,int TriCount) { sMkLevelModel ThisModel; int Idx; - ThisModel.Name=ThisThing.Name; + ThisModel.Name=Name; Idx=ModelList.Find(ThisModel); if (Idx!=-1) @@ -186,13 +187,13 @@ int Idx; } Idx=ModelList.size(); ThisModel.TriStart=ModelFaceList.GetFaceCount(); - ThisModel.TriCount=ThisThing.Data.TriCount; + ThisModel.TriCount=TriCount; // Add tri data - for (int i=0;iGetTotalFrameCount(); @@ -444,6 +445,8 @@ sActorPool *Actor=ActorList; CActorGfx::CActorGfx(sActorPool *ThisActor) { PoolEntry=ThisActor; + ShadowXOfs=DEF_SHADOW_OFS; + ShadowYOfs=DEF_SHADOW_OFS; } /*****************************************************************************/ @@ -461,23 +464,10 @@ u16 ThisFrame=ThisAnim->Anim[Frame]; return(PoolEntry->ActorGfx->FrameList+ThisFrame); } -/*****************************************************************************/ -int CActorGfx::GetTotalFrameCount() -{ -int Total=0; - for (int Anim=0; AnimActorGfx->AnimCount; Anim++) - { - sSpriteAnim *ThisAnim=PoolEntry->ActorGfx->AnimList+Anim; - Total+=ThisAnim->FrameCount; - } - - return(Total); -} - /*****************************************************************************/ int ActorOT=10; -POLY_FT4 *CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool XFlip,bool YFlip,bool Shadow) +POLY_FT4 *CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool XFlip,bool YFlip) { sPoolNode *ThisNode;; @@ -539,7 +529,7 @@ POLY_FT4 *Ft4; Ft4->clut=PoolEntry->ActorGfx->Clut; AddPrimToList(Ft4,ActorOT); - if (Shadow) + if (ShadowFlag) { POLY_FT4 *sFt4=GetPrimFT4(); *sFt4=*Ft4; diff --git a/source/gfx/actor.h b/source/gfx/actor.h index 3923e0e83..29409eaa7 100644 --- a/source/gfx/actor.h +++ b/source/gfx/actor.h @@ -136,20 +136,23 @@ class CActorGfx public: enum { - ShadowXOfs =32, - ShadowYOfs =32, + DEF_SHADOW_OFS=32, }; CActorGfx(sActorPool *ThisActor); virtual ~CActorGfx(); - POLY_FT4 *Render(DVECTOR &Pos,int Anim,int Frame,bool FlipX=false,bool FlipY=false,bool Shadow=false); + POLY_FT4 *Render(DVECTOR &Pos,int Anim,int Frame,bool FlipX=false,bool FlipY=false); POLY_FT4 *RotateScale(POLY_FT4 *Ft4,DVECTOR &Pos,int Angle,int XScale,int YScale); int getFrameCount(int Anim) {return(PoolEntry->ActorGfx->AnimList[Anim].FrameCount);} - int GetTotalFrameCount(); + int GetTotalFrameCount() {return(PoolEntry->ActorGfx->FrameCount);} sBBox &GetBBox() {return(BBox);} + + void SetShadow(bool f) {ShadowFlag=f;} + void SetShadowOfs(int X,int Y) {ShadowXOfs=X; ShadowYOfs=Y;} + protected: void SetUpFT4(POLY_FT4 *Ft4,sSpriteFrame *Frame,sPoolNode *Node,int X,int Y,bool XFlip,bool YFlip); sSpriteFrame *GetFrame(int Anim,int Frame); @@ -158,6 +161,8 @@ protected: sSpriteFrame *CurrentFrame; sBBox BBox; + bool ShadowFlag; + s16 ShadowXOfs,ShadowYOfs; }; /*****************************************************************************/ diff --git a/source/level/layerback.cpp b/source/level/layerback.cpp index 55cf72854..74cea0e73 100644 --- a/source/level/layerback.cpp +++ b/source/level/layerback.cpp @@ -41,10 +41,10 @@ CLayerBack::CLayerBack(sLevelHdr *LevelHdr,sLayerHdr *Hdr) : CLayerTile(LevelHdr { Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr)); - ASSERT(Data->Count<=LAYER_SHADE_RGB_MAX); - BandCount=Data->Count-1; + ASSERT(Data->BandCount<=LAYER_SHADE_RGB_MAX); + BandCount=Data->BandCount-1; // Setup back gfx - +/* for (int i=0; iData[i+0].RGB[0],Data->Data[i+0].RGB[1],Data->Data[i+0].RGB[2]); - setRGB1(&Band[i],Data->Data[i+0].RGB[0],Data->Data[i+0].RGB[1],Data->Data[i+0].RGB[2]); - setRGB2(&Band[i],Data->Data[i+1].RGB[0],Data->Data[i+1].RGB[1],Data->Data[i+1].RGB[2]); - setRGB3(&Band[i],Data->Data[i+1].RGB[0],Data->Data[i+1].RGB[1],Data->Data[i+1].RGB[2]); + setRGB0(&Band[i],Data->RGB[i+0][0],Data->RGB[i+0][1],Data->RGB[i+0][2]); + setRGB1(&Band[i],Data->RGB[i+0][0],Data->RGB[i+0][1],Data->RGB[i+0][2]); + setRGB2(&Band[i],Data->RGB[i+1][0],Data->RGB[i+1][1],Data->RGB[i+1][2]); + setRGB3(&Band[i],Data->RGB[i+1][0],Data->RGB[i+1][1],Data->RGB[i+1][2]); } PosDx=0; @@ -121,6 +121,7 @@ void CLayerBack::shutdown() /*****************************************************************************/ void CLayerBack::InitSprite(sBackSprite *SpritePtr) { +/* int StartPos=getRnd(); int Pos=getRnd(); @@ -199,7 +200,7 @@ int i; i=getRndRange(BackRGBTableSize-1); SpritePtr->Poly.r2=BackRGBTable[i].R; SpritePtr->Poly.g2=BackRGBTable[i].G; SpritePtr->Poly.b2=BackRGBTable[i].B; i=getRndRange(BackRGBTableSize-1); SpritePtr->Poly.r3=BackRGBTable[i].R; SpritePtr->Poly.g3=BackRGBTable[i].G; SpritePtr->Poly.b3=BackRGBTable[i].B; } - +*/ } @@ -226,7 +227,7 @@ void CLayerBack::render() const int OTPos=(MAX_OT-1); sOT *ThisOT=OtPtr+OTPos; int i,ThisY=-YOfs; - +/* // Render Back Sprites #if 0 sBackSprite *SpritePtr=SpriteList; @@ -270,7 +271,7 @@ sBox Box; SpritePtr++; } #endif - +*/ // Render Back Shade for (i=0; i