File: rtsound.cpp

package info (click to toggle)
robotour 3.1.1-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,596 kB
  • ctags: 2,972
  • sloc: cpp: 17,705; sh: 3,060; ansic: 2,778; makefile: 144
file content (81 lines) | stat: -rwxr-xr-x 2,041 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
 * rtsound.cpp
 * 
 * Copyright (c) 2000-2004 by Florian Fischer (florianfischer@gmx.de)
 * and Martin Trautmann (martintrautmann@gmx.de) 
 * 
 * This file may be distributed and/or modified under the terms of the 
 * GNU General Public License version 2 as published by the Free Software 
 * Foundation. 
 * 
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 * 
 */

// rtsound.cpp: Implementierung der Klasse Sound.
//
//////////////////////////////////////////////////////////////////////

#include "rtsound.h"
#include "rtstring.h"
#include "rtfile.h"

// actual implementation

#ifdef __WIN32__
  #include "rtsound.win32.cpp"
#else
  #ifdef __UNIX__
    #include "rtsound.unix.cpp"
  #else
    #include "rtsound.nosound.cpp"
  #endif // __UNIX__
#endif //__WIN32__

// system-independent functions

namespace lrt {

Vector<String> Sound::extraSoundFolders; 

void Sound::addSoundFolder(const String& folder)
{
	String fx = folder; 

	if(!File(folder).isFolder())
		fx += File::separator; 

	extraSoundFolders += fx; 
}

String Sound::resolve(const String& logicalSoundName)
{
	String soundfile = logicalSoundName.replace('/', File::separatorChar);
	soundfile += getExtension();

	String soundfolder("sounds");
	soundfolder += File::separator;
	File execfolder = File::getExecutableFile().getParentFile();

	if(File(soundfile).exists()) return soundfile;

	if(File(execfolder, soundfile).exists()) 
		return execfolder.getName() + soundfile;
	if(File(execfolder, soundfolder + soundfile).exists()) 
		return execfolder.getName() + soundfolder + soundfile;

	for(int i = 0; i < extraSoundFolders.length(); i++) 
		if(File(extraSoundFolders[i] + soundfile).exists())
			return extraSoundFolders[i] + soundfile; 

	return String();
}

bool Sound::isPresent(const String& logicalSoundName)
{
	return (resolve(logicalSoundName) != "");
}


} // namespace