This commit is contained in:
Daveo 2001-05-05 21:18:12 +00:00
parent 16645de3b0
commit b26a6d76bb
38 changed files with 517 additions and 137 deletions

View file

@ -84,23 +84,18 @@ inline bool uvaprox( sUV &uv0, sUV &uv1 )
//*************************************************************************** //***************************************************************************
void CFaceStore::SetTPageFlag(CFace &F,int MatFlag) void CFaceStore::SetTPageFlag(CFace &F,int MatFlag)
{ {
int Trans=0;
switch (MatFlag>>3) switch (MatFlag>>3)
{ {
// case 0: Trans=2; break; /* Subtractive */ // case 0: F.TPageFlag=2; break; /* Subtractive */
case 1: Trans=1; break; /* Additive */ 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 ) 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; CFace F;
for (int i=0; i<3; i++) for (int i=0; i<3; i++)
@ -119,7 +114,8 @@ CFace F;
F.TexName=Tex; F.TexName=Tex;
F.Mat = -1; F.Mat = -1;
SetTPageFlag(F,MatFlag); 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.uv1[0]=(uv1[0]-XOfs); Out.uv1[1]=(uv1[1]-YOfs);
Out.uv2[0]=(uv2[0]-XOfs); Out.uv2[1]=(uv2[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.Clut=ThisTex.Clut;
Out.PolyCode=GPU_PolyFT3Code; Out.PolyCode=GPU_PolyFT3Code;
if (In.TPageFlag) if (In.TPageFlag)
{ {
Out.PolyCode|=GPUCode_SemiTrans; Out.PolyCode|=GPUCode_SemiTrans;
if (In.TPageFlag!=1)
{
Out.TPage|=In.TPageFlag<<5;
}
} }
} }

View file

@ -84,8 +84,8 @@ int Width,Height;
#ifdef _DEBUG #ifdef _DEBUG
// AddLayer(LAYER_TYPE_SHADE,LAYER_SUBTYPE_NONE, Width, Height); // AddLayer(LAYER_TYPE_SHADE,LAYER_SUBTYPE_NONE, Width, Height);
// AddLayer(LAYER_TYPE_TRIGGER,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_HAZARD,LAYER_SUBTYPE_NONE, Width, Height);
// AddLayer(LAYER_TYPE_FX,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_ACTOR,LAYER_SUBTYPE_NONE, Width, Height);
// AddLayer(LAYER_TYPE_ITEM,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); ActiveLayer=FindLayer(LAYER_TYPE_TILE,LAYER_SUBTYPE_ACTION);
#ifdef _DEBUG #ifdef _DEBUG
ActiveLayer=FindLayer(LAYER_TYPE_PLATFORM,LAYER_SUBTYPE_NONE); ActiveLayer=FindLayer(LAYER_TYPE_HAZARD,LAYER_SUBTYPE_NONE);
if (ActiveLayer<0) ActiveLayer=0; if (ActiveLayer<0) ActiveLayer=0;
#endif #endif
CurrentLayer=Layer[ActiveLayer]; CurrentLayer=Layer[ActiveLayer];
@ -258,6 +258,7 @@ CLayer *ThisLayer;
for (int i=StartLayer; i<EndLayer; i++) for (int i=StartLayer; i<EndLayer; i++)
{ {
ThisLayer->LoadGfx(this);
if (ThisLayer->IsVisible()) if (ThisLayer->IsVisible())
{ {
ThisLayer->Render(this,ThisCam,Is3dFlag); ThisLayer->Render(this,ThisCam,Is3dFlag);

View file

@ -277,7 +277,7 @@ int ListSize=TriList.size();
GString TexName=SceneTexList[TexID]; GString TexName=SceneTexList[TexID];
ThisName=SetPath+TexName; ThisName=SetPath+TexName;
TRACE2("%i !%s!\n",TexID,ThisName); // TRACE2("%i !%s!\n",TexID,ThisName);
TexID=TexCache.ProcessTexture(ThisName); TexID=TexCache.ProcessTexture(ThisName);
} }
// Sort Rest of Tri info // Sort Rest of Tri info

View file

@ -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);} virtual bool Command(int CmdMsg,CCore *Core,int Param0=0,int Param1=0) {return(false);}
CPoint GetElemPos(int ID,int Width); CPoint GetElemPos(int ID,int Width);
virtual void LoadGfx(CCore *Core){}
// Local // Local
virtual bool CanClose() {return(true);} virtual bool CanClose() {return(true);}

View file

@ -183,6 +183,7 @@ std::vector<sTriFace> &ElemTriList=ThisElem.GetTriList();
OutTri.uv[p][0]=InTri.uvs[p].u; OutTri.uv[p][0]=InTri.uvs[p].u;
OutTri.uv[p][1]=InTri.uvs[p].v; OutTri.uv[p][1]=InTri.uvs[p].v;
} }
OutTri.Flags=InTri.Flags;
TriList.push_back(OutTri); TriList.push_back(OutTri);
} }
} }

View file

@ -141,6 +141,7 @@ struct sLayerThingPlatform
int PlatformMoveType; int PlatformMoveType;
int PlatformTriStart; int PlatformTriStart;
int PlatformTriCount; int PlatformTriCount;
int PlatformParam0;
}; };
struct sLayerThingTrigger struct sLayerThingTrigger
@ -149,6 +150,8 @@ struct sLayerThingTrigger
int TriggerHeight; int TriggerHeight;
int TriggerTargetX; int TriggerTargetX;
int TriggerTargetY; int TriggerTargetY;
int TriggerTargetW;
int TriggerTargetH;
}; };
struct sLayerThingFX struct sLayerThingFX

View file

@ -32,6 +32,9 @@ void CGUILayerPlatform::DoDataExchange(CDataExchange* pDX)
{ {
CDialog::DoDataExchange(pDX); CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGUILayerPlatform) //{{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_TURNRATE_SPIN, m_TurnRateSpin);
DDX_Control(pDX, IDC_PLATFORM_SPEED_SPIN, m_SpeedSpin); DDX_Control(pDX, IDC_PLATFORM_SPEED_SPIN, m_SpeedSpin);
DDX_Control(pDX, IDC_PLATFORM_TYPE, m_Type); DDX_Control(pDX, IDC_PLATFORM_TYPE, m_Type);

View file

@ -19,6 +19,9 @@ public:
// Dialog Data // Dialog Data
//{{AFX_DATA(CGUILayerPlatform) //{{AFX_DATA(CGUILayerPlatform)
enum { IDD = IDD_LAYER_PLATFORM }; enum { IDD = IDD_LAYER_PLATFORM };
CSpinButtonCtrl m_Param0Spin;
CStatic m_Param0Txt;
CEdit m_Param0;
CSpinButtonCtrl m_TurnRateSpin; CSpinButtonCtrl m_TurnRateSpin;
CSpinButtonCtrl m_SpeedSpin; CSpinButtonCtrl m_SpeedSpin;
CComboBox m_Type; CComboBox m_Type;

View file

@ -30,6 +30,8 @@ void CGUILayerShade::DoDataExchange(CDataExchange* pDX)
{ {
CDialog::DoDataExchange(pDX); CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGUILayerShade) //{{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_DEF_LIST, m_DefList);
DDX_Control(pDX, IDC_LAYERSHADE_SHADECOUNT_SPIN, m_ShadeCountSpin); DDX_Control(pDX, IDC_LAYERSHADE_SHADECOUNT_SPIN, m_ShadeCountSpin);
DDX_Control(pDX, IDC_LAYERSHADE_SHADECOUNT, m_ShadeCount); 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_SPIN, m_GfxCurrentSpin);
DDX_Control(pDX, IDC_LAYERSHADE_GFX_CURRENT, m_GfxCurrent); DDX_Control(pDX, IDC_LAYERSHADE_GFX_CURRENT, m_GfxCurrent);
DDX_Control(pDX, IDC_LAYERSHADE_GFX_LIST, m_GfxBankList); 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_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_Y, m_GfxPosY);
DDX_Control(pDX, IDC_LAYERSHADE_GFX_SPIN_X0, m_GfxSpinx0); 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_SPIN_Y0, m_GfxSpiny0);

