void sprite_export_key(sd_sprite *s, const char **key, int kcount, const char *filename, sd_bk_file *bk) { switch(sprite_key_get_id(key[0])) { case 1: case 2: case 3: printf("Value fetching not supported for this key.\n"); break; case 4: { sd_palette *pal = sd_bk_get_palette(bk, 0); if(pal == NULL) { printf("Palette required for exporting to PNG.\n"); return; } sd_vga_image img; int ret = sd_sprite_vga_decode(&img, s); if(ret != SD_SUCCESS) { printf("Sprite decoding failed.\n"); return; } ret = sd_vga_image_to_png(&img, pal, filename); sd_vga_image_free(&img); if(ret != SD_SUCCESS) { printf("Error while exporting sprite to %s: %s\n", filename, sd_get_error(ret)); return; } } break; default: printf("Unknown key!\n"); } }
void sprite_create(sprite *sp, void *src, int id) { sd_sprite *sdsprite = (sd_sprite*)src; sp->id = id; sp->raw_sprite = (void*)sd_sprite_vga_decode(sdsprite->img); sp->pos = vec2i_create(sdsprite->pos_x, sdsprite->pos_y); }