mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-02 09:40:35 +00:00
148 lines
3.4 KiB
C
148 lines
3.4 KiB
C
#ifndef HAL_H
|
|
#define HAL_H
|
|
|
|
typedef struct {
|
|
const char *(*start)(const char * const *parm);
|
|
void (*stop)(void);
|
|
} HalCommonDriver;
|
|
|
|
typedef struct {
|
|
const char *(*start)(const char * const *parm);
|
|
void (*stop)(void);
|
|
void (*make_dirty)(int left, int top, int width, int height);
|
|
int (*main_loop)(void);
|
|
bool (*change_resolution)(int w, int h);
|
|
void (*toggle_fullscreen)(bool fullscreen);
|
|
} HalVideoDriver;
|
|
|
|
enum {
|
|
ML_QUIT = 0,
|
|
ML_SWITCHDRIVER = 1,
|
|
};
|
|
|
|
typedef struct {
|
|
const char *(*start)(const char * const *parm);
|
|
void (*stop)(void);
|
|
} HalSoundDriver;
|
|
|
|
typedef struct {
|
|
const char *(*start)(const char * const *parm);
|
|
void (*stop)(void);
|
|
|
|
void (*play_song)(const char *filename);
|
|
void (*stop_song)(void);
|
|
bool (*is_song_playing)(void);
|
|
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
|
|
|
|
#if defined(__OS2__)
|
|
extern const HalMusicDriver _os2_music_driver;
|
|
#endif
|
|
|
|
extern const HalVideoDriver _dedicated_video_driver;
|
|
|
|
enum DriverType {
|
|
VIDEO_DRIVER = 0,
|
|
SOUND_DRIVER = 1,
|
|
MUSIC_DRIVER = 2,
|
|
};
|
|
|
|
extern void GameLoop(void);
|
|
extern bool _dbg_screen_rect;
|
|
|
|
void LoadDriver(int driver, const char *name);
|
|
|
|
const char *GetDriverParam(const char * const *parm, const char *name);
|
|
bool GetDriverParamBool(const char * const *parm, const char *name);
|
|
int GetDriverParamInt(const char * const *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];
|
|
} 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,
|
|
};
|
|
|
|
|
|
// Variables to display file lists
|
|
FiosItem *_fios_list;
|
|
int _fios_num;
|
|
int _saveload_mode;
|
|
|
|
// 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(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 *tot);
|
|
// Delete a name
|
|
void FiosDelete(const char *name);
|
|
// Make a filename from a name
|
|
void FiosMakeSavegameName(char *buf, const char *name);
|
|
|
|
int CDECL compare_FiosItems(const void *a, const void *b);
|
|
|
|
void CreateConsole(void);
|
|
|
|
#endif /* HAL_H */
|