View file

@ -22,6 +22,8 @@ public:
// Dialog Data // Dialog Data
//{{AFX_DATA(CGUILayerShade) //{{AFX_DATA(CGUILayerShade)
enum { IDD = IDD_LAYER_SHADE }; enum { IDD = IDD_LAYER_SHADE };
CSpinButtonCtrl m_GfxPosYSpin;
CSpinButtonCtrl m_GfxPosXSpin;
CComboBox m_DefList; CComboBox m_DefList;
CSpinButtonCtrl m_ShadeCountSpin; CSpinButtonCtrl m_ShadeCountSpin;
CEdit m_ShadeCount; CEdit m_ShadeCount;
@ -40,9 +42,7 @@ public:
CSpinButtonCtrl m_GfxCurrentSpin; CSpinButtonCtrl m_GfxCurrentSpin;
CEdit m_GfxCurrent; CEdit m_GfxCurrent;
CComboBox m_GfxBankList; CComboBox m_GfxBankList;
CEdit m_GfxPosXSpin;
CEdit m_GfxPosX; CEdit m_GfxPosX;
CEdit m_GfxPosYSpin;
CEdit m_GfxPosY; CEdit m_GfxPosY;
CSpinButtonCtrl m_GfxSpinx0; CSpinButtonCtrl m_GfxSpinx0;
CSpinButtonCtrl m_GfxSpiny0; CSpinButtonCtrl m_GfxSpiny0;

View file

@ -32,6 +32,11 @@ void CGUILayerTrigger::DoDataExchange(CDataExchange* pDX)
{ {
CDialog::DoDataExchange(pDX); CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGUILayerTrigger) //{{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_TARGET, m_TargetTxt);
DDX_Control(pDX, IDC_TRIGGER_TARGETY_SPIN, m_TargetYSpin); DDX_Control(pDX, IDC_TRIGGER_TARGETY_SPIN, m_TargetYSpin);
DDX_Control(pDX, IDC_TRIGGER_TARGETX_SPIN, m_TargetXSpin); 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_WIDTH, OnParamChange)
ON_EN_CHANGE(IDC_TRIGGER_TARGETX, OnParamChange) ON_EN_CHANGE(IDC_TRIGGER_TARGETX, OnParamChange)
ON_EN_CHANGE(IDC_TRIGGER_TARGETY, 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 //}}AFX_MSG_MAP
END_MESSAGE_MAP() END_MESSAGE_MAP()

View file

@ -19,6 +19,11 @@ public:
// Dialog Data // Dialog Data
//{{AFX_DATA(CGUILayerTrigger) //{{AFX_DATA(CGUILayerTrigger)
enum { IDD = IDD_LAYER_TRIGGER }; enum { IDD = IDD_LAYER_TRIGGER };
CSpinButtonCtrl m_TargetWSpin;
CSpinButtonCtrl m_TargetHSpin;
CStatic m_TargetWHTxt;
CEdit m_TargetW;
CEdit m_TargetH;
CStatic m_TargetTxt; CStatic m_TargetTxt;
CSpinButtonCtrl m_TargetYSpin; CSpinButtonCtrl m_TargetYSpin;
CSpinButtonCtrl m_TargetXSpin; CSpinButtonCtrl m_TargetXSpin;

View file

@ -70,6 +70,7 @@ virtual bool IsVisible() {return(LayerDef.VisibleFlag);}
virtual int GetType() {return(LayerDef.Type);} virtual int GetType() {return(LayerDef.Type);}
virtual int GetSubType() {return(LayerDef.SubType);} virtual int GetSubType() {return(LayerDef.SubType);}
virtual void LoadGfx(CCore *Core)=0;
virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d){}; virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d){};
virtual void Render4TGA(const char *Filename){} virtual void Render4TGA(const char *Filename){}

View file

@ -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);
}

View file

@ -34,6 +34,9 @@ public:
void GUIThingUpdate(bool OnlySel=false); void GUIThingUpdate(bool OnlySel=false);
void GUIThingPointUpdate(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: protected:
CGUILayerHazard GUIHazard; CGUILayerHazard GUIHazard;

View file

@ -58,7 +58,6 @@ sLayerThingDataOLD OldThing;
ThisThing.Data.Platform.PlatformCollisionFlag=OldThing.CollisionFlag; ThisThing.Data.Platform.PlatformCollisionFlag=OldThing.CollisionFlag;
ThisThing.Data.Platform.PlatformTriCount=OldThing.TriCount; // Not needed but what the hell!! ThisThing.Data.Platform.PlatformTriCount=OldThing.TriCount; // Not needed but what the hell!!
ThisThing.Data.Platform.PlatformTriStart=OldThing.TriStart; // 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_SpeedSpin.SetRange(0,255);
GUIPlatform.m_TurnRateSpin.SetRange(0,255); GUIPlatform.m_TurnRateSpin.SetRange(0,255);
GUIPlatform.m_Param0Spin.SetRange(0,255);
// Init type lists // Init type lists
{ {
@ -89,6 +89,10 @@ CComboBox &List=GUIPlatform.m_Type;
List.AddString("Weighted"); List.AddString("Weighted");
List.AddString("Rotating"); 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_Collision.SetCheck(ThisThing.Data.Platform.PlatformCollisionFlag);
GUIPlatform.m_MoveList.SetCurSel(ThisThing.Data.Platform.PlatformMoveType); GUIPlatform.m_MoveList.SetCurSel(ThisThing.Data.Platform.PlatformMoveType);
GUIPlatform.m_Type.SetCurSel(ThisThing.Data.Platform.PlatformType); 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 else
{ {
@ -147,6 +167,7 @@ void CLayerPlatform::GUIThingUpdate(bool OnlySel)
GUIPlatform.m_Collision.SetCheck(false); GUIPlatform.m_Collision.SetCheck(false);
GUIPlatform.m_MoveList.SetCurSel(-1); GUIPlatform.m_MoveList.SetCurSel(-1);
GUIPlatform.m_Type.SetCurSel(-1); GUIPlatform.m_Type.SetCurSel(-1);
} }
GUIPlatform.DisableCallback(false); GUIPlatform.DisableCallback(false);
} }
@ -168,6 +189,7 @@ void CLayerPlatform::GUIChanged(CCore *Core)
ThisThing.Data.Platform.PlatformCollisionFlag=GUIPlatform.m_Collision.GetCheck()!=0; ThisThing.Data.Platform.PlatformCollisionFlag=GUIPlatform.m_Collision.GetCheck()!=0;
ThisThing.Data.Platform.PlatformMoveType=GUIPlatform.m_MoveList.GetCurSel(); ThisThing.Data.Platform.PlatformMoveType=GUIPlatform.m_MoveList.GetCurSel();
ThisThing.Data.Platform.PlatformType=GUIPlatform.m_Type.GetCurSel(); ThisThing.Data.Platform.PlatformType=GUIPlatform.m_Type.GetCurSel();
ThisThing.Data.Platform.PlatformParam0=GUIPlatform.GetVal(GUIPlatform.m_Param0);
SetThingParams(ThisThing); SetThingParams(ThisThing);
} }
} }

