os2_m.cpp
00001
00002
00003 #include "../stdafx.h"
00004 #include "../openttd.h"
00005 #include "os2_m.h"
00006
00007 #define INCL_DOS
00008 #define INCL_OS2MM
00009 #define INCL_WIN
00010
00011 #include <stdarg.h>
00012 #include <os2.h>
00013 #include <os2me.h>
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 static long CDECL MidiSendCommand(const char *cmd, ...)
00024 {
00025 va_list va;
00026 char buf[512];
00027 va_start(va, cmd);
00028 vsprintf(buf, cmd, va);
00029 va_end(va);
00030 return mciSendString(buf, NULL, 0, NULL, 0);
00031 }
00032
00033 static FMusicDriver_OS2 iFMusicDriver_OS2;
00034
00035 void MusicDriver_OS2::PlaySong(const char *filename)
00036 {
00037 MidiSendCommand("close all");
00038
00039 if (MidiSendCommand("open %s type sequencer alias song", filename) != 0)
00040 return;
00041
00042 MidiSendCommand("play song from 0");
00043 }
00044
00045 void MusicDriver_OS2::StopSong()
00046 {
00047 MidiSendCommand("close all");
00048 }
00049
00050 void MusicDriver_OS2::SetVolume(byte vol)
00051 {
00052 MidiSendCommand("set song audio volume %d", ((vol/127)*100));
00053 }
00054
00055 bool MusicDriver_OS2::IsSongPlaying()
00056 {
00057 char buf[16];
00058 mciSendString("status song mode", buf, sizeof(buf), NULL, 0);
00059 return strcmp(buf, "playing") == 0 || strcmp(buf, "seeking") == 0;
00060 }
00061
00062 const char *MusicDriver_OS2::Start(const char * const *parm)
00063 {
00064 return 0;
00065 }
00066
00067 void MusicDriver_OS2::Stop()
00068 {
00069 MidiSendCommand("close all");
00070 }