Files
asarium ef395640d3 Add support for libRocket command briefing
This adds access to the command briefing data parsed from the mission
file to the scripting API so it can be used by the UI scripts for the
high res UI.

Also switches the animation support to using the generic anim to use
streaming to improve performance.
2020-06-20 18:17:01 +02:00

94 lines
2.3 KiB
C++

#ifndef _GENERIC_H_
#define _GENERIC_H_
#include "anim/animplay.h"
#include "bmpman/bmpman.h"
#include "cfile/cfile.h"
#include "globalincs/pstypes.h"
#include "pngutils/pngutils.h"
#define GENERIC_ANIM_DIRECTION_FORWARDS 0
#define GENERIC_ANIM_DIRECTION_BACKWARDS 1
#define GENERIC_ANIM_DIRECTION_NOLOOP 2
#define GENERIC_ANIM_DIRECTION_PAUSED 4
// Goober5000
typedef struct generic_anim {
char filename[MAX_FILENAME_LEN];
int first_frame;
int num_frames;
int keyframe;
int keyoffset;
int current_frame;
int previous_frame;
unsigned char direction;
unsigned char done_playing;
float total_time; // in seconds
float anim_time; // current animation time
//we only care about the stuff below if we're streaming
union {
struct {
anim *animation;
anim_instance *instance;
BM_TYPE bg_type; //to store background type to avoid messed up colours
} ani;
struct {
int next_frame;
} eff;
struct {
apng::apng_ani* anim;
float previous_frame_time;
} png;
};
BM_TYPE type;
unsigned char streaming;
ubyte *buffer;
int height;
int width;
int bitmap_id;
bool use_hud_color;
} generic_anim;
// Goober5000
typedef struct generic_bitmap {
char filename[MAX_FILENAME_LEN];
int bitmap_id;
} generic_bitmap;
/*
* @brief helper class to reduce params passed to generic_anim_render
*/
class generic_extras {
public:
int width, height;
float u0, v0, u1, v1;
float alpha;
bool draw;
generic_extras()
: width(0), height(0)
, u0(0.0f), v0(0.0f)
, u1(1.0f), v1(1.0f)
, alpha(1.0f)
, draw(true)
{}
};
bool generic_bitmap_exists(const char *filename);
bool generic_anim_exists(const char *filename);
int generic_anim_init_and_stream(generic_anim *ga, const char *anim_filename, BM_TYPE bg_type, bool attempt_hi_res);
void generic_anim_init(generic_anim *ga);
void generic_anim_init(generic_anim *ga, const char *filename);
void generic_anim_init(generic_anim *ga, const SCP_string& filename);
void generic_bitmap_init(generic_bitmap *gb, const char *filename = NULL);
int generic_anim_load(generic_anim *ga);
int generic_anim_stream(generic_anim *ga, const bool cache = true);
int generic_bitmap_load(generic_bitmap *gb);
void generic_anim_unload(generic_anim *ga);
void generic_anim_render(generic_anim *ga, float frametime, int x, int y, bool menu = false, const generic_extras *ge = nullptr);
#endif