View file

@ -49,6 +49,7 @@ protected:
CGUILayerPlatform GUIPlatform; CGUILayerPlatform GUIPlatform;
}; };
/*****************************************************************************/ /*****************************************************************************/

View file

@ -143,12 +143,12 @@ int i;
// Load GfxList // Load GfxList
File->Read(&GfxCount,sizeof(int)); File->Read(&GfxCount,sizeof(int));
GfxList.resize(GfxCount); GfxList.resize(GfxCount);
for (i=0; i<GfxCount; i++) for (i=0; i<GfxCount; i++)
{ {
sLayerShadeGfx &ThisGfx=GfxList[i]; sLayerShadeGfx &ThisGfx=GfxList[i];
File->Read(&ThisGfx,sizeof(sLayerShadeGfx)); File->Read(&ThisGfx,sizeof(sLayerShadeGfx));
} }
if (GfxCount) CurrentGfx=0;
} }
} }
@ -243,7 +243,6 @@ float ZoomH=Core->GetZoomH();
Vector3 &Scale=Core->GetScaleVector(); Vector3 &Scale=Core->GetScaleVector();
Vector3 ScrOfs(ZoomW/2,ZoomH/2,0); Vector3 ScrOfs(ZoomW/2,ZoomH/2,0);
int i; int i;
if (GfxBank->NeedLoad()) GfxBank->LoadAllSets(Core);
CElem Elem=GfxBank->GetElem(ThisGfx.Gfx,0); CElem Elem=GfxBank->GetElem(ThisGfx.Gfx,0);
@ -323,6 +322,7 @@ int i,ListSize;
GUIShade.m_GfxTransList.AddString("Subtractive"); GUIShade.m_GfxTransList.AddString("Subtractive");
GUIShade.m_GfxTransList.AddString("Another one"); 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_GfxSpinx0.SetRange(-32,+32); GUIShade.m_GfxSpiny0.SetRange(-32,+32);
GUIShade.m_GfxSpinx1.SetRange(-32,+32); GUIShade.m_GfxSpiny1.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); 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) void CLayerShade::GUIChanged(CCore *Core)
{ {
int i,ListSize; int i,ListSize;
int LastGfx=CurrentGfx;
// Shade // Shade
for (i=0; i<LAYER_SHADE_MAX; i++) for (i=0; i<LAYER_SHADE_MAX; i++)
{ {
@ -396,13 +396,12 @@ int i,ListSize;
} }
GUIShade.GetVal(GUIShade.m_ShadeCount,ShadeCount,2,4); GUIShade.GetVal(GUIShade.m_ShadeCount,ShadeCount,2,4);
// Gfx // Gfx
GUIShade.GetVal(GUIShade.m_GfxCurrent,CurrentGfx);
ListSize=GfxList.size(); ListSize=GfxList.size();
GUIShade.GetVal(GUIShade.m_GfxCurrent,ListSize,0,ListSize);
if (!ListSize || CurrentGfx==-1) return; if (!ListSize || CurrentGfx==-1) return;
sLayerShadeGfx &ThisGfx=GfxList[CurrentGfx]; sLayerShadeGfx &ThisGfx=GfxList[CurrentGfx];
GUIShade.GetVal(GUIShade.m_GfxCurrent,ListSize,0,ListSize);
GUIShade.GetVal(GUIShade.m_GfxPosX,ThisGfx.Pos.x); GUIShade.GetVal(GUIShade.m_GfxPosX,ThisGfx.Pos.x);
GUIShade.GetVal(GUIShade.m_GfxPosY,ThisGfx.Pos.y); GUIShade.GetVal(GUIShade.m_GfxPosY,ThisGfx.Pos.y);
ThisGfx.Gfx=GUIShade.m_GfxBankList.GetCurSel(); 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); GUIShade.GetVal(GUIShade.m_Gfxx3,ThisGfx.Ofs[3].x); GUIShade.GetVal(GUIShade.m_Gfxy3,ThisGfx.Ofs[3].y);
ThisGfx.TransMode=GUIShade.m_GfxTransList.GetCurSel(); ThisGfx.TransMode=GUIShade.m_GfxTransList.GetCurSel();
GUIUpdate(Core); if (CurrentGfx!=LastGfx)
{
GUIUpdate(Core);
}
} }
/*****************************************************************************/ /*****************************************************************************/

View file

@ -57,6 +57,7 @@ public:
void Save(CFile *File); void Save(CFile *File);
void Export(CCore *Core,CExport &Exp); void Export(CCore *Core,CExport &Exp);
virtual void LoadGfx(CCore *Core) {if (GfxBank->NeedLoad()) GfxBank->LoadAllSets(Core);}
// Functions // Functions
bool LButtonControl(CCore *Core,UINT nFlags, CPoint &CursorPos,bool DownFlag); bool LButtonControl(CCore *Core,UINT nFlags, CPoint &CursorPos,bool DownFlag);

View file

@ -228,7 +228,6 @@ Vector3 ScrOfs(ZoomW/2,ZoomH/2,0);
ScrOfs.z=-4.0f; ScrOfs.z=-4.0f;
} }
if (ThingBank->NeedLoad()) ThingBank->LoadAllSets(Core);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glPushMatrix(); glPushMatrix();
@ -353,6 +352,7 @@ bool Ret=false;
SelectThing(CursorPos); SelectThing(CursorPos);
break; break;
case MouseModeNew: case MouseModeNew:
GUIChanged(Core);
AddThing(CursorPos); AddThing(CursorPos);
break; break;
case MouseModePoints: case MouseModePoints:

View file

@ -56,6 +56,8 @@ virtual void GUIChanged(CCore *Core);
int GetWidth(); int GetWidth();
int GetHeight(); int GetHeight();
virtual void LoadGfx(CCore *Core) {if (ThingBank->NeedLoad()) ThingBank->LoadAllSets(Core);}
virtual void GUIThingDefClear(){}; virtual void GUIThingDefClear(){};
virtual void GUIThingUpdate(bool OnlySel=false){}; virtual void GUIThingUpdate(bool OnlySel=false){};
virtual void GUIThingUpdateList(CComboBox &List,bool OnlySel=false); virtual void GUIThingUpdateList(CComboBox &List,bool OnlySel=false);

View file

@ -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) 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 ShiftX=ThisCam.x - (int)ThisCam.x;
float ShiftY=ThisCam.y - (int)ThisCam.y; float ShiftY=ThisCam.y - (int)ThisCam.y;
if (TileBank->NeedLoad())
{
TileBank->LoadAllSets(Core);
Core->Validate(GetType());
}
if (StartX<0) StartX=0; if (StartX<0) StartX=0;
if (StartY<0) StartY=0; if (StartY<0) StartY=0;

View file

@ -52,7 +52,7 @@ virtual void GUIChanged(CCore *Core);
void Validate(CCore *Core); void Validate(CCore *Core);
void Export(CCore *Core,CExport &Exp); void Export(CCore *Core,CExport &Exp);
void LoadGfx(CCore *Core);
// Functions // Functions
virtual bool LButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag); virtual bool LButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag);
virtual bool RButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag); virtual bool RButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag);

