avp/3dc/win95/Sprchunk.hpp

176 lines
3.9 KiB
C++
Raw Normal View History

#ifndef _sprchunk_hpp
#define _sprchunk_hpp
#include "chunk.hpp"
#include "Chnktype.hpp"
//#include "stdafx.h"
struct Frame
{
int Texture;
int CentreX;
int CentreY;
int UVCoords[4][2];
#if cencon
int OldTexNum;
#endif
};
class Sprite_Header_Chunk : public Chunk_With_Children
{
public:
Sprite_Header_Chunk(Chunk_With_Children* const parent,const char*,size_t const);
Sprite_Header_Chunk(const char* file_name, Chunk_With_Children * parent = NULL);
Sprite_Header_Chunk()
: Chunk_With_Children(0,"SPRIHEAD"){}
Sprite_Header_Chunk(Chunk_With_Children* parent)
: Chunk_With_Children(parent,"SPRIHEAD"){}
write_file(const char* fname);
virtual BOOL output_chunk(HANDLE &hand);
#if cencon
virtual void post_input_processing();
#endif
};
class PC_Sprite_Chunk : public Chunk_With_Children
{
public:
PC_Sprite_Chunk(Sprite_Header_Chunk* parent,const char*,size_t);
PC_Sprite_Chunk(Sprite_Header_Chunk* parent)
: Chunk_With_Children(parent,"SPRITEPC"){}
};
class Saturn_Sprite_Chunk : public Chunk_With_Children
{
public:
Saturn_Sprite_Chunk(Sprite_Header_Chunk* parent,const char*,size_t);
Saturn_Sprite_Chunk(Sprite_Header_Chunk* parent)
: Chunk_With_Children(parent,"SPRITESA"){}
};
class Playstation_Sprite_Chunk : public Chunk_With_Children
{
public:
Playstation_Sprite_Chunk(Sprite_Header_Chunk* parent,const char*,size_t);
Playstation_Sprite_Chunk(Sprite_Header_Chunk* parent)
: Chunk_With_Children(parent,"SPRITEPS"){}
};
#define SpriteActionFlag_FlipSecondSide 0x00000001 //for actions where only right facing views are available
class Sprite_Action_Chunk : public Chunk
{
public:
Sprite_Action_Chunk(Chunk_With_Children* parent,const char*,size_t);
Sprite_Action_Chunk(Chunk_With_Children* parent);
~Sprite_Action_Chunk();
virtual BOOL output_chunk (HANDLE &hand);
virtual size_t size_chunk();
virtual void fill_data_block(char* data_start);
public:
int Action;
int NumYaw;
int NumPitch;
int NumFrames;
Frame*** FrameList;
int Flags;
int FrameTime;
};
#define SpriteFlag_NoLight 0x00000001
#define SpriteFlag_SemiTrans 0x00000002 //for playstation
class Sprite_Size_Chunk : public Chunk
{
public:
Sprite_Size_Chunk(Chunk_With_Children* parent,const char*,size_t);
Sprite_Size_Chunk(Chunk_With_Children* parent);
virtual BOOL output_chunk (HANDLE &hand);
virtual size_t size_chunk();
virtual void fill_data_block(char* data_start);
public:
double scale;
double maxy;
double maxx;
int radius;
int Flags ;
};
class Sprite_Extent_Chunk : public Chunk
{
public:
Sprite_Extent_Chunk(Chunk_With_Children* parent,const char*,size_t);
Sprite_Extent_Chunk(Chunk_With_Children* parent);
virtual size_t size_chunk();
virtual void fill_data_block(char* data_start);
public:
double minx;
double maxx;
double miny;
double maxy;
int spare1,spare2;
};
class Sprite_Version_Number_Chunk : public Chunk
{
public:
Sprite_Version_Number_Chunk(Chunk_With_Children* parent,const char*,size_t);
Sprite_Version_Number_Chunk(Chunk_With_Children* parent);
virtual BOOL output_chunk (HANDLE &hand);
virtual size_t size_chunk();
virtual void fill_data_block(char* data_start);
public:
int version_num;
};
class Sprite_Bitmap_Scale_Chunk : public Chunk
{
public :
Sprite_Bitmap_Scale_Chunk(Chunk_With_Children* parent,const char*,size_t);
Sprite_Bitmap_Scale_Chunk(Chunk_With_Children* parent);
~Sprite_Bitmap_Scale_Chunk();
virtual size_t size_chunk();
virtual void fill_data_block(char* data_start);
int NumBitmaps;
float* Scale;
};
class Sprite_Bitmap_Centre_Chunk : public Chunk
{
public :
Sprite_Bitmap_Centre_Chunk(Chunk_With_Children* parent,const char*,size_t);
Sprite_Bitmap_Centre_Chunk(Chunk_With_Children* parent);
~Sprite_Bitmap_Centre_Chunk();
virtual size_t size_chunk();
virtual void fill_data_block(char* data_start);
int NumBitmaps;
int* CentreX;
int* CentreY;
int* OffsetX;
int* OffsetY;
int spare;
};
#endif