示例#1
0
void player_render() {
	if(!player)
		return;
	
	shapesprite_render(player->shape, player->x / 1000 - camera_x / 1000, player->y / 1000);
	
	//d_render_offset(-(800-256), -(480/2+30));
	//if(boss_shooting)
	//	shape_copy_render(flamethrower);
	
	d_render_offset(-(player->x / 1000 - camera_x / 1000)-4, -(player->y / 1000)+6);
	shape_copy_rotate(player->gun, player->gun_angle);
	shape_copy_render(player->gun);
	shape_copy_rotate(player->gun, -player->gun_angle);
	d_render_offset(-((player->x/1000) - camera_x/1000 )-16, -(player->y/1000+(player->gun_angle?player->gun_angle/20:0)));
	
	if(grenade_time) {
		d_render_tint(0x0, 0xFF, 0x0, 0xFF);
		shape_copy_render(player->grenade_shape);
		d_render_tint(0xFF, 0xFF, 0xFF, 0xFF);
	}
	d_render_offset(0, 0);
	if(gamestate_current()!=GAMESTATE_GAME)
		return;
	bullet_loop(&player->bullet);
	grenade_loop(&player->grenade);
	player_draw_stat();
	return;
}
示例#2
0
文件: Robot.c 项目: slaeshjag/kiruna
int main(int argc, char **argv) {

	d_init_custom("AutoKorg", WINDOW_WIDTH, WINDOW_HEIGHT, 0, "robot", NULL);
	//Calling an initiating function. Said function creates a window
	//with resolution 800x600, that's now full-screen and with the title AutoKorg.
	
	DARNIT_FONT *kgfont = d_font_load("KGRayofSunshine.ttf", 60, 256, 256);
	//We create a font handle.
	
	DARNIT_TEXT_SURFACE *papper = d_text_surface_new(kgfont, 100 , 800, 10, 0);
	//Here we create a handle to a text surface, using the font previously handled.
	
	/*pthread_t threads[1];
	hello = pthread_create(&threads[0], NULL, musikka, (void *) NULL);*/
	
	d_cursor_show(1); //Call a funciton which shows the cursor in the window.
	
	initiate_buttons();
	initiate_serial_port();
	
	for(;;) {
		
		//Program loop.
		
		d_render_begin(); 
		//Call to start rendering.
		
		d_render_blend_enable(); 
		//Enable blend, a call to a function apparently needed.
		
		if(state < DISCO){
			d_render_tint(255,255,255,255);
		} 
		else {
			d_render_tint(rand() & 0xF0, rand() & 0xF0, rand() & 0xF0, 255);
		}
		//Another call to a needed function. Don't question the libdarnit.
		
		//d_text_surface_string_append(papper, svar);
		
		do_stuff(papper); 
		//Call to a function which does stuff.
		
		draw_interface();
		//Draws us some graphics.
		
		d_render_end(); 
		//Call to a function which you do at the stop of rendering.
		
		d_loop(); 
		//Call to a function that is to be called inbetween frames.
		
		d_text_surface_reset(papper); 
		//Lastly we clear the textsurface.
	}
	return 0;

	//End of show.
}
示例#3
0
文件: view.c 项目: slaeshjag/Muon
void view_mouse_draw(UI_WIDGET *widget, unsigned int type, UI_EVENT *e) {
	unsigned char r, g, b, a;
	d_render_tint_get(&r, &g, &b, &a);
	d_render_tint(255, 255, 255, 255);
	d_render_blend_enable();
	d_render_tile_blit(mouse_tilesheet, 0, e->mouse->x, e->mouse->y);
	d_render_blend_disable();
	d_render_tint(r, g, b, a);
}
示例#4
0
文件: pane.c 项目: h4xxel/birdie26
void ui_pane_render(UI_PANE *pane) {
	unsigned char r, g, b, a;
	d_render_tint_get(&r, &g, &b, &a);
	d_render_tint(pane->background_color.r, pane->background_color.g, pane->background_color.b, pane->background_color.a);
	d_render_rect_draw(pane->background, 1);
	d_render_tint(r, g, b, a);
	d_render_line_draw(pane->border, 4);

	if(pane->root_widget != NULL)
		pane->root_widget->render(pane->root_widget);
}
示例#5
0
文件: map.c 项目: slaeshjag/Muon
void map_minimap_render(UI_WIDGET *widget) {
	//override for imagebox render, to render viewport border on minimap
	ui_imageview_render(widget);
	unsigned char r, g, b, a;
	d_render_tint_get(&r, &g, &b, &a);
	d_render_tint(255, 255, 255, 255);
	d_render_line_draw(minimap_viewport, 4);
	struct MAP_FLARE_LIST *l;
	for(l=map_flares; l; l=l->next)
		if(l->index>=20) {
			d_render_tint(player_color[l->player].r, player_color[l->player].g, player_color[l->player].b, 255);
			d_render_circle_draw(l->minimap_circle);
		}
	d_render_tint(r, g, b, a);
}
示例#6
0
文件: uppg8.c 项目: h4xxel/algdat
int main(int argc, char **argv) {
	int i, j;
	struct GRAPH *g, *tree=NULL;
	struct VERTEX *v;
	struct POINT p;
	DARNIT_KEYS keys;
	srand(time(NULL));
	d_init("Graphs", "uppg8", NULL);
	
	for(i=0; i<256; i++) {
		circle[i]=d_render_circle_new(32, 1);
		line[i]=d_render_line_new(1, 1);
	}
	
	for(j=0; j<4; j++)
		for(i=0; i<7; i++) {
			p.x=i*100+50;//(rand()%80)*10;
			p.y=j*100+50;//(rand()%48)*10;
			v=graph_add_vertex(&graph, p);
			for(g=graph; g; g=g->next)
				if(!(rand()%6))
					graph_add_edge(v, g->vertex, rand()%100, DIRECTION_DOUBLE);
		}
	tree=graph_prim(graph);
	draw_graph(graph);
	for(g=graph;;) {
		keys=d_keys_get();
		if(keys.start) {
			g=g==graph?tree:graph;
			draw_graph(g);
		}
		d_keys_set(keys);
		d_render_begin();
		d_render_tint(0xFF, 0xFF, 0xFF, 0xFF);
		for(i=0; i<vertices; i++)
			d_render_circle_draw(circle[i]);
		for(i=0; i<edges; i++) {
			d_render_tint(length[i], 0x7F, 0x0, 0xFF);
			d_render_line_draw(line[i], 1);
		}
		
		d_render_end();
		d_loop();
	}
	
	d_quit();
	return 0;
}
示例#7
0
文件: map.c 项目: slaeshjag/Muon
void map_flare_draw() {
	struct MAP_FLARE_LIST **ll, *l;
	int j=0;
	for(ll=&map_flares; *ll; ll=&((*ll)->next), j++) {
		l=*ll;
		if(d_time_get()>l->created+l->duration) {
			*ll=l->next;
			int i;
			for(i=0; i<4; i++)
				d_render_circle_free(l->circle[i]);
			d_render_circle_free(l->minimap_circle);
			free(l);
			if(*ll)
				continue;
			else
				break;
		}
		d_render_tint(player_color[l->player].r, player_color[l->player].g, player_color[l->player].b, 255);
		d_render_circle_draw(l->circle[l->index/10]);
		l->index++;
		if(l->index>=40)
			l->index=0;
		
	}
}
示例#8
0
文件: map.c 项目: slaeshjag/svgestim
void map_render() {
	int i;
	d_render_offset(camera_x / 1000, 0);
	for(i=0; i<map.sections; i++)
		d_render_line_draw(map.line[i], map.lines[i]);
	
	for(i=0; i<map.enemies; i++)
		enemy_render(map.enemy[i]);
	
	for(i=0; i<map.powerups; i++) {
		d_render_tint(powerup_color[map.powerup[i].type].r, powerup_color[map.powerup[i].type].g, powerup_color[map.powerup[i].type].b, 0xFF);
		if(!map.powerup[i].taken) {
			d_render_offset(-(map.powerup[i].x) + camera_x / 1000, -(map.powerup[i].y));
			shape_copy_render(map.powerup[i].shape);
		}
	}
	d_render_tint(0xFF, 0xFF, 0xFF, 0xFF);
	d_render_offset(0, 0);
}
示例#9
0
void player_draw_stat() {
	char buff[32];

	sprintf(buff, "Score: %.8i\n", score);
	d_text_surface_reset(player->scoretext);
	d_text_surface_string_append(player->scoretext, buff);

	sprintf(buff, "Grenades: %.2i", player->grenades);
	d_text_surface_reset(player->grenadestext);
	d_text_surface_string_append(player->grenadestext, buff);

	d_render_rect_move(player->healthbar, 0, 0, 0, player->health * 2, PLAYER_HEALTH_BAR_HEIGHT);
	d_render_tint(255 - player->health * 255 / 100, player->health * 255 / 100, 0, 255);
	d_render_offset(0, 0);
	d_render_rect_draw(player->healthbar, 1);
	d_render_tint(255, 255, 255, 255);
	d_text_surface_draw(player->scoretext);
	d_text_surface_draw(player->grenadestext);

	return;
}
示例#10
0
文件: map.c 项目: slaeshjag/Muon
void map_draw(int draw_powergrid) {
	int i;
	for(i=0; i<map->layers-2; i++)
		d_tilemap_draw(map->layer[i].tilemap);
	if(config.alpha)
		d_render_blend_enable();
	d_tilemap_draw(map->layer[map->layers-2].tilemap);
	d_render_blend_disable();
	//d_tilemap_draw(map->layer[map->layers-1].tilemap);
	
	d_render_offset(map->cam_x, map->cam_y);
	if(config.grid) {
		d_render_tint(18, 18, 18, 255);
		for(i=0; i<map_grid_chunks; i++)
			if(map_grid_chunk[i].lines&&map_grid_chunk[i].x+map_grid_chunk[i].w>map->cam_x&&map_grid_chunk[i].x<map->cam_x+platform.screen_w-sidebar_width&&map_grid_chunk[i].y+map_grid_chunk[i].h>map->cam_y&&map_grid_chunk[i].y<map->cam_y+platform.screen_h)
				d_render_line_draw(map_grid_chunk[i].lines, map_grid_chunk[i].size);
		d_render_tint(255, 255, 255, 255);
	}
	
	d_tilemap_draw(map->layer[map->layers-1].tilemap);
	
	if(powergrid&&(draw_powergrid||config.powergrid))
		d_render_line_draw(powergrid, powergrid_lines);
		
	map_flare_draw();
	
	if(map_selected.index>-1&&map_selected.building) {
		int x=map->layer[map->layers-2].tile_w*(map_selected.index%map->layer[map->layers-2].tilemap->w);
		int y=map->layer[map->layers-2].tile_h*(map_selected.index/map->layer[map->layers-2].tilemap->w);
		d_render_tint(player_color[map_selected.owner].r, player_color[map_selected.owner].g, player_color[map_selected.owner].b, 255);
		if(map_selected.circle)
			d_render_circle_draw(map_selected.circle);
		d_render_offset(map->cam_x-x, map->cam_y-y);
		d_render_line_draw(map_selected.border, 4);
	}
	d_render_tint(255, 255, 255, 255);
	d_render_offset(0, 0);
}
示例#11
0
void texteffect_loop() {
	unsigned i, j;
	int k;

	for (i = j = 0; i < ws.te.max_te && j < ws.te.te_used; i++) {
		if (!ws.te.te[i].time_left)
			continue;
		j++;
		k = (ws.te.te[i].time_left << 8) / ws.te.te[i].total_time;
		k = (k < 0) ? 0 : k;
		k = (k > 255) ? 255 : k;
		d_render_offset(ws.camera.x, ws.camera.y - (k >> 2));
		d_render_tint(255, 255, 255, k);
		d_text_surface_draw(ws.te.te[i].s);
		ws.te.te[i].time_left -= d_last_frame_time();
		if (ws.te.te[i].time_left <= 0)
			texteffect_del(i);
	}

	d_render_tint(255, 255, 255, 255);
	
	return;
}
示例#12
0
void ambiance_draw() {
	int flicker_offset;

	if (ws.ambiance.flicker.flicker_interval) {
		if (ws.ambiance.flicker.flicker) {
			ws.ambiance.flicker.flicker += d_last_frame_time();
			flicker_offset = ws.ambiance.flicker.flicker;
			if (flicker_offset >= ws.ambiance.flicker.flicker_duration / 2)
				flicker_offset = ws.ambiance.flicker.flicker_duration / 2 - flicker_offset;
			flicker_offset *= ws.ambiance.flicker.flicker_offset;
			flicker_offset /= ws.ambiance.flicker.flicker_duration;
			ws.ambiance.flicker.flicker = flicker_offset;
		}
	}
	if (ws.ambiance.flicker.filter_active) {
		d_render_offset(0, 0);
		d_render_tint(ws.ambiance.flicker.r, ws.ambiance.flicker.g, ws.ambiance.flicker.b, ws.ambiance.flicker.a + ws.ambiance.flicker.flicker);
		d_render_rect_draw(ws.ambiance.flicker.rect, 1);
	}

	return;
}
示例#13
0
文件: main.c 项目: h4xxel/birdie26
int main(int argc, char  **argv) {
	char font_path[512];
	char *tmp;
	bool fullscreen = false;
	
	if (argc >= 2 && !strcmp(argv[1], "-fs"))
		fullscreen = true;
		

	d_init_custom("Fascister i grönsakslandet ~ //achtung fulkod", DISPLAY_WIDTH, DISPLAY_HEIGHT, fullscreen, "birdie26", NULL);
	
	sprintf(font_path, "%s", d_fs_exec_path());
	chdir(tmp = dirname(font_path));
	sprintf(font_path, "%s/res/font.ttf", tmp);
	gfx.font.large = d_font_load(font_path, 36, 256, 256);
	gfx.font.small = d_font_load(font_path, 16, 256, 256);
	s = malloc(sizeof(*s));

	ui_init(4);
	menu_init();
	gameroom_init();
	lobby_init();
	character_room_init();
	game_over_init();
	
	gamestate_pane[GAME_STATE_MENU] = &menu.pane;
	gamestate_pane[GAME_STATE_SELECT_NAME] = &select_name.pane;
	gamestate_pane[GAME_STATE_CHARACTERS] = &character_room.pane;
	gamestate_pane[GAME_STATE_LOBBY] = &lobby.pane;
	gamestate_pane[GAME_STATE_ENTER_IP] = &enter_ip.pane;
	gamestate_pane[GAME_STATE_GAMEROOM] = &gameroom.pane;
	gamestate_pane[GAME_STATE_GAME_OVER] = &game_over.pane;
	
	
	signal(SIGINT, d_quit); //lol
	network_init(PORT);
	
	d_cursor_show(1);
	d_render_clearcolor_set(0x7F, 0x7F, 0x7F);
	
	if(argc > 1) {
		snprintf(player_name, NAME_LEN_MAX, "%s", argv[1]);
		game_state(GAME_STATE_MENU);
	} else
		game_state(GAME_STATE_SELECT_NAME);
	while(gamestate!=GAME_STATE_QUIT) {
		if(state_network_handler[gamestate])
			state_network_handler[gamestate]();
		
		d_render_begin();
		d_render_blend_enable();
		
		d_render_tint(20, 20, 20, 255);
		
		if(gamestate_pane[gamestate])
			ui_events(gamestate_pane[gamestate], 1);
	
		d_render_tint(255, 255, 255, 255);
		if(state_render[gamestate])
			state_render[gamestate]();
		
		if(state_network_handler[gamestate])
			state_network_handler[gamestate]();
	
		d_render_end();
		d_loop();
	}

	d_quit();
	return 0;
}