View file

@ -84,6 +84,7 @@ float Col=0.8f,A=0.8f;
glTranslatef(-ThisCam.x,ThisCam.y,0); // Set scroll offset glTranslatef(-ThisCam.x,ThisCam.y,0); // Set scroll offset
glTranslatef(-ScrOfs.x,ScrOfs.y,0); // Bring to top left corner glTranslatef(-ScrOfs.x,ScrOfs.y,0); // Bring to top left corner
glPushMatrix();
glTranslatef(ThisThing.XY[0].x,-ThisThing.XY[0].y,0); // Set Pos glTranslatef(ThisThing.XY[0].x,-ThisThing.XY[0].y,0); // Set Pos
Core->RenderNumber(0); Core->RenderNumber(0);
@ -139,6 +140,39 @@ float H=-(ThisThing.Data.Trigger.TriggerHeight);
glEnd(); 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(GUIThing,IDD_LAYER_THING);
Core->GUIAdd(GUITrigger,IDD_LAYER_TRIGGER); Core->GUIAdd(GUITrigger,IDD_LAYER_TRIGGER);
GUITrigger.DisableCallback(false); GUITrigger.DisableCallback(false);
GUITrigger.m_WidthSpin.SetRange(1,255); GUITrigger.m_WidthSpin.SetRange(1,32000);
GUITrigger.m_HeightSpin.SetRange(1,255); GUITrigger.m_HeightSpin.SetRange(1,32000);
GUITrigger.m_TargetXSpin.SetRange(0,32000); GUITrigger.m_TargetXSpin.SetRange(0,32000);
GUITrigger.m_TargetYSpin.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) void CLayerTrigger::GUIThingUpdate(bool OnlySel)
{ {
int TargetMode=SW_SHOW; int TargetXYMode=SW_HIDE;
int TargetWHMode=SW_HIDE;
GUIThingUpdateList(GUIThing.m_List,false); GUIThingUpdateList(GUIThing.m_List,false);
// Params // Params
@ -211,23 +248,35 @@ int TargetMode=SW_SHOW;
GUITrigger.SetVal(GUITrigger.m_Height,ThisThing.Data.Trigger.TriggerHeight); GUITrigger.SetVal(GUITrigger.m_Height,ThisThing.Data.Trigger.TriggerHeight);
GUITrigger.SetVal(GUITrigger.m_TargetX,ThisThing.Data.Trigger.TriggerTargetX); GUITrigger.SetVal(GUITrigger.m_TargetX,ThisThing.Data.Trigger.TriggerTargetX);
GUITrigger.SetVal(GUITrigger.m_TargetY,ThisThing.Data.Trigger.TriggerTargetY); 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 else
{ {
GUITrigger.m_Width.SetWindowText(""); GUITrigger.m_Width.SetWindowText("");
GUITrigger.m_Height.SetWindowText(""); GUITrigger.m_Height.SetWindowText("");
TargetMode=SW_HIDE;
} }
GUITrigger.m_TargetTxt.ShowWindow(TargetMode); GUITrigger.m_TargetTxt.ShowWindow(TargetXYMode);
GUITrigger.m_TargetX.ShowWindow(TargetMode); GUITrigger.m_TargetX.ShowWindow(TargetXYMode);
GUITrigger.m_TargetY.ShowWindow(TargetMode); GUITrigger.m_TargetY.ShowWindow(TargetXYMode);
GUITrigger.m_TargetXSpin.ShowWindow(TargetMode); GUITrigger.m_TargetXSpin.ShowWindow(TargetXYMode);
GUITrigger.m_TargetYSpin.ShowWindow(TargetMode); 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); GUITrigger.DisableCallback(false);
} }
@ -248,6 +297,8 @@ void CLayerTrigger::GUIChanged(CCore *Core)
ThisThing.Data.Trigger.TriggerHeight=GUITrigger.GetVal(GUITrigger.m_Height); ThisThing.Data.Trigger.TriggerHeight=GUITrigger.GetVal(GUITrigger.m_Height);
ThisThing.Data.Trigger.TriggerTargetX=GUITrigger.GetVal(GUITrigger.m_TargetX); ThisThing.Data.Trigger.TriggerTargetX=GUITrigger.GetVal(GUITrigger.m_TargetX);
ThisThing.Data.Trigger.TriggerTargetY=GUITrigger.GetVal(GUITrigger.m_TargetY); 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; Thing.Data.WaypointCount=1;
if (Thing.Data.Trigger.TriggerWidth<1) Thing.Data.Trigger.TriggerWidth=1; if (Thing.Data.Trigger.TriggerWidth<1) Thing.Data.Trigger.TriggerWidth=1;
if (Thing.Data.Trigger.TriggerHeight<1) Thing.Data.Trigger.TriggerHeight=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;
} }

View file

