diff options
Diffstat (limited to 'hal.h')
-rw-r--r-- | hal.h | 146 |
1 files changed, 146 insertions, 0 deletions
@@ -0,0 +1,146 @@ +#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; + uint 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(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 */ |