diff options
Diffstat (limited to 'pacman-c++/actor.cpp')
| -rw-r--r-- | pacman-c++/actor.cpp | 39 |
1 files changed, 28 insertions, 11 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() |
