/*
** Haaf's Game Engine 1.7
** Copyright (C) 2003-2007, Relish Games
** hge.relishgames.com
**
** hgeResourceManager resources header
*/
#ifndef HGERESOURCES_H
#define HGERESOURCES_H
#include "hgeresource.h"
#include "parser.h"
#define RES_SCRIPT 0
#define RES_RESOURCE 1
#define RES_TEXTURE 2
#define RES_EFFECT 3
#define RES_MUSIC 4
#define RES_STREAM 5
#define RES_TARGET 6
#define RES_SPRITE 7
#define RES_ANIMATION 8
#define RES_FONT 9
#define RES_PARTICLE 10
#define RES_DISTORT 11
#define RES_STRTABLE 12
void AddRes(hgeResourceManager *rm, int type, ResDesc *resource);
ResDesc* FindRes(hgeResourceManager *rm, int type, const char *name);
struct RScript : public ResDesc
{
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm) {return 0;}
virtual void Free() {}
};
struct RResource : public ResDesc
{
char filename[MAXRESCHARS];
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RTexture : public ResDesc
{
char filename[MAXRESCHARS];
bool mipmap;
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct REffect : public ResDesc
{
char filename[MAXRESCHARS];
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RTarget : public ResDesc
{
int width;
int height;
bool zbuffer;
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RSprite : public ResDesc
{
char texname[MAXRESCHARS];
float tx, ty, w, h;
float hotx, hoty;
int blend;
DWORD color;
float z;
bool bXFlip, bYFlip;
// float x,y;
// float scale;
// float rotation;
// int collision;
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RAnimation : public RSprite
{
int frames;
float fps;
int mode;
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RFont : public ResDesc
{
char filename[MAXRESCHARS];
bool mipmap;
int blend;
DWORD color;
float z;
float scale;
float proportion;
float tracking;
float spacing;
float rotation;
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RParticle : public ResDesc
{
char filename[MAXRESCHARS];
char spritename[MAXRESCHARS];
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RDistort : public ResDesc
{
char texname[MAXRESCHARS];
float tx, ty, w, h;
int cols, rows;
int blend;
DWORD color;
float z;
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
struct RStringTable : public ResDesc
{
char filename[MAXRESCHARS];
static void Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename);
virtual DWORD Get(hgeResourceManager *rm);
virtual void Free();
};
#endif