summaryrefslogtreecommitdiff
path: root/hal.h
diff options
context:
space:
mode:
Diffstat (limited to 'hal.h')
-rw-r--r--hal.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/hal.h b/hal.h
new file mode 100644
index 000000000..f7cf2312d
--- /dev/null
+++ b/hal.h
@@ -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 */