mirror of https://github.com/OpenRCT2/OpenRCT2.git
Replace SDL with normal fopen in cmdline_sprite.c
This commit is contained in:
parent
08ae74293d
commit
d45a50274c
|
@ -20,8 +20,8 @@
|
|||
#include "cmdline_sprite.h"
|
||||
#include "drawing/drawing.h"
|
||||
#include "Imaging.h"
|
||||
#include "localisation/localisation.h"
|
||||
#include "OpenRCT2.h"
|
||||
#include "platform/platform.h"
|
||||
#include "util/util.h"
|
||||
|
||||
#define MODE_DEFAULT 0
|
||||
|
@ -61,6 +61,22 @@ rct_sprite_file_header spriteFileHeader;
|
|||
rct_g1_element *spriteFileEntries;
|
||||
uint8 *spriteFileData;
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
static FILE * fopen_utf8(const char * path, const char * mode)
|
||||
{
|
||||
wchar_t * pathW = utf8_to_widechar(path);
|
||||
wchar_t * modeW = utf8_to_widechar(mode);
|
||||
FILE * file = _wfopen(pathW, modeW);
|
||||
free(pathW);
|
||||
free(modeW);
|
||||
return file;
|
||||
}
|
||||
|
||||
#define fopen fopen_utf8
|
||||
|
||||
#endif
|
||||
|
||||
static void sprite_file_load_palette(sint32 spriteIndex)
|
||||
{
|
||||
rct_g1_element *g1 = &spriteFileEntries[spriteIndex];
|
||||
|
@ -90,14 +106,12 @@ static void sprite_entries_make_relative()
|
|||
|
||||
static bool sprite_file_open(const utf8 *path)
|
||||
{
|
||||
SDL_RWops *file;
|
||||
|
||||
file = SDL_RWFromFile(path, "rb");
|
||||
FILE * file = fopen(path, "rb");
|
||||
if (file == NULL)
|
||||
return false;
|
||||
|
||||
if (SDL_RWread(file, &spriteFileHeader, sizeof(rct_sprite_file_header), 1) != 1) {
|
||||
SDL_RWclose(file);
|
||||
if (fread(&spriteFileHeader, sizeof(rct_sprite_file_header), 1, file) != 1) {
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -105,21 +119,21 @@ static bool sprite_file_open(const utf8 *path)
|
|||
sint32 openEntryTableSize = spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit);
|
||||
rct_g1_element_32bit * openElements = (rct_g1_element_32bit *)malloc(openEntryTableSize);
|
||||
if (openElements == NULL) {
|
||||
SDL_RWclose(file);
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (SDL_RWread(file, openElements, openEntryTableSize, 1) != 1) {
|
||||
if (fread(openElements, openEntryTableSize, 1, file) != 1) {
|
||||
free(openElements);
|
||||
SDL_RWclose(file);
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
|
||||
spriteFileData = malloc(spriteFileHeader.total_size);
|
||||
if (SDL_RWread(file, spriteFileData, spriteFileHeader.total_size, 1) != 1) {
|
||||
if (fread(spriteFileData, spriteFileHeader.total_size, 1, file) != 1) {
|
||||
free(spriteFileData);
|
||||
free(openElements);
|
||||
SDL_RWclose(file);
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -141,18 +155,18 @@ static bool sprite_file_open(const utf8 *path)
|
|||
free(openElements);
|
||||
}
|
||||
|
||||
SDL_RWclose(file);
|
||||
fclose(file);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool sprite_file_save(const char *path)
|
||||
{
|
||||
SDL_RWops *file = SDL_RWFromFile(path, "wb");
|
||||
FILE * file = fopen(path, "wb");
|
||||
if (file == NULL)
|
||||
return false;
|
||||
|
||||
if (SDL_RWwrite(file, &spriteFileHeader, sizeof(rct_sprite_file_header), 1) != 1) {
|
||||
SDL_RWclose(file);
|
||||
if (fwrite(&spriteFileHeader, sizeof(rct_sprite_file_header), 1, file) != 1) {
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -160,7 +174,7 @@ static bool sprite_file_save(const char *path)
|
|||
sint32 saveEntryTableSize = spriteFileHeader.num_entries * sizeof(rct_g1_element_32bit);
|
||||
rct_g1_element_32bit * saveElements = (rct_g1_element_32bit *)malloc(saveEntryTableSize);
|
||||
if (saveElements == NULL) {
|
||||
SDL_RWclose(file);
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -177,20 +191,20 @@ static bool sprite_file_save(const char *path)
|
|||
outElement->zoomed_offset = inElement->zoomed_offset;
|
||||
}
|
||||
|
||||
if (SDL_RWwrite(file, saveElements, saveEntryTableSize, 1) != 1) {
|
||||
if (fwrite(saveElements, saveEntryTableSize, 1, file) != 1) {
|
||||
free(saveElements);
|
||||
SDL_RWclose(file);
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
free(saveElements);
|
||||
|
||||
if (SDL_RWwrite(file, spriteFileData, spriteFileHeader.total_size, 1) != 1) {
|
||||
SDL_RWclose(file);
|
||||
if (fwrite(spriteFileData, spriteFileHeader.total_size, 1, file) != 1) {
|
||||
fclose(file);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
SDL_RWclose(file);
|
||||
fclose(file);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue