HUGO: Clean-up, move MidiPlayer class definition to .h file
svn-id: r54923
This commit is contained in:
parent
ca547118e3
commit
76eb9d7f64
9 changed files with 56 additions and 58 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue