1 /***************************************************************************
2                           sound.h  -  description
3                              -------------------
4     begin                : Fri Jul 21 2000
5     copyright            : (C) 2000 by Immi
6     email                : cuyo@pcpool.mathematik.uni-freiburg.de
7 
8 Modified 2003,2004,2006,2011 by the cuyo developers
9 
10  ***************************************************************************/
11 
12 /***************************************************************************
13  *                                                                         *
14  *   This program is free software; you can redistribute it and/or modify  *
15  *   it under the terms of the GNU General Public License as published by  *
16  *   the Free Software Foundation; either version 2 of the License, or     *
17  *   (at your option) any later version.                                   *
18  *                                                                         *
19  ***************************************************************************/
20 
21 #ifndef SOUND_H
22 #define SOUND_H
23 
24 
25 class Str;
26 
27 /* Wichtig: include inkompatibel.h muss _vor_ dem nachfolgenden stehen. */
28 #ifdef CUYO_SOUND
29 #include <mikmod.h>
30 #endif
31 
32 /* Namen der Sample-Dateien stehen in sound.cpp */
33 #define sample_nix (-1)
34 #define sample_links 0
35 #define sample_rechts 0
36 #define sample_dreh 1
37 #define sample_fall 2
38 #define sample_land 3
39 #define sample_explodier 4
40 #define sample_menuclick 5
41 #define sample_menuscroll 6
42 #define sample_levelwin 7
43 #define sample_levelloose 8
44 
45 #define fix_sample_anz 9
46 
47 #define spieler_niemand 2
48 
49 enum SoundOrt {
50   so_fenster,
51   so_lfeld,  /* auch bei Einzelspieler */
52   so_rfeld,
53   so_lsemi,
54   so_rsemi,
55   so_global
56 };
57 
58 namespace Sound {
59 
60   void init();
61   void destroy();
62 
63   /** Sollte aufgerufen werden, wenn sich Pref->sound
64       m�glicherweise ge�ndert hat */
65   void checkePrefsStatus();
66 
67 
68   /** Spielt die angegebene Mod-Datei immer wieder ab.
69       Bei na = "" wird nix abgespielt. */
70   void setMusic(Str na);
71 
72   /** L�dt den angegebenen Sample und liefert eine Nummer zur�ck,
73       mit dem man ihn abspielen kann. */
74   int ladSample(Str na);
75 
76   /** Gibt alle Samples wieder frei, die mit ladSample geladen worden
77       sind, au�er die, die init() geladen hat. Sollte nach Levelende
78       aufgerufen werden, wenn die Levelsounds nicht mehr gebraucht werden.
79       (Aber erst, wenn die ld-Dateien einzeln geladen werden.) */
80   void loescheUserSamples();
81 
82   /** Spielt das Sample mit der angegebenen Nummer (die entweder eine
83       der obigen Konstanten ist oder von ladSample zur�ckgeliefert wurde).
84       so,xz,xn bestimmen die x-Position f�r Stereo-Effekte.
85       Dabei ist xz/xn ein Bruch, 0 f�r den linken und 1 f�r den rechten
86       Rand von so. Bei so=so_global werden xz und xn ignoriert. */
87   void playSample(int nr, SoundOrt so, int xz=1, int xn=2);
88 
89 }
90 
91 #endif
92