This commit is contained in:
Daveo 2001-04-01 20:22:49 +00:00
parent 1966aa6f60
commit 2b171295b5
44 changed files with 588 additions and 603 deletions

View file

@ -5,9 +5,10 @@
#include "system\global.h"
#include "mem\memory.h"
#include "fileio\fileio.h"
#include "utils\quat.h"
#include "gfx\actor.h"
#include "utils\utils.h"
#include "utils\pak.h"
#include "gfx\prim.h"
#include <dstructs.h>
@ -16,34 +17,101 @@ CActorGfx *CActorPool::ActorList[CActorPool::MAX_ACTORS];
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
void CActorGfx::Init(FileEquate _Filename)
{
CActorPool::GetActor(Filename);
}
/*****************************************************************************/
CActorGfx::CActorGfx(FileEquate _Filename)
{
int i;
Filename=_Filename;
/* ActorData=(sActorHdr*)CFileIO::loadFile(Filename);
SpriteBank=(sSpriteAnimBank*)CFileIO::loadFile(Filename);
for (int i=0; i<ActorData->AnimCount; i++)
SpriteBank->AnimList=(sSpriteAnim*) MakePtr(SpriteBank,(int)SpriteBank->AnimList);
SpriteBank->FrameList=(sSpriteFrame*) MakePtr(SpriteBank,(int)SpriteBank->FrameList);
SpriteBank->Palette=(u8*) MakePtr(SpriteBank,(int)SpriteBank->Palette);
// FixUp AnimList
for (i=0; i<SpriteBank->AnimCount; i++)
{
ActorData->AnimList[i].Move=(s32*) MakePtr(ActorData,(int)ActorData->AnimList[i].Move);
ActorData->AnimList[i].Anim=(AnimIdx*) MakePtr(ActorData,(int)ActorData->AnimList[i].Anim);
sSpriteAnim *ThisAnim=&SpriteBank->AnimList[i];
ThisAnim->Anim=(u16*) MakePtr(SpriteBank,(int)ThisAnim->Anim);
}
// FixUp FrameList
for (i=0; i<SpriteBank->FrameCount; i++)
{
sSpriteFrame *ThisFrame=&SpriteBank->FrameList[i];
ThisFrame->PAKSpr=(u8*) MakePtr(SpriteBank,(int)ThisFrame->PAKSpr);
}
DAVE_DBGMSG("Nodes %i\n",ActorData->BoneCount);
DAVE_DBGMSG("Tris %i\n",ActorData->TriCount);
DAVE_DBGMSG("Vtx %i\n",ActorData->VtxCount);
DAVE_DBGMSG("Anims %i\n",ActorData->AnimCount);
*/
DAVE_DBGMSG("Anims %i\n",SpriteBank->AnimCount);
}
/*****************************************************************************/
CActorGfx::~CActorGfx()
{
MemFree(ActorData);
MemFree(SpriteBank);
}
/*****************************************************************************/
int TPP=0;
int TPA=0;
int TPX=512;
int TPY=256;
int RR=128;
int GG=128;
int BB=128;
int XX=32;
int YY=32;
//int PW=16;
void CActorGfx::Render(DVECTOR &Pos,int Anim,int Frame,bool FlipX)
{
sSpriteAnim &ThisAnim=SpriteBank->AnimList[Anim];
u16 FrameNo=ThisAnim.Anim[Frame];
sSpriteFrame &ThisFrame=SpriteBank->FrameList[FrameNo];
POLY_FT4 *Ft4;
u8 Buffer[256*256];
PAK_doUnpak(Buffer,ThisFrame.PAKSpr);
// clut
RECT Rect;
Rect.x=512;
Rect.y=511;
Rect.w=SpriteBank->ColorCount;
Rect.h=1;
LoadImage( &Rect, (u32*)SpriteBank->Palette);
// Gfx
Rect.x=512;
Rect.y=256;
Rect.w=ThisFrame.W/4;
Rect.h=ThisFrame.H;
LoadImage( &Rect, (u32*)Buffer);
Ft4=GetPrimFT4();
setXYWH(Ft4,Pos.vx-ThisFrame.XOfs,Pos.vy-ThisFrame.YOfs,ThisFrame.W,ThisFrame.H);
setUVWH(Ft4,0,0,ThisFrame.W,ThisFrame.H);
setRGB0(Ft4,RR,GG,BB);
setTPage(Ft4,0,0,TPX,TPY);
setClut(Ft4, TPX, 511);
AddPrimToList(Ft4,0);
Ft4=GetPrimFT4();
setXYWH(Ft4,Pos.vx-ThisFrame.XOfs,Pos.vy-ThisFrame.YOfs,ThisFrame.W,ThisFrame.H);
Ft4->x0-=XX;
Ft4->x1-=XX;
Ft4->y0+=YY;
Ft4->y1+=YY;
setUVWH(Ft4,0,0,ThisFrame.W,ThisFrame.H);
setRGB0(Ft4,0,0,0);
setSemiTrans(Ft4,1);
setTPage(Ft4,0,0,TPX,TPY);
setClut(Ft4, TPX, 511);
AddPrimToList(Ft4,0);
}
@ -98,7 +166,7 @@ int Idx;
Idx=FindFreeIdx();
ASSERT(Idx!=-1);
NewActor=new ("ActorPool") CActorPool(Filename);
NewActor=new ("ActorPool") CActorGfx(Filename);
ActorList[Idx]=NewActor;
return(NewActor);
@ -109,7 +177,7 @@ int Idx;
/*****************************************************************************/
void CActorPool::DumpActor(FileEquate Filename)
{
CActorPool *ThisActor;
CActorGfx *ThisActor;
int Idx;
// Is Loaded?

View file

@ -1,6 +1,6 @@
/******************/
/*** Actor Bank ***/
/******************/
/*******************/
/*** Actor Stuff ***/
/*******************/
#ifndef __ACTOR_HEADER__
#define __ACTOR_HEADER__
@ -16,30 +16,30 @@
class CActorGfx
{
public:
CActorGfx(){};
CActorGfx(FileEquate Filename);
~CActorGfx();
// CActorGfx(){};
CActorGfx(FileEquate Filename);
virtual ~CActorGfx();
void Render(DVECTOR &Pos,int Anim,int Frame,bool FlipX);
void Dump();
void Init(FileEquate _Filename);
void Render(DVECTOR &Pos,int Anim,int Frame,bool FlipX);
void Dump();
int getFrameCount() {return(0);}
int getFrameCount(int Anim) {return(SpriteBank->AnimList[Anim].FrameCount);}
FileEquate GetFilename() {return(Filename);}
FileEquate GetFilename() {return(Filename);}
private:
FileEquate Filename;
sSpriteAnimBank *ActorData;
sSpriteAnimBank *SpriteBank;
};
/*****************************************************************************/
class CActorBank
class CActorPool
{
public:
enum
{
MAX_ACTORS=8,
};
// virtual ~ActorBank(){};
static void Init();

View file

@ -151,11 +151,10 @@ int Time = GameState::getFramesSinceLast();
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*
void CMoveTex::Add(sTexInfo &SrcFrame,sTexInfo &DstFrame)
{
int Idx;
// ASSERT(SrcFrame.w==DstFrame.w);
// ASSERT(SrcFrame.h==DstFrame.h);
for (Idx=0; Idx<MOVETEX_MAX && MoveTexList[Idx].Src; Idx++);
@ -166,10 +165,11 @@ CMoveTex &ThisTex=MoveTexList[Idx];
ThisTex.Src=&SrcFrame;
ThisTex.Dst=&DstFrame;
}
*/
/*****************************************************************************/
void CMoveTex::MoveTex()
{
/*
CMoveTex *ThisTex=MoveTexList,*NextTex;
for (int Idx=0; Idx<MOVETEX_MAX; Idx++)
@ -180,6 +180,7 @@ CMoveTex *ThisTex=MoveTexList,*NextTex;
MoveImage((RECT*)ThisTex.Src,ThisTex.Dst->x,ThisTex.Dst->y);
ThisTex.Src=0;
}
*/
}
/*****************************************************************************/

View file

@ -42,14 +42,14 @@ public:
CMoveTex()
{
Src=0;
// Src=0;
}
static void Add(sTexInfo &SrcFrame,sTexInfo &DstFrame);
//static void Add(sTexInfo &SrcFrame,sTexInfo &DstFrame);
static void MoveTex();
private:
sTexInfo *Src,*Dst;
// sTexInfo *Src,*Dst;
static CMoveTex MoveTexList[];
};