This commit is contained in:
parent
16645de3b0
commit
b26a6d76bb
38 changed files with 517 additions and 137 deletions
|
@ -84,23 +84,18 @@ inline bool uvaprox( sUV &uv0, sUV &uv1 )
|
|||
//***************************************************************************
|
||||
void CFaceStore::SetTPageFlag(CFace &F,int MatFlag)
|
||||
{
|
||||
int Trans=0;
|
||||
|
||||
switch (MatFlag>>3)
|
||||
{
|
||||
// case 0: Trans=2; break; /* Subtractive */
|
||||
case 1: Trans=1; break; /* Additive */
|
||||
// case 0: F.TPageFlag=2; break; /* Subtractive */
|
||||
case 1: F.TPageFlag=1; break; /* Additive */
|
||||
default: F.TPageFlag=0; break;
|
||||
}
|
||||
// Trans=1;
|
||||
F.TPageFlag=Trans<<5;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
CFace &CFaceStore::AddFace(vector<Vector3> const &P, const sGinTri &T, const sUVTri &uv,GString const &Tex,int MatFlag,bool ProcessTexFlag )
|
||||
{
|
||||
//int ListSize = FaceList.size();
|
||||
// FaceList.resize(ListSize+1);
|
||||
//CFace &F = FaceList[ListSize];
|
||||
CFace F;
|
||||
|
||||
for (int i=0; i<3; i++)
|
||||
|
@ -119,7 +114,8 @@ CFace F;
|
|||
F.TexName=Tex;
|
||||
F.Mat = -1;
|
||||
SetTPageFlag(F,MatFlag);
|
||||
return(AddFace(F,ProcessTexFlag));
|
||||
CFace &NF=AddFace(F,ProcessTexFlag);
|
||||
return(NF);
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
|
@ -383,13 +379,17 @@ int V=ThisTex.v+H;
|
|||
Out.uv1[0]=(uv1[0]-XOfs); Out.uv1[1]=(uv1[1]-YOfs);
|
||||
Out.uv2[0]=(uv2[0]-XOfs); Out.uv2[1]=(uv2[1]-YOfs);
|
||||
|
||||
Out.TPage=ThisTex.Tpage | In.TPageFlag;
|
||||
Out.TPage=ThisTex.Tpage;
|
||||
Out.Clut=ThisTex.Clut;
|
||||
Out.PolyCode=GPU_PolyFT3Code;
|
||||
|
||||
if (In.TPageFlag)
|
||||
{
|
||||
Out.PolyCode|=GPUCode_SemiTrans;
|
||||
if (In.TPageFlag!=1)
|
||||
{
|
||||
Out.TPage|=In.TPageFlag<<5;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -84,8 +84,8 @@ int 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_HAZARD,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);
|
||||
|
@ -98,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_HAZARD,LAYER_SUBTYPE_NONE);
|
||||
if (ActiveLayer<0) ActiveLayer=0;
|
||||
#endif
|
||||
CurrentLayer=Layer[ActiveLayer];
|
||||
|
@ -258,6 +258,7 @@ CLayer *ThisLayer;
|
|||
|
||||
for (int i=StartLayer; i<EndLayer; i++)
|
||||
{
|
||||
ThisLayer->LoadGfx(this);
|
||||
if (ThisLayer->IsVisible())
|
||||
{
|
||||
ThisLayer->Render(this,ThisCam,Is3dFlag);
|
||||
|
|
|
@ -277,7 +277,7 @@ int ListSize=TriList.size();
|
|||
GString TexName=SceneTexList[TexID];
|
||||
|
||||
ThisName=SetPath+TexName;
|
||||
TRACE2("%i !%s!\n",TexID,ThisName);
|
||||
// TRACE2("%i !%s!\n",TexID,ThisName);
|
||||
TexID=TexCache.ProcessTexture(ThisName);
|
||||
}
|
||||
// Sort Rest of Tri info
|
||||
|
|
|
@ -210,6 +210,8 @@ virtual bool MouseMove(CCore *Core,UINT nFlags, CPoint &CursorPos) {return
|
|||
virtual bool Command(int CmdMsg,CCore *Core,int Param0=0,int Param1=0) {return(false);}
|
||||
CPoint GetElemPos(int ID,int Width);
|
||||
|
||||
virtual void LoadGfx(CCore *Core){}
|
||||
|
||||
// Local
|
||||
virtual bool CanClose() {return(true);}
|
||||
|
||||
|
|
|
@ -183,6 +183,7 @@ std::vector<sTriFace> &ElemTriList=ThisElem.GetTriList();
|
|||
OutTri.uv[p][0]=InTri.uvs[p].u;
|
||||
OutTri.uv[p][1]=InTri.uvs[p].v;
|
||||
}
|
||||
OutTri.Flags=InTri.Flags;
|
||||
TriList.push_back(OutTri);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -141,6 +141,7 @@ struct sLayerThingPlatform
|
|||
int PlatformMoveType;
|
||||
int PlatformTriStart;
|
||||
int PlatformTriCount;
|
||||
int PlatformParam0;
|
||||
};
|
||||
|
||||
struct sLayerThingTrigger
|
||||
|
@ -149,6 +150,8 @@ struct sLayerThingTrigger
|
|||
int TriggerHeight;
|
||||
int TriggerTargetX;
|
||||
int TriggerTargetY;
|
||||
int TriggerTargetW;
|
||||
int TriggerTargetH;
|
||||
};
|
||||
|
||||
struct sLayerThingFX
|
||||
|
|
|
@ -32,6 +32,9 @@ void CGUILayerPlatform::DoDataExchange(CDataExchange* pDX)
|
|||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CGUILayerPlatform)
|
||||
DDX_Control(pDX, IDC_PLATFORM_PARAM_SPIN, m_Param0Spin);
|
||||
DDX_Control(pDX, IDC_PLATFORM_PARAM0_TEXT, m_Param0Txt);
|
||||
DDX_Control(pDX, IDC_PLATFORM_PARAM0, m_Param0);
|
||||
DDX_Control(pDX, IDC_PLATFORM_TURNRATE_SPIN, m_TurnRateSpin);
|
||||
DDX_Control(pDX, IDC_PLATFORM_SPEED_SPIN, m_SpeedSpin);
|
||||
DDX_Control(pDX, IDC_PLATFORM_TYPE, m_Type);
|
||||
|
|
|
@ -19,6 +19,9 @@ public:
|
|||
// Dialog Data
|
||||
//{{AFX_DATA(CGUILayerPlatform)
|
||||
enum { IDD = IDD_LAYER_PLATFORM };
|
||||
CSpinButtonCtrl m_Param0Spin;
|
||||
CStatic m_Param0Txt;
|
||||
CEdit m_Param0;
|
||||
CSpinButtonCtrl m_TurnRateSpin;
|
||||
CSpinButtonCtrl m_SpeedSpin;
|
||||
CComboBox m_Type;
|
||||
|
|
|
@ -30,6 +30,8 @@ void CGUILayerShade::DoDataExchange(CDataExchange* pDX)
|
|||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CGUILayerShade)
|
||||
DDX_Control(pDX, IDC_LAYERSHADE_GFX_YSPIN, m_GfxPosYSpin);
|
||||
DDX_Control(pDX, IDC_LAYERSHADE_GFX_XSPIN, m_GfxPosXSpin);
|
||||
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);
|
||||
|
@ -48,9 +50,7 @@ void CGUILayerShade::DoDataExchange(CDataExchange* pDX)
|
|||
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);
|
||||
|
|
|
@ -22,6 +22,8 @@ public:
|
|||
// Dialog Data
|
||||
//{{AFX_DATA(CGUILayerShade)
|
||||
enum { IDD = IDD_LAYER_SHADE };
|
||||
CSpinButtonCtrl m_GfxPosYSpin;
|
||||
CSpinButtonCtrl m_GfxPosXSpin;
|
||||
CComboBox m_DefList;
|
||||
CSpinButtonCtrl m_ShadeCountSpin;
|
||||
CEdit m_ShadeCount;
|
||||
|
@ -40,9 +42,7 @@ public:
|
|||
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;
|
||||
|
|
|
@ -32,6 +32,11 @@ void CGUILayerTrigger::DoDataExchange(CDataExchange* pDX)
|
|||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CGUILayerTrigger)
|
||||
DDX_Control(pDX, IDC_TRIGGER_TARGETW_SPIN, m_TargetWSpin);
|
||||
DDX_Control(pDX, IDC_TRIGGER_TARGETH_SPIN, m_TargetHSpin);
|
||||
DDX_Control(pDX, IDC_TRIGGER_TEXT_TARGET_WH, m_TargetWHTxt);
|
||||
DDX_Control(pDX, IDC_TRIGGER_TARGETW, m_TargetW);
|
||||
DDX_Control(pDX, IDC_TRIGGER_TARGETH, m_TargetH);
|
||||
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);
|
||||
|
@ -51,6 +56,8 @@ BEGIN_MESSAGE_MAP(CGUILayerTrigger, CDialog)
|
|||
ON_EN_CHANGE(IDC_TRIGGER_WIDTH, OnParamChange)
|
||||
ON_EN_CHANGE(IDC_TRIGGER_TARGETX, OnParamChange)
|
||||
ON_EN_CHANGE(IDC_TRIGGER_TARGETY, OnParamChange)
|
||||
ON_EN_CHANGE(IDC_TRIGGER_TARGETH, OnParamChange)
|
||||
ON_EN_CHANGE(IDC_TRIGGER_TARGETW, OnParamChange)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
|
|
@ -19,6 +19,11 @@ public:
|
|||
// Dialog Data
|
||||
//{{AFX_DATA(CGUILayerTrigger)
|
||||
enum { IDD = IDD_LAYER_TRIGGER };
|
||||
CSpinButtonCtrl m_TargetWSpin;
|
||||
CSpinButtonCtrl m_TargetHSpin;
|
||||
CStatic m_TargetWHTxt;
|
||||
CEdit m_TargetW;
|
||||
CEdit m_TargetH;
|
||||
CStatic m_TargetTxt;
|
||||
CSpinButtonCtrl m_TargetYSpin;
|
||||
CSpinButtonCtrl m_TargetXSpin;
|
||||
|
|
|
@ -70,6 +70,7 @@ virtual bool IsVisible() {return(LayerDef.VisibleFlag);}
|
|||
virtual int GetType() {return(LayerDef.Type);}
|
||||
virtual int GetSubType() {return(LayerDef.SubType);}
|
||||
|
||||
virtual void LoadGfx(CCore *Core)=0;
|
||||
|
||||
virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d){};
|
||||
virtual void Render4TGA(const char *Filename){}
|
||||
|
|
|
@ -166,3 +166,18 @@ void CLayerHazard::GUIChanged(CCore *Core)
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CLayerHazard::Export(CCore *Core,CExport &Exp)
|
||||
{
|
||||
CLayerThing::Export(Core,Exp);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CLayerHazard::ExportThingData(CCore *Core,CExport &Exp,sLayerThing &ThisThing,sLayerThingData &OutThing)
|
||||
{
|
||||
CElem &ThisElem=ThingBank->GetElem(ThisThing.ElemID,0);
|
||||
|
||||
Exp.ExportElem3d(Core,ThisElem,OutThing.Hazard.HazardTriStart,OutThing.Hazard.HazardTriCount);
|
||||
|
||||
}
|
||||
|
|
|
@ -34,6 +34,9 @@ public:
|
|||
void GUIThingUpdate(bool OnlySel=false);
|
||||
void GUIThingPointUpdate(bool OnlySel=false);
|
||||
|
||||
void Export(CCore *Core,CExport &Exp);
|
||||
void ExportThingData(CCore *Core,CExport &Exp,sLayerThing &ThisThing,sLayerThingData &OutThing);
|
||||
|
||||
protected:
|
||||
CGUILayerHazard GUIHazard;
|
||||
|
||||
|
|
|
@ -58,7 +58,6 @@ sLayerThingDataOLD OldThing;
|
|||
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!!
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -75,6 +74,7 @@ void CLayerPlatform::GUIInit(CCore *Core)
|
|||
|
||||
GUIPlatform.m_SpeedSpin.SetRange(0,255);
|
||||
GUIPlatform.m_TurnRateSpin.SetRange(0,255);
|
||||
GUIPlatform.m_Param0Spin.SetRange(0,255);
|
||||
|
||||
// Init type lists
|
||||
{
|
||||
|
@ -89,6 +89,10 @@ CComboBox &List=GUIPlatform.m_Type;
|
|||
List.AddString("Weighted");
|
||||
List.AddString("Rotating");
|
||||
}
|
||||
GUIPlatform.m_Param0Txt.ShowWindow(SW_HIDE);
|
||||
GUIPlatform.m_Param0.ShowWindow(SW_HIDE);
|
||||
GUIPlatform.m_Param0Spin.ShowWindow(SW_HIDE);
|
||||
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -139,6 +143,22 @@ void CLayerPlatform::GUIThingUpdate(bool OnlySel)
|
|||
GUIPlatform.m_Collision.SetCheck(ThisThing.Data.Platform.PlatformCollisionFlag);
|
||||
GUIPlatform.m_MoveList.SetCurSel(ThisThing.Data.Platform.PlatformMoveType);
|
||||
GUIPlatform.m_Type.SetCurSel(ThisThing.Data.Platform.PlatformType);
|
||||
// Additional Params
|
||||
char *Param0Txt=ThingScript.GetStr(ThisThing.Name,"Param0");
|
||||
if (Param0Txt)
|
||||
{
|
||||
GUIPlatform.m_Param0Txt.SetWindowText(Param0Txt);
|
||||
GUIPlatform.SetVal(GUIPlatform.m_Param0,ThisThing.Data.Platform.PlatformParam0);
|
||||
GUIPlatform.m_Param0Txt.ShowWindow(SW_SHOW);
|
||||
GUIPlatform.m_Param0.ShowWindow(SW_SHOW);
|
||||
GUIPlatform.m_Param0Spin.ShowWindow(SW_SHOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
GUIPlatform.m_Param0Txt.ShowWindow(SW_HIDE);
|
||||
GUIPlatform.m_Param0.ShowWindow(SW_HIDE);
|
||||
GUIPlatform.m_Param0Spin.ShowWindow(SW_HIDE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -147,6 +167,7 @@ void CLayerPlatform::GUIThingUpdate(bool OnlySel)
|
|||
GUIPlatform.m_Collision.SetCheck(false);
|
||||
GUIPlatform.m_MoveList.SetCurSel(-1);
|
||||
GUIPlatform.m_Type.SetCurSel(-1);
|
||||
|
||||
}
|
||||
GUIPlatform.DisableCallback(false);
|
||||
}
|
||||
|
@ -168,6 +189,7 @@ void CLayerPlatform::GUIChanged(CCore *Core)
|
|||
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();
|
||||
ThisThing.Data.Platform.PlatformParam0=GUIPlatform.GetVal(GUIPlatform.m_Param0);
|
||||
SetThingParams(ThisThing);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ protected:
|
|||
|
||||
CGUILayerPlatform GUIPlatform;
|
||||
|
||||
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -143,12 +143,12 @@ int i;
|
|||
// Load GfxList
|
||||
File->Read(&GfxCount,sizeof(int));
|
||||
GfxList.resize(GfxCount);
|
||||
|
||||
for (i=0; i<GfxCount; i++)
|
||||
{
|
||||
sLayerShadeGfx &ThisGfx=GfxList[i];
|
||||
File->Read(&ThisGfx,sizeof(sLayerShadeGfx));
|
||||
}
|
||||
if (GfxCount) CurrentGfx=0;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -243,7 +243,6 @@ 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);
|
||||
|
||||
|
@ -323,6 +322,7 @@ int i,ListSize;
|
|||
GUIShade.m_GfxTransList.AddString("Subtractive");
|
||||
GUIShade.m_GfxTransList.AddString("Another one");
|
||||
|
||||
GUIShade.m_GfxPosXSpin.SetRange(0,32000); GUIShade.m_GfxPosYSpin.SetRange(0,32000);
|
||||
GUIShade.m_GfxSpinx0.SetRange(-32,+32); GUIShade.m_GfxSpiny0.SetRange(-32,+32);
|
||||
GUIShade.m_GfxSpinx1.SetRange(-32,+32); GUIShade.m_GfxSpiny1.SetRange(-32,+32);
|
||||
GUIShade.m_GfxSpinx2.SetRange(-32,+32); GUIShade.m_GfxSpiny2.SetRange(-32,+32);
|
||||
|
@ -388,7 +388,7 @@ sLayerShadeGfx &ThisGfx=GfxList[CurrentGfx];
|
|||
void CLayerShade::GUIChanged(CCore *Core)
|
||||
{
|
||||
int i,ListSize;
|
||||
|
||||
int LastGfx=CurrentGfx;
|
||||
// Shade
|
||||
for (i=0; i<LAYER_SHADE_MAX; i++)
|
||||
{
|
||||
|
@ -396,13 +396,12 @@ int i,ListSize;
|
|||
}
|
||||
GUIShade.GetVal(GUIShade.m_ShadeCount,ShadeCount,2,4);
|
||||
// Gfx
|
||||
GUIShade.GetVal(GUIShade.m_GfxCurrent,CurrentGfx);
|
||||
ListSize=GfxList.size();
|
||||
GUIShade.GetVal(GUIShade.m_GfxCurrent,ListSize,0,ListSize);
|
||||
if (!ListSize || CurrentGfx==-1) return;
|
||||
|
||||
sLayerShadeGfx &ThisGfx=GfxList[CurrentGfx];
|
||||
|
||||
GUIShade.GetVal(GUIShade.m_GfxCurrent,ListSize,0,ListSize);
|
||||
GUIShade.GetVal(GUIShade.m_GfxPosX,ThisGfx.Pos.x);
|
||||
GUIShade.GetVal(GUIShade.m_GfxPosY,ThisGfx.Pos.y);
|
||||
ThisGfx.Gfx=GUIShade.m_GfxBankList.GetCurSel();
|
||||
|
@ -417,7 +416,10 @@ sLayerShadeGfx &ThisGfx=GfxList[CurrentGfx];
|
|||
GUIShade.GetVal(GUIShade.m_Gfxx3,ThisGfx.Ofs[3].x); GUIShade.GetVal(GUIShade.m_Gfxy3,ThisGfx.Ofs[3].y);
|
||||
ThisGfx.TransMode=GUIShade.m_GfxTransList.GetCurSel();
|
||||
|
||||
GUIUpdate(Core);
|
||||
if (CurrentGfx!=LastGfx)
|
||||
{
|
||||
GUIUpdate(Core);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -57,6 +57,7 @@ public:
|
|||
void Save(CFile *File);
|
||||
|
||||
void Export(CCore *Core,CExport &Exp);
|
||||
virtual void LoadGfx(CCore *Core) {if (GfxBank->NeedLoad()) GfxBank->LoadAllSets(Core);}
|
||||
|
||||
// Functions
|
||||
bool LButtonControl(CCore *Core,UINT nFlags, CPoint &CursorPos,bool DownFlag);
|
||||
|
|
|
@ -228,7 +228,6 @@ Vector3 ScrOfs(ZoomW/2,ZoomH/2,0);
|
|||
ScrOfs.z=-4.0f;
|
||||
}
|
||||
|
||||
if (ThingBank->NeedLoad()) ThingBank->LoadAllSets(Core);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPushMatrix();
|
||||
|
@ -353,6 +352,7 @@ bool Ret=false;
|
|||
SelectThing(CursorPos);
|
||||
break;
|
||||
case MouseModeNew:
|
||||
GUIChanged(Core);
|
||||
AddThing(CursorPos);
|
||||
break;
|
||||
case MouseModePoints:
|
||||
|
|
|
@ -56,6 +56,8 @@ virtual void GUIChanged(CCore *Core);
|
|||
int GetWidth();
|
||||
int GetHeight();
|
||||
|
||||
virtual void LoadGfx(CCore *Core) {if (ThingBank->NeedLoad()) ThingBank->LoadAllSets(Core);}
|
||||
|
||||
virtual void GUIThingDefClear(){};
|
||||
virtual void GUIThingUpdate(bool OnlySel=false){};
|
||||
virtual void GUIThingUpdateList(CComboBox &List,bool OnlySel=false);
|
||||
|
|
|
@ -232,6 +232,16 @@ Vector3 Ofs;
|
|||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CLayerTile::LoadGfx(CCore *Core)
|
||||
{
|
||||
if (TileBank->NeedLoad())
|
||||
{
|
||||
TileBank->LoadAllSets(Core);
|
||||
Core->Validate(GetType());
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CLayerTile::Render(CCore *Core,Vector3 &ThisCam,CMap &ThisMap,bool Render3d,float Alpha,Vector3 *Ofs)
|
||||
{
|
||||
|
@ -248,12 +258,6 @@ int StartY=(int)ThisCam.y;
|
|||
float ShiftX=ThisCam.x - (int)ThisCam.x;
|
||||
float ShiftY=ThisCam.y - (int)ThisCam.y;
|
||||
|
||||
if (TileBank->NeedLoad())
|
||||
{
|
||||
TileBank->LoadAllSets(Core);
|
||||
Core->Validate(GetType());
|
||||
}
|
||||
|
||||
if (StartX<0) StartX=0;
|
||||
if (StartY<0) StartY=0;
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ virtual void GUIChanged(CCore *Core);
|
|||
void Validate(CCore *Core);
|
||||
|
||||
void Export(CCore *Core,CExport &Exp);
|
||||
|
||||
void LoadGfx(CCore *Core);
|
||||
// Functions
|
||||
virtual bool LButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag);
|
||||
virtual bool RButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag);
|
||||
|
|
|
@ -84,6 +84,7 @@ float Col=0.8f,A=0.8f;
|
|||
glTranslatef(-ThisCam.x,ThisCam.y,0); // Set scroll offset
|
||||
glTranslatef(-ScrOfs.x,ScrOfs.y,0); // Bring to top left corner
|
||||
|
||||
glPushMatrix();
|
||||
glTranslatef(ThisThing.XY[0].x,-ThisThing.XY[0].y,0); // Set Pos
|
||||
|
||||
Core->RenderNumber(0);
|
||||
|
@ -139,6 +140,39 @@ float H=-(ThisThing.Data.Trigger.TriggerHeight);
|
|||
glEnd();
|
||||
|
||||
|
||||
}
|
||||
glPopMatrix();
|
||||
|
||||
if (Selected && ThingScript.GetInt(ThisThing.Name,"HasBox"))
|
||||
{ // Draw Box
|
||||
glTranslatef(ThisThing.Data.Trigger.TriggerTargetX,-ThisThing.Data.Trigger.TriggerTargetY,0); // Set Pos
|
||||
W=ThisThing.Data.Trigger.TriggerTargetW;
|
||||
H=-ThisThing.Data.Trigger.TriggerTargetH;
|
||||
|
||||
|
||||
glBegin (GL_QUADS); // Draw Box
|
||||
glColor4f(Col-0.25f,0,0,A/2.0f);
|
||||
glVertex3f(0,0+1,0);
|
||||
glVertex3f(W,0+1,0);
|
||||
glVertex3f(W,H+1,0);
|
||||
glVertex3f(0,H+1,0);
|
||||
glEnd();
|
||||
// Draw OutLine
|
||||
glBegin(GL_LINES);
|
||||
glColor4f(Col,Col,Col,A);
|
||||
glVertex3f( 0,0+1,0);
|
||||
glVertex3f( W,0+1,0);
|
||||
|
||||
glVertex3f( W,0+1,0);
|
||||
glVertex3f( W,H+1,0);
|
||||
|
||||
glVertex3f( W,H+1,0);
|
||||
glVertex3f( 0,H+1,0);
|
||||
|
||||
glVertex3f( 0,H+1,0);
|
||||
glVertex3f( 0,0+1,0);
|
||||
glEnd();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -157,10 +191,12 @@ void CLayerTrigger::GUIInit(CCore *Core)
|
|||
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_WidthSpin.SetRange(1,32000);
|
||||
GUITrigger.m_HeightSpin.SetRange(1,32000);
|
||||
GUITrigger.m_TargetXSpin.SetRange(0,32000);
|
||||
GUITrigger.m_TargetYSpin.SetRange(0,32000);
|
||||
GUITrigger.m_TargetWSpin.SetRange(1,32000);
|
||||
GUITrigger.m_TargetHSpin.SetRange(1,32000);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -199,7 +235,8 @@ CComboBox &List=GUIThing.m_DefList;
|
|||
/*****************************************************************************/
|
||||
void CLayerTrigger::GUIThingUpdate(bool OnlySel)
|
||||
{
|
||||
int TargetMode=SW_SHOW;
|
||||
int TargetXYMode=SW_HIDE;
|
||||
int TargetWHMode=SW_HIDE;
|
||||
|
||||
GUIThingUpdateList(GUIThing.m_List,false);
|
||||
// Params
|
||||
|
@ -211,23 +248,35 @@ int TargetMode=SW_SHOW;
|
|||
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)
|
||||
GUITrigger.SetVal(GUITrigger.m_TargetW,ThisThing.Data.Trigger.TriggerTargetW);
|
||||
GUITrigger.SetVal(GUITrigger.m_TargetH,ThisThing.Data.Trigger.TriggerTargetH);
|
||||
if (ThingScript.GetInt(ThisThing.Name,"HasTarget"))
|
||||
{
|
||||
TargetMode=SW_HIDE;
|
||||
TargetXYMode=SW_SHOW;
|
||||
}
|
||||
if (ThingScript.GetInt(ThisThing.Name,"HasBox"))
|
||||
{
|
||||
TargetXYMode=SW_SHOW;
|
||||
TargetWHMode=SW_SHOW;
|
||||
}
|
||||
}
|
||||
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.m_TargetTxt.ShowWindow(TargetXYMode);
|
||||
GUITrigger.m_TargetX.ShowWindow(TargetXYMode);
|
||||
GUITrigger.m_TargetY.ShowWindow(TargetXYMode);
|
||||
GUITrigger.m_TargetXSpin.ShowWindow(TargetXYMode);
|
||||
GUITrigger.m_TargetYSpin.ShowWindow(TargetXYMode);
|
||||
|
||||
GUITrigger.m_TargetWHTxt.ShowWindow(TargetWHMode);
|
||||
GUITrigger.m_TargetW.ShowWindow(TargetWHMode);
|
||||
GUITrigger.m_TargetH.ShowWindow(TargetWHMode);
|
||||
GUITrigger.m_TargetWSpin.ShowWindow(TargetWHMode);
|
||||
GUITrigger.m_TargetHSpin.ShowWindow(TargetWHMode);
|
||||
|
||||
GUITrigger.DisableCallback(false);
|
||||
}
|
||||
|
@ -248,6 +297,8 @@ void CLayerTrigger::GUIChanged(CCore *Core)
|
|||
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);
|
||||
ThisThing.Data.Trigger.TriggerTargetW=GUITrigger.GetVal(GUITrigger.m_TargetW);
|
||||
ThisThing.Data.Trigger.TriggerTargetH=GUITrigger.GetVal(GUITrigger.m_TargetH);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -257,4 +308,8 @@ void CLayerTrigger::SetThingParams(sLayerThing &Thing)
|
|||
Thing.Data.WaypointCount=1;
|
||||
if (Thing.Data.Trigger.TriggerWidth<1) Thing.Data.Trigger.TriggerWidth=1;
|
||||
if (Thing.Data.Trigger.TriggerHeight<1) Thing.Data.Trigger.TriggerHeight=1;
|
||||
Thing.Data.Trigger.TriggerTargetX=Thing.XY[0].x; // Default target Pos
|
||||
Thing.Data.Trigger.TriggerTargetY=Thing.XY[0].y;
|
||||
Thing.Data.Trigger.TriggerTargetW=1;
|
||||
Thing.Data.Trigger.TriggerTargetH=1;
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[General Info]
|
||||
Version=1
|
||||
LastClass=CGUINewMap
|
||||
LastClass=CGUILayerShade
|
||||
LastTemplate=CDialog
|
||||
NewFileInclude1=#include "stdafx.h"
|
||||
NewFileInclude2=#include "mapedit.h"
|
||||
|
@ -37,27 +37,27 @@ Class25=CMapEditDoc
|
|||
Class26=CMapEditView
|
||||
|
||||
ResourceCount=21
|
||||
Resource1=IDD_LAYER_COLLISION
|
||||
Resource1=IDD_LAYER_HAZARD
|
||||
Resource2=IDR_MAPEDITYPE (English (U.S.))
|
||||
Resource3=IDD_ELEMLIST
|
||||
Resource3=IDD_LAYER_COLLISION
|
||||
Resource4=IDD_MULTIBAR (English (U.S.))
|
||||
Resource5=IDD_LAYER_THING
|
||||
Resource6=IDR_TOOLBAR (English (U.S.))
|
||||
Resource7=IDD_LAYER_PLATFORM
|
||||
Resource8=IDD_LAYER_TRIGGER
|
||||
Resource9=IDD_TILEBANK
|
||||
Resource10=IDD_NEWMAP
|
||||
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
|
||||
Resource5=IDD_LAYER_ACTOR
|
||||
Resource6=IDD_LAYER_THING_POS
|
||||
Resource7=IDD_LAYER_FX
|
||||
Resource8=IDD_LAYER_PLATFORM
|
||||
Resource9=IDD_ADDLAYER
|
||||
Resource10=IDD_RESIZE
|
||||
Resource11=IDD_LAYER_LIST
|
||||
Resource12=IDD_LAYER_TRIGGER
|
||||
Resource13=IDD_ELEMLIST
|
||||
Resource14=IDR_TOOLBAR (English (U.S.))
|
||||
Resource15=IDD_ABOUTBOX (English (U.S.))
|
||||
Resource16=IDD_LAYER_THING
|
||||
Resource17=IDD_NEWMAP
|
||||
Resource18=IDR_MAINFRAME (English (U.S.))
|
||||
Resource19=IDD_TILEBANK
|
||||
Resource20=IDD_TOOLBAR
|
||||
Resource21=IDD_LAYER_SHADE
|
||||
|
||||
[CLS:CChildFrame]
|
||||
Type=0
|
||||
|
@ -125,6 +125,9 @@ Type=0
|
|||
BaseClass=CDialog
|
||||
HeaderFile=GUILayerPlatform.h
|
||||
ImplementationFile=GUILayerPlatform.cpp
|
||||
Filter=D
|
||||
VirtualFilter=dWC
|
||||
LastObject=IDC_PLATFORM_PARAM_SPIN
|
||||
|
||||
[CLS:CGUILayerShade]
|
||||
Type=0
|
||||
|
@ -133,7 +136,7 @@ HeaderFile=GUILayerShade.h
|
|||
ImplementationFile=GUILayerShade.cpp
|
||||
Filter=D
|
||||
VirtualFilter=dWC
|
||||
LastObject=CGUILayerShade
|
||||
LastObject=IDC_LAYERSHADE_GFX_XSPIN
|
||||
|
||||
[CLS:CGUILayerThing]
|
||||
Type=0
|
||||
|
@ -152,6 +155,9 @@ Type=0
|
|||
BaseClass=CDialog
|
||||
HeaderFile=GUILayerTrigger.h
|
||||
ImplementationFile=GUILayerTrigger.cpp
|
||||
Filter=D
|
||||
VirtualFilter=dWC
|
||||
LastObject=IDC_TRIGGER_TARGETW
|
||||
|
||||
[CLS:CGUIMultiBar]
|
||||
Type=0
|
||||
|
@ -317,7 +323,7 @@ Control3=IDC_LAYERLIST_DELETE,button,1342242816
|
|||
[DLG:IDD_LAYER_PLATFORM]
|
||||
Type=1
|
||||
Class=CGUILayerPlatform
|
||||
ControlCount=9
|
||||
ControlCount=12
|
||||
Control1=IDC_PLATFORM_SPEED_TEXT,static,1342308354
|
||||
Control2=IDC_PLATFORM_SPEED,edit,1350633600
|
||||
Control3=IDC_PLATFORM_SPEED_SPIN,msctls_updown32,1342177334
|
||||
|
@ -327,6 +333,9 @@ Control6=IDC_PLATFORM_TURNRATE_SPIN,msctls_updown32,1342177334
|
|||
Control7=IDC_PLATFORM_COLLISION,button,1342243363
|
||||
Control8=IDC_PLATFORM_MOVE_TYPE,combobox,1344339971
|
||||
Control9=IDC_PLATFORM_TYPE,combobox,1344339971
|
||||
Control10=IDC_PLATFORM_PARAM0_TEXT,static,1342308354
|
||||
Control11=IDC_PLATFORM_PARAM0,edit,1350633600
|
||||
Control12=IDC_PLATFORM_PARAM_SPIN,msctls_updown32,1342177334
|
||||
|
||||
[DLG:IDD_LAYER_SHADE]
|
||||
Type=1
|
||||
|
@ -416,7 +425,7 @@ Control4=IDC_THING_POS_DELETE,button,1342242816
|
|||
[DLG:IDD_LAYER_TRIGGER]
|
||||
Type=1
|
||||
Class=CGUILayerTrigger
|
||||
ControlCount=10
|
||||
ControlCount=15
|
||||
Control1=IDC_TRIGGER_SIZE,static,1342308354
|
||||
Control2=IDC_TRIGGER_WIDTH,edit,1350633600
|
||||
Control3=IDC_TRIGGER_WIDTH_SPIN,msctls_updown32,1342177334
|
||||
|
@ -427,6 +436,11 @@ 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
|
||||
Control11=IDC_TRIGGER_TEXT_TARGET_WH,static,1342308354
|
||||
Control12=IDC_TRIGGER_TARGETW,edit,1350633600
|
||||
Control13=IDC_TRIGGER_TARGETW_SPIN,msctls_updown32,1342177334
|
||||
Control14=IDC_TRIGGER_TARGETH,edit,1350633600
|
||||
Control15=IDC_TRIGGER_TARGETH_SPIN,msctls_updown32,1342177334
|
||||
|
||||
[DLG:IDD_MULTIBAR]
|
||||
Type=1
|
||||
|
|
|
@ -644,16 +644,16 @@ BEGIN
|
|||
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 |
|
||||
EDITTEXT IDC_LAYERSHADE_GFX_X,30,150,35,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 |
|
||||
UDS_ARROWKEYS,124,146,11,15
|
||||
EDITTEXT IDC_LAYERSHADE_GFX_Y,65,150,35,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
|
||||
UDS_ARROWKEYS,139,146,11,15
|
||||
COMBOBOX IDC_LAYERSHADE_DEF_LIST,5,85,145,100,CBS_DROPDOWNLIST
|
||||
END
|
||||
|
||||
|
@ -736,7 +736,7 @@ BEGIN
|
|||
PUSHBUTTON "Pos Delete",IDC_THING_POS_DELETE,100,60,45,15
|
||||
END
|
||||
|
||||
IDD_LAYER_PLATFORM DIALOG DISCARDABLE 0, 0, 156, 76
|
||||
IDD_LAYER_PLATFORM DIALOG DISCARDABLE 0, 0, 156, 96
|
||||
STYLE WS_CHILD
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
|
@ -759,34 +759,51 @@ BEGIN
|
|||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_PLATFORM_TYPE,5,15,145,60,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "",IDC_PLATFORM_PARAM0_TEXT,5,70,35,8
|
||||
EDITTEXT IDC_PLATFORM_PARAM0,41,70,35,12,ES_AUTOHSCROLL |
|
||||
ES_READONLY
|
||||
CONTROL "Spin1",IDC_PLATFORM_PARAM_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS,75,70,11,10
|
||||
END
|
||||
|
||||
IDD_LAYER_TRIGGER DIALOG DISCARDABLE 0, 0, 156, 46
|
||||
IDD_LAYER_TRIGGER DIALOG DISCARDABLE 0, 0, 156, 71
|
||||
STYLE WS_CHILD
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
RTEXT "Size",IDC_TRIGGER_SIZE,5,5,17,8
|
||||
EDITTEXT IDC_TRIGGER_WIDTH,25,5,24,12,ES_AUTOHSCROLL |
|
||||
EDITTEXT IDC_TRIGGER_WIDTH,25,5,35,12,ES_AUTOHSCROLL |
|
||||
ES_READONLY
|
||||
CONTROL "Spin1",IDC_TRIGGER_WIDTH_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS,90,5,11,10
|
||||
EDITTEXT IDC_TRIGGER_HEIGHT,50,5,25,12,ES_AUTOHSCROLL |
|
||||
UDS_ARROWKEYS,125,0,11,10
|
||||
EDITTEXT IDC_TRIGGER_HEIGHT,60,5,35,12,ES_AUTOHSCROLL |
|
||||
ES_READONLY
|
||||
CONTROL "Spin1",IDC_TRIGGER_HEIGHT_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS,100,5,11,10
|
||||
UDS_ARROWKEYS,135,0,11,10
|
||||
RTEXT "Target",IDC_TRIGGER_TARGET,0,25,22,8
|
||||
EDITTEXT IDC_TRIGGER_TARGETX,25,25,24,12,ES_AUTOHSCROLL |
|
||||
EDITTEXT IDC_TRIGGER_TARGETX,25,25,35,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 |
|
||||
UDS_ARROWKEYS,125,20,11,10
|
||||
EDITTEXT IDC_TRIGGER_TARGETY,60,25,35,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
|
||||
UDS_ARROWKEYS,135,20,11,10
|
||||
RTEXT "WH",IDC_TRIGGER_TEXT_TARGET_WH,0,40,14,8
|
||||
EDITTEXT IDC_TRIGGER_TARGETW,25,40,35,12,ES_AUTOHSCROLL |
|
||||
ES_READONLY
|
||||
CONTROL "Spin1",IDC_TRIGGER_TARGETW_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS,125,35,11,10
|
||||
EDITTEXT IDC_TRIGGER_TARGETH,60,40,35,12,ES_AUTOHSCROLL |
|
||||
ES_READONLY
|
||||
CONTROL "Spin1",IDC_TRIGGER_TARGETH_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS,135,35,11,10
|
||||
END
|
||||
|
||||
IDD_LAYER_FX DIALOG DISCARDABLE 0, 0, 156, 56
|
||||
|
@ -795,18 +812,18 @@ FONT 8, "MS Sans Serif"
|
|||
BEGIN
|
||||
RTEXT "Speed",IDC_FX_SPEED_TEXT,5,25,20,8
|
||||
RTEXT "Size",IDC_FX_SIZE_TEXT,5,5,17,8
|
||||
EDITTEXT IDC_FX_WIDTH,25,5,24,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
EDITTEXT IDC_FX_WIDTH,25,5,35,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
CONTROL "Spin1",IDC_FX_WIDTH_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS,90,5,11,10
|
||||
EDITTEXT IDC_FX_HEIGHT,50,5,25,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
UDS_ARROWKEYS,120,5,11,10
|
||||
EDITTEXT IDC_FX_HEIGHT,60,5,35,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
CONTROL "Spin1",IDC_FX_HEIGHT_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS,100,5,11,10
|
||||
EDITTEXT IDC_FX_SPEED,25,25,24,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
UDS_ARROWKEYS,130,5,11,10
|
||||
EDITTEXT IDC_FX_SPEED,25,25,35,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
CONTROL "Spin2",IDC_FX_SPEED_SPIN,"msctls_updown32",
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
UDS_ARROWKEYS | UDS_NOTHOUSANDS,50,25,11,13
|
||||
UDS_ARROWKEYS | UDS_NOTHOUSANDS,130,25,11,13
|
||||
END
|
||||
|
||||
IDD_LAYER_HAZARD DIALOG DISCARDABLE 0, 0, 156, 96
|
||||
|
@ -957,7 +974,7 @@ BEGIN
|
|||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 149
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 69
|
||||
BOTTOMMARGIN, 89
|
||||
END
|
||||
|
||||
IDD_LAYER_TRIGGER, DIALOG
|
||||
|
@ -965,7 +982,7 @@ BEGIN
|
|||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 149
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 39
|
||||
BOTTOMMARGIN, 64
|
||||
END
|
||||
|
||||
IDD_LAYER_FX, DIALOG
|
||||
|
|
|
@ -130,8 +130,11 @@
|
|||
#define IDC_PLATFORM_MOVE_TYPE 1138
|
||||
#define IDC_PLATFORM_TYPE 1139
|
||||
#define IDC_TRIGGER_SIZE 1140
|
||||
#define IDC_PLATFORM_PARAM0_TEXT 1140
|
||||
#define IDC_TRIGGER_WIDTH 1141
|
||||
#define IDC_PLATFORM_PARAM0 1141
|
||||
#define IDC_TRIGGER_HEIGHT 1142
|
||||
#define IDC_PLATFORM_PARAM_SPIN 1142
|
||||
#define IDC_TRIGGER_WIDTH_SPIN 1143
|
||||
#define IDC_FX_SPEED_TEXT 1144
|
||||
#define IDC_TRIGGER_TARGET 1144
|
||||
|
@ -141,12 +144,18 @@
|
|||
#define IDC_FX_WIDTH 1147
|
||||
#define IDC_TRIGGER_TARGETY 1147
|
||||
#define IDC_FX_HEIGHT 1148
|
||||
#define IDC_TRIGGER_TEXT_TARGET_WH 1148
|
||||
#define IDC_FX_WIDTH_SPIN 1149
|
||||
#define IDC_TRIGGER_TARGETW 1149
|
||||
#define IDC_FX_HEIGHT_SPIN 1150
|
||||
#define IDC_TRIGGER_TARGETW_SPIN 1150
|
||||
#define IDC_FX_SPEED 1151
|
||||
#define IDC_TRIGGER_TARGETH 1151
|
||||
#define IDC_FX_SPEED_SPIN 1152
|
||||
#define IDC_TRIGGER_HEIGHT_SPIN 1163
|
||||
#define IDC_TRIGGER_TARGETY_SPIN 1164
|
||||
#define IDC_TRIGGER_TARGETY_SPIN2 1165
|
||||
#define IDC_TRIGGER_TARGETH_SPIN 1165
|
||||
#define IDC_HAZARD_SPEED_TEXT 1169
|
||||
#define IDC_HAZARD_TURNRATE_TEXT 1170
|
||||
#define IDC_HAZARD_HEALTH_TEXT 1171
|
||||
|
@ -186,7 +195,6 @@
|
|||
#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
|
||||
|
|
|
@ -32,7 +32,7 @@ char szBuf[256];
|
|||
}
|
||||
|
||||
/**************************************************************************************/
|
||||
const int TexAlignTable[]={1,2,4,8,16,32,64,128,256};
|
||||
const int TexAlignTable[]={1,2,4,8,16,32,64,128,256,512,1024};
|
||||
const int TexAlignTableSize=sizeof(TexAlignTable)/sizeof(int);
|
||||
int AlignSize(int Size)
|
||||
{
|
||||
|
|
|
@ -65,6 +65,7 @@ int i,ListSize=ThingList.size();
|
|||
OutThing.Flags=ThisThing.Data.Platform.PlatformCollisionFlag;
|
||||
OutThing.PointCount=PointCount;
|
||||
OutThing.Gfx=RemapTable[i];
|
||||
OutThing.Param0=ThisThing.Data.Platform.PlatformParam0;
|
||||
fwrite(&OutThing,sizeof(sThingPlatform),1,File);
|
||||
|
||||
for (p=0;p<PointCount;p++)
|
||||
|
|
|
@ -33,7 +33,6 @@ sRGBCol *RGB=(sRGBCol*)iPtr;
|
|||
ShadeHdr.RGB[i][2]=RGB->B;
|
||||
RGB++;
|
||||
}
|
||||
|
||||
iPtr=(int*)RGB;
|
||||
|
||||
ListSize=*iPtr++;
|
||||
|
@ -41,10 +40,11 @@ sRGBCol *RGB=(sRGBCol*)iPtr;
|
|||
sLayerShadeGfx *GfxPtr=(sLayerShadeGfx*)iPtr;
|
||||
for (i=0; i<ListSize; i++)
|
||||
{
|
||||
sLayerShadeGfx &ThisGfx=GfxList[i];
|
||||
GfxList[i]=*GfxPtr++;
|
||||
}
|
||||
iPtr=(int*)GfxPtr;
|
||||
|
||||
iPtr=(int*)GfxPtr;
|
||||
ListSize=*iPtr++;
|
||||
TypeNameList.resize(ListSize);
|
||||
char *TypePtr=(char*)iPtr;
|
||||
|
@ -132,13 +132,20 @@ int ThisPos=ftell(File);
|
|||
Hdr.Height=Height;
|
||||
fwrite(&Hdr,sizeof(sLayerHdr),1,File);
|
||||
|
||||
// Write Gfx Stuff
|
||||
ShadeHdr.TypeList=(sLayerShadeBackGfxType*)WriteTypeList(File);
|
||||
ShadeHdr.GfxList=(sLayerShadeBackGfx*)WriteGfxList(File);
|
||||
|
||||
|
||||
int HdrPos=ftell(File);
|
||||
fwrite(&ShadeHdr,sizeof(sLayerShadeHdr),1,File);
|
||||
PadFile(File);
|
||||
|
||||
|
||||
// Write Gfx Stuff
|
||||
ShadeHdr.GfxList=(sLayerShadeBackGfx*)(WriteGfxList(File)-ThisPos);
|
||||
ShadeHdr.TypeList=(sLayerShadeBackGfxType*)(WriteTypeList(File)-ThisPos);
|
||||
|
||||
// rewrite header
|
||||
int RetPos=ftell(File);
|
||||
fseek(File,HdrPos,SEEK_SET);
|
||||
fwrite(&ShadeHdr,sizeof(sLayerShadeHdr),1,File);
|
||||
fseek(File,RetPos,SEEK_SET);
|
||||
|
||||
|
||||
return(ThisPos);
|
||||
}
|
||||
|
@ -164,11 +171,11 @@ int CMkLevelLayerShade::WriteGfxList(FILE *File)
|
|||
int Pos=ftell(File);
|
||||
int i,ListSize=GfxList.size();
|
||||
|
||||
ShadeHdr.GfxCount=GfxList.size();
|
||||
ShadeHdr.GfxCount=ListSize;
|
||||
|
||||
for (i=0; i<ListSize; i++)
|
||||
{
|
||||
sLayerShadeGfx &ThisGfx=GfxList[i];
|
||||
sLayerShadeGfx &ThisGfx=GfxList[i];
|
||||
sLayerShadeBackGfx Out;
|
||||
|
||||
Out.Type=ThisGfx.Gfx;
|
||||
|
@ -177,12 +184,13 @@ int i,ListSize=GfxList.size();
|
|||
Out.Trans=ThisGfx.TransMode;
|
||||
for (int p=0; p<4; p++)
|
||||
{
|
||||
Out.Ofs[i][0]=ThisGfx.Ofs[i].x;
|
||||
Out.Ofs[i][1]=ThisGfx.Ofs[i].y;
|
||||
Out.RGB[i][0]=ThisGfx.RGB[i].R;
|
||||
Out.RGB[i][1]=ThisGfx.RGB[i].G;
|
||||
Out.RGB[i][2]=ThisGfx.RGB[i].B;
|
||||
Out.Ofs[p][0]=ThisGfx.Ofs[p].x;
|
||||
Out.Ofs[p][1]=ThisGfx.Ofs[p].y;
|
||||
Out.RGB[p][0]=ThisGfx.RGB[p].R;
|
||||
Out.RGB[p][1]=ThisGfx.RGB[p].G;
|
||||
Out.RGB[p][2]=ThisGfx.RGB[p].B;
|
||||
}
|
||||
fwrite(&Out,sizeof(sLayerShadeBackGfx),1,File);
|
||||
}
|
||||
return(Pos);
|
||||
}
|
||||
|
|
|
@ -56,6 +56,8 @@ int i,ListSize=ThingList.size();
|
|||
OutThing.Height=ThisThing.Data.Trigger.TriggerHeight;
|
||||
OutThing.TargetPos.X=ThisThing.Data.Trigger.TriggerTargetX;
|
||||
OutThing.TargetPos.Y=ThisThing.Data.Trigger.TriggerTargetY;
|
||||
OutThing.TargetSize.X=ThisThing.Data.Trigger.TriggerTargetW;
|
||||
OutThing.TargetSize.Y=ThisThing.Data.Trigger.TriggerTargetH;
|
||||
fwrite(&OutThing,sizeof(sThingTrigger),1,File);
|
||||
}
|
||||
|
||||
|
|
|
@ -105,6 +105,7 @@ GFName Path;
|
|||
FlatFace[0].uv[0][0]=1; FlatFace[0].uv[0][1]=1;
|
||||
FlatFace[0].uv[1][0]=0; FlatFace[0].uv[1][1]=0;
|
||||
FlatFace[0].uv[2][0]=1; FlatFace[0].uv[2][1]=0;
|
||||
FlatFace[0].Flags=0;
|
||||
|
||||
FlatFace[1].vtx[0].x=-0.5f; FlatFace[1].vtx[0].y= 0.0f; FlatFace[1].vtx[0].z=-4.0f;
|
||||
FlatFace[1].vtx[1].x=+0.5f; FlatFace[1].vtx[1].y=+1.0f; FlatFace[1].vtx[1].z=-4.0f;
|
||||
|
@ -112,6 +113,7 @@ GFName Path;
|
|||
FlatFace[1].uv[0][0]=0; FlatFace[1].uv[0][1]=0;
|
||||
FlatFace[1].uv[1][0]=1; FlatFace[1].uv[1][1]=1;
|
||||
FlatFace[1].uv[2][0]=0; FlatFace[1].uv[2][1]=1;
|
||||
FlatFace[1].Flags=0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -166,9 +168,7 @@ int TriCount=NodeTriList.size();
|
|||
if (Mat>SceneTexList.size()) GObject::Error(ERR_FATAL,"Crap Material ID, wanted %i, only have %i\n",Mat,SceneTexList.size());
|
||||
GString TexName=RootPath+SceneTexList[Mat];
|
||||
|
||||
|
||||
CFace &F=ModelFaceList.AddFace( NodeVtxList, NodeTriList[T], NodeUVList[T], TexName,SceneMaterials[Mat].Flags,false);
|
||||
// ModelFaceList.SetTPageFlag(F,SceneMaterials[Mat].Flags);
|
||||
}
|
||||
|
||||
int ChildCount=ThisNode.GetPruneChildCount();
|
||||
|
@ -200,7 +200,7 @@ int Idx;
|
|||
CFace F;
|
||||
|
||||
ExpTri2Face(ThisTri,F);
|
||||
ModelFaceList.SetTPageFlag(F,ThisTri.Flags);
|
||||
ModelFaceList.SetTPageFlag(F,ThisTri.Flags*0);
|
||||
ModelFaceList.AddFace(F,false);
|
||||
}
|
||||
|
||||
|
@ -225,7 +225,7 @@ int TriStart=OutFaceList.GetFaceCount();
|
|||
ListSize=ModelList.size();
|
||||
for (i=0; i<ListSize; i++)
|
||||
{
|
||||
printf("%s = %i %i\n",ModelList[i].Name,ModelList[i].TriStart,ModelList[i].TriCount);
|
||||
// printf("%s = %i %i\n",ModelList[i].Name,ModelList[i].TriStart,ModelList[i].TriCount);
|
||||
ModelList[i].TriStart+=TriStart;
|
||||
}
|
||||
}
|
||||
|
@ -303,6 +303,7 @@ u8 *TilePtr=(u8*) &ByteHdr[FileHdr->TileOfs];
|
|||
sExpTile &InTile=InTileList[i];
|
||||
|
||||
InTile=*ThisTilePtr;
|
||||
// Skip RGB Image, not needed (and too buggy)
|
||||
// InTile.RGB=(u8*)malloc(RGBSize);
|
||||
// memcpy(InTile.RGB,TilePtr+sizeof(sExpTile),RGBSize);
|
||||
InTile.RGB=0;
|
||||
|
@ -573,7 +574,7 @@ int TileID=OutTile3dList.size();
|
|||
for (i=0; i<SrcTile.TriCount; i++)
|
||||
{
|
||||
int ListPos;
|
||||
sExpTri ThisTri=InTriList[SrcTile.TriStart+i];
|
||||
sExpTri &ThisTri=InTriList[SrcTile.TriStart+i];
|
||||
float ThisZPos;
|
||||
|
||||
ThisZPos=ThisTri.vtx[0].z;
|
||||
|
@ -592,15 +593,19 @@ int TileID=OutTile3dList.size();
|
|||
}
|
||||
else
|
||||
{ // create flat tile (This is WRONG, flip tex are gen, need to flip goem)
|
||||
int TexID=Create2dTex(InTile.Tile,InTile.Flags);
|
||||
// int TexID=Create2dTex(InTile.Tile,InTile.Flags);
|
||||
int TexID=Create2dTex(InTile.Tile,0);
|
||||
|
||||
ThisTile.TriCount=2;
|
||||
|
||||
for (int i=0; i<2; i++)
|
||||
{
|
||||
FlatFace[i].Flags=0;
|
||||
FlatFace[i].TexID=TexID;
|
||||
SortList.push_back(FlatFace[i]);
|
||||
}
|
||||
InTile.Flags=0;
|
||||
|
||||
// InTile.Flags=0;
|
||||
}
|
||||
|
||||
// Add sorted list to main list
|
||||
|
@ -668,24 +673,25 @@ int TileID=OutTile3dList.size();
|
|||
int CMkLevel::Create2dTex(int Tile,int Flags)
|
||||
{
|
||||
sExpTile &SrcTile=InTileList[Tile];
|
||||
//sMkLevelTex InTex;
|
||||
|
||||
// InTex.RGB=SrcTile.RGB;
|
||||
|
||||
// Try and find RGB data match
|
||||
// not working
|
||||
// Idx=FindRGBMatch(InTex);
|
||||
// if (Idx!=-1) return(Idx);
|
||||
|
||||
sMkLevelTex InTex;
|
||||
int Idx;
|
||||
// Must be new, add it
|
||||
// InTex.Set=SrcTile.Set;
|
||||
// InTex.Flags=Flags;
|
||||
// InTex.XOfs=SrcTile.XOfs;
|
||||
// InTex.YOfs=SrcTile.YOfs;
|
||||
InTex.Tile=Tile;
|
||||
InTex.Flags=Flags;
|
||||
|
||||
int TexID=BuildTileTex(SrcTile,Flags);
|
||||
// Tex2dList.push_back(InTex);
|
||||
return(TexID);
|
||||
Idx=Tex2dList.Find(InTex);
|
||||
|
||||
if (Idx!=-1)
|
||||
{
|
||||
return(Tex2dList[Idx].TexID);
|
||||
}
|
||||
|
||||
InTex.TexID=BuildTileTex(SrcTile,Flags);
|
||||
Tex2dList.push_back(InTex);
|
||||
return(InTex.TexID);
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
|
@ -980,7 +986,7 @@ int i,ListSize=QuadList.size();
|
|||
// Write It
|
||||
fwrite(&Q,1,sizeof(sQuad),File);
|
||||
}
|
||||
printf("Quad %i\n",ListSize,MaxOT);
|
||||
printf("Quad %i\n",ListSize);
|
||||
return(ThisPos);
|
||||
|
||||
}
|
||||
|
@ -1090,9 +1096,40 @@ int Ofs=ftell(File);
|
|||
|
||||
Out.TriCount=ThisModel.TriCount;
|
||||
Out.TriStart=ThisModel.TriStart;
|
||||
printf("Writing Model %s (%i/%i)- %i Tris\n",ThisModel.Name,i+1,ListSize,Out.TriCount);
|
||||
CalcModelBBox(ThisModel,Out.BBox);
|
||||
printf("Writing Model %s (%i/%i) (%i Tris) (BBox %i,%i->%i,%i)\n",ThisModel.Name,i+1,ListSize,Out.TriCount,Out.BBox.XMin,Out.BBox.YMin,Out.BBox.XMax,Out.BBox.YMax);
|
||||
fwrite(&Out,1,sizeof(sModel),File);
|
||||
}
|
||||
|
||||
return(Ofs);
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
void CMkLevel::CalcModelBBox(sMkLevelModel &ThisModel,sBBox &BBox)
|
||||
{
|
||||
vector<sTri> &TriList=OutFaceList.GetOutTriList();
|
||||
vector<sVtx> const &VtxList=OutFaceList.GetVtxList();
|
||||
int Vtx[3];
|
||||
|
||||
BBox.XMin=+32000;
|
||||
BBox.XMax=-32000;
|
||||
BBox.YMin=+32000;
|
||||
BBox.YMax=-32000;
|
||||
|
||||
for (int T=0; T<ThisModel.TriCount; T++)
|
||||
{
|
||||
sTri &ThisTri=TriList[T+ThisModel.TriStart];
|
||||
Vtx[0]=ThisTri.P0;
|
||||
Vtx[1]=ThisTri.P1;
|
||||
Vtx[2]=ThisTri.P2;
|
||||
|
||||
for (int V=0; V<3; V++)
|
||||
{
|
||||
sVtx const &ThisVtx=VtxList[Vtx[V]];
|
||||
if (BBox.XMin>+ThisVtx.vx) BBox.XMin=+ThisVtx.vx;
|
||||
if (BBox.XMax<+ThisVtx.vx) BBox.XMax=+ThisVtx.vx;
|
||||
if (BBox.YMin>-ThisVtx.vy) BBox.YMin=-ThisVtx.vy;
|
||||
if (BBox.YMax<-ThisVtx.vy) BBox.YMax=-ThisVtx.vy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,26 @@ bool operator ==(sMkLevelTex const &v1)
|
|||
}
|
||||
};
|
||||
*/
|
||||
|
||||
struct sMkLevelTex
|
||||
{
|
||||
// int Set;
|
||||
// int XOfs,YOfs;
|
||||
int Tile;
|
||||
int Flags;
|
||||
int TexID;
|
||||
|
||||
bool operator ==(sMkLevelTex const &v1)
|
||||
{
|
||||
// if (Set!=v1.Set) return(false);
|
||||
// if (XOfs!=v1.XOfs) return(false);
|
||||
// if (YOfs!=v1.YOfs) return(false);
|
||||
if (Tile!=v1.Tile) return(false);
|
||||
if (Flags!=v1.Flags) return(false);
|
||||
return(true);
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
struct sMkLevelModel
|
||||
{
|
||||
|
@ -112,7 +132,7 @@ protected:
|
|||
int WriteQuadList();
|
||||
int WriteVtxList();
|
||||
void WriteTileBank();
|
||||
|
||||
void CalcModelBBox(sMkLevelModel &ThisModel,sBBox &BBox);
|
||||
void BuildTiles();
|
||||
|
||||
void ExpTri2Face(sExpTri &In,CFace &Out,bool ImportTex=true);
|
||||
|
@ -138,7 +158,7 @@ protected:
|
|||
|
||||
CList<sExpLayerTile> Tile2dList;
|
||||
CList<sExpLayerTile> Tile3dList;
|
||||
// CList<sMkLevelTex> Tex2dList;
|
||||
CList<sMkLevelTex> Tex2dList;
|
||||
CTexGrab TexGrab;
|
||||
CList<Frame> BmpList;
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ struct sLang
|
|||
|
||||
struct sInFile
|
||||
{
|
||||
char Name[32];
|
||||
char Name[256];
|
||||
int Chunks;
|
||||
int Offset;
|
||||
};
|
||||
|
@ -211,6 +211,7 @@ sInFile InFile;
|
|||
InFile.Chunks=0;
|
||||
while (!IsWhiteSpace(*Ptr) && Ptr<EndPtr) InFile.Name[i++]=*Ptr++;
|
||||
InFile.Name[i]=0;
|
||||
strupr(InFile.Name);
|
||||
FileList.push_back(InFile);
|
||||
// printf("%s\n",InFile.Name);
|
||||
}
|
||||
|
@ -308,7 +309,7 @@ int FileCount=FileList.size();
|
|||
int Offset=0;
|
||||
|
||||
sprintf(HdrStr,"__%s_SPEECH_DEFINES_H__",strupr(fname));
|
||||
sprintf(EqStr,"%s_STR_",strupr(fname));
|
||||
sprintf(EqStr,"%s_SPEECH_",strupr(fname));
|
||||
|
||||
OutFile= fopen( IncludeFilename,"wt" );
|
||||
if(!OutFile)
|
||||
|
@ -326,7 +327,7 @@ int Offset=0;
|
|||
sInFile &ThisFile=FileList[File];
|
||||
|
||||
ConvertString(ThisFile.Name);
|
||||
fprintf( OutFile, "%s%s = 0x%x,\n", EqStr,ThisFile.Name, Offset+(BankNo<<BANK_SHIFT));
|
||||
fprintf( OutFile, "%s%s = 0x%x,\n", "SPEECH_",ThisFile.Name, Offset+(BankNo<<BANK_SHIFT));
|
||||
Offset+=ThisFile.Chunks+1; // +1 for pad
|
||||
}
|
||||
fprintf( OutFile, "};\n" );
|
||||
|
|
|
@ -50,7 +50,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"C:\PRLSR\tools\MkSpeech.exe"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\..\tools\MkSpeech.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "MkSpeech - Win32 Debug"
|
||||
|
||||
|
@ -63,6 +63,7 @@ LINK32=link.exe
|
|||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
|
|
|
@ -46,6 +46,8 @@
|
|||
#include "level\level.h"
|
||||
#endif
|
||||
|
||||
#include "sound\sound.h"
|
||||
#include "sound\speech.h"
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
@ -78,6 +80,134 @@
|
|||
/*----------------------------------------------------------------------
|
||||
Vars
|
||||
---- */
|
||||
struct sSpeechTable
|
||||
{
|
||||
int TextID;
|
||||
int SpeechID;
|
||||
};
|
||||
|
||||
const sSpeechTable SpeechTable[]=
|
||||
{
|
||||
{-1,SPEECH_CH1_BREAD},
|
||||
{STR__INGAME__CH1__L2__SANDY3 ,SPEECH_CH1_HELMET},
|
||||
{STR__INGAME__CH1__L2__SANDY2 ,SPEECH_CH1_I_LIKE_YOU},
|
||||
{STR__INGAME__CH2__L1__KRUSTY1 ,SPEECH_CH1_SPNGEBOB_ARRRG},
|
||||
{STR__INGAME__CH1__L4__KRUSTY2 ,SPEECH_CH1_SPONGEBOB_VACATION},
|
||||
{STR__INGAME__CH1__L2__SANDY1 ,SPEECH_CH1_TAKE_THAT_YOU},
|
||||
{-1,SPEECH_CH1_YIPPE},
|
||||
{-1,SPEECH_SPONGEBOB_ANNOYING_LAUGH},
|
||||
{-1,SPEECH_SPONGEBOB_BREATHING},
|
||||
{-1,SPEECH_SPONGEBOB_BUBBLEBLOW},
|
||||
{-1,SPEECH_SPONGEBOB_BURP},
|
||||
{-1,SPEECH_SPONGEBOB_COUGH_COUGH},
|
||||
{-1,SPEECH_SPONGEBOB_HIYA},
|
||||
{-1,SPEECH_SPONGEBOB_IM_READY},
|
||||
{-1,SPEECH_SPONGEBOB_I_LOVE_BIKIBI_BOTTOM},
|
||||
{-1,SPEECH_SPONGEBOB_I_NEED_WATER},
|
||||
{-1,SPEECH_SPONGEBOB_LET_ME_JUST_GRAB},
|
||||
{-1,SPEECH_SPONGEBOB_OPPPS_PANTS},
|
||||
{-1,SPEECH_SPONGEBOB_OUCH},
|
||||
{-1,SPEECH_SPONGEBOB_YIKES},
|
||||
{-1,SPEECH_SPONGEBOB_YOU_CANT_FOOL_ME},
|
||||
{-1,SPEECH_CH2_BACK_ALREADY},
|
||||
{-1,SPEECH_CH2_BACK_TO_MERMAID_MAN},
|
||||
{-1,SPEECH_CH2_FIND_FALSE_TEETH},
|
||||
{-1,SPEECH_CH2_GARY_FOLLOW_ME},
|
||||
{STR__INGAME__CH2__L2__PATRICK1 ,SPEECH_CH2_HEY_SPNGEBOB},
|
||||
{STR__INGAME__CH2__L2__PATRICK2 ,SPEECH_CH2_HWERE_USE_MY_BALLON},
|
||||
{-1,SPEECH_CH2_IM_ON_MY_WAY},
|
||||
{-1,SPEECH_CH2_IM_READY_OOPS},
|
||||
{-1,SPEECH_CH2_MOIST},
|
||||
{STR__INGAME__CH4__L3__KRUSTY1 ,SPEECH_CH2_NOW_LISTEN_BOY},
|
||||
{STR__INGAME__CH2__L1__KRUSTY2 ,SPEECH_CH2_USE_THE_CORAL_BLOWER},
|
||||
{-1,SPEECH_CH2_YIPEE},
|
||||
{-1,SPEECH_SQUIDWARD_ARE_YOU_INSANE},
|
||||
{-1,SPEECH_SQUIDWARD_CAN_WE_LOWER_VOLUME},
|
||||
{-1,SPEECH_SQUIDWARD_HAHAHONKHONK},
|
||||
{-1,SPEECH_SQUIDWARD_HMM_OH_BOY},
|
||||
{-1,SPEECH_SQUIDWARD_HOW_DID_I},
|
||||
{-1,SPEECH_SQUIDWARD_TUT},
|
||||
{STR__INGAME__CH3__L1__PLANKTON1 ,SPEECH_CH3_BLAST_YOU_SPONGEBREATH},
|
||||
{-1,SPEECH_CH3_BY_THE_POWER_OF_NEPTUNE},
|
||||
{STR__INGAME__CH3__L3__PATRICK1 ,SPEECH_CH3_DADADADADA},
|
||||
{STR__INGAME__CH3__L3__PATRICK2 ,SPEECH_CH3_DIPPED_AND_READY_TO_GO},
|
||||
{-1,SPEECH_CH3_GASP},
|
||||
{-1,SPEECH_CH3_HAHAHAHAHAHA},
|
||||
{-1,SPEECH_CH3_HA_TO_THE_KELP_JUNGLE},
|
||||
{-1,SPEECH_CH3_LOOK_WHAT_IVE_GOT_FOR_YOU},
|
||||
{-1,SPEECH_CH3_LOOK_YOU_ARE_BUGGING_ME},
|
||||
{-1,SPEECH_CH3_PATRICK},
|
||||
{-1,SPEECH_CH3_SURPRISE_IM_BACK},
|
||||
{-1,SPEECH_CH3_TARZAN},
|
||||
{-1,SPEECH_CH3_THAT_IS_AMAZING},
|
||||
{-1,SPEECH_CH3_UH_OH_THOSE_PLANTS},
|
||||
{-1,SPEECH_CH3_UNIFORMS},
|
||||
{-1,SPEECH_CH3_WHATS_THAT_SMELL},
|
||||
{-1,SPEECH_DUTCHMAN_BET_YOUR_LIVERS},
|
||||
{-1,SPEECH_DUTCHMAN_HAHA_YOU_SCALLYWAGS},
|
||||
{-1,SPEECH_DUTCHMAN_IM_GONNA_STEAL_YOUR_SOUL},
|
||||
{-1,SPEECH_DUTCHMAN_WAHAHA},
|
||||
{-1,SPEECH_PARTY_HAPPY_BIRTHADAY_PATRICK},
|
||||
{-1,SPEECH_PARTY_STAND_STILL},
|
||||
{-1,SPEECH_PARTY_TODAY_IS_MY_BIRTDAY_HMMMM},
|
||||
{-1,SPEECH_CH4_DOES_A_SNAIL_MEOW},
|
||||
{-1,SPEECH_CH4_HMM_THATS_FUNNY___I_KNOW},
|
||||
{-1,SPEECH_CH4_SQUEAKYBOOTS},
|
||||
{-1,SPEECH_CH4_TARTAR},
|
||||
{-1,SPEECH_CH4_THIS_ONES_EMPTY_TOO},
|
||||
{-1,SPEECH_CH4_THIS_ONE_TOO},
|
||||
{-1,SPEECH_CH4_TV_FIXED},
|
||||
{STR__INGAME__CH4__L3__KRUSTY2 ,SPEECH_CH4_WEAR_YOUR_BOOTS},
|
||||
{-1,SPEECH_CH4_YIHEEE_IVE_GOT_A_KANDY_BAR},
|
||||
{-1,SPEECH_PATRICK_ANYONE_WANT_A_DANC3},
|
||||
{-1,SPEECH_PATRICK_DONT_WORRY_BUDDY},
|
||||
{-1,SPEECH_PATRICK_HURH_HURH},
|
||||
{-1,SPEECH_PATRICK_ITS_MY_BIRTDAY},
|
||||
{-1,SPEECH_PATRICK_MERRY_XMAS},
|
||||
{-1,SPEECH_PATRICK_TECHNIQUE},
|
||||
{-1,SPEECH_PATRICK_YIKES},
|
||||
{-1,SPEECH_PATRICK_YOUR_DOING_FINE},
|
||||
{-1,SPEECH_CH5_BIRTDAY_SURPRISE},
|
||||
{-1,SPEECH_CH5_CONGFRATUS},
|
||||
{-1,SPEECH_CH5_FIND_AN_AERIAL},
|
||||
{-1,SPEECH_CH5_FREINDSHIP_PRICELESS},
|
||||
{-1,SPEECH_CH5_NEED_A_TV_FIXED},
|
||||
{-1,SPEECH_CH5_NEED_MONKEY_WRENCH},
|
||||
{-1,SPEECH_CH5_NOPE_JUST_FORCE_THAT},
|
||||
{-1,SPEECH_CH5_OILRIG_IDEA},
|
||||
{-1,SPEECH_CH5_POURUS_FRTEAK},
|
||||
{-1,SPEECH_SANDY_HEHEHEHEHEHE},
|
||||
{-1,SPEECH_SANDY_HIYAH},
|
||||
{-1,SPEECH_SANDY_HOLD_ON_THERE_DUDE},
|
||||
{-1,SPEECH_SANDY_I_LIKE_YOU_SPONGEBOB},
|
||||
{-1,SPEECH_SANDY_TAKE_THAT_YOU_OLD},
|
||||
{-1,SPEECH_SANDY_YEEHAR},
|
||||
{-1,SPEECH_SANDY_YOUR_A_FUNNY_LITTLE},
|
||||
{-1,SPEECH_INTRO_AH_HERE_WE_ARE_AT},
|
||||
{-1,SPEECH_INTRO_GARY_I_JUST_HAD_AN_IDEA},
|
||||
{STR__INGAME__CH1__L1__SPONGEY1 ,SPEECH_INTRO_HI_SQUIDWOOD_READY_FOR_A},
|
||||
{-1,SPEECH_INTRO_ITS_MY_BEST_FRIEND},
|
||||
{-1,SPEECH_INTRO_LIKE_A_CALCULATOR},
|
||||
{STR__INGAME__CH1__L1__SQUIDWARD2 ,SPEECH_INTRO_LOOK_SPONGEBOB},
|
||||
{-1,SPEECH_INTRO_MEOW},
|
||||
{-1,SPEECH_INTRO_OH_NO_NOT_YOU_AGAIN},
|
||||
{-1,SPEECH_INTRO_SEANUT_BUTTER},
|
||||
{STR__INGAME__CH1__L1__SQUIDWARD1 ,SPEECH_INTRO_TODAYS_SUNDAY},
|
||||
{-1,SPEECH_INTRO_TODAY_HE_IS_IN_SEARCH},
|
||||
{-1,SPEECH_INTRO_WELL_WE_ARE_A_BIT_BUSY},
|
||||
{-1,SPEECH_INTRO_YIPPED____NOW},
|
||||
{-1,SPEECH_KRABS_HELLO_ME_BOY},
|
||||
{-1,SPEECH_KRABS_ILL_BE_IN_MY_QUARTERS},
|
||||
{-1,SPEECH_KRABS_WELL_LAD},
|
||||
{-1,SPEECH_PLANKTON_COLLEGE},
|
||||
{-1,SPEECH_PLANKTON_GVE_ME_THE_PATTY},
|
||||
{-1,SPEECH_PLANKTON_HAND_ME_CRABBY_PATTY},
|
||||
{-1,SPEECH_PLANKTON_MWAHAHHAHA},
|
||||
{-1,SPEECH_PLANKTON_OUCH},
|
||||
{-1,SPEECH_PLANKTON_THIS_STINKS},
|
||||
{-1,SPEECH_PLANKTON_YOU_POROUS_FREAK},
|
||||
};
|
||||
const int SpeechTableSize=sizeof(SpeechTable)/sizeof(sSpeechTable);
|
||||
|
||||
CConversation::CHAR_ICON_FRAMES CConversation::s_characterIconFrames[]=
|
||||
{
|
||||
|
@ -178,6 +308,7 @@ void CConversation::think(int _frames)
|
|||
{
|
||||
s_currentScript=NULL;
|
||||
s_currentState=STATE_INACTIVE;
|
||||
CSoundMediator::stopSpeech();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -270,6 +401,15 @@ void CConversation::setCharacterAndText(int _characterId,int _textId)
|
|||
s_faceFrame=(s_characterIconFrames[_characterId].m_frame);
|
||||
s_speechId=_textId;
|
||||
s_TextOffset=0;
|
||||
|
||||
for (int i=0; i<SpeechTableSize; i++)
|
||||
{
|
||||
if (SpeechTable[i].TextID==_textId)
|
||||
{
|
||||
CSoundMediator::playSpeech((SpeechEquate)SpeechTable[i].SpeechID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -558,7 +558,7 @@ POLY_FT4 *Ft4;
|
|||
}
|
||||
else
|
||||
{
|
||||
printf("NO FREE NODES\n");
|
||||
// printf("NO FREE NODES\n");
|
||||
ThisNode=PoolEntry->ActorCache.Head;
|
||||
}
|
||||
ASSERT(ThisNode);
|
||||
|
|
|
@ -624,7 +624,7 @@ void CSoundMediator::stopAllSfx()
|
|||
void CSoundMediator::playSpeech(SpeechEquate _speech)
|
||||
{
|
||||
stopSpeech();
|
||||
CXAStream::PlaySpeech(_speech);
|
||||
CXAStream::PlaySpeech(_speech,1);
|
||||
// s_volumeDirty[SPEECH]=true; // Force a volume update
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue