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

@ -354,7 +354,7 @@ void HugoEngine::runMachine() {
gameStatus.viewState = V_INTRO; gameStatus.viewState = V_INTRO;
break; break;
case V_INTRO: // Do any game-dependant preamble case V_INTRO: // Do any game-dependant preamble
if (_intro->introPlay()) { // Process intro screen if (_intro->introPlay()) { // Process intro screen
_scheduler->newScreen(0); // Initialize first screen _scheduler->newScreen(0); // Initialize first screen
gameStatus.viewState = V_PLAY; gameStatus.viewState = V_PLAY;
} }

View file

@ -209,7 +209,7 @@ void ObjectHandler_v1d::moveObjects() {
// Set first image in sequence (if multi-seq object) // Set first image in sequence (if multi-seq object)
if (obj->seqNumb == 4) { if (obj->seqNumb == 4) {
if (!obj->vx) { // Got 4 directions if (!obj->vx) { // Got 4 directions
if (obj->vx != dxOld) { // vx just stopped if (obj->vx != dxOld) { // vx just stopped
if (dy > 0) if (dy > 0)
obj->currImagePtr = obj->seqList[DOWN].seqPtr; obj->currImagePtr = obj->seqList[DOWN].seqPtr;
else else
@ -243,7 +243,7 @@ void ObjectHandler_v1d::moveObjects() {
// Set first image in sequence (if multi-seq object) // Set first image in sequence (if multi-seq object)
if (obj->seqNumb > 1) { if (obj->seqNumb > 1) {
if (!obj->vx && (obj->seqNumb > 2)) { if (!obj->vx && (obj->seqNumb > 2)) {
if (obj->vx != dxOld) { // vx just stopped if (obj->vx != dxOld) { // vx just stopped
if (obj->vy > 0) if (obj->vy > 0)
obj->currImagePtr = obj->seqList[DOWN].seqPtr; obj->currImagePtr = obj->seqList[DOWN].seqPtr;
else else

View file

@ -210,7 +210,7 @@ void ObjectHandler_v1w::moveObjects() {
switch (obj->seqNumb) { switch (obj->seqNumb) {
case 4: case 4:
if (!obj->vx) { // Got 4 directions if (!obj->vx) { // Got 4 directions
if (obj->vx != obj->oldvx) { // vx just stopped if (obj->vx != obj->oldvx) { // vx just stopped
if (dy >= 0) if (dy >= 0)
obj->currImagePtr = obj->seqList[DOWN].seqPtr; obj->currImagePtr = obj->seqList[DOWN].seqPtr;
else else
@ -254,7 +254,7 @@ void ObjectHandler_v1w::moveObjects() {
// Set first image in sequence (if multi-seq object) // Set first image in sequence (if multi-seq object)
if (obj->seqNumb > 1) { if (obj->seqNumb > 1) {
if (!obj->vx && (obj->seqNumb >= 4)) { if (!obj->vx && (obj->seqNumb >= 4)) {
if (obj->vx != obj->oldvx) { // vx just stopped if (obj->vx != obj->oldvx) { // vx just stopped
if (obj->vy > 0) if (obj->vy > 0)
obj->currImagePtr = obj->seqList[DOWN].seqPtr; obj->currImagePtr = obj->seqList[DOWN].seqPtr;
else else

View file

@ -213,7 +213,7 @@ void ObjectHandler_v2d::moveObjects() {
switch (obj->seqNumb) { switch (obj->seqNumb) {
case 4: case 4:
if (!obj->vx) { // Got 4 directions if (!obj->vx) { // Got 4 directions
if (obj->vx != obj->oldvx) { // vx just stopped if (obj->vx != obj->oldvx) { // vx just stopped
if (dy > 0) if (dy > 0)
obj->currImagePtr = obj->seqList[DOWN].seqPtr; obj->currImagePtr = obj->seqList[DOWN].seqPtr;
else else
@ -257,7 +257,7 @@ void ObjectHandler_v2d::moveObjects() {
// Set first image in sequence (if multi-seq object) // Set first image in sequence (if multi-seq object)
if (obj->seqNumb > 1) { if (obj->seqNumb > 1) {
if (!obj->vx && (obj->seqNumb >= 4)) { if (!obj->vx && (obj->seqNumb >= 4)) {
if (obj->vx != obj->oldvx) { // vx just stopped if (obj->vx != obj->oldvx) { // vx just stopped
if (obj->vy > 0) if (obj->vy > 0)
obj->currImagePtr = obj->seqList[DOWN].seqPtr; obj->currImagePtr = obj->seqList[DOWN].seqPtr;
else else

View file

@ -138,7 +138,7 @@ void ObjectHandler_v3d::moveObjects() {
// Set first image in sequence (if multi-seq object) // Set first image in sequence (if multi-seq object)
if (obj->seqNumb > 1) { if (obj->seqNumb > 1) {
if (!obj->vx && (obj->seqNumb >= 4)) { if (!obj->vx && (obj->seqNumb >= 4)) {
if (obj->vx != obj->oldvx) { // vx just stopped if (obj->vx != obj->oldvx) { // vx just stopped
if (obj->vy > 0) if (obj->vy > 0)
obj->currImagePtr = obj->seqList[DOWN].seqPtr; obj->currImagePtr = obj->seqList[DOWN].seqPtr;
else else

View file

@ -62,7 +62,7 @@ void Parser::keyHandler(uint16 nChar, uint16 nFlags) {
bool repeatedFl = (nFlags & 0x4000); // TRUE if key is a repeat bool repeatedFl = (nFlags & 0x4000); // TRUE if key is a repeat
// Process key down event - called from OnKeyDown() // Process key down event - called from OnKeyDown()
switch (nChar) { // Set various toggle states switch (nChar) { // Set various toggle states
case Common::KEYCODE_ESCAPE: // Escape key, may want to QUIT case Common::KEYCODE_ESCAPE: // Escape key, may want to QUIT
if (gameStatus.inventoryState == I_ACTIVE) // Remove inventory, if displayed if (gameStatus.inventoryState == I_ACTIVE) // Remove inventory, if displayed
gameStatus.inventoryState = I_UP; gameStatus.inventoryState = I_UP;

View file

@ -58,7 +58,7 @@ void Parser_v1w::keyHandler(uint16 nChar, uint16 nFlags) {
bool repeatedFl = (nFlags & 0x4000); // TRUE if key is a repeat bool repeatedFl = (nFlags & 0x4000); // TRUE if key is a repeat
// Process key down event - called from OnKeyDown() // Process key down event - called from OnKeyDown()
switch (nChar) { // Set various toggle states switch (nChar) { // Set various toggle states
case Common::KEYCODE_ESCAPE: // Escape key, may want to QUIT case Common::KEYCODE_ESCAPE: // Escape key, may want to QUIT
if (gameStatus.inventoryState == I_ACTIVE) // Remove inventory, if displayed if (gameStatus.inventoryState == I_ACTIVE) // Remove inventory, if displayed
gameStatus.inventoryState = I_UP; gameStatus.inventoryState = I_UP;

View file

@ -36,8 +36,6 @@
#include "sound/decoders/raw.h" #include "sound/decoders/raw.h"
#include "sound/audiostream.h" #include "sound/audiostream.h"
#include "sound/midiparser.h"
#include "sound/mididrv.h"
#include "hugo/hugo.h" #include "hugo/hugo.h"
#include "hugo/game.h" #include "hugo/game.h"
@ -46,51 +44,6 @@
namespace Hugo { 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) MidiPlayer::MidiPlayer(MidiDriver *driver)
: _driver(driver), _parser(0), _midiData(0), _isLooping(false), _isPlaying(false), _paused(false), _masterVolume(0) { : _driver(driver), _parser(0), _midiData(0), _isLooping(false), _isPlaying(false), _paused(false), _masterVolume(0) {
assert(_driver); assert(_driver);

View file

@ -34,10 +34,55 @@
#define HUGO_SOUND_H #define HUGO_SOUND_H
#include "sound/mixer.h" #include "sound/mixer.h"
#include "sound/mididrv.h"
#include "sound/midiparser.h"
namespace Hugo { 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 { class SoundHandler {
public: public: