Blame src/private.h

Ivan Mahonin 3f9996
Ivan Mahonin 3f9996
#include <assert.h>
Ivan Mahonin 3f9996
#include <string.h>
Ivan Mahonin 3f9996
#include <stdlib.h>
Ivan Mahonin 8535a3
#include <stdio.h>
Ivan Mahonin 3f9996
#include <ctype.h>
Ivan Mahonin 3f9996
#include <math.h>
Ivan Mahonin 3f9996
Ivan Mahonin 8535a3
#include <cairo.h>
Ivan Mahonin 8535a3
Ivan Mahonin 3f9996
#include "common.h"
Ivan Mahonin 3f9996
#include "sprite.h"
Ivan Mahonin 3f9996
Ivan Mahonin 3f9996
Ivan Mahonin 8535a3
// globals
Ivan Mahonin 3f9996
Ivan Mahonin 1c7488
#define HELI_PRECISION 1e-6
Ivan Mahonin 1c7488
#define HELI_PRECISION_SQR 1e-12
Ivan Mahonin 1c7488
Ivan Mahonin 8535a3
extern cairo_t *heliCairo;
Ivan Mahonin 3f9996
Ivan Mahonin 3f9996
Ivan Mahonin 3f9996
// string
Ivan Mahonin 3f9996
Ivan Mahonin 8535a3
char* heliStringCopy(const char *x);
Ivan Mahonin 8535a3
char* heliStringConcat3(const char *a, const char *b, const char *c);
Ivan Mahonin 8535a3
int heliStringEndsWithLowcase(const char *s, const char *tail);
Ivan Mahonin 3f9996
void heliLowercase(char *x);
Ivan Mahonin 8535a3
void heliParseColor(const char *x, double *color);
Ivan Mahonin 3f9996
Ivan Mahonin 09c823
Ivan Mahonin 3f9996
// pointer array
Ivan Mahonin 3f9996
Ivan Mahonin 8535a3
typedef void (*HeliFreeCallback)(void*);
Ivan Mahonin 8535a3
Ivan Mahonin 8535a3
typedef struct _HeliPair {
Ivan Mahonin 8535a3
	void *key;
Ivan Mahonin 8535a3
	void *value;
Ivan Mahonin 8535a3
	HeliFreeCallback freeKey;
Ivan Mahonin 8535a3
	HeliFreeCallback freeValue;
Ivan Mahonin 8535a3
} HeliPair;
Ivan Mahonin 8535a3
Ivan Mahonin 3f9996
typedef struct _HeliArray {
Ivan Mahonin 8535a3
	HeliPair *items;
Ivan Mahonin 3f9996
	int count;
Ivan Mahonin 3f9996
	int allocated;
Ivan Mahonin 3f9996
} HeliArray;
Ivan Mahonin 3f9996
Ivan Mahonin 8535a3
void heliPairInit(HeliPair *p);
Ivan Mahonin 8535a3
void heliPairDestroy(HeliPair *p);
Ivan Mahonin 8535a3
Ivan Mahonin 07b70f
void heliArrayInit(HeliArray *a);
Ivan Mahonin 8535a3
void heliArrayClear(HeliArray *a);
Ivan Mahonin 07b70f
void heliArrayDestroy(HeliArray *a);
Ivan Mahonin 8535a3
HeliPair* heliArrayGet(HeliArray *a, int i);
Ivan Mahonin 8535a3
void* heliArrayGetKey(HeliArray *a, int i);
Ivan Mahonin 8535a3
void* heliArrayGetValue(HeliArray *a, int i);
Ivan Mahonin 8535a3
HeliPair* heliArrayInsert(HeliArray *a, int i, void *v, HeliFreeCallback fv);
Ivan Mahonin 8535a3
HeliPair* heliArrayInsertPair(HeliArray *a, int i, void *k, void *v, HeliFreeCallback fk, HeliFreeCallback fv);
Ivan Mahonin 8535a3
void heliArrayRemove(HeliArray *a, int i);
Ivan Mahonin 8535a3
Ivan Mahonin 8535a3
HeliPair* heliStringmapFind(HeliArray *a, const char *k, int *gtOrEqIndex);
Ivan Mahonin 8535a3
HeliPair* heliStringmapGet(HeliArray *a, const char *k);
Ivan Mahonin 8535a3
HeliPair* heliStringmapAdd(HeliArray *a, const char *k, void *v, HeliFreeCallback fv);
Ivan Mahonin 8535a3
int heliStringmapRemove(HeliArray *a, const char *k);
Ivan Mahonin 3f9996
Ivan Mahonin 8535a3
Ivan Mahonin 8535a3
// animation
Ivan Mahonin 8535a3
Ivan Mahonin 1c7488
typedef struct _HeliAnimation {
Ivan Mahonin 8535a3
	char *path;
Ivan Mahonin 8535a3
	HeliArray frames;
Ivan Mahonin 8535a3
	int refcount;
Ivan Mahonin 1c7488
} HeliAnimation;
Ivan Mahonin 8535a3
Ivan Mahonin 1c7488
HeliAnimation* heliAnimationLoad(const char *path);
Ivan Mahonin 1c7488
void heliAnimationUnref(HeliAnimation *a);
Ivan Mahonin 07b70f
void heliAnimationFinish();
Ivan Mahonin 3f9996
Ivan Mahonin 3f9996
Ivan Mahonin 3f9996
// collider
Ivan Mahonin 3f9996
Ivan Mahonin 3f9996
typedef struct _HeliCollider {
Ivan Mahonin 3f9996
	Collider type;
Ivan Mahonin 3f9996
	double x;
Ivan Mahonin 3f9996
	double y;
Ivan Mahonin 3f9996
	double radius;
Ivan Mahonin 3f9996
	double width;
Ivan Mahonin 3f9996
	double height;
Ivan Mahonin 3f9996
	double rotation;
Ivan Mahonin 3f9996
} HeliCollider;
Ivan Mahonin 3f9996
Ivan Mahonin 1c7488
int heliCheckCollision(
Ivan Mahonin 1c7488
	HeliCollider *a, HeliCollider *b,
Ivan Mahonin 1c7488
	double *dx, double *dy,
Ivan Mahonin 1c7488
	double *vx, double *vy,
Ivan Mahonin 1c7488
	double bounciness );
