2D_Engine_C/asset_builder/object.c

50 lines
1.3 KiB
C

#include "object.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include "utils.h"
#include "image.h"
#include "map.h"
#include "errors.h"
int build_object(const char *input_file_path, FILE *output_file)
{
// Reserve space to write asset_size
uint32_t asset_size = 0;
if(file_write(&asset_size, sizeof(asset_size), 1, output_file)) return_failure_int;
const char *input_file_dot = strrchr(input_file_path, '.');
if(!input_file_dot)
{
error_printf("Input file \"%s\" doesn't have an extension.", input_file_path);
return EXIT_FAILURE;
}
const char *input_file_ext = input_file_dot + 1;
if(!strcmp(input_file_ext, "png"))
{
if(build_image(input_file_path, output_file, &asset_size)) return_failure_int;
}
else if(!strcmp(input_file_ext, "map"))
{
if(build_map(input_file_path, output_file, &asset_size)) return_failure_int;
}
else
{
error_printf("Extension \"%s\" not supported.", input_file_ext);
return EXIT_FAILURE;
}
if(fseek(output_file, 0, SEEK_SET))
{
error_printf("Failed to seek in output file : %d", errno);
return EXIT_FAILURE;
}
if(file_write(&asset_size, sizeof(asset_size), 1, output_file)) return_failure_int;
return EXIT_SUCCESS;
}