This commit is contained in:
Daveo 2001-04-02 18:25:09 +00:00
parent 26994bdf43
commit dc1a196981
4 changed files with 38 additions and 42 deletions

View File

@ -14,6 +14,7 @@
/*****************************************************************************/
CActorGfx *CActorPool::ActorList[CActorPool::MAX_ACTORS];
u8 CActorPool::UnpackBuffer[CActorPool::MAX_ACTOR_SIZE];
/*****************************************************************************/
/*****************************************************************************/
@ -77,26 +78,45 @@ CActorGfx::~CActorGfx()
MemFree(SpriteBank);
}
/*****************************************************************************/
sSpriteFrame *CActorGfx::GetFrame(int Anim,int Frame)
{
sSpriteAnim *ThisAnim=SpriteBank->AnimList+Anim;
u16 ThisFrame=ThisAnim->Anim[Frame];
return(SpriteBank->FrameList+ThisFrame);
}
/*****************************************************************************/
int CActorGfx::getFrameWidth(int Anim,int Frame)
{
sSpriteFrame *ThisFrame=GetFrame(Anim,Frame);
return(ThisFrame->W);
}
/*****************************************************************************/
int CActorGfx::getFrameHeight(int Anim,int Frame)
{
sSpriteFrame *ThisFrame=GetFrame(Anim,Frame);
return(ThisFrame->H);
}
/*****************************************************************************/
POLY_FT4 *CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool XFlip,bool YFlip,bool Shadow)
{
sSpriteAnim &ThisAnim=SpriteBank->AnimList[Anim];
u16 FrameNo=ThisAnim.Anim[Frame];
sSpriteFrame &ThisFrame=SpriteBank->FrameList[FrameNo];
u8 Buffer[64*64];
sSpriteFrame *FrameGfx=GetFrame(Anim,Frame);
PAK_doUnpak(Buffer,ThisFrame.PAKSpr);
PAK_doUnpak(CActorPool::UnpackBuffer,FrameGfx->PAKSpr);
// Gfx
RECT Rect;
Rect.x=TexX;
Rect.y=TexY;
Rect.w=ThisFrame.W/4;
Rect.h=ThisFrame.H;
LoadImage( &Rect, (u32*)Buffer);
Rect.w=FrameGfx->W/4;
Rect.h=FrameGfx->H;
LoadImage( &Rect, (u32*)CActorPool::UnpackBuffer);
POLY_FT4 *Ft4=GetPrimFT4();
SetUpFT4(Ft4,&ThisFrame,Pos.vx,Pos.vy,XFlip,YFlip);
SetUpFT4(Ft4,FrameGfx,Pos.vx,Pos.vy,XFlip,YFlip);
setRGB0(Ft4,128,128,128);
setTPage(Ft4,0,0,TexX,TexY);
setClut(Ft4, ClutX, ClutY);
@ -167,24 +187,6 @@ int H=ThisFrame->H;
void CActorGfx::Dump()
{
}
/*****************************************************************************/
int CActorGfx::getFrameWidth(int Anim,int Frame)
{
sSpriteAnim &ThisAnim=SpriteBank->AnimList[Anim];
u16 FrameNo=ThisAnim.Anim[Frame];
sSpriteFrame &ThisFrame=SpriteBank->FrameList[FrameNo];
return(ThisFrame.W);
}
/*****************************************************************************/
int CActorGfx::getFrameHeight(int Anim,int Frame)
{
sSpriteAnim &ThisAnim=SpriteBank->AnimList[Anim];
u16 FrameNo=ThisAnim.Anim[Frame];
sSpriteFrame &ThisFrame=SpriteBank->FrameList[FrameNo];
return(ThisFrame.H);
}
/*****************************************************************************/
/*****************************************************************************/
@ -220,11 +222,13 @@ int CActorPool::FindFreeIdx()
/*****************************************************************************/
/*** Load ********************************************************************/
/*****************************************************************************/
int ActorNo=0;
CActorGfx *CActorPool::GetActor(FileEquate Filename)
{
CActorGfx *NewActor;
int Idx;
Filename=(FileEquate)(ACTORS_SPONGEBOB_SBK+ActorNo);
// Already Loaded?
Idx=FindIdx(Filename);
if (Idx!=-1) return(ActorList[Idx]);
@ -254,4 +258,3 @@ int Idx;
ActorList[Idx]=0;
delete ThisActor;
}

View File

@ -30,6 +30,7 @@ virtual ~CActorGfx();
FileEquate GetFilename() {return(Filename);}
private:
void SetUpFT4(POLY_FT4 *Ft4,sSpriteFrame *ThisFrame,int X,int Y,bool XFlip,bool YFlip);
sSpriteFrame *GetFrame(int Anim,int Frame);
FileEquate Filename;
sSpriteAnimBank *SpriteBank;
@ -45,6 +46,7 @@ public:
enum
{
MAX_ACTORS=8,
MAX_ACTOR_SIZE=128*128,
};
static void Init();
@ -53,6 +55,8 @@ static void AddActor(FileEquate Filename) {GetActor(Filename);}
static CActorGfx *GetActor(FileEquate Filename);
static void DumpActor(FileEquate Filename);
static u8 UnpackBuffer[MAX_ACTOR_SIZE];
private:
static int FindIdx(FileEquate Filename);
static int FindFreeIdx();

Binary file not shown.

View File

@ -108,18 +108,6 @@ struct sQuad
//*** Game Types and Headers ************************************************
//***************************************************************************
// Maps
/*
enum TILE3D_FLAGS
{
TILE3D_FLAGS_F=0,
TILE3D_FLAGS_U,
TILE3D_FLAGS_D,
TILE3D_FLAGS_L,
TILE3D_FLAGS_R,
// TILE3D_FLAGS_B, // Should never have back facing polys
TILE3D_FLAGS_MAX
};
*/
typedef u16 sTileMapElem; // Tile or Tri Start
struct sTile
@ -203,7 +191,8 @@ struct sSpriteFrame
struct sSpriteAnim
{
u16 FrameCount; // 2
u16 *Anim; // 2
u16 Pad;
u16 *Anim; // 4
};
struct sSpriteAnimBank