This commit is contained in:
parent
1966aa6f60
commit
2b171295b5
44 changed files with 588 additions and 603 deletions
|
@ -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?
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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[];
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue