Example #1
0
int 
main(int argc, char* args[]) {
	
	if ( is_window_created() ) 
	{
		
		// for "libpng warning: iCCP: known incorrect sRGB profile"	
		// http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile
		// load sdl2_image
		int image_flags = IMG_INIT_PNG;
		
		if ( !(IMG_Init(image_flags) & image_flags) ) 
		{
			printf("main: sdl2_image err: %s\n", IMG_GetError());
			return 1;
		}
		
		// load sdl ttf: https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_8.html
		// if ( TTF_Init() == -1 ) {
		// 			printf("sdl2_ttf err: %s\n", TTF_GetError());
		// 			return 1;
		// 		}

		if ( !load_media() ) 
		{
			user_quit = true;
		}
		
		// the LOOP
		while	 ( !user_quit ) {
			process_events(&g_event);
			game_update();
		}
	}
	
	// closing...
	// Deallocate textures
	texture_free(&g_up_texture);
	texture_free(&g_down_texture);
	texture_free(&g_left_texture);
	texture_free(&g_right_texture);
	texture_free(&g_press_texture);

	SDL_DestroyRenderer(g_render);
	SDL_DestroyWindow(g_window);
	g_window = 0;
	g_render = 0;

	// https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_10.html
	// TTF_Quit();
	IMG_Quit();
	SDL_Quit();
	return 0;
}
Example #2
0
void melee_deinit(scene *scene) {
    animationplayer_free(&harplayer_a);
    animationplayer_free(&harplayer_b);
    
    for(int i = 0; i < 10; i++) {
        texture_free(&harportraits[i]);
    }
    texture_free(&feh);
    texture_free(&bleh);
    texture_free(&select_hilight);
    for(int i = 0;i < 2;i++) {
        progressbar_free(&bar_power[i]);
        progressbar_free(&bar_agility[i]);
        progressbar_free(&bar_endurance[i]);
    }
}
Example #3
0
void game_font_term() { 

    int i;
    for (i = 0; i < 64*FONTS_COUNT; i++) {
        texture_free(&game.tex_font[i]);
    };


};
Example #4
0
File: text.c Project: cloudhead/px
void font_free(struct font *f)
{
	texture_free(f->tex);

	glDeleteVertexArrays(1, &f->vao);
	glDeleteBuffers(1, &f->vbo);

	free(f);
}
Example #5
0
void font_free(font *font) {
    font->size = FONT_UNDEFINED;
    iterator it;
    vector_iter_begin(&font->textures, &it);
    texture **tex = NULL;
    while((tex = iter_next(&it)) != NULL) {
        texture_free(*tex);
        free(*tex);
    }
    vector_free(&font->textures);
}
Example #6
0
void animation_free(animation *ani) {
    texture *ptr;
    iterator it;
    array_iter_begin(&ani->sprites, &it);
    while((ptr = iter_next(&it)) != 0) {
        texture_free(ptr);
        free(ptr);
    }
    array_free(&ani->sprites);
    ani->sdani = 0;
    ani->soundtable = 0;
}
Example #7
0
static void core_release()
{
	texture_free(core_global->textures.none);
	monofont_free(&core_global->font_console);
	console_free(&core_global->console);

	/* Release game specific resources. */
	if(core_global->release_callback != NULL) {
		core_global->release_callback();
	}

	lodge_window_shutdown();
}
Example #8
0
void component_texture_free(void* handle) {
	if (!handle) {
		debug_warning("[component_texture_free] handle cannot be NULL");
		return;
	}

	component_texture* this = (component_texture*) handle;

	for (int i = 0; i < COMPONENT_TEXTURE_MAX_ANIM_COUNT; i++) {
		for (int j = 0; j < this->frame_count[i]; j++) {
			if (!this->texture_buffer[i][j]) {
				continue;
			}

			texture_free(this->texture_buffer[i] + j);
		}
	}

	h_free(this);
}
Example #9
0
void scene_free(scene *scene) {
    if(!scene) return;
    
    // Deinit scene
    if(scene->deinit != NULL) {
        scene->deinit(scene);
    }
    
    // Release background
    texture_free(&scene->background);
    
    // Free players
    iterator it;
    animationplayer *tmp = 0;
    list_iter_begin(&scene->child_players, &it);
    while((tmp = iter_next(&it)) != NULL) {
        animationplayer_free(tmp);
    }
    list_iter_begin(&scene->root_players, &it);
    while((tmp = iter_next(&it)) != NULL) {
        animationplayer_free(tmp);
    }
    list_free(&scene->child_players);
    list_free(&scene->root_players);
    
    // Free animations
    animation *ani = 0;
    array_iter_begin(&scene->animations, &it);
    while((ani = iter_next(&it)) != 0) {
        animation_free(ani);
        free(ani);
    }
    array_free(&scene->animations);

    // XXX do NOT free hars/controllers here!

    // Free BK
    sd_bk_delete(scene->bk);
}
Example #10
0
bool 
texture_load_font_string(texture* img, char* text, SDL_Color text_color) {
	
	// rm preexisting texture
	texture_free(img);
	
	// https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_43.html
	s_surface* text_surface = TTF_RenderText_Solid(g_font, text, text_color);
	
	if ( !text_surface ) 
	{
		printf("texture_load_font_string: unable to render text, ttf err: %s\n", TTF_GetError());
	} 
	else 
	{
		
		// create texture
		img->ref = SDL_CreateTextureFromSurface(g_render, text_surface);
		
		if ( !img->ref ) 
		{
			printf("texture_load_font_string: unable to create text texture, err: %s\n", SDL_GetError());
		} 
		else 
		{	
			// get image dimensions
			img->w = text_surface->w;
			img->h = text_surface->h;
		}
		
		// flush surface
		SDL_FreeSurface(text_surface);
	}
	
	return img->ref != 0;
}
Example #11
0
void view_free_media()
{
	texture_free(&digits_texture);
}
Example #12
0
void fbo_free(fbo *fbo) {
    glDeleteFramebuffers(1, &fbo->id);
    texture_free(&fbo->tex);
    rbo_free(&fbo->rbo);
}
Example #13
0
void progressbar_set(progress_bar *bar, unsigned int percentage) {
    bar->percentage = (percentage > 100 ? 100 : percentage);
    texture_free(&bar->block);
    progressbar_create_block(bar);
}
Example #14
0
void progressbar_free(progress_bar *bar) {
    texture_free(&bar->background);
    texture_free(&bar->block);
}
Example #15
0
int 
main(int argc, char* args[]) {
	
	if ( is_window_created() ) 
	{
		
		// for "libpng warning: iCCP: known incorrect sRGB profile"	
		// http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile
		// load sdl2_image
		int image_flags = IMG_INIT_PNG;
		
		if ( !(IMG_Init(image_flags) & image_flags) ) 
		{
			printf("main: sdl2_image err: %s\n", IMG_GetError());
			return 1;
		}
		
		// http://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_11.html
		if( Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT, 2, 2048 ) < 0 )
		{	
     	printf( "main: SDL_mixer Error: %s\n", Mix_GetError() );
			return 1;
    }
		
		// load sdl ttf: https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_8.html
		// if ( TTF_Init() == -1 ) {
		// 			printf("sdl2_ttf err: %s\n", TTF_GetError());
		// 			return 1;
		// 		}

		if ( !load_media() ) 
		{
			user_quit = true;
		}
		
		// the LOOP
		while	 ( !user_quit ) {
			process_events(&g_event);
			game_update();
		}
	}
	
	/** closing **/

	// Deallocate textures
	texture_free(&g_current_texture);
	
	// joystick
	// SDL_JoystickClose(g_gamepad);
	// 	g_gamepad = 0;
	
	// sfx
  Mix_FreeChunk( g_scratch );
  Mix_FreeChunk( g_hig );
  Mix_FreeChunk( g_med );
  Mix_FreeChunk( g_low );
  g_scratch = 0;
  g_hig = 0;
  g_med = 0;
  g_low = 0;

  // music
  Mix_FreeMusic( g_music );
  g_music = 0;

	SDL_DestroyRenderer(g_render);
	SDL_DestroyWindow(g_window);
	g_window = 0;
	g_render = 0;

	// https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_10.html
	// TTF_Quit();
	Mix_Quit();
	IMG_Quit();
	SDL_Quit();
	return 0;
}
Example #16
0
void component_texture_load_animset(component_texture* output, char* animset_filename) {
	for (int i = 0; i < COMPONENT_TEXTURE_MAX_ANIM_COUNT; i++) {
		for (int j = 0; j < output->frame_count[i]; j++) {
			if (!output->texture_buffer[i][j]) {
				continue;
			}

			texture_free(output->texture_buffer[i] + j);
		}
	}

	FILE* anim_set_file = fopen(animset_filename, "r");
	strcpy(output->texture_anim_setfile, animset_filename);

	if (!anim_set_file) {
		debug_critical("[component_texture_load_animset] cannot open anim set file %s", animset_filename);
		return;
	}

	/* Read the anim set file into the animation filename buffer. */

	char anim_filename_buffer[COMPONENT_TEXTURE_MAX_ANIM_COUNT][COMPONENT_TEXTURE_MAX_ANIM_SETFILE] = {{0}};

	unsigned int index = 0;

	while (fgets(anim_filename_buffer[index++], COMPONENT_TEXTURE_MAX_ANIM_SETFILE, anim_set_file)) {
		if (!strlen(anim_filename_buffer[index - 1])) {
			break;
		}

		char* target = anim_filename_buffer[index - 1];

		target[strcspn(target, "\n")] = 0;
	}

	fclose(anim_set_file);
	anim_set_file = NULL;

	for (int anim_id = 0; anim_id < index - 1; anim_id++) {
		/* loading animation files */
		FILE* file_handle = fopen(anim_filename_buffer[anim_id], "r");
	
		if (file_handle == NULL) {
			debug_critical("[component_texture_load_animset] failed to open animation file [%s]", anim_filename_buffer[anim_id]);
			return;
		}

		/* file is good, we start to load in the initial data */
		output->texture_anim_names[anim_id] = h_malloc(COMPONENT_TEXTURE_MAX_ANIM_NAME);
		memset(output->texture_anim_names[anim_id], 0, COMPONENT_TEXTURE_MAX_ANIM_NAME);
		fscanf(file_handle, "%s %d", output->texture_anim_names[anim_id], output->interval + anim_id);

		char texture_filename[COMPONENT_TEXTURE_MAX_FILENAME];
		memset(texture_filename, 0, COMPONENT_TEXTURE_MAX_FILENAME);

		const char* texture_filename_prefix = "resource/materials/";

		int i = 0;
		while (fscanf(file_handle, "%s", texture_filename) != EOF) {
			/* texture_filename should contain the next target texture */
			char* texture_filename_full = h_malloc(COMPONENT_TEXTURE_MAX_FILENAME + strlen(texture_filename_prefix));

			if (texture_filename_full == NULL) {
				debug_critical("[component_texture_load_animset] memory allocation failure");
				return;
			}

			memset(texture_filename_full, 0, COMPONENT_TEXTURE_MAX_FILENAME + strlen(texture_filename_prefix));

			memcpy(texture_filename_full, texture_filename_prefix, strlen(texture_filename_prefix));
			strcat(texture_filename_full, texture_filename);
			texture_alloc(output->texture_buffer[anim_id] + i++, texture_filename_full, 0, 0); // set the next texture, assume these will not be tiled
	
			memset(texture_filename, 0, COMPONENT_TEXTURE_MAX_FILENAME);
		}
	
		if (i == 0) {
			debug_critical("[component_texture_load_animset] invalid animation file (no textures given) [%s]", anim_filename_buffer[anim_id]);
			return;
		}
	
		output->frame_count[anim_id] = i;
		fclose(file_handle);
	}
}