Blob Blame Raw
#ifndef HELI_SPRITE_H
#define HELI_SPRITE_H


#include "common.h"

typedef struct _Sprite *Sprite;


typedef enum _Collider {
	COLLIDER_RECTANGLE,
	COLLIDER_CIRCLE
} Collider;

Sprite createSprite(double x, double y);
Sprite createSpriteEx(double x, double y, double width, double height);

void spriteDestroy(Sprite sprite);
void spriteDestroyTimer(Sprite sprite, double lifetime);

double spriteGetX(Sprite sprite);
void spriteSetX(Sprite sprite, double x);

double spriteGetY(Sprite sprite);
void spriteSetY(Sprite sprite, double y);

double spriteGetVelocityX(Sprite sprite);
void spriteSetVelocityX(Sprite sprite, double x);

double spriteGetVelocityY(Sprite sprite);
void spriteSetVelocityY(Sprite sprite, double y);

double spriteGetScale(Sprite sprite);
void spriteSetScale(Sprite sprite, double scale);

double spriteGetWidth(Sprite sprite);
void spriteSetWidth(Sprite sprite, double width);

double spriteGetHeight(Sprite sprite);
void spriteSetHeight(Sprite sprite, double height);

int spriteGetRotateToDirection(Sprite sprite);
void spriteSetRotateToDirection(Sprite sprite, int rotateToDirection);

double spriteGetRotation(Sprite sprite);
void spriteSetRotation(Sprite sprite, double rotation);

double spriteGetRotationSpeed(Sprite sprite);
void spriteSetRotationSpeed(Sprite sprite, double rotationSpeed);

int spriteGetMirrorX(Sprite sprite);
void spriteSetMirrorX(Sprite sprite, int mirrorX);

int spriteGetMirrorY(Sprite sprite);
void spriteSetMirrorY(Sprite sprite, int mirrorY);

double spriteGetDepth(Sprite sprite);
void spriteSetDepth(Sprite sprite, double depth);

int spriteGetVisible(Sprite sprite);
void spriteSetVisible(Sprite sprite, int visible);

int spriteGetDebug(Sprite sprite);
void spriteSetDebug(Sprite sprite, int debug);

int spriteOverlap(Sprite a, Sprite b);
int spriteCollide(Sprite a, Sprite b, double bounciness);
int spriteBounceOff(Sprite sprite, Sprite other, double bounciness);
int spritePush(Sprite sprite, Sprite other, double bounciness);
int spriteCollideEx(Sprite a, Sprite b, int keepVelocityA, int keepVelocityB, double bounciness);

double spriteGetBounciness(Sprite sprite);
void spriteSetBounciness(Sprite sprite, double bounciness);

void spriteSetCollider(Sprite sprite, Collider type, double xOffset, double yOffset);
void spriteSetColliderEx(Sprite sprite, Collider type, double xOffset, double yOffset,
						 double widthOrRadius, double height, double rotationOffset);

void spriteSetAnimation(Sprite sprite, const char *path);
void spritePlay(Sprite sprite);
void spritePause(Sprite sprite);
void spriteNextFrame(Sprite sprite);
void spriteSetFrame(Sprite sprite, int frame);
void spriteSetShapeColor(Sprite sprite, const char *color);
void spriteSetTintColor(Sprite sprite, const char *color);

void spriteSetVelocityXY(Sprite sprite, double x, double y);
void spriteSetSpeedAndDirection(Sprite sprite, double speed, double angle);
double spriteGetSpeed(Sprite sprite);
double spriteGetDirection(Sprite sprite);
void spritePointTo(Sprite sprite, double x, double y);

double spriteGetScaledWidth(Sprite sprite);
double spriteGetScaledHeight(Sprite sprite);


#endif