@ -2,7 +2,7 @@
[General Info] [General Info]
Version=1 Version=1
LastClass=CGUINewMap LastClass=CGUILayerShade
LastTemplate=CDialog LastTemplate=CDialog
NewFileInclude1=#include "stdafx.h" NewFileInclude1=#include "stdafx.h"
NewFileInclude2=#include "mapedit.h" NewFileInclude2=#include "mapedit.h"
@ -37,27 +37,27 @@ Class25=CMapEditDoc
Class26=CMapEditView Class26=CMapEditView
ResourceCount=21 ResourceCount=21
Resource1=IDD_LAYER_COLLISION Resource1=IDD_LAYER_HAZARD
Resource2=IDR_MAPEDITYPE (English (U.S.)) Resource2=IDR_MAPEDITYPE (English (U.S.))
Resource3=IDD_ELEMLIST Resource3=IDD_LAYER_COLLISION
Resource4=IDD_MULTIBAR (English (U.S.)) Resource4=IDD_MULTIBAR (English (U.S.))
Resource5=IDD_LAYER_THING Resource5=IDD_LAYER_ACTOR
Resource6=IDR_TOOLBAR (English (U.S.)) Resource6=IDD_LAYER_THING_POS
Resource7=IDD_LAYER_PLATFORM Resource7=IDD_LAYER_FX
Resource8=IDD_LAYER_TRIGGER Resource8=IDD_LAYER_PLATFORM
Resource9=IDD_TILEBANK Resource9=IDD_ADDLAYER
Resource10=IDD_NEWMAP Resource10=IDD_RESIZE
Resource11=IDR_MAINFRAME (English (U.S.)) Resource11=IDD_LAYER_LIST
Resource12=IDD_ABOUTBOX (English (U.S.)) Resource12=IDD_LAYER_TRIGGER
Resource13=IDD_LAYER_ACTOR Resource13=IDD_ELEMLIST
Resource14=IDD_LAYER_LIST Resource14=IDR_TOOLBAR (English (U.S.))
Resource15=IDD_RESIZE Resource15=IDD_ABOUTBOX (English (U.S.))
Resource16=IDD_LAYER_THING_POS Resource16=IDD_LAYER_THING
Resource17=IDD_ADDLAYER Resource17=IDD_NEWMAP
Resource18=IDD_LAYER_FX Resource18=IDR_MAINFRAME (English (U.S.))
Resource19=IDD_TOOLBAR Resource19=IDD_TILEBANK
Resource20=IDD_LAYER_SHADE Resource20=IDD_TOOLBAR
Resource21=IDD_LAYER_HAZARD Resource21=IDD_LAYER_SHADE
[CLS:CChildFrame] [CLS:CChildFrame]
Type=0 Type=0
@ -125,6 +125,9 @@ Type=0
BaseClass=CDialog BaseClass=CDialog
HeaderFile=GUILayerPlatform.h HeaderFile=GUILayerPlatform.h
ImplementationFile=GUILayerPlatform.cpp ImplementationFile=GUILayerPlatform.cpp
Filter=D
VirtualFilter=dWC
LastObject=IDC_PLATFORM_PARAM_SPIN
[CLS:CGUILayerShade] [CLS:CGUILayerShade]
Type=0 Type=0
@ -133,7 +136,7 @@ HeaderFile=GUILayerShade.h
ImplementationFile=GUILayerShade.cpp ImplementationFile=GUILayerShade.cpp
Filter=D Filter=D
VirtualFilter=dWC VirtualFilter=dWC
LastObject=CGUILayerShade LastObject=IDC_LAYERSHADE_GFX_XSPIN
[CLS:CGUILayerThing] [CLS:CGUILayerThing]
Type=0 Type=0
@ -152,6 +155,9 @@ Type=0
BaseClass=CDialog BaseClass=CDialog
HeaderFile=GUILayerTrigger.h HeaderFile=GUILayerTrigger.h
ImplementationFile=GUILayerTrigger.cpp ImplementationFile=GUILayerTrigger.cpp
Filter=D
VirtualFilter=dWC
LastObject=IDC_TRIGGER_TARGETW
[CLS:CGUIMultiBar] [CLS:CGUIMultiBar]
Type=0 Type=0
@ -317,7 +323,7 @@ Control3=IDC_LAYERLIST_DELETE,button,1342242816
[DLG:IDD_LAYER_PLATFORM] [DLG:IDD_LAYER_PLATFORM]
Type=1 Type=1
Class=CGUILayerPlatform Class=CGUILayerPlatform
ControlCount=9 ControlCount=12
Control1=IDC_PLATFORM_SPEED_TEXT,static,1342308354 Control1=IDC_PLATFORM_SPEED_TEXT,static,1342308354
Control2=IDC_PLATFORM_SPEED,edit,1350633600 Control2=IDC_PLATFORM_SPEED,edit,1350633600
Control3=IDC_PLATFORM_SPEED_SPIN,msctls_updown32,1342177334 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 Control7=IDC_PLATFORM_COLLISION,button,1342243363
Control8=IDC_PLATFORM_MOVE_TYPE,combobox,1344339971 Control8=IDC_PLATFORM_MOVE_TYPE,combobox,1344339971
Control9=IDC_PLATFORM_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] [DLG:IDD_LAYER_SHADE]
Type=1 Type=1
@ -416,7 +425,7 @@ Control4=IDC_THING_POS_DELETE,button,1342242816
[DLG:IDD_LAYER_TRIGGER] [DLG:IDD_LAYER_TRIGGER]
Type=1 Type=1
Class=CGUILayerTrigger Class=CGUILayerTrigger
ControlCount=10 ControlCount=15
Control1=IDC_TRIGGER_SIZE,static,1342308354 Control1=IDC_TRIGGER_SIZE,static,1342308354
Control2=IDC_TRIGGER_WIDTH,edit,1350633600 Control2=IDC_TRIGGER_WIDTH,edit,1350633600
Control3=IDC_TRIGGER_WIDTH_SPIN,msctls_updown32,1342177334 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 Control8=IDC_TRIGGER_TARGETX_SPIN,msctls_updown32,1342177334
Control9=IDC_TRIGGER_TARGETY,edit,1350633600 Control9=IDC_TRIGGER_TARGETY,edit,1350633600
Control10=IDC_TRIGGER_TARGETY_SPIN,msctls_updown32,1342177334 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] [DLG:IDD_MULTIBAR]
Type=1 Type=1

View file

@ -644,16 +644,16 @@ BEGIN
ES_NUMBER | WS_GROUP ES_NUMBER | WS_GROUP
EDITTEXT IDC_LAYERSHADE_GFXB3,120,220,20,12,ES_AUTOHSCROLL | EDITTEXT IDC_LAYERSHADE_GFXB3,120,220,20,12,ES_AUTOHSCROLL |
ES_NUMBER | WS_GROUP 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 ES_READONLY | NOT WS_TABSTOP
CONTROL "Spin1",IDC_LAYERSHADE_GFX_XSPIN,"msctls_updown32", CONTROL "Spin1",IDC_LAYERSHADE_GFX_XSPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
UDS_ARROWKEYS,95,145,11,15 UDS_ARROWKEYS,124,146,11,15
EDITTEXT IDC_LAYERSHADE_GFX_Y,55,150,25,10,ES_AUTOHSCROLL | EDITTEXT IDC_LAYERSHADE_GFX_Y,65,150,35,10,ES_AUTOHSCROLL |
ES_READONLY | NOT WS_TABSTOP ES_READONLY | NOT WS_TABSTOP
CONTROL "Spin3",IDC_LAYERSHADE_GFX_YSPIN,"msctls_updown32", CONTROL "Spin3",IDC_LAYERSHADE_GFX_YSPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 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 COMBOBOX IDC_LAYERSHADE_DEF_LIST,5,85,145,100,CBS_DROPDOWNLIST
END END
@ -736,7 +736,7 @@ BEGIN
PUSHBUTTON "Pos Delete",IDC_THING_POS_DELETE,100,60,45,15 PUSHBUTTON "Pos Delete",IDC_THING_POS_DELETE,100,60,45,15
END END
IDD_LAYER_PLATFORM DIALOG DISCARDABLE 0, 0, 156, 76 IDD_LAYER_PLATFORM DIALOG DISCARDABLE 0, 0, 156, 96
STYLE WS_CHILD STYLE WS_CHILD
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
@ -759,34 +759,51 @@ BEGIN
WS_VSCROLL | WS_TABSTOP WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_PLATFORM_TYPE,5,15,145,60,CBS_DROPDOWNLIST | COMBOBOX IDC_PLATFORM_TYPE,5,15,145,60,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP 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 END
IDD_LAYER_TRIGGER DIALOG DISCARDABLE 0, 0, 156, 46 IDD_LAYER_TRIGGER DIALOG DISCARDABLE 0, 0, 156, 71
STYLE WS_CHILD STYLE WS_CHILD
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
RTEXT "Size",IDC_TRIGGER_SIZE,5,5,17,8 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 ES_READONLY
CONTROL "Spin1",IDC_TRIGGER_WIDTH_SPIN,"msctls_updown32", CONTROL "Spin1",IDC_TRIGGER_WIDTH_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
UDS_ARROWKEYS,90,5,11,10 UDS_ARROWKEYS,125,0,11,10
EDITTEXT IDC_TRIGGER_HEIGHT,50,5,25,12,ES_AUTOHSCROLL | EDITTEXT IDC_TRIGGER_HEIGHT,60,5,35,12,ES_AUTOHSCROLL |
ES_READONLY ES_READONLY
CONTROL "Spin1",IDC_TRIGGER_HEIGHT_SPIN,"msctls_updown32", CONTROL "Spin1",IDC_TRIGGER_HEIGHT_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 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 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 ES_READONLY
CONTROL "Spin1",IDC_TRIGGER_TARGETX_SPIN,"msctls_updown32", CONTROL "Spin1",IDC_TRIGGER_TARGETX_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
UDS_ARROWKEYS,90,25,11,10 UDS_ARROWKEYS,125,20,11,10
EDITTEXT IDC_TRIGGER_TARGETY,50,25,25,12,ES_AUTOHSCROLL | EDITTEXT IDC_TRIGGER_TARGETY,60,25,35,12,ES_AUTOHSCROLL |
ES_READONLY ES_READONLY
CONTROL "Spin1",IDC_TRIGGER_TARGETY_SPIN,"msctls_updown32", CONTROL "Spin1",IDC_TRIGGER_TARGETY_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 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 END
IDD_LAYER_FX DIALOG DISCARDABLE 0, 0, 156, 56 IDD_LAYER_FX DIALOG DISCARDABLE 0, 0, 156, 56
@ -795,18 +812,18 @@ FONT 8, "MS Sans Serif"
BEGIN BEGIN
RTEXT "Speed",IDC_FX_SPEED_TEXT,5,25,20,8 RTEXT "Speed",IDC_FX_SPEED_TEXT,5,25,20,8
RTEXT "Size",IDC_FX_SIZE_TEXT,5,5,17,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", CONTROL "Spin1",IDC_FX_WIDTH_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
UDS_ARROWKEYS,90,5,11,10 UDS_ARROWKEYS,120,5,11,10
EDITTEXT IDC_FX_HEIGHT,50,5,25,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_FX_HEIGHT,60,5,35,12,ES_AUTOHSCROLL | ES_READONLY
CONTROL "Spin1",IDC_FX_HEIGHT_SPIN,"msctls_updown32", CONTROL "Spin1",IDC_FX_HEIGHT_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
UDS_ARROWKEYS,100,5,11,10 UDS_ARROWKEYS,130,5,11,10
EDITTEXT IDC_FX_SPEED,25,25,24,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_FX_SPEED,25,25,35,12,ES_AUTOHSCROLL | ES_READONLY
CONTROL "Spin2",IDC_FX_SPEED_SPIN,"msctls_updown32", CONTROL "Spin2",IDC_FX_SPEED_SPIN,"msctls_updown32",
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
UDS_ARROWKEYS | UDS_NOTHOUSANDS,50,25,11,13 UDS_ARROWKEYS | UDS_NOTHOUSANDS,130,25,11,13
END END
IDD_LAYER_HAZARD DIALOG DISCARDABLE 0, 0, 156, 96 IDD_LAYER_HAZARD DIALOG DISCARDABLE 0, 0, 156, 96
@ -957,7 +974,7 @@ BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 149 RIGHTMARGIN, 149
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 69 BOTTOMMARGIN, 89
END END
IDD_LAYER_TRIGGER, DIALOG IDD_LAYER_TRIGGER, DIALOG
@ -965,7 +982,7 @@ BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 149 RIGHTMARGIN, 149
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 39 BOTTOMMARGIN, 64
END END
IDD_LAYER_FX, DIALOG IDD_LAYER_FX, DIALOG

