HUGO: Clean-up, move MidiPlayer class definition to .h file

svn-id: r54923
This commit is contained in:
Arnaud Boutonné 2010-12-15 20:37:09 +00:00
parent ca547118e3
commit 76eb9d7f64
9 changed files with 56 additions and 58 deletions

View file

@ -36,8 +36,6 @@
#include "sound/decoders/raw.h"
#include "sound/audiostream.h"
#include "sound/midiparser.h"
#include "sound/mididrv.h"
#include "hugo/hugo.h"
#include "hugo/game.h"
@ -46,51 +44,6 @@
namespace Hugo {
class MidiPlayer : public MidiDriver {
public:
enum {
NUM_CHANNELS = 16
};
MidiPlayer(MidiDriver *driver);
~MidiPlayer();
void play(uint8 *stream, uint16 size);
void stop();
void pause(bool p);
void updateTimer();
void adjustVolume(int diff);
void setVolume(int volume);
int getVolume() const { return _masterVolume; }
void setLooping(bool loop) { _isLooping = loop; }
// MidiDriver interface
int open();
void close();
void send(uint32 b);
void metaEvent(byte type, byte *data, uint16 length);
void setTimerCallback(void *timerParam, void (*timerProc)(void *)) { }
uint32 getBaseTempo() { return _driver ? _driver->getBaseTempo() : 0; }
MidiChannel *allocateChannel() { return 0; }
MidiChannel *getPercussionChannel() { return 0; }
private:
static void timerCallback(void *p);
MidiDriver *_driver;
MidiParser *_parser;
uint8 *_midiData;
bool _isLooping;
bool _isPlaying;
bool _paused;
int _masterVolume;
MidiChannel *_channelsTable[NUM_CHANNELS];
uint8 _channelsVolume[NUM_CHANNELS];
Common::Mutex _mutex;
};
MidiPlayer::MidiPlayer(MidiDriver *driver)
: _driver(driver), _parser(0), _midiData(0), _isLooping(false), _isPlaying(false), _paused(false), _masterVolume(0) {
assert(_driver);

View file

@ -34,10 +34,55 @@
#define HUGO_SOUND_H
#include "sound/mixer.h"
#include "sound/mididrv.h"
#include "sound/midiparser.h"
namespace Hugo {
class MidiPlayer;
class MidiPlayer : public MidiDriver {
public:
enum {
NUM_CHANNELS = 16
};
MidiPlayer(MidiDriver *driver);
~MidiPlayer();
void play(uint8 *stream, uint16 size);
void stop();
void pause(bool p);
void updateTimer();
void adjustVolume(int diff);
void setVolume(int volume);
int getVolume() const { return _masterVolume; }
void setLooping(bool loop) { _isLooping = loop; }
// MidiDriver interface
int open();
void close();
void send(uint32 b);
void metaEvent(byte type, byte *data, uint16 length);
void setTimerCallback(void *timerParam, void (*timerProc)(void *)) { }
uint32 getBaseTempo() { return _driver ? _driver->getBaseTempo() : 0; }
MidiChannel *allocateChannel() { return 0; }
MidiChannel *getPercussionChannel() { return 0; }
private:
static void timerCallback(void *p);
MidiDriver *_driver;
MidiParser *_parser;
uint8 *_midiData;
bool _isLooping;
bool _isPlaying;
bool _paused;
int _masterVolume;
MidiChannel *_channelsTable[NUM_CHANNELS];
uint8 _channelsVolume[NUM_CHANNELS];
Common::Mutex _mutex;
};
class SoundHandler {
public: