#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include "common.h"
#include "sprite.h"
// sprite
void heliUpdateSprites();
// string
char* heliStringCopy(char *x);
void heliLowercase(char *x);
// pointer array
typedef struct _HeliArray {
void **items;
int count;
int allocated;
} HeliArray;
int heliArrayInit(HeliArray *a);
void heliArrayClear(HeliArray *a, int freeData);
int heliArrayDestroy(HeliArray *a, int freeData);
void* heliArrayGet(HeliArray *a, int i);
void heliArrayInsert(HeliArray *a, int i, void *item);
void heliArrayAppend(HeliArray *a, void *item);
void heliArrayRemove(HeliArray *a, int i, int freeData);
int heliStringsetFind(HeliArray *a, char *x, int *gtOrEqIndex);
int heliStringsetGet(HeliArray *a, char *x);
void heliStringsetAdd(HeliArray *a, char *x);
void heliStringsetRemove(HeliArray *a, char *x);
// collider
typedef struct _HeliCollider {
Collider type;
double x;
double y;
double radius;
double width;
double height;
double rotation;
} HeliCollider;
int heliCheckCollision(HeliCollider *a, HeliCollider *b, double *normX, double *normY);
int heliPointCollision(HeliCollider *c, double x, double y);