2006-08-04 23:41:13 +00:00
|
|
|
/* $Id$ */
|
|
|
|
|
2007-03-01 01:24:44 +00:00
|
|
|
/** @file fios.h Declarations for savegames operations */
|
|
|
|
|
2006-08-04 23:41:13 +00:00
|
|
|
#ifndef FIOS_H
|
|
|
|
#define FIOS_H
|
|
|
|
|
2006-08-05 00:59:45 +00:00
|
|
|
/* Deals with finding savegames */
|
2007-03-07 12:11:48 +00:00
|
|
|
struct FiosItem {
|
2006-08-05 00:59:45 +00:00
|
|
|
byte type;
|
|
|
|
uint64 mtime;
|
|
|
|
char title[64];
|
|
|
|
char name[256 - 12 - 64];
|
2007-03-07 12:11:48 +00:00
|
|
|
};
|
2006-08-05 00:59:45 +00:00
|
|
|
|
|
|
|
enum {
|
2006-08-22 14:38:37 +00:00
|
|
|
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,
|
2006-08-05 00:59:45 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* Variables to display file lists */
|
2007-03-01 01:24:44 +00:00
|
|
|
extern FiosItem *_fios_list; ///< defined in misc_gui.cpp
|
|
|
|
extern int _fios_num; ///< defined in fios.cpp, read_only version of _fios_count
|
|
|
|
extern int _saveload_mode; ///< defined in misc_gui.cpp
|
2006-08-05 00:59:45 +00:00
|
|
|
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Get a list of savegames */
|
2006-08-05 00:59:45 +00:00
|
|
|
FiosItem *FiosGetSavegameList(int mode);
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Get a list of scenarios */
|
2006-08-05 00:59:45 +00:00
|
|
|
FiosItem *FiosGetScenarioList(int mode);
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Get a list of Heightmaps */
|
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
- New optional landscape generator (TerraGenesis Perlin)
- Load heightmaps (either BMP or PNG)
- Progress dialog while generating worlds (no longer a 'hanging' screen)
- New dialogs for NewGame, Create Scenario and Play Heightmap
- Easier to configure your landscape
- More things to configure (tree-placer, ..)
- Speedup of world generation
- New console command 'restart': restart the map EXACTLY as it was when you
first started it (needs a game made after or with this commit)
- New console command 'getseed': get the seed of your map and share it with
others (of course only works with generated maps)
- Many new, world generation related, things
- Many internal cleanups and rewrites
Many tnx to those people who helped making this:
Belugas, DaleStan, glx, KUDr, RichK67, Rubidium, and TrueLight (alfabetic)
Many tnx to those who helped testing:
Arnau, Bjarni, and tokai (alfabetic)
And to all other people who helped testing and sending comments / bugs
Stats: 673 lines changed, 3534 new lines, 79 new strings
2006-08-19 10:00:30 +00:00
|
|
|
FiosItem *FiosGetHeightmapList(int mode);
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Free the list of savegames */
|
2007-03-07 11:47:46 +00:00
|
|
|
void FiosFreeSavegameList();
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Browse to. Returns a filename w/path if we reached a file. */
|
2006-08-05 00:59:45 +00:00
|
|
|
char *FiosBrowseTo(const FiosItem *item);
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Return path, free space and stringID */
|
2006-08-05 00:59:45 +00:00
|
|
|
StringID FiosGetDescText(const char **path, uint32 *total_free);
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Delete a name */
|
2006-08-05 00:59:45 +00:00
|
|
|
bool FiosDelete(const char *name);
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Make a filename from a name */
|
2006-08-05 00:59:45 +00:00
|
|
|
void FiosMakeSavegameName(char *buf, const char *name, size_t size);
|
2007-03-01 01:24:44 +00:00
|
|
|
/* Allocate a new FiosItem */
|
2007-03-07 11:47:46 +00:00
|
|
|
FiosItem *FiosAlloc();
|
2006-08-05 00:59:45 +00:00
|
|
|
|
|
|
|
int CDECL compare_FiosItems(const void *a, const void *b);
|
|
|
|
|
2006-08-04 23:41:13 +00:00
|
|
|
/* Implementation of opendir/readdir/closedir for Windows */
|
|
|
|
#if defined(WIN32)
|
|
|
|
#include <windows.h>
|
2007-03-07 12:11:48 +00:00
|
|
|
struct DIR;
|
2006-08-04 23:41:13 +00:00
|
|
|
|
2007-03-07 12:11:48 +00:00
|
|
|
struct dirent { // XXX - only d_name implemented
|
2007-03-07 18:58:28 +00:00
|
|
|
TCHAR *d_name; // name of found file
|
2006-08-04 23:41:13 +00:00
|
|
|
/* little hack which will point to parent DIR struct which will
|
|
|
|
* save us a call to GetFileAttributes if we want information
|
2007-03-01 01:24:44 +00:00
|
|
|
* about the file (for example in function fio_bla) */
|
2006-08-04 23:41:13 +00:00
|
|
|
DIR *dir;
|
2007-03-07 12:11:48 +00:00
|
|
|
};
|
2006-08-04 23:41:13 +00:00
|
|
|
|
|
|
|
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;
|
2007-03-07 18:58:28 +00:00
|
|
|
WIN32_FIND_DATA fd;
|
2006-08-04 23:41:13 +00:00
|
|
|
/* 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;
|
|
|
|
};
|
|
|
|
|
2007-03-07 18:58:28 +00:00
|
|
|
DIR *opendir(const TCHAR *path);
|
2006-08-04 23:41:13 +00:00
|
|
|
struct dirent *readdir(DIR *d);
|
|
|
|
int closedir(DIR *d);
|
2007-02-20 09:46:10 +00:00
|
|
|
#else
|
|
|
|
/* Use system-supplied opendir/readdir/closedir functions */
|
|
|
|
# include <sys/types.h>
|
|
|
|
# include <dirent.h>
|
2006-08-04 23:41:13 +00:00
|
|
|
#endif /* defined(WIN32) */
|
|
|
|
|
2007-02-20 00:09:23 +00:00
|
|
|
/**
|
|
|
|
* A wrapper around opendir() which will convert the string from
|
|
|
|
* OPENTTD encoding to that of the filesystem. For all purposes this
|
|
|
|
* function behaves the same as the original opendir function
|
|
|
|
* @param path string to open directory of
|
|
|
|
* @return DIR pointer
|
|
|
|
*/
|
|
|
|
static inline DIR *ttd_opendir(const char *path)
|
|
|
|
{
|
|
|
|
return opendir(OTTD2FS(path));
|
|
|
|
}
|
|
|
|
|
2006-08-04 23:41:13 +00:00
|
|
|
#endif /* FIOS_H */
|