Mercurial > hg > openttd
view w32dm.c @ 2048:afb5c2d7e812 draft
(svn r2557) -Add: Added the AUTOBRIEF option to the Doxyfile
author | celestar <celestar@openttd.org> |
---|---|
date | Wed, 13 Jul 2005 09:51:01 +0000 |
parents | 81b2cb2fc036 |
children | 466b8aa52f65 |
line wrap: on
line source
/********************************************************************* * OpenTTD: An Open Source Transport Tycoon Deluxe clone * * Copyright (c) 2002-2004 OpenTTD Developers. All Rights Reserved. * * * * Web site: http://openttd.sourceforge.net/ * *********************************************************************/ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* DirectMusic driver for Win32 */ /* Based on dxmci from TTDPatch */ #include "stdafx.h" #ifdef WIN32_ENABLE_DIRECTMUSIC_SUPPORT #include "openttd.h" #include "string.h" #include "sound.h" #include "hal.h" static const char * DMusicMidiStart(const char * const *parm); static void DMusicMidiStop(void); static void DMusicMidiPlaySong(const char *filename); static void DMusicMidiStopSong(void); static bool DMusicMidiIsSongPlaying(void); static void DMusicMidiSetVolume(byte vol); const HalMusicDriver _dmusic_midi_driver = { DMusicMidiStart, DMusicMidiStop, DMusicMidiPlaySong, DMusicMidiStopSong, DMusicMidiIsSongPlaying, DMusicMidiSetVolume, }; extern bool LoadMIDI (char *directory, char *filename); extern bool InitDirectMusic (void); extern void ReleaseSegment (void); extern void ShutdownDirectMusic (void); extern bool LoadMIDI (char *directory, char *filename); extern void PlaySegment (void); extern void StopSegment (void); extern bool IsSegmentPlaying (void); extern void SetVolume (long); bool seeking = false; static const char * DMusicMidiStart(const char * const *parm) { if (InitDirectMusic() == true) return(0); return("Unable to initialize DirectMusic"); } static void DMusicMidiStop(void) { StopSegment(); } static void DMusicMidiPlaySong(const char *filename) { char *pos; char dir[MAX_PATH]; char file[MAX_PATH]; // split full path into directory and file components ttd_strlcpy(dir, filename, MAX_PATH); pos = strrchr(dir, '\\') + 1; ttd_strlcpy(file, pos, MAX_PATH); //strchr(file, ' ')[0] = 0; *pos = 0; LoadMIDI(dir, file); PlaySegment(); seeking = true; } static void DMusicMidiStopSong(void) { StopSegment(); } static bool DMusicMidiIsSongPlaying(void) { if ((IsSegmentPlaying() == 0) && (seeking == true)) // Not the nicest code, but there is a return(true); // short delay before playing actually // starts. OpenTTD makes no provision for if (IsSegmentPlaying() == 1) // this. seeking = false; return(IsSegmentPlaying()); } static void DMusicMidiSetVolume(byte vol) { SetVolume(vol); } #endif /* WIN32_ENABLE_DIRECTMUSIC_SUPPORT */