aboutsummaryrefslogtreecommitdiffstats
path: root/include/World.h
blob: 658adb0e98a7aaca6f662bac83910a7f93e07eec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef WORLD_H
#define WORLD_H

#include <common.h>

#define MAX_ENTITIES 8

#define goWorldLeft(w)  if(w->toLeft){w=w->toLeft;}
#define goWorldRight(w) if(w->toRight){w=w->toRight;}

class World {
private:
	struct line_t {
		// x = 2.0 (window width) / HLINES
		double start; // Where to change to dirt, going down (y)
	} __attribute__ ((packed)) *line;
	unsigned int lineCount;
	unsigned int entCount;
	void *entity[MAX_ENTITIES];
public:
	World *behind,*infront;
	World *toLeft,*toRight;
	World(void);
	World(const float width,World *l,World *r);
	void draw(void);
	void detect(vec2 *v,vec2 *vel,const float width);
	float getWidth(void);
	void saveToFile(FILE *f,World *parent);
	void loadFromFile(FILE *f,World *parent);
	void addLayer(const float width);
	void addEntity(void *e);
};

#endif // WORLD_H