summaryrefslogtreecommitdiff
authorzecke <zecke>2004-02-06 14:32:10 (UTC)
committer zecke <zecke>2004-02-06 14:32:10 (UTC)
commitb033733924e5d3454bb0a810c6a70d4ff0531d2b (patch) (unidiff)
treecafe130296468840db062af4a3335572804ee1f3
parentf60cbb888e72b3eaf49af6f72fa183e6d44ae389 (diff)
downloadopie-b033733924e5d3454bb0a810c6a70d4ff0531d2b.zip
opie-b033733924e5d3454bb0a810c6a70d4ff0531d2b.tar.gz
opie-b033733924e5d3454bb0a810c6a70d4ff0531d2b.tar.bz2
Funny how much bugs one can introduce when importing Qtopia stuff.
Fixed a couple of possible sigsegv, uninitialized variables
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/games/parashoot/base.cpp12
-rw-r--r--noncore/games/parashoot/base.h8
-rw-r--r--noncore/games/parashoot/cannon.cpp24
-rw-r--r--noncore/games/parashoot/cannon.h6
-rw-r--r--noncore/games/parashoot/helicopter.cpp22
-rw-r--r--noncore/games/parashoot/helicopter.h6
-rw-r--r--noncore/games/parashoot/interface.cpp66
-rw-r--r--noncore/games/parashoot/interface.h14
-rw-r--r--noncore/games/parashoot/man.cpp27
9 files changed, 131 insertions, 54 deletions
diff --git a/noncore/games/parashoot/base.cpp b/noncore/games/parashoot/base.cpp
index c03802f..cdf1dfa 100644
--- a/noncore/games/parashoot/base.cpp
+++ b/noncore/games/parashoot/base.cpp
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -18,13 +18,13 @@
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "codes.h" 20#include "codes.h"
21#include "base.h" 21#include "base.h"
22#include "man.h" 22#include "man.h"
23 23
24#include <qpe/resource.h> 24#include <qtopia/resource.h>
25 25
26#include <qregexp.h> 26#include <qregexp.h>
27 27
28int damage; 28int damage;
29 29
30Base::Base(QCanvas* canvas) : 30Base::Base(QCanvas* canvas) :
@@ -66,6 +66,12 @@ Base::~Base()
66} 66}
67 67
68int Base::rtti() const 68int Base::rtti() const
69{ 69{
70 return base_rtti; 70 return base_rtti;
71} 71}
72
73void
74Base::reposition(void)
75{
76 move(2, canvas()->height()-50);
77}
diff --git a/noncore/games/parashoot/base.h b/noncore/games/parashoot/base.h
index ee7f166..a4c69cc 100644
--- a/noncore/games/parashoot/base.h
+++ b/noncore/games/parashoot/base.h
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -15,13 +15,13 @@
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qpe/sound.h> 21#include <qtopia/sound.h>
22 22
23#include <qcanvas.h> 23#include <qcanvas.h>
24 24
25class Base : public QCanvasSprite 25class Base : public QCanvasSprite
26{ 26{
27 27
@@ -29,10 +29,12 @@ public:
29 Base(QCanvas*); 29 Base(QCanvas*);
30 ~Base(); 30 ~Base();
31 void damageBase(); 31 void damageBase();
32 int rtti() const; 32 int rtti() const;
33 static bool baseDestroyed(); 33 static bool baseDestroyed();
34 34
35 void reposition(void);
36
35private: 37private:
36 QCanvasPixmapArray* basearray; 38 QCanvasPixmapArray* basearray;
37 Sound kaboom, ohdear; 39 Sound kaboom, ohdear;
38}; 40};
diff --git a/noncore/games/parashoot/cannon.cpp b/noncore/games/parashoot/cannon.cpp
index 3c0a5fe..5671351 100644
--- a/noncore/games/parashoot/cannon.cpp
+++ b/noncore/games/parashoot/cannon.cpp
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -15,13 +15,13 @@
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qpe/resource.h> 21#include <qtopia/resource.h>
22 22
23#include <qregexp.h> 23#include <qregexp.h>
24 24
25#include "codes.h" 25#include "codes.h"
26#include "cannon.h" 26#include "cannon.h"
27 27
@@ -35,16 +35,15 @@ shotsfired=0;
35 cannonarray = new QCanvasPixmapArray(); 35 cannonarray = new QCanvasPixmapArray();
36 QString c0 = Resource::findPixmap("parashoot/can0001"); 36 QString c0 = Resource::findPixmap("parashoot/can0001");
37 c0.replace(QRegExp("0001"),"%1"); 37 c0.replace(QRegExp("0001"),"%1");
38 cannonarray->readPixmaps(c0,17); 38 cannonarray->readPixmaps(c0,17);
39 setSequence(cannonarray); 39 setSequence(cannonarray);
40 setFrame(index); 40 setFrame(index);
41 move(canvas->width()/2-20, canvas->height()-32); 41
42 // co ords for barrel of cannon when upright 42 reposition();
43 barrelypos = canvas->height()-32; 43
44 barrelxpos = canvas->width()/2;
45 movedir = NoDir; 44 movedir = NoDir;
46 moveDelay = 0; 45 moveDelay = 0;
47 setAnimated(TRUE); 46 setAnimated(TRUE);
48 show(); 47 show();
49} 48}
50 49
@@ -135,6 +134,17 @@ Cannon::~Cannon()
135} 134}
136 135
137int Cannon::rtti() const 136int Cannon::rtti() const
138{ 137{
139 return cannon_rtti; 138 return cannon_rtti;
140} 139}
140
141void Cannon::reposition(void)
142{
143 move(canvas()->width()/2-20, canvas()->height()-32);
144 // co ords for barrel of cannon when upright
145 barrelypos = canvas()->height()-32;
146 barrelxpos = canvas()->width()/2;
147
148 setFrame(index);
149 setCoords();
150}
diff --git a/noncore/games/parashoot/cannon.h b/noncore/games/parashoot/cannon.h
index 44d0c65..51b1247 100644
--- a/noncore/games/parashoot/cannon.h
+++ b/noncore/games/parashoot/cannon.h
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -36,12 +36,14 @@ public:
36 double shootAngle(); 36 double shootAngle();
37 void shoot(); 37 void shoot();
38 int rtti() const; 38 int rtti() const;
39 39
40int shotsFired() { return shotsfired; }; 40int shotsFired() { return shotsfired; };
41 41
42 void reposition(void);
43
42protected: 44protected:
43 void advance(int stage); 45 void advance(int stage);
44 46
45signals: 47signals:
46 void score(int); 48 void score(int);
47 49
diff --git a/noncore/games/parashoot/helicopter.cpp b/noncore/games/parashoot/helicopter.cpp
index 0923124..036b21e 100644
--- a/noncore/games/parashoot/helicopter.cpp
+++ b/noncore/games/parashoot/helicopter.cpp
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -19,13 +19,13 @@
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "helicopter.h" 21#include "helicopter.h"
22#include "man.h" 22#include "man.h"
23#include "codes.h" 23#include "codes.h"
24 24
25#include <qpe/resource.h> 25#include <qtopia/resource.h>
26 26
27#include <qregexp.h> 27#include <qregexp.h>
28 28
29static QList<Helicopter> all; 29static QList<Helicopter> all;
30 30
31Helicopter::Helicopter(QCanvas* canvas) : 31Helicopter::Helicopter(QCanvas* canvas) :
@@ -34,13 +34,14 @@ Helicopter::Helicopter(QCanvas* canvas) :
34{ 34{
35 all.append(this); 35 all.append(this);
36 hits = 0; 36 hits = 0;
37 QCanvasPixmapArray* helicopterarray = new QCanvasPixmapArray(); 37 QCanvasPixmapArray* helicopterarray = new QCanvasPixmapArray();
38 QString h0 = Resource::findPixmap("parashoot/helicopter0001"); 38 QString h0 = Resource::findPixmap("parashoot/helicopter0001");
39 h0.replace(QRegExp("0001"),"%1"); 39 h0.replace(QRegExp("0001"),"%1");
40 helicopterarray->readPixmaps(h0,3 ); 40 helicopterarray->readPixmaps(h0,4 );
41
41 setSequence(helicopterarray); 42 setSequence(helicopterarray);
42 setAnimated(true); 43 setAnimated(true);
43 move(canvas->width(), 5); 44 move(canvas->width(), 5);
44 setVelocity(-2, 0); 45 setVelocity(-2, 0);
45 chikachika.playLoop(); 46 chikachika.playLoop();
46 show(); 47 show();
@@ -54,17 +55,26 @@ Helicopter::~Helicopter()
54int fr = 0; 55int fr = 0;
55 56
56void Helicopter::advance(int phase) 57void Helicopter::advance(int phase)
57{ 58{
58 QCanvasSprite::advance(phase); 59 QCanvasSprite::advance(phase);
59 if (phase == 0) { 60 if (phase == 0) {
61 if (frame() == 3) {
62 delete this;
63 return;
64 }
65
66 if (hits >= 2) {
67 setFrame(3);
68 } else {
60 setFrame(fr%3); 69 setFrame(fr%3);
61 fr++; 70 fr++;
62 checkCollision(); 71 checkCollision();
63 } 72 }
64} 73}
74}
65 75
66void Helicopter::checkCollision() 76void Helicopter::checkCollision()
67{ 77{
68 if (x() == 6) { 78 if (x() == 6) {
69 setAnimated(false); //setVelocity(0, 0); 79 setAnimated(false); //setVelocity(0, 0);
70 dropman(); 80 dropman();
@@ -80,16 +90,12 @@ void Helicopter::dropman()
80 takeOff(); 90 takeOff();
81} 91}
82 92
83void Helicopter::done() 93void Helicopter::done()
84{ 94{
85 hits++; 95 hits++;
86 if (hits >= 2) {
87 setAnimated(false);
88 delete this;
89 }
90} 96}
91 97
92void Helicopter::takeOff() 98void Helicopter::takeOff()
93{ 99{
94 setVelocity(-1, 0); 100 setVelocity(-1, 0);
95} 101}
diff --git a/noncore/games/parashoot/helicopter.h b/noncore/games/parashoot/helicopter.h
index 5cb92de..954c651 100644
--- a/noncore/games/parashoot/helicopter.h
+++ b/noncore/games/parashoot/helicopter.h
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -15,13 +15,13 @@
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qpe/sound.h> 21#include <qtopia/sound.h>
22 22
23#include <qcanvas.h> 23#include <qcanvas.h>
24 24
25class Helicopter : public QCanvasSprite 25class Helicopter : public QCanvasSprite
26{ 26{
27 27
diff --git a/noncore/games/parashoot/interface.cpp b/noncore/games/parashoot/interface.cpp
index a40426d..948b92c 100644
--- a/noncore/games/parashoot/interface.cpp
+++ b/noncore/games/parashoot/interface.cpp
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -18,46 +18,48 @@
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "interface.h" 21#include "interface.h"
22#include "man.h" 22#include "man.h"
23 23
24#include <qpe/resource.h> 24#include <qtopia/qpeapplication.h>
25#include <qpe/qpeapplication.h> 25#include <qtopia/resource.h>
26 26
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qmessagebox.h> 28#include <qmessagebox.h>
29#include <qapplication.h> 29#include <qapplication.h>
30#include <qstyle.h> 30#include <qstyle.h>
31#include <qpe/qpetoolbar.h> 31#include <qtoolbar.h>
32#include <qtoolbutton.h> 32#include <qtoolbutton.h>
33 33
34ParaShoot::ParaShoot(QWidget* parent, const char* name, WFlags f) : 34ParaShoot::ParaShoot(QWidget* parent, const char* name, WFlags f) :
35 QMainWindow(parent,name,f), 35 QMainWindow(parent,name,f),
36 canvas(232, 258), 36 canvas(232, 258),
37 cannon(NULL),
38 base(NULL),
39 gamestopped( true ),
40 waitover( false ),
37 fanfare("level_up"), 41 fanfare("level_up"),
38 score(0) 42 score(0)
39{ 43{
40 QPEApplication::grabKeyboard(); 44 QPEApplication::grabKeyboard();
41 QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff ); 45 QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff );
46
47 updatespeed = 80;
42 canvas.setAdvancePeriod(80); 48 canvas.setAdvancePeriod(80);
43 QPixmap bg = Resource::loadPixmap("parashoot/sky");
44 canvas.setBackgroundPixmap(bg);
45 49
46 pb = new QCanvasView(&canvas, this); 50 pb = new QCanvasView(&canvas, this);
47 pb->setFocus(); 51 pb->setFocus();
48 52
49 setToolBarsMovable( FALSE ); 53 setToolBarsMovable( FALSE );
50 54
51 QToolBar* toolbar = new QToolBar(this); 55 QToolBar* toolbar = new QToolBar(this);
52 toolbar->setHorizontalStretchable( TRUE ); 56 toolbar->setHorizontalStretchable( TRUE );
53 57
54 setCaption( tr("ParaShoot") ); 58 setCaption( tr("ParaShoot") );
55 QPixmap newicon = Resource::loadPixmap("parashoot/manicon"); 59 new QToolButton( Resource::loadIconSet("new"), tr("New Game"), 0,
56 setIcon(newicon);
57 new QToolButton(newicon, tr("New Game"), 0,
58 this, SLOT(newGame()), toolbar, "New Game"); 60 this, SLOT(newGame()), toolbar, "New Game");
59 61
60 levelscore = new QLabel(toolbar); 62 levelscore = new QLabel(toolbar);
61 levelscore->setBackgroundMode( PaletteButton ); 63 levelscore->setBackgroundMode( PaletteButton );
62 levelscore->setAlignment( AlignRight | AlignVCenter | ExpandTabs ); 64 levelscore->setAlignment( AlignRight | AlignVCenter | ExpandTabs );
63 toolbar->setStretchableWidget( levelscore ); 65 toolbar->setStretchableWidget( levelscore );
@@ -69,24 +71,48 @@ ParaShoot::ParaShoot(QWidget* parent, const char* name, WFlags f) :
69 connect (autoDropTimer, SIGNAL(timeout()), this, SLOT(play()) ); 71 connect (autoDropTimer, SIGNAL(timeout()), this, SLOT(play()) );
70 72
71 pauseTimer = new QTimer(this); 73 pauseTimer = new QTimer(this);
72 connect(pauseTimer, SIGNAL(timeout()), this, SLOT(wait()) ); 74 connect(pauseTimer, SIGNAL(timeout()), this, SLOT(wait()) );
73 75
74 setFocusPolicy(StrongFocus); 76 setFocusPolicy(StrongFocus);
75
76 newGame();
77} 77}
78 78
79 79
80void ParaShoot::resizeEvent(QResizeEvent *) 80void ParaShoot::resizeEvent(QResizeEvent *)
81{ 81{
82 QSize s = centralWidget()->size(); 82 QSize s = centralWidget()->size();
83 int fw = style().defaultFrameWidth(); 83 int fw = style().defaultFrameWidth();
84 canvas.resize( s.width() - fw - 2, s.height() - fw - 2); 84 canvas.resize( s.width() - fw - 2, s.height() - fw - 2);
85
86 QImage bgimage = Resource::loadImage("parashoot/sky");
87 QPixmap bgpixmap;
88
89 bgpixmap.convertFromImage(bgimage.smoothScale(canvas.width(),
90 canvas.height()), QPixmap::Auto);
91 canvas.setBackgroundPixmap(bgpixmap);
92
93 if (base) {
94 base->reposition();
95 }
96
97 if (cannon) {
98 cannon->reposition();
99 }
85} 100}
86 101
102void ParaShoot::focusOutEvent (QFocusEvent *)
103{
104 if (!gamestopped)
105 canvas.setAdvancePeriod(-1);
106}
107
108void ParaShoot::focusInEvent (QFocusEvent *)
109{
110 if (!gamestopped)
111 canvas.setAdvancePeriod(updatespeed);
112}
87 113
88void ParaShoot::showScore( int score, int level ) 114void ParaShoot::showScore( int score, int level )
89{ 115{
90 levelscore->setText(tr(" Level: %1 Score: %2 ").arg(score).arg(level) ); 116 levelscore->setText(tr(" Level: %1 Score: %2 ").arg(score).arg(level) );
91} 117}
92 118
@@ -147,14 +173,15 @@ void ParaShoot::gameOver()
147 tr( " GAME OVER!\n" 173 tr( " GAME OVER!\n"
148 " Your Score: %1\n" 174 " Your Score: %1\n"
149 " Parachuters Killed: %2\n" 175 " Parachuters Killed: %2\n"
150 " Accuracy: %3% " ).arg(score).arg(shots).arg(shots * 100 / shotsFired ), 176 " Accuracy: %3% " ).arg(score).arg(shots).arg(shots * 100 / shotsFired ),
151 &canvas); 177 &canvas);
152 gameover->setColor(red); 178 gameover->setColor(red);
153 gameover->setFont( QFont("times", 18, QFont::Bold) ); 179 gameover->setFont( QFont("times", 16, QFont::Bold) );
154 gameover->move(canvas.width()/2 -110, canvas.height()/2 -50); 180 gameover->move((canvas.width() - gameover->boundingRect().width()) / 2,
181 (canvas.height() - gameover->boundingRect().height()) / 2);
155 gameover->setZ(500); 182 gameover->setZ(500);
156 gameover->show(); 183 gameover->show();
157 gamestopped = true; 184 gamestopped = true;
158 waitover = false; 185 waitover = false;
159 pauseTimer->start(3000); 186 pauseTimer->start(3000);
160} 187}
@@ -224,27 +251,32 @@ void ParaShoot::keyPressEvent(QKeyEvent* event)
224 } else { 251 } else {
225 switch(event->key()) { 252 switch(event->key()) {
226 case Key_Up: 253 case Key_Up:
227 case Key_F1: 254 case Key_F1:
228 case Key_F9: 255 case Key_F9:
229 case Key_Space: 256 case Key_Space:
257 if ( cannon )
230 cannon->shoot(); 258 cannon->shoot();
231 break; 259 break;
232 case Key_Left: 260 case Key_Left:{
261 if (cannon )
233 cannon->pointCannon(Cannon::Left); 262 cannon->pointCannon(Cannon::Left);
234 lastcannonkey=Key_Left; 263 lastcannonkey=Key_Left;
235 break; 264 break;
236 case Key_Right: 265 }
266 case Key_Right:{
267 if ( cannon )
237 cannon->pointCannon(Cannon::Right); 268 cannon->pointCannon(Cannon::Right);
238 lastcannonkey=Key_Right; 269 lastcannonkey=Key_Right;
239 break; 270 break;
271 }
240 default: 272 default:
241 return; 273 return;
242 } 274 }
243 } 275 }
244} 276}
245 277
246void ParaShoot::keyReleaseEvent(QKeyEvent* event) 278void ParaShoot::keyReleaseEvent(QKeyEvent* event)
247{ 279{
248 if ( lastcannonkey == event->key() ) 280 if ( cannon && lastcannonkey == event->key() )
249 cannon->pointCannon(Cannon::NoDir); 281 cannon->pointCannon(Cannon::NoDir);
250} 282}
diff --git a/noncore/games/parashoot/interface.h b/noncore/games/parashoot/interface.h
index 5abbe0b..dd73f53 100644
--- a/noncore/games/parashoot/interface.h
+++ b/noncore/games/parashoot/interface.h
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -19,13 +19,13 @@
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "cannon.h" 21#include "cannon.h"
22#include "base.h" 22#include "base.h"
23#include "helicopter.h" 23#include "helicopter.h"
24 24
25#include <qpe/sound.h> 25#include <qtopia/sound.h>
26 26
27#include <qmainwindow.h> 27#include <qmainwindow.h>
28#include <qtimer.h> 28#include <qtimer.h>
29#include <qlabel.h> 29#include <qlabel.h>
30 30
31class QCanvas; 31class QCanvas;
@@ -35,25 +35,28 @@ class Helicopter;
35// left, right, up, down }; 35// left, right, up, down };
36 36
37class ParaShoot : public QMainWindow { 37class ParaShoot : public QMainWindow {
38 Q_OBJECT 38 Q_OBJECT
39 39
40public: 40public:
41 static QString appName() { return QString::fromLatin1("parashoot"); }
42 ParaShoot(QWidget* parent=0, const char* name=0, WFlags f=0); 41 ParaShoot(QWidget* parent=0, const char* name=0, WFlags f=0);
43 42 static QString appName() {
43 return QString::fromLatin1("parashoot");
44 }
44 void clear(); 45 void clear();
45 void gameOver(); 46 void gameOver();
46 int mancount; 47 int mancount;
47 void levelUp(); 48 void levelUp();
48 void moveFaster(); 49 void moveFaster();
49 50
50protected: 51protected:
51 virtual void keyPressEvent(QKeyEvent*); 52 virtual void keyPressEvent(QKeyEvent*);
52 virtual void keyReleaseEvent(QKeyEvent*); 53 virtual void keyReleaseEvent(QKeyEvent*);
53 virtual void resizeEvent(QResizeEvent *e); 54 virtual void resizeEvent(QResizeEvent *e);
55 virtual void focusOutEvent(QFocusEvent *);
56 virtual void focusInEvent(QFocusEvent *);
54 57
55private slots: 58private slots:
56 void increaseScore(int); 59 void increaseScore(int);
57 void newGame(); 60 void newGame();
58 void play(); 61 void play();
59 void wait(); 62 void wait();
@@ -61,13 +64,12 @@ private slots:
61private: 64private:
62 void showScore( int score, int level ); 65 void showScore( int score, int level );
63 QCanvasView* pb; 66 QCanvasView* pb;
64 QCanvas canvas; 67 QCanvas canvas;
65 Cannon* cannon; 68 Cannon* cannon;
66 Base* base; 69 Base* base;
67 QCanvasText* gameover;
68 QLabel* levelscore; 70 QLabel* levelscore;
69 int nomen; 71 int nomen;
70 int level; 72 int level;
71 int oldscore; 73 int oldscore;
72 int updatespeed; 74 int updatespeed;
73 QTimer* autoDropTimer; 75 QTimer* autoDropTimer;
diff --git a/noncore/games/parashoot/man.cpp b/noncore/games/parashoot/man.cpp
index 8435572..94807c2 100644
--- a/noncore/games/parashoot/man.cpp
+++ b/noncore/games/parashoot/man.cpp
@@ -1,10 +1,10 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
@@ -19,21 +19,21 @@
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "codes.h" 21#include "codes.h"
22#include "man.h" 22#include "man.h"
23#include "base.h" 23#include "base.h"
24 24
25#include <qpe/resource.h> 25#include <qtopia/resource.h>
26 26
27#include <qregexp.h> 27#include <qregexp.h>
28 28
29int mancount; 29int mancount;
30 30
31Man::Man(QCanvas* canvas) : 31Man::Man(QCanvas* canvas) :
32 QCanvasSprite(0, canvas), 32 QCanvasSprite(0, canvas),
33 splat("lose") 33 splat("lose") // No tr
34{ 34{
35 manarray = new QCanvasPixmapArray(); 35 manarray = new QCanvasPixmapArray();
36 QString m0 = Resource::findPixmap("parashoot/man0001"); 36 QString m0 = Resource::findPixmap("parashoot/man0001");
37 m0.replace(QRegExp("0001"),"%1"); 37 m0.replace(QRegExp("0001"),"%1");
38 manarray->readPixmaps(m0, 7); 38 manarray->readPixmaps(m0, 7);
39 setSequence(manarray); 39 setSequence(manarray);
@@ -42,13 +42,13 @@ Man::Man(QCanvas* canvas) :
42 dead = false; 42 dead = false;
43 start(); 43 start();
44} 44}
45 45
46Man::Man(QCanvas* canvas, int x, int y) : 46Man::Man(QCanvas* canvas, int x, int y) :
47 QCanvasSprite(0, canvas), 47 QCanvasSprite(0, canvas),
48 splat("bang") 48 splat("bang") // No tr
49{ 49{
50 manarray = new QCanvasPixmapArray(); 50 manarray = new QCanvasPixmapArray();
51 QString m0 = Resource::findPixmap("parashoot/man0001"); 51 QString m0 = Resource::findPixmap("parashoot/man0001");
52 m0.replace(QString("0001"),"%1"); 52 m0.replace(QString("0001"),"%1");
53 manarray->readPixmaps(m0, 7); 53 manarray->readPixmaps(m0, 7);
54 setSequence(manarray); 54 setSequence(manarray);
@@ -89,12 +89,19 @@ void Man::advance(int phase)
89 } 89 }
90 if (y() > canvas()->height()-43) { 90 if (y() > canvas()->height()-43) {
91 setFrame(f%5); 91 setFrame(f%5);
92 f++; 92 f++;
93 move(x(), canvas()->height()-26); 93 move(x(), canvas()->height()-26);
94 setVelocity(-2, 0); 94 setVelocity(-2, 0);
95 } else if (xVelocity() == -2) {
96 //
97 // There's been a resize event while this Man has
98 // been on the ground. Move the man back to the
99 // new ground location. This is not neat.
100 //
101 move(x(), canvas()->height()-26);
95 } 102 }
96 } 103 }
97} 104}
98 105
99void Man::setInitialCoords() 106void Man::setInitialCoords()
100{ 107{
@@ -120,12 +127,22 @@ void Man::checkCollision()
120 Base* base = (Base*) item; 127 Base* base = (Base*) item;
121 base->damageBase(); 128 base->damageBase();
122 start(); 129 start();
123 } 130 }
124 } 131 }
125 } 132 }
133
134 //
135 // resize events may cause Man objects to appear
136 // outside the screen. Get rid of them if this
137 // is the case.
138 //
139 if ((x() < 0) || (x() > canvas()->width())) {
140 delete this;
141 return;
142 }
126} 143}
127 144
128void Man::start() 145void Man::start()
129{ 146{
130 setInitialCoords(); 147 setInitialCoords();
131 move(dx, dy); 148 move(dx, dy);