147 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef HAL_H
 | 
						|
#define HAL_H
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	char *(*start)(char **parm);
 | 
						|
	void (*stop)();
 | 
						|
} HalCommonDriver;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	const char *(*start)(char **parm);
 | 
						|
	void (*stop)();
 | 
						|
	void (*make_dirty)(int left, int top, int width, int height);
 | 
						|
	int (*main_loop)();
 | 
						|
	bool (*change_resolution)(int w, int h);
 | 
						|
} HalVideoDriver;
 | 
						|
 | 
						|
enum {
 | 
						|
	ML_QUIT = 0,
 | 
						|
	ML_SWITCHDRIVER = 1,
 | 
						|
};
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	char *(*start)(char **parm);
 | 
						|
	void (*stop)();
 | 
						|
} HalSoundDriver;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	char *(*start)(char **parm);
 | 
						|
	void (*stop)();
 | 
						|
 | 
						|
	void (*play_song)(const char *filename);
 | 
						|
	void (*stop_song)();
 | 
						|
	bool (*is_song_playing)();
 | 
						|
	void (*set_volume)(byte vol);
 | 
						|
} HalMusicDriver;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	const char *name;
 | 
						|
	const char *longname;
 | 
						|
	const void *drv;
 | 
						|
	uint32 flags;
 | 
						|
} DriverDesc;
 | 
						|
 | 
						|
enum {
 | 
						|
	HALERR_OK = 0,
 | 
						|
	HALERR_ERROR = 1,
 | 
						|
};
 | 
						|
 | 
						|
extern const HalMusicDriver _null_music_driver;
 | 
						|
extern const HalVideoDriver _null_video_driver;
 | 
						|
extern const HalSoundDriver _null_sound_driver;
 | 
						|
 | 
						|
VARDEF HalMusicDriver *_music_driver;
 | 
						|
VARDEF HalSoundDriver *_sound_driver;
 | 
						|
VARDEF HalVideoDriver *_video_driver;
 | 
						|
 | 
						|
extern const DriverDesc _video_driver_descs[];
 | 
						|
extern const DriverDesc _sound_driver_descs[];
 | 
						|
extern const DriverDesc _music_driver_descs[];
 | 
						|
 | 
						|
#if defined(WITH_SDL)
 | 
						|
extern const HalSoundDriver _sdl_sound_driver;
 | 
						|
extern const HalVideoDriver _sdl_video_driver;
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined(UNIX)
 | 
						|
extern const HalMusicDriver _extmidi_music_driver;
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined(__BEOS__)
 | 
						|
extern const HalMusicDriver _bemidi_music_driver;
 | 
						|
#endif
 | 
						|
 | 
						|
enum DriverType {
 | 
						|
	VIDEO_DRIVER = 0,
 | 
						|
	SOUND_DRIVER = 1,
 | 
						|
	MUSIC_DRIVER = 2,
 | 
						|
};
 | 
						|
 | 
						|
extern void GameLoop();
 | 
						|
extern bool _dbg_screen_rect;
 | 
						|
 | 
						|
void LoadDriver(int driver, const char *name);
 | 
						|
 | 
						|
char *GetDriverParam(char **parm, const char *name);
 | 
						|
bool GetDriverParamBool(char **parm, const char *name);
 | 
						|
int GetDriverParamInt(char **parm, const char *name, int def);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// Deals with finding savegames
 | 
						|
typedef struct {
 | 
						|
	uint16 id;
 | 
						|
	byte type;
 | 
						|
	uint64 mtime;
 | 
						|
	char title[64];
 | 
						|
	char name[256-12-64];
 | 
						|
	int old_extension;
 | 
						|
} FiosItem;
 | 
						|
 | 
						|
// extensions of old savegames, scenarios
 | 
						|
static const char* const _old_extensions[] = {
 | 
						|
	// old savegame types
 | 
						|
	"ss1", // Transport Tycoon Deluxe preset game
 | 
						|
	"sv1", // Transport Tycoon Deluxe (Patch) saved game
 | 
						|
	"sv2", // Transport Tycoon Deluxe (Patch) saved 2-player game
 | 
						|
	// old scenario game type
 | 
						|
	"sv0", // Transport Tycoon Deluxe (Patch) scenario
 | 
						|
	"ss0", // Transport Tycoon Deluxe preset scenario
 | 
						|
};
 | 
						|
 | 
						|
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,
 | 
						|
};
 | 
						|
 | 
						|
// get the name of an oldstyle savegame
 | 
						|
void GetOldSaveGameName(char *title, const char *file);
 | 
						|
// get the name of an oldstyle scenario
 | 
						|
void GetOldScenarioGameName(char *title, const char *file);
 | 
						|
 | 
						|
// Get a list of savegames
 | 
						|
FiosItem *FiosGetSavegameList(int *num, int mode);
 | 
						|
// Get a list of scenarios
 | 
						|
FiosItem *FiosGetScenarioList(int *num, int mode);
 | 
						|
// Free the list of savegames
 | 
						|
void FiosFreeSavegameList();
 | 
						|
// Browse to. Returns a filename w/path if we reached a file.
 | 
						|
char *FiosBrowseTo(const FiosItem *item);
 | 
						|
// Get descriptive texts.
 | 
						|
// Returns a path as well as a
 | 
						|
//  string describing the path.
 | 
						|
StringID FiosGetDescText(const char **path);
 | 
						|
// Delete a name
 | 
						|
void FiosDelete(const char *name);
 | 
						|
// Make a filename from a name
 | 
						|
void FiosMakeSavegameName(char *buf, const char *name);
 | 
						|
 | 
						|
void CreateConsole();
 | 
						|
 | 
						|
#endif /* HAL_H */
 |