View file

@ -130,8 +130,11 @@
#define IDC_PLATFORM_MOVE_TYPE 1138 #define IDC_PLATFORM_MOVE_TYPE 1138
#define IDC_PLATFORM_TYPE 1139 #define IDC_PLATFORM_TYPE 1139
#define IDC_TRIGGER_SIZE 1140 #define IDC_TRIGGER_SIZE 1140
#define IDC_PLATFORM_PARAM0_TEXT 1140
#define IDC_TRIGGER_WIDTH 1141 #define IDC_TRIGGER_WIDTH 1141
#define IDC_PLATFORM_PARAM0 1141
#define IDC_TRIGGER_HEIGHT 1142 #define IDC_TRIGGER_HEIGHT 1142
#define IDC_PLATFORM_PARAM_SPIN 1142
#define IDC_TRIGGER_WIDTH_SPIN 1143 #define IDC_TRIGGER_WIDTH_SPIN 1143
#define IDC_FX_SPEED_TEXT 1144 #define IDC_FX_SPEED_TEXT 1144
#define IDC_TRIGGER_TARGET 1144 #define IDC_TRIGGER_TARGET 1144
@ -141,12 +144,18 @@
#define IDC_FX_WIDTH 1147 #define IDC_FX_WIDTH 1147
#define IDC_TRIGGER_TARGETY 1147 #define IDC_TRIGGER_TARGETY 1147
#define IDC_FX_HEIGHT 1148 #define IDC_FX_HEIGHT 1148
#define IDC_TRIGGER_TEXT_TARGET_WH 1148
#define IDC_FX_WIDTH_SPIN 1149 #define IDC_FX_WIDTH_SPIN 1149
#define IDC_TRIGGER_TARGETW 1149
#define IDC_FX_HEIGHT_SPIN 1150 #define IDC_FX_HEIGHT_SPIN 1150
#define IDC_TRIGGER_TARGETW_SPIN 1150
#define IDC_FX_SPEED 1151 #define IDC_FX_SPEED 1151
#define IDC_TRIGGER_TARGETH 1151
#define IDC_FX_SPEED_SPIN 1152 #define IDC_FX_SPEED_SPIN 1152
#define IDC_TRIGGER_HEIGHT_SPIN 1163 #define IDC_TRIGGER_HEIGHT_SPIN 1163
#define IDC_TRIGGER_TARGETY_SPIN 1164 #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_SPEED_TEXT 1169
#define IDC_HAZARD_TURNRATE_TEXT 1170 #define IDC_HAZARD_TURNRATE_TEXT 1170
#define IDC_HAZARD_HEALTH_TEXT 1171 #define IDC_HAZARD_HEALTH_TEXT 1171
@ -186,7 +195,6 @@
#define IDC_LAYERSHADE_GFX_SPIN_Y3 1207 #define IDC_LAYERSHADE_GFX_SPIN_Y3 1207
#define IDC_LAYERSHADE_GFX_TRANSLIST 1208 #define IDC_LAYERSHADE_GFX_TRANSLIST 1208
#define IDC_LAYERSHADE_GFX_X 1209 #define IDC_LAYERSHADE_GFX_X 1209
#define IDC_LAYERSHADE_GFX_NEW 1210
#define IDC_LAYERSHADE_GFX_XSPIN 1211 #define IDC_LAYERSHADE_GFX_XSPIN 1211
#define IDC_LAYERSHADE_GFX_Y 1212 #define IDC_LAYERSHADE_GFX_Y 1212
#define IDC_LAYERSHADE_GFX_YSPIN 1213 #define IDC_LAYERSHADE_GFX_YSPIN 1213

View file

