summaryrefslogtreecommitdiff
path: root/noncore/games/parashoot/helicopter.cpp
Side-by-side diff
Diffstat (limited to 'noncore/games/parashoot/helicopter.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/parashoot/helicopter.cpp114
1 files changed, 114 insertions, 0 deletions
diff --git a/noncore/games/parashoot/helicopter.cpp b/noncore/games/parashoot/helicopter.cpp
new file mode 100644
index 0000000..0923124
--- a/dev/null
+++ b/noncore/games/parashoot/helicopter.cpp
@@ -0,0 +1,114 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "helicopter.h"
+#include "man.h"
+#include "codes.h"
+
+#include <qpe/resource.h>
+
+#include <qregexp.h>
+
+static QList<Helicopter> all;
+
+Helicopter::Helicopter(QCanvas* canvas) :
+ QCanvasSprite(0, canvas),
+ chikachika("aland01")
+{
+ all.append(this);
+ hits = 0;
+ QCanvasPixmapArray* helicopterarray = new QCanvasPixmapArray();
+ QString h0 = Resource::findPixmap("parashoot/helicopter0001");
+ h0.replace(QRegExp("0001"),"%1");
+ helicopterarray->readPixmaps(h0,3 );
+ setSequence(helicopterarray);
+ setAnimated(true);
+ move(canvas->width(), 5);
+ setVelocity(-2, 0);
+ chikachika.playLoop();
+ show();
+}
+
+Helicopter::~Helicopter()
+{
+ all.remove(this);
+}
+
+int fr = 0;
+
+void Helicopter::advance(int phase)
+{
+ QCanvasSprite::advance(phase);
+ if (phase == 0) {
+ setFrame(fr%3);
+ fr++;
+ checkCollision();
+ }
+}
+
+void Helicopter::checkCollision()
+{
+ if (x() == 6) {
+ setAnimated(false); //setVelocity(0, 0);
+ dropman();
+ }
+ if (x() < 0)
+ done();
+}
+
+void Helicopter::dropman()
+{
+ (void)new Man(canvas(), 15, 25);
+ (void)new Man(canvas(), 35, 25);
+ takeOff();
+}
+
+void Helicopter::done()
+{
+ hits++;
+ if (hits >= 2) {
+ setAnimated(false);
+ delete this;
+ }
+}
+
+void Helicopter::takeOff()
+{
+ setVelocity(-1, 0);
+}
+
+int Helicopter::rtti() const
+{
+ return helicopter_rtti;
+}
+
+void Helicopter::silenceAll()
+{
+ for (Helicopter* h = all.first(); h; h = all.next())
+ h->chikachika.stop();
+}
+
+void Helicopter::deleteAll()
+{
+ Helicopter* h;
+ while ((h = all.first()))
+ delete h;
+}
+