summaryrefslogtreecommitdiffstats
path: root/pacman-c++
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2011-04-13 04:00:48 +0200
committermanuel <manuel@mausz.at>2011-04-13 04:00:48 +0200
commita117d4bf53cbace2ef97ca3003904c1470643955 (patch)
tree78cc58961249e6d2c126aa0a2e6e928e610a121b /pacman-c++
parent646c9849bc02c64398d5490b633132c0a3291441 (diff)
downloadfoop-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.cpp39
-rw-r--r--pacman-c++/actor.h7
-rw-r--r--pacman-c++/mainwidget.cpp25
-rw-r--r--pacman-c++/mainwidget.h5
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
11Actor::Actor(Color::Color color, bool local, QGraphicsItem *parent) 11Actor::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
233void Actor::startEating() 238void 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
241void Actor::stopEating() 246void 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
256void Actor::startPlayer1()
257{
258 m_wakaPlayer1->play(Sound::WakaWaka);
259}
260
261void Actor::startPlayer2()
262{
263 m_wakaPlayer2->play(Sound::WakaWaka);
247} 264}
248 265
249unsigned int Actor::getRoundPoints() 266unsigned 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:
46private: 46private:
47 void moveByServer(Movement direction); 47 void moveByServer(Movement direction);
48 48
49private slots:
50 void startPlayer1();
51 void startPlayer2();
52
49private: 53private:
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)
199void MainWidget::startGame() 204void MainWidget::startGame()
200{ 205{
201 m_running = true; 206 m_running = true;
202 m_sirenPlayer->play(); 207 startPlayer1();
208}
209
210void MainWidget::startPlayer1()
211{
212 m_sirenPlayer1->play(Sound::Ambient);
213}
214
215void MainWidget::startPlayer2()
216{
217 m_sirenPlayer2->play(Sound::Ambient);
203} 218}
204 219
205void MainWidget::playerScoreClicked() 220void 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
34private: 36private:
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;