@ -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); const int TexAlignTableSize=sizeof(TexAlignTable)/sizeof(int);
int AlignSize(int Size) int AlignSize(int Size)
{ {

View file

@ -65,6 +65,7 @@ int i,ListSize=ThingList.size();
OutThing.Flags=ThisThing.Data.Platform.PlatformCollisionFlag; OutThing.Flags=ThisThing.Data.Platform.PlatformCollisionFlag;
OutThing.PointCount=PointCount; OutThing.PointCount=PointCount;
OutThing.Gfx=RemapTable[i]; OutThing.Gfx=RemapTable[i];
OutThing.Param0=ThisThing.Data.Platform.PlatformParam0;
fwrite(&OutThing,sizeof(sThingPlatform),1,File); fwrite(&OutThing,sizeof(sThingPlatform),1,File);
for (p=0;p<PointCount;p++) for (p=0;p<PointCount;p++)

View file

@ -33,7 +33,6 @@ sRGBCol *RGB=(sRGBCol*)iPtr;
ShadeHdr.RGB[i][2]=RGB->B; ShadeHdr.RGB[i][2]=RGB->B;
RGB++; RGB++;
} }
iPtr=(int*)RGB; iPtr=(int*)RGB;
ListSize=*iPtr++; ListSize=*iPtr++;
@ -41,10 +40,11 @@ sRGBCol *RGB=(sRGBCol*)iPtr;
sLayerShadeGfx *GfxPtr=(sLayerShadeGfx*)iPtr; sLayerShadeGfx *GfxPtr=(sLayerShadeGfx*)iPtr;
for (i=0; i<ListSize; i++) for (i=0; i<ListSize; i++)
{ {
sLayerShadeGfx &ThisGfx=GfxList[i];
GfxList[i]=*GfxPtr++; GfxList[i]=*GfxPtr++;
} }
iPtr=(int*)GfxPtr;
iPtr=(int*)GfxPtr;
ListSize=*iPtr++; ListSize=*iPtr++;
TypeNameList.resize(ListSize); TypeNameList.resize(ListSize);
char *TypePtr=(char*)iPtr; char *TypePtr=(char*)iPtr;
@ -132,13 +132,20 @@ int ThisPos=ftell(File);
Hdr.Height=Height; Hdr.Height=Height;
fwrite(&Hdr,sizeof(sLayerHdr),1,File); fwrite(&Hdr,sizeof(sLayerHdr),1,File);
// Write Gfx Stuff int HdrPos=ftell(File);
ShadeHdr.TypeList=(sLayerShadeBackGfxType*)WriteTypeList(File);
ShadeHdr.GfxList=(sLayerShadeBackGfx*)WriteGfxList(File);
fwrite(&ShadeHdr,sizeof(sLayerShadeHdr),1,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); return(ThisPos);
} }
@ -164,11 +171,11 @@ int CMkLevelLayerShade::WriteGfxList(FILE *File)
int Pos=ftell(File); int Pos=ftell(File);
int i,ListSize=GfxList.size(); int i,ListSize=GfxList.size();
ShadeHdr.GfxCount=GfxList.size(); ShadeHdr.GfxCount=ListSize;
for (i=0; i<ListSize; i++) for (i=0; i<ListSize; i++)
{ {
sLayerShadeGfx &ThisGfx=GfxList[i]; sLayerShadeGfx &ThisGfx=GfxList[i];
sLayerShadeBackGfx Out; sLayerShadeBackGfx Out;
Out.Type=ThisGfx.Gfx; Out.Type=ThisGfx.Gfx;
@ -177,12 +184,13 @@ int i,ListSize=GfxList.size();
Out.Trans=ThisGfx.TransMode; Out.Trans=ThisGfx.TransMode;
for (int p=0; p<4; p++) for (int p=0; p<4; p++)
{ {
Out.Ofs[i][0]=ThisGfx.Ofs[i].x; Out.Ofs[p][0]=ThisGfx.Ofs[p].x;
Out.Ofs[i][1]=ThisGfx.Ofs[i].y; Out.Ofs[p][1]=ThisGfx.Ofs[p].y;
Out.RGB[i][0]=ThisGfx.RGB[i].R; Out.RGB[p][0]=ThisGfx.RGB[p].R;
Out.RGB[i][1]=ThisGfx.RGB[i].G; Out.RGB[p][1]=ThisGfx.RGB[p].G;
Out.RGB[i][2]=ThisGfx.RGB[i].B; Out.RGB[p][2]=ThisGfx.RGB[p].B;
} }
fwrite(&Out,sizeof(sLayerShadeBackGfx),1,File);
} }
return(Pos); return(Pos);
} }

View file

@ -56,6 +56,8 @@ int i,ListSize=ThingList.size();
OutThing.Height=ThisThing.Data.Trigger.TriggerHeight; OutThing.Height=ThisThing.Data.Trigger.TriggerHeight;
OutThing.TargetPos.X=ThisThing.Data.Trigger.TriggerTargetX; OutThing.TargetPos.X=ThisThing.Data.Trigger.TriggerTargetX;
OutThing.TargetPos.Y=ThisThing.Data.Trigger.TriggerTargetY; 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); fwrite(&OutThing,sizeof(sThingTrigger),1,File);
} }

View file

@ -105,6 +105,7 @@ GFName Path;
FlatFace[0].uv[0][0]=1; FlatFace[0].uv[0][1]=1; 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[1][0]=0; FlatFace[0].uv[1][1]=0;
FlatFace[0].uv[2][0]=1; FlatFace[0].uv[2][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[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; 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[0][0]=0; FlatFace[1].uv[0][1]=0;
FlatFace[1].uv[1][0]=1; FlatFace[1].uv[1][1]=1; 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].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()); 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]; GString TexName=RootPath+SceneTexList[Mat];
CFace &F=ModelFaceList.AddFace( NodeVtxList, NodeTriList[T], NodeUVList[T], TexName,SceneMaterials[Mat].Flags,false); CFace &F=ModelFaceList.AddFace( NodeVtxList, NodeTriList[T], NodeUVList[T], TexName,SceneMaterials[Mat].Flags,false);
// ModelFaceList.SetTPageFlag(F,SceneMaterials[Mat].Flags);
} }
int ChildCount=ThisNode.GetPruneChildCount(); int ChildCount=ThisNode.GetPruneChildCount();
@ -200,7 +200,7 @@ int Idx;
CFace F; CFace F;
ExpTri2Face(ThisTri,F); ExpTri2Face(ThisTri,F);
ModelFaceList.SetTPageFlag(F,ThisTri.Flags); ModelFaceList.SetTPageFlag(F,ThisTri.Flags*0);
ModelFaceList.AddFace(F,false); ModelFaceList.AddFace(F,false);
} }
@ -225,7 +225,7 @@ int TriStart=OutFaceList.GetFaceCount();
ListSize=ModelList.size(); ListSize=ModelList.size();
for (i=0; i<ListSize; i++) 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; ModelList[i].TriStart+=TriStart;
} }
} }
@ -303,6 +303,7 @@ u8 *TilePtr=(u8*) &ByteHdr[FileHdr->TileOfs];
sExpTile &InTile=InTileList[i]; sExpTile &InTile=InTileList[i];
InTile=*ThisTilePtr; InTile=*ThisTilePtr;
// Skip RGB Image, not needed (and too buggy)
// InTile.RGB=(u8*)malloc(RGBSize); // InTile.RGB=(u8*)malloc(RGBSize);
// memcpy(InTile.RGB,TilePtr+sizeof(sExpTile),RGBSize); // memcpy(InTile.RGB,TilePtr+sizeof(sExpTile),RGBSize);
InTile.RGB=0; InTile.RGB=0;
@ -573,7 +574,7 @@ int TileID=OutTile3dList.size();
for (i=0; i<SrcTile.TriCount; i++) for (i=0; i<SrcTile.TriCount; i++)
{ {
int ListPos; int ListPos;
sExpTri ThisTri=InTriList[SrcTile.TriStart+i]; sExpTri &ThisTri=InTriList[SrcTile.TriStart+i];
float ThisZPos; float ThisZPos;
ThisZPos=ThisTri.vtx[0].z; ThisZPos=ThisTri.vtx[0].z;
@ -592,15 +593,19 @@ int TileID=OutTile3dList.size();
} }
else else
{ // create flat tile (This is WRONG, flip tex are gen, need to flip goem) { // 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; ThisTile.TriCount=2;
for (int i=0; i<2; i++) for (int i=0; i<2; i++)
{ {
FlatFace[i].Flags=0;
FlatFace[i].TexID=TexID; FlatFace[i].TexID=TexID;
SortList.push_back(FlatFace[i]); SortList.push_back(FlatFace[i]);
} }
InTile.Flags=0;
// InTile.Flags=0;
} }
// Add sorted list to main list // Add sorted list to main list
@ -668,24 +673,25 @@ int TileID=OutTile3dList.size();
int CMkLevel::Create2dTex(int Tile,int Flags) int CMkLevel::Create2dTex(int Tile,int Flags)
{ {
sExpTile &SrcTile=InTileList[Tile]; sExpTile &SrcTile=InTileList[Tile];
//sMkLevelTex InTex; sMkLevelTex InTex;
int Idx;
// InTex.RGB=SrcTile.RGB;
// Try and find RGB data match
// not working
// Idx=FindRGBMatch(InTex);
// if (Idx!=-1) return(Idx);
// Must be new, add it // Must be new, add it
// InTex.Set=SrcTile.Set; // InTex.Set=SrcTile.Set;
// InTex.Flags=Flags;
// InTex.XOfs=SrcTile.XOfs; // InTex.XOfs=SrcTile.XOfs;
// InTex.YOfs=SrcTile.YOfs; // InTex.YOfs=SrcTile.YOfs;
InTex.Tile=Tile;
InTex.Flags=Flags;
Idx=Tex2dList.Find(InTex);
int TexID=BuildTileTex(SrcTile,Flags); if (Idx!=-1)
// Tex2dList.push_back(InTex); {
return(TexID); 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 // Write It
fwrite(&Q,1,sizeof(sQuad),File); fwrite(&Q,1,sizeof(sQuad),File);
} }
printf("Quad %i\n",ListSize,MaxOT); printf("Quad %i\n",ListSize);
return(ThisPos); return(ThisPos);
} }
@ -1090,9 +1096,40 @@ int Ofs=ftell(File);
Out.TriCount=ThisModel.TriCount; Out.TriCount=ThisModel.TriCount;
Out.TriStart=ThisModel.TriStart; 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); fwrite(&Out,1,sizeof(sModel),File);
} }
return(Ofs); 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;
}
}
}

