Пример #1
0
int player_spawn(int x, int y, SHAPE_SPRITE *shape, SHAPE *gun, SHAPE *grenade) {
	if (player)
		player_kill();

	if (!(player = malloc(sizeof(PLAYER)))) {
		fprintf(stderr, "Unable to alloc memory for player\n");
		return 0;
	}
	
	player->shape=shape;
	player->gun = shape_copy_copy(gun);
	player->grenade_shape = shape_copy_copy(grenade);

	player->x = x * 1000;
	player->y = y * 1000;
	player->vel_x = 0;
	player->vel_y = 0;
	player->health=100;
	player->grenades=3;
	
	player->gun_angle=0;
	player->bullet=NULL;
	player->grenade=NULL;
	player->healthbar = d_render_rect_new(1);
	player->scoretext = d_text_surface_new(font.vectroid, 32, 400, 400, 0);
	player->grenadestext = d_text_surface_new(font.vectroid, 32, 400, 400, 32);
	
	return 1;
}
Пример #2
0
int highscore_init() {
	DARNIT_FILE *f;
	int i;
	char buff[64];

	highscore.enter_name = d_text_surface_new(font.vectroid, 600, 400, 150, 160);
	d_text_surface_string_append(highscore.enter_name, "New highscore! Enter your name");
	*highscore.name_buff = 0;
	highscore.name = d_menu_textinput_new(100, 200, font.vectroid, highscore.name_buff, 32, 400);

	for (i = 0; i < HIGHSCORE_CAP; i++) {
		highscore_table[i].score = 0;
		*highscore_table[i].name = 0;
	}
	d_text_surface_string_append(highscore.title = d_text_surface_new(font.univox, 64, 800, 16, 16), "highscores");
	highscore.text = d_text_surface_new(font.vectroid, 600, 800, 40, 150);
	if (!(f = d_file_open("highscore.txt", "rb"))) {
		fprintf(stderr, "Warning: Unable to open highscore table\n");
		return 0;
	}

	for (i = 0; i < HIGHSCORE_CAP && !d_file_eof(f); i++) {
		d_file_gets(buff, 64, f);
		sscanf(buff, "%i %s\n", &highscore_table[i].score, highscore_table[i].name);
	}

	return 1;
}
Пример #3
0
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.
}
Пример #4
0
static void init() {
	int i;
	DARNIT_INPUT_MAP map;

	d_init("pewpewtris", "pewpewtris", NULL);
	d_fs_mount_self();
	d_fs_mount("music.ldi");
	d_fs_mount("sounds.ldi");
	config_init();
	
	ppt.ui.offset_x = 288;
	ppt.ui.offset_y = 0;

	for (i = 0; i < 180; ppt.tile_lookup[i++] = -1);

	ppt.block = d_render_tilesheet_load("res/block.png", 24, 24, DARNIT_PFORMAT_RGB5A1);
	ppt.tile = d_render_tile_new(10 * 18, ppt.block);
	ppt.bbox = d_bbox_new(180);
	d_bbox_set_indexkey(ppt.bbox);
	ppt.tm = d_tilemap_new(0xFFF, ppt.block, 0xFFF, 10, 18);
	ppt.request_new = 0;
	ppt.font = d_font_load("res/font.ttf", 28, 256, 256);
	ui_init();
	bullet_init(30);
	highscore_init();
	state_init();
	music_init();
	
	ppt.ui.play_background = d_map_load("res/playfield_background.ldmz");
	ppt.ui.menu_background = d_map_load("res/mainmenu_background.ldmz");
	ppt.ui.highscore_background = d_map_load("res/highscore_background.ldmz");

	/* Re-map B to space */
	if (!(d_platform_get().platform & DARNIT_PLATFORM_PANDORA)) {
		map = d_keymapping_get();
		map.b = TPW_KEY_SPACE;
		d_keymapping_set(map);
	}

	block_particle_init();

	/* FIXME: Remove */
	ppt.fps = d_text_surface_new(ppt.font, 6, 1000, 0, 0);
}
Пример #5
0
void menu_init() {
	TEXT_STATIC(menu.title, font.univox, "svgestim", 64, 16);
	TEXT_MENU(1, "start game");
	TEXT_MENU(2, "highscores");
	TEXT_MENU(3, "instructions");
	TEXT_MENU(4, "quit");
	
	TEXT_STATIC(gameover.title, font.univox, "game over,", 16, 16);
	TEXT_STATIC(gameover.subtitle, font.univox, "n00b", 64+32, 64);
	gameover.score=d_text_surface_new(font.vectroid, 64, 800, 128, 128);
	
	TEXT_STATIC(pause.title, font.univox, "game paused", 8, 16);
	
	TEXT_STATIC(instructions.title, font.univox, "instruction", 8, 16);
	TEXT_INSTRUCTIONS(1, "arrow keys:", "move and aim");
	TEXT_INSTRUCTIONS(2, "z:", "jump");
	TEXT_INSTRUCTIONS(3, "x:", "shoot");
	TEXT_INSTRUCTIONS(4, "c:", "throw grenade");
	TEXT_INSTRUCTIONS(5, "esc:", "quit to menu");
}
Пример #6
0
void lobby_init() {
	lobby.line = d_render_line_new(1, 2);
	d_render_line_move(lobby.line, 0, config.platform.screen_w - 320, 0, config.platform.screen_w - 320, config.platform.screen_h);
	
	lobby.list_players = d_text_surface_color_new(config.font_std, 2048, 300, 64, 0);
	lobby.list_games = d_text_surface_color_new(config.font_std, 2048, 300, config.platform.screen_w - 300, 0);
	
	lobby_join.list_players = d_text_surface_color_new(config.font_std, 2048, 300, 64, 0);
	lobby_host.start_game = d_text_surface_color_new(config.font_std, 32, 300, 64, config.platform.screen_h - 96);
	d_text_surface_color_next(lobby_host.start_game, 255, 0, 0);
	d_text_surface_string_append(lobby_host.start_game, "Press enter to start game");
	
	update_lists(NULL, lobby_client.client);
	
	lobby_playername.text_playername = d_text_surface_new(config.font_std, 64, 1024, 64, 64);
	lobby_playername.inputfield_playername = d_menu_textinput_new(64, 128, config.font_std, config.player_name, PROTO_PLAYER_NAME - 1, config.platform.screen_w);
	
	d_text_surface_string_append(lobby_playername.text_playername, "Enter your player name:");
	
	lobby.selected_game = 0;
	lobby.selected_player = 0;
}
Пример #7
0
int main(int argc, char **argv) {
	int i, j, js0_x, js0_y, js1_x, js1_y;
	void *font, *surface, *text, *mapsheet, *sprite, *textinput, *mtsprite, *fps_text, *tilebuf, *fancy_text;
	void *music;
	char test[256], fps[16];
	char *test_text;
	DARNIT_MOUSE mouse;
	DARNIT_KEYS keys;
	DARNIT_MAP *map;
	DARNIT_SPRITE *mapsprite;

	if (!d_init("TESTAPP - libDarnit", "testapp", NULL))
		return -1;

	compression_test();

	/* Sound/music */
	music = d_sound_tracked_load("latyl-greasy_duck_v1.mod", DARNIT_AUDIO_STREAM, DARNIT_AUDIO_STEREO);
	d_sound_play(music, 0, 127, 127, 0);

	/* Text rendering */
	test_text = malloc(64);
	font = d_font_load("dejavu_sans.ttf", 28, 512, 512);
	text = d_text_surface_new(font, 80, 800, 0, 460);
	fancy_text = d_text_surface_color_new(font, 16, 800, 0, 420);
	colorTest(fancy_text);
	fps_text = d_text_surface_new(font, 16, 200, 0, 40);


	/* Menutk test */
	surface = d_menu_vertical_new("Hello\nGoodbye\nOther\nNothing\nLess than nothing", 50, 100, font, 200, 10, 3);
	sprintf(test_text, "Héllo, world. Modify m€! Test of offsets");
	textinput = d_menu_textinput_new(0, 0, font, test_text, 64, 200);

	/* Sprites */
	sprite = d_sprite_load("test.spr", 0, DARNIT_PFORMAT_RGB5A1);
	mapsprite = d_sprite_load("baurn.spr", 0, DARNIT_PFORMAT_RGB5A1);
	d_sprite_move(sprite, 50, 50);
	d_sprite_move(mapsprite, 0, 0);
	d_sprite_animate_start(sprite);
	d_sprite_animate_start(mapsprite);
	
	mtsprite = d_mtsprite_load("testspr.mts");
	d_mtsprite_animate_start(mtsprite);

	/* Maps */

	mapsheet = d_render_tilesheet_load("mapsheet.png", 32, 32, DARNIT_PFORMAT_RGBA8);
	if ((map = d_map_load("testmap_iso.ldmz")) == NULL)
		fprintf(stderr, "Map load failed\n");
	d_tilemap_sprite_add(map->layer[0].tilemap, mapsprite);

	/* Tile caches */
	tilebuf = d_render_tile_new(1, mapsheet);
	d_render_tile_move(tilebuf, 0, 64, 64);
	d_render_tile_tilesheet_coord_set(tilebuf, 0, 16, 16, 32, 32);

	/* Misc */
	fprintf(stderr, "String lenght: %i\n", d_font_string_w(font, "ASDFÅÄÖ,,"));


	for (i = j = 0;;) {
		d_sprite_move(mapsprite, 64, j * 4);
		keys = d_keys_get();
		d_text_surface_reset(text); d_text_surface_reset(fps_text);
		mouse = d_mouse_get();
		d_joystick_get(&js0_x, &js0_y, &js1_x, &js1_y);
		sprintf(test, "X: %i, Y: %i, W: %i;; TX: %i, TY: %i;; nub0 (%i,%i) ;; nub1(%i,%i)", mouse.x, mouse.y, mouse.wheel, i*4, j*4, js0_x, js0_y, js1_x, js1_y);
		sprintf(fps, "%i", d_last_frame_time());
		d_text_surface_string_append(text, test);
		d_text_surface_string_append(fps_text, "ASDFÅÄÖ,,");

		if (keys.lmb)
			d_render_fade_in(1000, 1.0f, 0.0f, 0.0f);
		if (keys.rmb)
			d_render_fade_out(1000);

		d_render_begin();

		if (keys.left == 1)
			i--;
		if (keys.right == 1)
			i++;
		if (keys.up == 1)
			j--;
		if (keys.down == 1)
			j++;
		if (keys.select)
			fprintf(stderr, "Blololol\n");

		if (keys.r == 1)
			d_tilemap_camera_move(map->layer->tilemap, i*4, j*4);
		d_render_blend_enable();
		d_tilemap_draw(map->layer->tilemap);
		if (keys.l == 1)
			if (d_menu_loop(surface) != -1)
				return 0;
		d_menu_loop(textinput); 
		d_sprite_draw(sprite);
		d_text_surface_draw(text);
		d_text_surface_draw(fancy_text);
		d_text_surface_draw(fps_text);

		d_render_offset(-200, -200);
		d_mtsprite_draw(mtsprite);
		d_render_offset(0, 0);

		d_render_blend_disable();
		d_render_tile_draw(tilebuf, 1);
		d_render_end();
		d_loop();
	}


	return 0;
}
Пример #8
0
void game_view_init() {
	building_place=-1;
	ability_place=0;
	attacker_target=0;
	
	building[0].name="";
	building[1].name=T("Generator");
	building[2].name=T("Scout");
	building[3].name=T("Attacker");
	building[4].name=T("Pylon");
	building[5].name=T("Wall");
	building[6].name=T("Buildsite");
	building[7].name=T("Missile silo");
	building[8].name=T("Radar");
	
	game_attacklist_blink_semaphore=0;
	/*Game sidebar*/
	panelist_game_sidebar.pane=ui_pane_create(platform.screen_w-sidebar_width, 0, sidebar_width, platform.screen_h, NULL);
	ui_pane_set_root_widget(panelist_game_sidebar.pane, ui_widget_create_vbox());
	panelist_game_sidebar.next=&panelist_game_abilitybar;
	if(!platform_lowres)
		ui_vbox_add_child(panelist_game_sidebar.pane->root_widget, ui_widget_create_label(font_std, T("Muon")), 0);
	game_sidebar_minimap=ui_widget_create_imageview_raw(sidebar_width-8, sidebar_width-8, DARNIT_PFORMAT_RGB5A1);
	game_sidebar_minimap->render=map_minimap_render;
	game_sidebar_minimap->event_handler->add(game_sidebar_minimap, game_sidebar_minimap_mouse_down, UI_EVENT_TYPE_MOUSE_DOWN);
	if(!(platform.platform&DARNIT_PLATFORM_PANDORA))
		ui_vbox_add_child(panelist_game_sidebar.pane->root_widget, game_sidebar_minimap, 0);
	if(!platform_lowres)
		ui_vbox_add_child(panelist_game_sidebar.pane->root_widget, ui_widget_create_label(font_std, T("Buildings:")), 0);
	
	int i;
	for(i=0; i<4; i++)
		game_sidebar_label_build[i]=ui_widget_create_label(font_std, building[i+BUILDING_SCOUT].name);
	game_sidebar_label_build[4]=ui_widget_create_label(font_std, T("Battle support"));
	
	for(i=0; i<5; i++) {
		game_sidebar_button_build[i]=ui_widget_create_button(game_sidebar_label_build[i]);
		ui_vbox_add_child(panelist_game_sidebar.pane->root_widget, game_sidebar_button_build[i], 0);
		game_sidebar_button_build[i]->event_handler->add(game_sidebar_button_build[i], game_sidebar_button_build_click, UI_EVENT_TYPE_UI_WIDGET_ACTIVATE);
	}
	game_sidebar_progress_build=ui_widget_create_progressbar(font_std);
	
	game_sidebar_status.spacer=ui_widget_create_spacer();
	game_sidebar_status.label_name=ui_widget_create_label(font_std, "name");
	game_sidebar_status.progress_shield=ui_widget_create_progressbar(font_std);
	game_sidebar_status.progress_health=ui_widget_create_progressbar(font_std);
	game_sidebar_status.label_shield=ui_widget_create_label(font_std, T("Shields"));
	game_sidebar_status.label_health=ui_widget_create_label(font_std, T("Health"));
	
	ui_vbox_add_child(panelist_game_sidebar.pane->root_widget, game_sidebar_status.spacer, 1);
	
	if(platform.platform&DARNIT_PLATFORM_PANDORA)
		ui_vbox_add_child(panelist_game_sidebar.pane->root_widget, game_sidebar_minimap, 0);
	
	/*Special buildings for control points*/
	if(platform_lowres)
		panelist_game_specialbar.pane=ui_pane_create(config.screen_w-sidebar_width*2, platform.screen_h-72, sidebar_width, 72, ui_widget_create_vbox());
	else
		panelist_game_specialbar.pane=ui_pane_create(config.screen_w-sidebar_width*2, game_sidebar_button_build[4]->y-64, sidebar_width, 128, ui_widget_create_vbox());
	panelist_game_specialbar.next=&panelist_game_abilitybar;
	
	for(i=0; i<3; i++) {
		game_specialbar_label_build[i]=ui_widget_create_label(font_std, building[i+BUILDING_BUILDSITE].name);
		game_specialbar_button_build[i]=ui_widget_create_button(game_specialbar_label_build[i]);
		ui_vbox_add_child(panelist_game_specialbar.pane->root_widget, game_specialbar_button_build[i], 0);
		game_specialbar_button_build[i]->event_handler->add(game_specialbar_button_build[i], game_sidebar_button_build_click, UI_EVENT_TYPE_UI_WIDGET_ACTIVATE);
	}
	
	/*Special abilities*/
	UI_WIDGET *iconwidget;
	int iconsize=32;//platform_lowres?16:32;
	if(platform_lowres)
		panelist_game_abilitybar.pane=ui_pane_create(2, 2, 44, 128+16, ui_widget_create_vbox());
	else
		panelist_game_abilitybar.pane=ui_pane_create(2, 64, 52, 128+44, ui_widget_create_vbox());
	panelist_game_abilitybar.next=NULL;
	ability[0].name=T("Flare");
	ability[0].icon=d_render_tilesheet_load("res/flare.png", 32, 32, DARNIT_PFORMAT_RGB5A1);
	ability[0].action=NULL;
	iconwidget=ui_widget_create_imageview_file("res/flare.png", iconsize, iconsize, DARNIT_PFORMAT_RGB5A1);
	iconwidget->render=game_abilitybar_icon_render;
	ability[0].button=ui_widget_create_button(iconwidget);
	ability[0].button->event_handler->add(ability[0].button, game_abilitybar_button_click, UI_EVENT_TYPE_UI_WIDGET_ACTIVATE);
	ability[0].ready=100;
	ability[1].name=T("Nuke");
	ability[1].icon=d_render_tilesheet_load("res/nuke.png", 32, 32, DARNIT_PFORMAT_RGB5A1);
	ability[1].action=NULL;
	iconwidget=ui_widget_create_imageview_file("res/nuke.png", iconsize, iconsize, DARNIT_PFORMAT_RGB5A1);
	iconwidget->render=game_abilitybar_icon_render;
	ability[1].button=ui_widget_create_button(iconwidget);
	ability[1].button->enabled=0;
	ability[1].button->event_handler->add(ability[1].button, game_abilitybar_button_click, UI_EVENT_TYPE_UI_WIDGET_ACTIVATE);
	ability[1].ready=-1;
	ability[2].name=T("Radar");
	ability[2].icon=d_render_tilesheet_load("res/radar.png", 32, 32, DARNIT_PFORMAT_RGB5A1);
	ability[2].action=NULL;
	iconwidget=ui_widget_create_imageview_file("res/radar.png", iconsize, iconsize, DARNIT_PFORMAT_RGB5A1);
	iconwidget->render=game_abilitybar_icon_render;
	ability[2].button=ui_widget_create_button(iconwidget);
	ability[2].button->enabled=0;
	ability[2].button->event_handler->add(ability[2].button, game_abilitybar_button_click, UI_EVENT_TYPE_UI_WIDGET_ACTIVATE);
	ability[2].ready=-1;
	for(i=0; i<3; i++) {
		ui_vbox_add_child(panelist_game_abilitybar.pane->root_widget, ability[i].button, 0);
		ability[i].text=d_text_surface_new(font_std, 4, 64, ability[i].button->x, ability[i].button->y+24);
	}
	
	ui_event_global_add(game_view_mouse_release, UI_EVENT_TYPE_MOUSE_RELEASE);
}