Ivan Mahonin 1c7488
Ivan Mahonin 3f9996
int heliPointCollision(HeliCollider *c, double x, double y);
Ivan Mahonin 3f9996
Ivan Mahonin 8535a3
Ivan Mahonin 8535a3
// sprite
Ivan Mahonin 8535a3
Ivan Mahonin 07b70f
typedef void (*HeliSpriteEashInt)(Sprite, int);
Ivan Mahonin 07b70f
typedef void (*HeliSpriteEashDouble)(Sprite, double);
Ivan Mahonin 07b70f
typedef void (*HeliSpriteEashString)(Sprite, const char*);
Ivan Mahonin 8535a3
HeliArray* heliSpriteGetGroups(Sprite sprite);
Ivan Mahonin 07b70f
void heliSpriteUpdate(double dt);
Ivan Mahonin 07b70f
void heliSpriteFinish();
Ivan Mahonin 8535a3
Ivan Mahonin 07b70f
Ivan Mahonin 07b70f
// drawing
Ivan Mahonin 07b70f
Ivan Mahonin 650f35
void heliDrawingClearFrame(cairo_t *cr);
Ivan Mahonin 07b70f
void heliDrawingPrepareFrame();
Ivan Mahonin 07b70f
void heliDrawingFinish();
Ivan Mahonin d1f083
Ivan Mahonin d1f083
Ivan Mahonin 09c823
// sound
Ivan Mahonin 09c823
Ivan Mahonin 09c823
void heliSoundUpdate();
Ivan Mahonin 09c823
void heliSoundFinish();
Ivan Mahonin 09c823
Ivan Mahonin 09c823
Ivan Mahonin d1f083
// test
Ivan Mahonin d1f083
Ivan Mahonin d1f083
void heliDoTests();
Ivan Mahonin d1f083