From d0eafb0124a39eeda6c00595a943ce9811d589c4 Mon Sep 17 00:00:00 2001 From: manuel Date: Sun, 10 Apr 2011 20:50:54 +0200 Subject: major audio rewrite --- pacman-c++/actor.cpp | 43 ++++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 23 deletions(-) (limited to 'pacman-c++/actor.cpp') diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index bd50a3c..8184c6f 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp @@ -1,6 +1,5 @@ #include "actor.h" #include "animationmanager.h" -#include "audioplayer.h" #include #include #include @@ -12,7 +11,7 @@ static QVariant myBooleanInterpolator(const bool &start, const bool &end, qreal Actor::Actor(Color::Color color, bool local, QGraphicsItem *parent) : PixmapItem(parent), m_color(color), m_direction(Actor::None), m_local(local), - m_roundPoints(0), m_gamePoints(0) + m_player(NULL), m_roundPoints(0), m_gamePoints(0) { m_pix = ":/" + QString("actor%1").arg((m_color >> 1) + 1); /* DON'T set any pixmap here. we've a pixmap in the animation @@ -50,8 +49,16 @@ Actor::Actor(Color::Color color, bool local, QGraphicsItem *parent) m_eating.append(setupEatingAnimation(Actor::Up)); m_eating.append(setupEatingAnimation(Actor::Down)); - /* setup player */ - connect(AudioPlayer::self(), SIGNAL(aboutToFinish()), this, SLOT(enqueue())); + /* setup sound */ + if (local) + { + m_player = new AudioPlayer(this); + if (m_player->isWorking()) + { + m_player->setLoop(Sound::WakaWaka); + AudioManager::self()->registerAudioPlayer(m_player); + } + } /* make the picture showing the current direction visible */ m_images[m_direction]->setVisible(true); @@ -159,26 +166,22 @@ void Actor::move(Actor::Movement direction) if (direction == Actor::None) m_images[m_direction]->setVisible(true); else - { m_eating[direction]->start(); - } - m_direction = direction; } if (direction != Actor::None) { - if (m_local && AudioPlayer::self()->state() != Phonon::PlayingState) - { - AudioPlayer::self()->clear(); - AudioPlayer::self()->play(AudioPlayer::WakaWaka); - AudioPlayer::self()->enqueue(AudioPlayer::WakaWaka); - } + if (m_local && m_player->isWorking() && m_player->state() != Phonon::PlayingState) + m_player->play(); m_moving->start(); } - else + else if (direction != m_direction) { - AudioPlayer::self()->stop(); + if (m_local && m_player->isWorking() && m_player->state() != Phonon::PausedState) + m_player->pause(); } + + m_direction = direction; } bool Actor::isMoving() @@ -186,22 +189,16 @@ bool Actor::isMoving() return (m_moving->state() == QAbstractAnimation::Running); } -void Actor::enqueue() -{ - if (isMoving()) - AudioPlayer::self()->enqueue(AudioPlayer::WakaWaka); -} - void Actor::die() { if (!m_local) return; - AudioPlayer::self()->play(AudioPlayer::Die); + AudioManager::self()->play(Sound::Die); } void Actor::eatingCherry() { if (!m_local) return; - AudioPlayer::self()->play(AudioPlayer::EatingCherry); + AudioManager::self()->play(Sound::EatingCherry); } -- cgit v1.2.3