mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-10-31 15:20:10 +00:00
bf907c8d3c
since it uses UTF16 for file access. To keep os-specific code to a minimum, OpenTTD uses UTF8 internally everywhere, converting to OS-type when needed (save/load/screenshot/etc.)
87 lines
2.4 KiB
C
87 lines
2.4 KiB
C
/* $Id$ */
|
|
|
|
#ifndef FIOS_H
|
|
#define FIOS_H
|
|
|
|
/* Deals with finding savegames */
|
|
typedef struct {
|
|
byte type;
|
|
uint64 mtime;
|
|
char title[64];
|
|
char name[256 - 12 - 64];
|
|
} FiosItem;
|
|
|
|
enum {
|
|
FIOS_TYPE_DRIVE = 0,
|
|
FIOS_TYPE_PARENT = 1,
|
|
FIOS_TYPE_DIR = 2,
|
|
FIOS_TYPE_FILE = 3,
|
|
FIOS_TYPE_OLDFILE = 4,
|
|
FIOS_TYPE_SCENARIO = 5,
|
|
FIOS_TYPE_OLD_SCENARIO = 6,
|
|
FIOS_TYPE_DIRECT = 7,
|
|
FIOS_TYPE_PNG = 8,
|
|
FIOS_TYPE_BMP = 9,
|
|
FIOS_TYPE_INVALID = 255,
|
|
};
|
|
|
|
/* Variables to display file lists */
|
|
extern FiosItem *_fios_list; // defined in misc_gui.c
|
|
extern int _fios_num; // defined in fios.c, read_only version of _fios_count
|
|
extern int _saveload_mode; // defined in misc_gui.c
|
|
|
|
// Get a list of savegames
|
|
FiosItem *FiosGetSavegameList(int mode);
|
|
// Get a list of scenarios
|
|
FiosItem *FiosGetScenarioList(int mode);
|
|
// Get a list of Heightmaps
|
|
FiosItem *FiosGetHeightmapList(int mode);
|
|
// Free the list of savegames
|
|
void FiosFreeSavegameList(void);
|
|
// Browse to. Returns a filename w/path if we reached a file.
|
|
char *FiosBrowseTo(const FiosItem *item);
|
|
// Return path, free space and stringID
|
|
StringID FiosGetDescText(const char **path, uint32 *total_free);
|
|
// Delete a name
|
|
bool FiosDelete(const char *name);
|
|
// Make a filename from a name
|
|
void FiosMakeSavegameName(char *buf, const char *name, size_t size);
|
|
// Allocate a new FiosItem
|
|
FiosItem *FiosAlloc(void);
|
|
|
|
int CDECL compare_FiosItems(const void *a, const void *b);
|
|
|
|
/* Implementation of opendir/readdir/closedir for Windows */
|
|
#if defined(WIN32)
|
|
#include <windows.h>
|
|
typedef struct DIR DIR;
|
|
|
|
typedef struct dirent { // XXX - only d_name implemented
|
|
wchar_t *d_name; /* name of found file */
|
|
/* little hack which will point to parent DIR struct which will
|
|
* save us a call to GetFileAttributes if we want information
|
|
* about the file (for example in function fio_bla */
|
|
DIR *dir;
|
|
} dirent;
|
|
|
|
struct DIR {
|
|
HANDLE hFind;
|
|
/* the dirent returned by readdir.
|
|
* note: having only one global instance is not possible because
|
|
* multiple independent opendir/readdir sequences must be supported. */
|
|
dirent ent;
|
|
WIN32_FIND_DATAW fd;
|
|
/* since opendir calls FindFirstFile, we need a means of telling the
|
|
* first call to readdir that we already have a file.
|
|
* that's the case iff this is true */
|
|
bool at_first_entry;
|
|
};
|
|
|
|
DIR *opendir(const char *path);
|
|
struct dirent *readdir(DIR *d);
|
|
int closedir(DIR *d);
|
|
|
|
#endif /* defined(WIN32) */
|
|
|
|
#endif /* FIOS_H */
|