SpaceCadetPinballEmscripten/SpaceCadetPinball/render.h

57 lines
1.3 KiB
C
Raw Normal View History

2020-11-06 14:56:32 +01:00
#pragma once
2020-11-08 16:37:59 +01:00
#include "gdrv.h"
#include "maths.h"
#include "zdrv.h"
enum class VisualType : char
{
None = 0,
Sprite = 1,
Ball = 2
};
struct __declspec(align(4)) render_sprite_type_struct
{
int XPosition;
int YPosition;
int Bmp8Width;
int Bmp8Height;
gdrv_bitmap8* RootBmp8;
zmap_header_type* ZMap;
char Unknown6_0;
VisualType VisualType;
2020-11-14 16:13:00 +01:00
short Depth;
2020-11-08 16:37:59 +01:00
int XPosition2;
int YPosition2;
int Bmp8Width2;
int Bmp8Height2;
int ZMapOffestY;
int ZMapOffestX;
int Unknown13;
int Unknown14;
int Unknown15;
int Unknown16;
int Unknown17;
int Unknown18;
visual_rect Rect;
};
2020-11-14 16:13:00 +01:00
static_assert(sizeof(render_sprite_type_struct) == 0x5c, "Wrong size render_sprite_type_struct");
2020-11-06 14:56:32 +01:00
class render
{
public:
static int blit;
2020-11-08 16:37:59 +01:00
static int many_dirty, many_sprites, many_balls;
static render_sprite_type_struct **dirty_list, **sprite_list, **ball_list;
static zmap_header_type* background_zmap;
static int zmap_offset, zmap_offsetY;
2020-11-06 14:56:32 +01:00
static void update();
2020-11-07 16:41:14 +01:00
static void paint();
2020-11-08 16:37:59 +01:00
static int sprite_modified(render_sprite_type_struct* sprite);
static render_sprite_type_struct* create_sprite(VisualType visualType, gdrv_bitmap8* rootBmp8,
zmap_header_type* zMap,
int xPosition, int yPosition, visual_rect* rect);
2020-11-06 14:56:32 +01:00
};