Ejemplo n.º 1
0
int main(int argc, char **argv) {
	DARNIT_TILESHEET *ts;
	DARNIT_TILEMAP *tm;
	int i, t;

	d_init("orthotest", "orthotest", NULL);
	ts = d_render_tilesheet_load("grid.png", 24, 24, DARNIT_PFORMAT_RGB5A1);
	tm = d_tilemap_new(0xFFF, ts, 0xFFF, 10, 18);
	for (i = 0; i < 180; i++)
		tm->data[i] = 1;
	d_tilemap_recalc(tm);
	d_tilemap_camera_move(tm, -1, 0);

	t = d_time_get();
	for (i = 0;; i++) {
		fprintf(stderr, "Moving camera %i\n", -i / 30);
		d_tilemap_camera_move(tm, 0, -i / 30);
		d_render_begin();
		d_tilemap_draw(tm);
		d_render_end();
		d_loop();
	}

	d_quit();
}
Ejemplo n.º 2
0
int main(int argc, char **argv) {
	DARNIT_TILEMAP *tm;
	DARNIT_TILESHEET *ts;
	int i, j;

	d_init("isotest", "isotest", NULL);
	ts = d_render_tilesheet_isom_load("isosheet.png", 64, 64, DARNIT_PFORMAT_RGB5A1);
	tm = d_tilemap_isom_new(0, ts, 0xFF, 32, 16, 32);

	d_render_blend_enable();
	d_tilemap_recalc(tm);
	
	for (i = 0;; i++) {
		j = i % 1200;
		if (j > 600)
			j = j + (2*(j - 600)) * -1;
		j *= -1;
		j += 300;
		d_tilemap_camera_move(tm, 0, 0);
		d_render_begin();
		d_render_blend_enable();
		d_tilemap_draw(tm);
		d_render_end();
		d_loop();
	}

	d_quit();
}
Ejemplo n.º 3
0
Archivo: map.c Proyecto: slaeshjag/Muon
void map_clear_fow() {
	unsigned int *d=map->layer[map->layers-1].tilemap->data;
	int w=map->layer[map->layers-1].tilemap->w;
	int h=map->layer[map->layers-1].tilemap->h;
	int i;
	for(i=0; i<w*h; i++) {
		d[i]&=~0xFFF;
	}
	d_tilemap_recalc(map->layer[map->layers-1].tilemap);
}
Ejemplo n.º 4
0
Archivo: map.c Proyecto: slaeshjag/Muon
DARNIT_MAP *map_new_palette(unsigned int width, unsigned int height, DARNIT_TILESHEET *ts) {
	int i;
	int tile_w, tile_h;
	DARNIT_MAP *d_map=NULL;
	DARNIT_MAP_LAYER *layer=NULL;
	
	if(!(ts&&(d_map=malloc(sizeof(DARNIT_MAP)))&&(layer=malloc(sizeof(DARNIT_MAP_LAYER))))) {
		free(d_map);
		free(layer);
		return NULL;
	}
	
	d_map->layer=layer;
	*((unsigned int *) &d_map->layers)=1;
	d_map->object=NULL;
	*((unsigned int *) &d_map->objects)=0;
	d_map->prop=NULL;
	d_map->stringdata=NULL;
	d_map->stringrefs=NULL;
	
	d_render_tilesheet_geometrics(ts, NULL, NULL, &tile_w, &tile_h);
	
		/*This is needed to at least null all tilemaps so we can free them i one fails*/
	if(!(layer->tilemap=d_tilemap_new(0xFFF, ts, 0xFFF, width, height))) {
		free(d_map);
		free(layer);
		return NULL;
	}
	for(i=0; i<width*height; i++)
		layer->tilemap->data[i]=0;
	d_tilemap_recalc(layer->tilemap);
		
	layer->ts=ts;
	layer->offset_x=0;
	layer->offset_y=0;
	layer->tile_w=tile_w;
	layer->tile_h=tile_h;
	
	d_map_camera_move(d_map, 0, 0);
	return d_map;
}
Ejemplo n.º 5
0
Archivo: map.c Proyecto: slaeshjag/Muon
MAP *map_new(unsigned int width, unsigned int height, unsigned int terrain_layers, DARNIT_TILESHEET *ts) {
	int i, j;
	int tile_w, tile_h;
	int fail=0;
	DARNIT_MAP *d_map=NULL;
	DARNIT_MAP_LAYER *layer=NULL;
	MAP *map;
	DARNIT_FILE *f_ts;
	if(!(map=malloc(sizeof(MAP))))
		return NULL;
	
	if(!(ts&&terrain_layers&&(d_map=malloc(sizeof(DARNIT_MAP)))&&(layer=malloc((terrain_layers+2)*sizeof(DARNIT_MAP_LAYER))))) {
		free(d_map);
		free(layer);
		return NULL;
	}
	
	d_map->layer=layer;
	*((unsigned int *) &d_map->layers)=terrain_layers+2;
	d_map->object=NULL;
	*((unsigned int *) &d_map->objects)=0;
	d_map->prop=NULL;
	d_map->stringdata=NULL;
	d_map->stringrefs=NULL;
	
	d_render_tilesheet_geometrics(ts, NULL, NULL, &tile_w, &tile_h);
	for(i=0; i<terrain_layers+2; i++) {
		/*This is needed to at least null all tilemaps so we can free them i one fails*/
		if(!(fail|=!(layer[i].tilemap=d_tilemap_new(0xFFF, ts, 0xFFF, width, height)))) {
			for(j=0; j<width*height; j++)
				layer[i].tilemap->data[j]=i==terrain_layers+1?1:144*(!i);
			d_tilemap_recalc(layer[i].tilemap);
		}
		layer[i].ts=ts;
		layer[i].offset_x=0;
		layer[i].offset_y=0;
		layer[i].tile_w=tile_w;
		layer[i].tile_h=tile_h;
	}
	if(fail) {
		for(i=0; i<terrain_layers+2; i++)
			d_tilemap_free(layer[i].tilemap);
		free(d_map);
		free(layer);
		return NULL;
	}
	
	d_map_camera_move(d_map, 0, 0);
	
	map->map=d_map;
	map->stringtable=malloc(sizeof(MAP_PROPERTY));
	map->stringtable->key="tileset";
	map->stringtable->value="mapdata/default.png";
	map->stringtable->next=NULL;
	
	map->w=width*tile_w;
	map->h=height*tile_h;
	sprintf(map->sizestring, "%ix%i", width, height);
	map_prop_set_or_add(map, "size", map->sizestring);
	
	if(!(f_ts=d_file_open("res/default.png", "rb"))) {
		map->tilesheet=NULL;
		map_close(map);
		return NULL;
	}
	d_file_seek(f_ts, 0, SEEK_END);
	map->tilesheet_size=d_file_tell(f_ts);
	map->tilesheet=malloc(map->tilesheet_size);
	d_file_seek(f_ts, 0, SEEK_SET);
	d_file_read(map->tilesheet, map->tilesheet_size, f_ts);
	d_file_close(f_ts);
	
	return map;
}