View file

@ -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 struct sMkLevelModel
{ {
@ -112,7 +132,7 @@ protected:
int WriteQuadList(); int WriteQuadList();
int WriteVtxList(); int WriteVtxList();
void WriteTileBank(); void WriteTileBank();
void CalcModelBBox(sMkLevelModel &ThisModel,sBBox &BBox);
void BuildTiles(); void BuildTiles();
void ExpTri2Face(sExpTri &In,CFace &Out,bool ImportTex=true); void ExpTri2Face(sExpTri &In,CFace &Out,bool ImportTex=true);
@ -138,7 +158,7 @@ protected:
CList<sExpLayerTile> Tile2dList; CList<sExpLayerTile> Tile2dList;
CList<sExpLayerTile> Tile3dList; CList<sExpLayerTile> Tile3dList;
// CList<sMkLevelTex> Tex2dList; CList<sMkLevelTex> Tex2dList;
CTexGrab TexGrab; CTexGrab TexGrab;
CList<Frame> BmpList; CList<Frame> BmpList;

View file

@ -37,7 +37,7 @@ struct sLang
struct sInFile struct sInFile
{ {
char Name[32]; char Name[256];
int Chunks; int Chunks;
int Offset; int Offset;
}; };
@ -211,6 +211,7 @@ sInFile InFile;
InFile.Chunks=0; InFile.Chunks=0;
while (!IsWhiteSpace(*Ptr) && Ptr<EndPtr) InFile.Name[i++]=*Ptr++; while (!IsWhiteSpace(*Ptr) && Ptr<EndPtr) InFile.Name[i++]=*Ptr++;
InFile.Name[i]=0; InFile.Name[i]=0;
strupr(InFile.Name);
FileList.push_back(InFile); FileList.push_back(InFile);
// printf("%s\n",InFile.Name); // printf("%s\n",InFile.Name);
} }
@ -308,7 +309,7 @@ int FileCount=FileList.size();
int Offset=0; int Offset=0;
sprintf(HdrStr,"__%s_SPEECH_DEFINES_H__",strupr(fname)); sprintf(HdrStr,"__%s_SPEECH_DEFINES_H__",strupr(fname));
sprintf(EqStr,"%s_STR_",strupr(fname)); sprintf(EqStr,"%s_SPEECH_",strupr(fname));
OutFile= fopen( IncludeFilename,"wt" ); OutFile= fopen( IncludeFilename,"wt" );
if(!OutFile) if(!OutFile)
@ -326,7 +327,7 @@ int Offset=0;
sInFile &ThisFile=FileList[File]; sInFile &ThisFile=FileList[File];
ConvertString(ThisFile.Name); 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 Offset+=ThisFile.Chunks+1; // +1 for pad
} }
fprintf( OutFile, "};\n" ); fprintf( OutFile, "};\n" );

View file

@ -50,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe 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 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" !ELSEIF "$(CFG)" == "MkSpeech - Win32 Debug"
@ -63,6 +63,7 @@ LINK32=link.exe
# PROP Use_Debug_Libraries 1 # PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug" # PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug" # PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # 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 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 # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c

View file

@ -46,6 +46,8 @@
#include "level\level.h" #include "level\level.h"
#endif #endif
#include "sound\sound.h"
#include "sound\speech.h"
/* Std Lib /* Std Lib
------- */ ------- */
@ -78,6 +80,134 @@
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Vars 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[]= CConversation::CHAR_ICON_FRAMES CConversation::s_characterIconFrames[]=
{ {
@ -178,6 +308,7 @@ void CConversation::think(int _frames)
{ {
s_currentScript=NULL; s_currentScript=NULL;
s_currentState=STATE_INACTIVE; 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_faceFrame=(s_characterIconFrames[_characterId].m_frame);
s_speechId=_textId; s_speechId=_textId;
s_TextOffset=0; s_TextOffset=0;
for (int i=0; i<SpeechTableSize; i++)
{
if (SpeechTable[i].TextID==_textId)
{
CSoundMediator::playSpeech((SpeechEquate)SpeechTable[i].SpeechID);
break;
}
}
} }

View file

@ -558,7 +558,7 @@ POLY_FT4 *Ft4;
} }
else else
{ {
printf("NO FREE NODES\n"); // printf("NO FREE NODES\n");
ThisNode=PoolEntry->ActorCache.Head; ThisNode=PoolEntry->ActorCache.Head;
} }
ASSERT(ThisNode); ASSERT(ThisNode);

View file

@ -624,7 +624,7 @@ void CSoundMediator::stopAllSfx()
void CSoundMediator::playSpeech(SpeechEquate _speech) void CSoundMediator::playSpeech(SpeechEquate _speech)
{ {
stopSpeech(); stopSpeech();
CXAStream::PlaySpeech(_speech); CXAStream::PlaySpeech(_speech,1);
// s_volumeDirty[SPEECH]=true; // Force a volume update // s_volumeDirty[SPEECH]=true; // Force a volume update
} }