diff options
| author | manuel <manuel@mausz.at> | 2011-04-13 04:00:48 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2011-04-13 04:00:48 +0200 |
| commit | a117d4bf53cbace2ef97ca3003904c1470643955 (patch) | |
| tree | 78cc58961249e6d2c126aa0a2e6e928e610a121b /pacman-c++ | |
| parent | 646c9849bc02c64398d5490b633132c0a3291441 (diff) | |
| download | foop-a117d4bf53cbace2ef97ca3003904c1470643955.tar.gz foop-a117d4bf53cbace2ef97ca3003904c1470643955.tar.bz2 foop-a117d4bf53cbace2ef97ca3003904c1470643955.zip | |
try to play the sound more gapless. if that won't work for totycro I'll revert the crap. it makes the code really ugly
Diffstat (limited to 'pacman-c++')
| -rw-r--r-- | pacman-c++/actor.cpp | 39 | ||||
| -rw-r--r-- | pacman-c++/actor.h | 7 | ||||
| -rw-r--r-- | pacman-c++/mainwidget.cpp | 25 | ||||
| -rw-r--r-- | pacman-c++/mainwidget.h | 5 |
4 files changed, 58 insertions, 18 deletions
diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index f56407b..56e8e86 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp | |||
| @@ -10,7 +10,7 @@ static QVariant myBooleanInterpolator(const bool &start, const bool &end, qreal | |||
| 10 | 10 | ||
| 11 | Actor::Actor(Color::Color color, bool local, QGraphicsItem *parent) | 11 | Actor::Actor(Color::Color color, bool local, QGraphicsItem *parent) |
| 12 | : GameEntity(color, parent),m_direction(Actor::None), m_local(local), | 12 | : GameEntity(color, parent),m_direction(Actor::None), m_local(local), |
| 13 | m_wakaPlayer(NULL), m_roundPoints(0), m_gamePoints(0) | 13 | m_wakaPlayer1(NULL), m_wakaPlayer2(NULL), m_roundPoints(0), m_gamePoints(0) |
| 14 | { | 14 | { |
| 15 | /* DON'T set any pixmap here. we've a pixmap in the animation | 15 | /* DON'T set any pixmap here. we've a pixmap in the animation |
| 16 | * but we need a sprite for the collision detection | 16 | * but we need a sprite for the collision detection |
| @@ -57,11 +57,16 @@ Actor::Actor(Color::Color color, bool local, QGraphicsItem *parent) | |||
| 57 | /* setup waka sound */ | 57 | /* setup waka sound */ |
| 58 | if (local) | 58 | if (local) |
| 59 | { | 59 | { |
| 60 | m_wakaPlayer = new AudioPlayer(this); | 60 | m_wakaPlayer1 = new AudioPlayer(this); |
| 61 | if (m_wakaPlayer->isWorking()) | 61 | m_wakaPlayer2 = new AudioPlayer(this); |
| 62 | if (m_wakaPlayer1->isWorking() && m_wakaPlayer2->isWorking()) | ||
| 62 | { | 63 | { |
| 63 | m_wakaPlayer->setLoop(Sound::WakaWaka); | 64 | m_wakaPlayer1->setPrefinishMark(100); |
| 64 | AudioManager::self()->registerAudioPlayer(m_wakaPlayer); | 65 | m_wakaPlayer2->setPrefinishMark(100); |
| 66 | connect(m_wakaPlayer1, SIGNAL(prefinishMarkReached(qint32)), this, SLOT(startPlayer2())); | ||
| 67 | connect(m_wakaPlayer2, SIGNAL(prefinishMarkReached(qint32)), this, SLOT(startPlayer1())); | ||
| 68 | AudioManager::self()->registerAudioPlayer(m_wakaPlayer1); | ||
| 69 | AudioManager::self()->registerAudioPlayer(m_wakaPlayer2); | ||
| 65 | } | 70 | } |
| 66 | } | 71 | } |
| 67 | 72 | ||
| @@ -232,18 +237,30 @@ void Actor::eatingPacman() | |||
| 232 | 237 | ||
| 233 | void Actor::startEating() | 238 | void Actor::startEating() |
| 234 | { | 239 | { |
| 235 | if (!m_local || !m_wakaPlayer->isWorking()) | 240 | if (!m_local || !m_wakaPlayer1->isWorking()) |
| 236 | return; | 241 | return; |
| 237 | if (m_wakaPlayer->state() != Phonon::PlayingState) | 242 | if (m_wakaPlayer1->state() != Phonon::PlayingState && m_wakaPlayer2->state() != Phonon::PlayingState) |
| 238 | m_wakaPlayer->play(); | 243 | startPlayer1(); |
| 239 | } | 244 | } |
| 240 | 245 | ||
| 241 | void Actor::stopEating() | 246 | void Actor::stopEating() |
| 242 | { | 247 | { |
| 243 | if (!m_local || !m_wakaPlayer->isWorking()) | 248 | if (!m_local || !m_wakaPlayer1->isWorking()) |
| 244 | return; | 249 | return; |
| 245 | if (m_wakaPlayer->state() != Phonon::PausedState) | 250 | if (m_wakaPlayer1->state() != Phonon::PausedState) |
| 246 | m_wakaPlayer->pause(); | 251 | m_wakaPlayer1->pause(); |
| 252 | if (m_wakaPlayer2->state() != Phonon::PausedState) | ||
| 253 | m_wakaPlayer2->pause(); | ||
| 254 | } | ||
| 255 | |||
| 256 | void Actor::startPlayer1() | ||
| 257 | { | ||
| 258 | m_wakaPlayer1->play(Sound::WakaWaka); | ||
| 259 | } | ||
| 260 | |||
| 261 | void Actor::startPlayer2() | ||
| 262 | { | ||
| 263 | m_wakaPlayer2->play(Sound::WakaWaka); | ||
| 247 | } | 264 | } |
| 248 | 265 | ||
| 249 | unsigned int Actor::getRoundPoints() | 266 | unsigned int Actor::getRoundPoints() |
diff --git a/pacman-c++/actor.h b/pacman-c++/actor.h index 5ec1a59..1739d9f 100644 --- a/pacman-c++/actor.h +++ b/pacman-c++/actor.h | |||
| @@ -46,12 +46,17 @@ public: | |||
| 46 | private: | 46 | private: |
| 47 | void moveByServer(Movement direction); | 47 | void moveByServer(Movement direction); |
| 48 | 48 | ||
| 49 | private slots: | ||
| 50 | void startPlayer1(); | ||
| 51 | void startPlayer2(); | ||
| 52 | |||
| 49 | private: | 53 | private: |
| 50 | QPixmap m_pix; | 54 | QPixmap m_pix; |
| 51 | Movement m_direction; | 55 | Movement m_direction; |
| 52 | PixmapItem m_icon; | 56 | PixmapItem m_icon; |
| 53 | bool m_local; | 57 | bool m_local; |
| 54 | AudioPlayer *m_wakaPlayer; | 58 | AudioPlayer *m_wakaPlayer1; |
| 59 | AudioPlayer *m_wakaPlayer2; | ||
| 55 | 60 | ||
| 56 | unsigned int m_roundPoints; | 61 | unsigned int m_roundPoints; |
| 57 | unsigned int m_gamePoints; | 62 | unsigned int m_gamePoints; |
diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp index e254dbc..5dc392c 100644 --- a/pacman-c++/mainwidget.cpp +++ b/pacman-c++/mainwidget.cpp | |||
| @@ -9,11 +9,16 @@ MainWidget::MainWidget(QWidget *parent) | |||
| 9 | : QWidget(parent), m_currentKey(Transmission::none), m_running(false) | 9 | : QWidget(parent), m_currentKey(Transmission::none), m_running(false) |
| 10 | { | 10 | { |
| 11 | /* create audio player */ | 11 | /* create audio player */ |
| 12 | m_sirenPlayer = new AudioPlayer(this); | 12 | m_sirenPlayer1 = new AudioPlayer(this); |
| 13 | if (m_sirenPlayer->isWorking()) | 13 | m_sirenPlayer2 = new AudioPlayer(this); |
| 14 | if (m_sirenPlayer1->isWorking() && m_sirenPlayer2->isWorking()) | ||
| 14 | { | 15 | { |
| 15 | m_sirenPlayer->setLoop(Sound::Ambient); | 16 | m_sirenPlayer1->setPrefinishMark(100); |
| 16 | AudioManager::self()->registerAudioPlayer(m_sirenPlayer); | 17 | m_sirenPlayer2->setPrefinishMark(100); |
| 18 | connect(m_sirenPlayer1, SIGNAL(prefinishMarkReached(qint32)), this, SLOT(startPlayer2())); | ||
| 19 | connect(m_sirenPlayer2, SIGNAL(prefinishMarkReached(qint32)), this, SLOT(startPlayer1())); | ||
| 20 | AudioManager::self()->registerAudioPlayer(m_sirenPlayer1); | ||
| 21 | AudioManager::self()->registerAudioPlayer(m_sirenPlayer2); | ||
| 17 | } | 22 | } |
| 18 | 23 | ||
| 19 | Color::Color color = connectToServer(); | 24 | Color::Color color = connectToServer(); |
| @@ -199,7 +204,17 @@ void MainWidget::keyReleaseEvent(QKeyEvent* event) | |||
| 199 | void MainWidget::startGame() | 204 | void MainWidget::startGame() |
| 200 | { | 205 | { |
| 201 | m_running = true; | 206 | m_running = true; |
| 202 | m_sirenPlayer->play(); | 207 | startPlayer1(); |
| 208 | } | ||
| 209 | |||
| 210 | void MainWidget::startPlayer1() | ||
| 211 | { | ||
| 212 | m_sirenPlayer1->play(Sound::Ambient); | ||
| 213 | } | ||
| 214 | |||
| 215 | void MainWidget::startPlayer2() | ||
| 216 | { | ||
| 217 | m_sirenPlayer2->play(Sound::Ambient); | ||
| 203 | } | 218 | } |
| 204 | 219 | ||
| 205 | void MainWidget::playerScoreClicked() | 220 | void MainWidget::playerScoreClicked() |
diff --git a/pacman-c++/mainwidget.h b/pacman-c++/mainwidget.h index a3cde3d..cbc195e 100644 --- a/pacman-c++/mainwidget.h +++ b/pacman-c++/mainwidget.h | |||
| @@ -30,6 +30,8 @@ private slots: | |||
| 30 | void playerScoreClicked(); | 30 | void playerScoreClicked(); |
| 31 | void tick(); | 31 | void tick(); |
| 32 | void sendKeyUpdate(); | 32 | void sendKeyUpdate(); |
| 33 | void startPlayer1(); | ||
| 34 | void startPlayer2(); | ||
| 33 | 35 | ||
| 34 | private: | 36 | private: |
| 35 | void createGui(); | 37 | void createGui(); |
| @@ -49,7 +51,8 @@ private: | |||
| 49 | 51 | ||
| 50 | /* game running */ | 52 | /* game running */ |
| 51 | bool m_running; | 53 | bool m_running; |
| 52 | AudioPlayer *m_sirenPlayer; | 54 | AudioPlayer *m_sirenPlayer1; |
| 55 | AudioPlayer *m_sirenPlayer2; | ||
| 53 | 56 | ||
| 54 | QTcpSocket *m_socket; | 57 | QTcpSocket *m_socket; |
| 55 | SceneHolder *m_scene; | 58 | SceneHolder *m_scene; |
