summaryrefslogtreecommitdiff
authorchicken <chicken>2004-03-01 20:30:56 (UTC)
committer chicken <chicken>2004-03-01 20:30:56 (UTC)
commit7b0bdb05e4ae29b2643d73e3b8f20a86a86dcccc (patch) (unidiff)
tree0ec283bce345770910a2630e868afcde3d7c3dc9
parent054b3c3e032bdb0a6061a3345487b4ff877eebfd (diff)
downloadopie-7b0bdb05e4ae29b2643d73e3b8f20a86a86dcccc.zip
opie-7b0bdb05e4ae29b2643d73e3b8f20a86a86dcccc.tar.gz
opie-7b0bdb05e4ae29b2643d73e3b8f20a86a86dcccc.tar.bz2
fix includes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/backgammon/backgammon.cpp3
-rw-r--r--noncore/games/backgammon/filedialog.cpp4
-rw-r--r--noncore/games/backgammon/main.cpp1
-rw-r--r--noncore/games/backgammon/moveengine.cpp1
-rw-r--r--noncore/games/backgammon/themedialog.cpp2
-rw-r--r--noncore/games/bounce/game.cpp1
-rw-r--r--noncore/games/bounce/kbounce.cpp4
-rw-r--r--noncore/games/bounce/main.cpp1
-rw-r--r--noncore/games/buzzword/buzzword.cpp1
-rw-r--r--noncore/games/buzzword/main.cpp1
-rw-r--r--noncore/games/fifteen/fifteen.cpp5
-rw-r--r--noncore/games/go/gowidget.cpp4
-rw-r--r--noncore/games/go/main.cpp1
-rw-r--r--noncore/games/kbill/MCursor.cc5
-rw-r--r--noncore/games/kbill/Picture.cc2
-rw-r--r--noncore/games/kbill/UI.cpp3
-rw-r--r--noncore/games/kbill/field.cpp1
-rw-r--r--noncore/games/kbill/inputbox.cpp1
-rw-r--r--noncore/games/kbill/kbill.cpp4
-rw-r--r--noncore/games/kcheckers/kcheckers.cpp1
-rw-r--r--noncore/games/kcheckers/main.cpp2
-rw-r--r--noncore/games/kpacman/board.cpp3
-rw-r--r--noncore/games/kpacman/keys.cpp5
-rw-r--r--noncore/games/kpacman/kpacman.cpp5
-rw-r--r--noncore/games/kpacman/kpacmanwidget.cpp5
-rw-r--r--noncore/games/kpacman/monster.cpp1
-rw-r--r--noncore/games/kpacman/pacman.cpp1
-rw-r--r--noncore/games/kpacman/painter.cpp10
-rw-r--r--noncore/games/kpacman/referee.cpp9
-rw-r--r--noncore/games/kpacman/score.cpp6
-rw-r--r--noncore/games/kpacman/status.cpp2
-rw-r--r--noncore/games/mindbreaker/mindbreaker.cpp4
-rw-r--r--noncore/games/minesweep/main.cpp1
-rw-r--r--noncore/games/minesweep/minefield.cpp4
-rw-r--r--noncore/games/minesweep/minesweep.cpp5
-rw-r--r--noncore/games/oyatzee/oyatzee.cpp6
-rw-r--r--noncore/games/parashoot/base.cpp2
-rw-r--r--noncore/games/parashoot/cannon.cpp1
-rw-r--r--noncore/games/parashoot/helicopter.cpp1
-rw-r--r--noncore/games/parashoot/interface.cpp4
-rw-r--r--noncore/games/parashoot/main.cpp1
-rw-r--r--noncore/games/parashoot/man.cpp1
-rw-r--r--noncore/games/qasteroids/main.cpp1
-rw-r--r--noncore/games/qasteroids/toplevel.cpp2
-rw-r--r--noncore/games/qasteroids/view.cpp3
-rw-r--r--noncore/games/sfcave/helpwindow.cpp2
-rw-r--r--noncore/games/snake/interface.cpp4
-rw-r--r--noncore/games/snake/main.cpp1
-rw-r--r--noncore/games/snake/snake.cpp2
-rw-r--r--noncore/games/solitaire/canvascard.cpp5
-rw-r--r--noncore/games/solitaire/canvascardgame.cpp8
-rw-r--r--noncore/games/solitaire/canvascardwindow.cpp5
-rw-r--r--noncore/games/solitaire/canvasshapes.cpp2
-rw-r--r--noncore/games/solitaire/card.cpp3
-rw-r--r--noncore/games/solitaire/cardpile.cpp2
-rw-r--r--noncore/games/solitaire/chicanecardgame.cpp1
-rw-r--r--noncore/games/solitaire/freecellcardgame.cpp1
-rw-r--r--noncore/games/solitaire/harpcardgame.cpp1
-rw-r--r--noncore/games/solitaire/main.cpp1
-rw-r--r--noncore/games/solitaire/patiencecardgame.cpp1
-rw-r--r--noncore/games/solitaire/teeclubcardgame.cpp1
-rw-r--r--noncore/games/tetrix/main.cpp1
-rw-r--r--noncore/games/tetrix/ohighscoredlg.cpp3
-rw-r--r--noncore/games/tetrix/qtetrix.cpp3
-rw-r--r--noncore/games/tetrix/qtetrixb.cpp2
-rw-r--r--noncore/games/tictac/main.cpp1
-rw-r--r--noncore/games/tictac/tictac.cpp4
-rw-r--r--noncore/games/wordgame/main.cpp1
-rw-r--r--noncore/games/wordgame/wordgame.cpp9
-rw-r--r--noncore/games/zlines/ballpainter.cpp3
-rw-r--r--noncore/games/zlines/field.cpp1
-rw-r--r--noncore/games/zlines/klines.cpp9
-rw-r--r--noncore/games/zlines/linesboard.cpp3
-rw-r--r--noncore/games/zlines/main.cpp1
-rw-r--r--noncore/games/zlines/mwidget.cpp1
-rw-r--r--noncore/games/zsame/StoneWidget.cpp5
-rw-r--r--noncore/games/zsame/ZSameWidget.cpp7
77 files changed, 2 insertions, 223 deletions
diff --git a/noncore/games/backgammon/backgammon.cpp b/noncore/games/backgammon/backgammon.cpp
index e9e5467..51020a0 100644
--- a/noncore/games/backgammon/backgammon.cpp
+++ b/noncore/games/backgammon/backgammon.cpp
@@ -1,207 +1,204 @@
1#include "backgammon.h" 1#include "backgammon.h"
2 2
3#include "aidialog.h" 3#include "aidialog.h"
4#include "filedialog.h" 4#include "filedialog.h"
5#include "playerdialog.h" 5#include "playerdialog.h"
6#include "rulesdialog.h" 6#include "rulesdialog.h"
7#include "themedialog.h" 7#include "themedialog.h"
8 8
9#include <qdatetime.h>
10#include <qfile.h> 9#include <qfile.h>
11#include <qlayout.h> 10#include <qlayout.h>
12#include <qmessagebox.h> 11#include <qmessagebox.h>
13#include <qstring.h>
14#include <qtimer.h> 12#include <qtimer.h>
15#include <qmainwindow.h>
16#include <qpe/qpeapplication.h> 13#include <qpe/qpeapplication.h>
17#include <qpe/config.h> 14#include <qpe/config.h>
18#include <qmenubar.h> 15#include <qmenubar.h>
19#include <qpe/resource.h> 16#include <qpe/resource.h>
20 17
21#include <stdlib.h> 18#include <stdlib.h>
22 19
23 20
24BackGammon::BackGammon(QWidget* parent, const char* name, WFlags fl) 21BackGammon::BackGammon(QWidget* parent, const char* name, WFlags fl)
25 : QMainWindow(parent, name, fl) 22 : QMainWindow(parent, name, fl)
26{ 23{
27 if (!name) setName("BackGammon"); 24 if (!name) setName("BackGammon");
28 setCaption(tr( "Backgammon") ); 25 setCaption(tr( "Backgammon") );
29 setIcon( Resource::loadPixmap( "backgammon" ) ); 26 setIcon( Resource::loadPixmap( "backgammon" ) );
30 //general counter varaible 27 //general counter varaible
31 int a=0; 28 int a=0;
32 //the game engine 29 //the game engine
33 move=new MoveEngine(); 30 move=new MoveEngine();
34 31
35 //load the default theme 32 //load the default theme
36 Config conf("backgammon"); 33 Config conf("backgammon");
37 if(!conf.isValid()) 34 if(!conf.isValid())
38 { 35 {
39 qDebug("config file does not exist"); 36 qDebug("config file does not exist");
40 conf.setGroup("general"); 37 conf.setGroup("general");
41 conf.writeEntry("theme","default"); 38 conf.writeEntry("theme","default");
42 conf.setGroup("rules"); 39 conf.setGroup("rules");
43 conf.writeEntry("move_with_pieces_out",false); 40 conf.writeEntry("move_with_pieces_out",false);
44 conf.writeEntry("nice_dice",false); 41 conf.writeEntry("nice_dice",false);
45 conf.setGroup("display"); 42 conf.setGroup("display");
46 conf.writeEntry("small",false); 43 conf.writeEntry("small",false);
47 conf.writeEntry("warning",true); 44 conf.writeEntry("warning",true);
48 conf.setGroup("ai"); 45 conf.setGroup("ai");
49 conf.writeEntry("rescue",6); 46 conf.writeEntry("rescue",6);
50 conf.writeEntry("eliminate",4); 47 conf.writeEntry("eliminate",4);
51 conf.writeEntry("expose",1); 48 conf.writeEntry("expose",1);
52 conf.writeEntry("protect",5); 49 conf.writeEntry("protect",5);
53 conf.writeEntry("safe",3); 50 conf.writeEntry("safe",3);
54 conf.writeEntry("empty",2); 51 conf.writeEntry("empty",2);
55 52
56 } 53 }
57 conf.setGroup("general"); 54 conf.setGroup("general");
58 theme_name=conf.readEntry("theme","default"); 55 theme_name=conf.readEntry("theme","default");
59 QString theme_file=QPEApplication::qpeDir()+"/backgammon/"+theme_name+".theme"; 56 QString theme_file=QPEApplication::qpeDir()+"/backgammon/"+theme_name+".theme";
60 57
61 //the rules 58 //the rules
62 conf.setGroup("rules"); 59 conf.setGroup("rules");
63 rules.move_with_pieces_out=conf.readBoolEntry("move_with_pieces_out",false); 60 rules.move_with_pieces_out=conf.readBoolEntry("move_with_pieces_out",false);
64 rules.generous_dice=conf.readBoolEntry("nice_dice",false); 61 rules.generous_dice=conf.readBoolEntry("nice_dice",false);
65 62
66 move->setRules(rules); 63 move->setRules(rules);
67 64
68 //get the AI settings 65 //get the AI settings
69 AISettings ai; 66 AISettings ai;
70 conf.setGroup("ai"); 67 conf.setGroup("ai");
71 ai.rescue=conf.readNumEntry("rescue",6); 68 ai.rescue=conf.readNumEntry("rescue",6);
72 ai.eliminate=conf.readNumEntry("eliminate",4); 69 ai.eliminate=conf.readNumEntry("eliminate",4);
73 ai.expose=conf.readNumEntry("expose",1); 70 ai.expose=conf.readNumEntry("expose",1);
74 ai.protect=conf.readNumEntry("protect",5); 71 ai.protect=conf.readNumEntry("protect",5);
75 ai.safe=conf.readNumEntry("safe",3); 72 ai.safe=conf.readNumEntry("safe",3);
76 ai.empty=conf.readNumEntry("empty",2); 73 ai.empty=conf.readNumEntry("empty",2);
77 move->setAISettings(ai); 74 move->setAISettings(ai);
78 75
79 76
80 //get the theme component names 77 //get the theme component names
81 Config theme(theme_file,Config::File); 78 Config theme(theme_file,Config::File);
82 if(!theme.isValid()) 79 if(!theme.isValid())
83 { 80 {
84 qDebug("theme file does not exist"); 81 qDebug("theme file does not exist");
85 theme.setGroup("theme"); 82 theme.setGroup("theme");
86 theme.writeEntry("board","casino_board_1"); 83 theme.writeEntry("board","casino_board_1");
87 theme.writeEntry("pieces1","casino_pieces_blue"); 84 theme.writeEntry("pieces1","casino_pieces_blue");
88 theme.writeEntry("pieces2","casino_pieces_white"); 85 theme.writeEntry("pieces2","casino_pieces_white");
89 theme.writeEntry("dice1","casino_dice"); 86 theme.writeEntry("dice1","casino_dice");
90 theme.writeEntry("dice2","casino_dice"); 87 theme.writeEntry("dice2","casino_dice");
91 theme.writeEntry("table","casino_table_green"); 88 theme.writeEntry("table","casino_table_green");
92 theme.writeEntry("odds","casino_odds"); 89 theme.writeEntry("odds","casino_odds");
93 } 90 }
94 theme.setGroup("theme"); 91 theme.setGroup("theme");
95 board_name=theme.readEntry("board","casino_board_1"); 92 board_name=theme.readEntry("board","casino_board_1");
96 piecesA_name=theme.readEntry("pieces1","casino_pieces_blue"); 93 piecesA_name=theme.readEntry("pieces1","casino_pieces_blue");
97 piecesB_name=theme.readEntry("pieces2","casino_pieces_white"); 94 piecesB_name=theme.readEntry("pieces2","casino_pieces_white");
98 diceA_name=theme.readEntry("dice1","casino_dice"); 95 diceA_name=theme.readEntry("dice1","casino_dice");
99 diceB_name=theme.readEntry("dice2","casino_dice"); 96 diceB_name=theme.readEntry("dice2","casino_dice");
100 table_name=theme.readEntry("table","casino_table_green"); 97 table_name=theme.readEntry("table","casino_table_green");
101 odds_name=theme.readEntry("odds","casino_odds"); 98 odds_name=theme.readEntry("odds","casino_odds");
102 99
103 100
104 //the menu 101 //the menu
105 QMenuBar* menuBar = new QMenuBar(this); 102 QMenuBar* menuBar = new QMenuBar(this);
106 103
107 QPopupMenu* gamemenu= new QPopupMenu(this); 104 QPopupMenu* gamemenu= new QPopupMenu(this);
108 gamemenu->insertItem(tr( "New" ),this,SLOT(newgame())); 105 gamemenu->insertItem(tr( "New" ),this,SLOT(newgame()));
109 gamemenu->insertSeparator(); 106 gamemenu->insertSeparator();
110 gamemenu->insertItem(tr( "Load" ),this,SLOT(loadgame())); 107 gamemenu->insertItem(tr( "Load" ),this,SLOT(loadgame()));
111 gamemenu->insertItem(tr( "Save" ),this,SLOT(savegame())); 108 gamemenu->insertItem(tr( "Save" ),this,SLOT(savegame()));
112 gamemenu->insertSeparator(); 109 gamemenu->insertSeparator();
113 gamemenu->insertItem(tr( "Delete" ),this,SLOT(deletegame())); 110 gamemenu->insertItem(tr( "Delete" ),this,SLOT(deletegame()));
114 menuBar->insertItem(tr( "Game" ),gamemenu); 111 menuBar->insertItem(tr( "Game" ),gamemenu);
115 112
116 QPopupMenu* thememenu= new QPopupMenu(this); 113 QPopupMenu* thememenu= new QPopupMenu(this);
117 thememenu->insertItem(tr( "New" ),this,SLOT(newtheme())); 114 thememenu->insertItem(tr( "New" ),this,SLOT(newtheme()));
118 thememenu->insertSeparator(); 115 thememenu->insertSeparator();
119 thememenu->insertItem(tr( "Load"),this,SLOT(loadtheme())); 116 thememenu->insertItem(tr( "Load"),this,SLOT(loadtheme()));
120 thememenu->insertItem(tr( "Save" ),this,SLOT(savetheme())); 117 thememenu->insertItem(tr( "Save" ),this,SLOT(savetheme()));
121 thememenu->insertSeparator(); 118 thememenu->insertSeparator();
122 thememenu->insertItem(tr( "Default"),this,SLOT(themedefault())); 119 thememenu->insertItem(tr( "Default"),this,SLOT(themedefault()));
123 thememenu->insertItem(tr( "Delete" ),this,SLOT(deletetheme())); 120 thememenu->insertItem(tr( "Delete" ),this,SLOT(deletetheme()));
124 menuBar->insertItem(tr( "Theme" ),thememenu); 121 menuBar->insertItem(tr( "Theme" ),thememenu);
125 122
126 QPopupMenu* optionmenu=new QPopupMenu(this); 123 QPopupMenu* optionmenu=new QPopupMenu(this);
127 optionmenu->insertItem(tr( "Player" ),this,SLOT(playerselect())); 124 optionmenu->insertItem(tr( "Player" ),this,SLOT(playerselect()));
128 optionmenu->insertSeparator(); 125 optionmenu->insertSeparator();
129 optionmenu->insertItem(tr( "AI" ),this,SLOT(modify_AI())); 126 optionmenu->insertItem(tr( "AI" ),this,SLOT(modify_AI()));
130 optionmenu->insertItem(tr( "Rules" ),this,SLOT(setrules())); 127 optionmenu->insertItem(tr( "Rules" ),this,SLOT(setrules()));
131 menuBar->insertItem(tr( "Options"),optionmenu); 128 menuBar->insertItem(tr( "Options"),optionmenu);
132 129
133 QWidget* mainarea=new QWidget(this); 130 QWidget* mainarea=new QWidget(this);
134 setCentralWidget(mainarea); 131 setCentralWidget(mainarea);
135 //the main area 132 //the main area
136 QBoxLayout* layout=new QBoxLayout(mainarea,QBoxLayout::TopToBottom); 133 QBoxLayout* layout=new QBoxLayout(mainarea,QBoxLayout::TopToBottom);
137 area=new QCanvas(235,235); 134 area=new QCanvas(235,235);
138 boardview=new BackGammonView(area,mainarea); 135 boardview=new BackGammonView(area,mainarea);
139 boardview->setMaximumHeight(240); 136 boardview->setMaximumHeight(240);
140 layout->addWidget(boardview); 137 layout->addWidget(boardview);
141 connect(boardview,SIGNAL(mouse(int,int)),this,SLOT(mouse(int,int))); 138 connect(boardview,SIGNAL(mouse(int,int)),this,SLOT(mouse(int,int)));
142 //status bar 139 //status bar
143 message=new QLabel("<b>Backgammon</b>",mainarea); 140 message=new QLabel("<b>Backgammon</b>",mainarea);
144 message->setAlignment(AlignHCenter); 141 message->setAlignment(AlignHCenter);
145 layout->addWidget(message); 142 layout->addWidget(message);
146 143
147 //the marker 144 //the marker
148 marker_current=new QCanvasRectangle(area); 145 marker_current=new QCanvasRectangle(area);
149 marker_current->setBrush(QColor(0,0,255)); 146 marker_current->setBrush(QColor(0,0,255));
150 marker_current->setSize(15,5); 147 marker_current->setSize(15,5);
151 marker_current->setZ(1); 148 marker_current->setZ(1);
152 149
153 for(a=0;a<4;a++) 150 for(a=0;a<4;a++)
154 { 151 {
155 marker_next[a]=new QCanvasRectangle(area); 152 marker_next[a]=new QCanvasRectangle(area);
156 marker_next[a]->setBrush(QColor(0,255,0)); 153 marker_next[a]->setBrush(QColor(0,255,0));
157 marker_next[a]->setSize(15,5); 154 marker_next[a]->setSize(15,5);
158 marker_next[a]->setZ(1); 155 marker_next[a]->setZ(1);
159 } 156 }
160 157
161 connect(move,SIGNAL(done_dice1()),this,SLOT(done_dice1())); 158 connect(move,SIGNAL(done_dice1()),this,SLOT(done_dice1()));
162 connect(move,SIGNAL(done_dice2()),this,SLOT(done_dice2())); 159 connect(move,SIGNAL(done_dice2()),this,SLOT(done_dice2()));
163 connect(move,SIGNAL(done_dice3()),this,SLOT(done_dice3())); 160 connect(move,SIGNAL(done_dice3()),this,SLOT(done_dice3()));
164 connect(move,SIGNAL(done_dice4()),this,SLOT(done_dice4())); 161 connect(move,SIGNAL(done_dice4()),this,SLOT(done_dice4()));
165 connect(move,SIGNAL(nomove()),this,SLOT(nomove())); 162 connect(move,SIGNAL(nomove()),this,SLOT(nomove()));
166 connect(move,SIGNAL(player_finished(int)),this,SLOT(finished(int))); 163 connect(move,SIGNAL(player_finished(int)),this,SLOT(finished(int)));
167 164
168 //the pieces 165 //the pieces
169 p1=new CanvasImageItem*[15]; 166 p1=new CanvasImageItem*[15];
170 p1_side=new CanvasImageItem*[15]; 167 p1_side=new CanvasImageItem*[15];
171 QImage piece_1_all(Resource::loadImage("backgammon/pieces/"+piecesA_name)); 168 QImage piece_1_all(Resource::loadImage("backgammon/pieces/"+piecesA_name));
172 QImage piece_1_front=piece_1_all.copy(0,0,15,15); 169 QImage piece_1_front=piece_1_all.copy(0,0,15,15);
173 QImage piece_1_side=piece_1_all.copy(0,15,15,5); 170 QImage piece_1_side=piece_1_all.copy(0,15,15,5);
174 171
175 p2=new CanvasImageItem*[15]; 172 p2=new CanvasImageItem*[15];
176 p2_side=new CanvasImageItem*[15]; 173 p2_side=new CanvasImageItem*[15];
177 QImage piece_2_all(Resource::loadImage("backgammon/pieces/"+piecesB_name)); 174 QImage piece_2_all(Resource::loadImage("backgammon/pieces/"+piecesB_name));
178 QImage piece_2_front=piece_2_all.copy(0,0,15,15); 175 QImage piece_2_front=piece_2_all.copy(0,0,15,15);
179 QImage piece_2_side=piece_2_all.copy(0,15,15,5); 176 QImage piece_2_side=piece_2_all.copy(0,15,15,5);
180 177
181 178
182 for(a=0;a<15;a++) 179 for(a=0;a<15;a++)
183 { 180 {
184 p1[a]=new CanvasImageItem(piece_1_front,area); 181 p1[a]=new CanvasImageItem(piece_1_front,area);
185 p1[a]->setSize(15,15); 182 p1[a]->setSize(15,15);
186 p1_side[a]=new CanvasImageItem(piece_1_side,area); 183 p1_side[a]=new CanvasImageItem(piece_1_side,area);
187 p1_side[a]->setSize(15,5); 184 p1_side[a]->setSize(15,5);
188 185
189 p2[a]=new CanvasImageItem(piece_2_front,area); 186 p2[a]=new CanvasImageItem(piece_2_front,area);
190 p2[a]->setSize(15,15); 187 p2[a]->setSize(15,15);
191 p2_side[a]=new CanvasImageItem(piece_2_side,area); 188 p2_side[a]=new CanvasImageItem(piece_2_side,area);
192 p2_side[a]->setSize(15,5); 189 p2_side[a]->setSize(15,5);
193 } 190 }
194 draw(); 191 draw();
195 192
196 //the dice 193 //the dice
197 QImage dicebgA_all(Resource::loadImage("backgammon/dice/"+diceA_name)); 194 QImage dicebgA_all(Resource::loadImage("backgammon/dice/"+diceA_name));
198 diceA1=new CanvasImageItem*[7]; 195 diceA1=new CanvasImageItem*[7];
199 diceA2=new CanvasImageItem*[7]; 196 diceA2=new CanvasImageItem*[7];
200 QImage dicebgB_all(Resource::loadImage("backgammon/dice/"+diceB_name)); 197 QImage dicebgB_all(Resource::loadImage("backgammon/dice/"+diceB_name));
201 diceB1=new CanvasImageItem*[7]; 198 diceB1=new CanvasImageItem*[7];
202 diceB2=new CanvasImageItem*[7]; 199 diceB2=new CanvasImageItem*[7];
203 QImage oddsbg_all=(Resource::loadImage("backgammon/odds/"+odds_name)); 200 QImage oddsbg_all=(Resource::loadImage("backgammon/odds/"+odds_name));
204 //oddsDice=new CanvasImageItem*[6]; 201 //oddsDice=new CanvasImageItem*[6];
205 202
206 203
207 for(a=0;a<7;a++) 204 for(a=0;a<7;a++)
diff --git a/noncore/games/backgammon/filedialog.cpp b/noncore/games/backgammon/filedialog.cpp
index a5e71c9..e0a2914 100644
--- a/noncore/games/backgammon/filedialog.cpp
+++ b/noncore/games/backgammon/filedialog.cpp
@@ -1,65 +1,61 @@
1#include "filedialog.h" 1#include "filedialog.h"
2 2
3#include <qdir.h> 3#include <qdir.h>
4#include <qfileinfo.h>
5#include <qmessagebox.h>
6#include <qpixmap.h>
7#include <qpushbutton.h>
8#include <qpe/qpeapplication.h> 4#include <qpe/qpeapplication.h>
9 5
10FileDialog::FileDialog(QWidget* parent,QString header,QString extension,const char* name,bool modal,WFlags f) 6FileDialog::FileDialog(QWidget* parent,QString header,QString extension,const char* name,bool modal,WFlags f)
11 :QDialog(parent,name,modal,f) 7 :QDialog(parent,name,modal,f)
12{ 8{
13 setCaption(header); 9 setCaption(header);
14 ext=extension; 10 ext=extension;
15 dirselector=new QListView(this); 11 dirselector=new QListView(this);
16 dirselector->setGeometry(1,10,235,200); 12 dirselector->setGeometry(1,10,235,200);
17 dirselector->addColumn("Files"); 13 dirselector->addColumn("Files");
18 connect(dirselector,SIGNAL(clicked(QListViewItem*)),this,SLOT(selectorclicked(QListViewItem*))); 14 connect(dirselector,SIGNAL(clicked(QListViewItem*)),this,SLOT(selectorclicked(QListViewItem*)));
19 15
20 getCurrentDir(); 16 getCurrentDir();
21 17
22 file_name="user"; 18 file_name="user";
23 fileinput=new QLineEdit(file_name,this); 19 fileinput=new QLineEdit(file_name,this);
24 fileinput->setGeometry(1,220,235,20); 20 fileinput->setGeometry(1,220,235,20);
25 21
26 QPEApplication::showDialog( this ); 22 QPEApplication::showDialog( this );
27} 23}
28 24
29FileDialog::~FileDialog() 25FileDialog::~FileDialog()
30{} 26{}
31 27
32 28
33void FileDialog::selectorclicked(QListViewItem* entry) 29void FileDialog::selectorclicked(QListViewItem* entry)
34{ 30{
35 if(entry==NULL) 31 if(entry==NULL)
36 return; 32 return;
37 file_name=entry->text(0); 33 file_name=entry->text(0);
38 fileinput->setText(file_name); 34 fileinput->setText(file_name);
39} 35}
40 36
41void FileDialog::getCurrentDir() 37void FileDialog::getCurrentDir()
42{ 38{
43 dirselector->clear(); 39 dirselector->clear();
44 QDir dir(QPEApplication::qpeDir()+"/backgammon"); 40 QDir dir(QPEApplication::qpeDir()+"/backgammon");
45 dir.setFilter(QDir::Files); 41 dir.setFilter(QDir::Files);
46 QFileInfoListIterator it(*(dir.entryInfoList())); 42 QFileInfoListIterator it(*(dir.entryInfoList()));
47 QFileInfo* fi; 43 QFileInfo* fi;
48 44
49 int ext_length=ext.length(); 45 int ext_length=ext.length();
50 while((fi=it.current())) // go through all file and subdirs 46 while((fi=it.current())) // go through all file and subdirs
51 { 47 {
52 QString file=fi->fileName(); 48 QString file=fi->fileName();
53 if(file.right(ext_length)==ext && file) 49 if(file.right(ext_length)==ext && file)
54 { 50 {
55 file=file.left(file.length()-ext_length); 51 file=file.left(file.length()-ext_length);
56 new QListViewItem(dirselector,file); 52 new QListViewItem(dirselector,file);
57 } 53 }
58 ++it; 54 ++it;
59 } 55 }
60} 56}
61 57
62QString FileDialog::filename() 58QString FileDialog::filename()
63{ 59{
64 return file_name; 60 return file_name;
65} 61}
diff --git a/noncore/games/backgammon/main.cpp b/noncore/games/backgammon/main.cpp
index 58ced10..6316040 100644
--- a/noncore/games/backgammon/main.cpp
+++ b/noncore/games/backgammon/main.cpp
@@ -1,8 +1,7 @@
1#include <qpe/qpeapplication.h>
2#include "backgammon.h" 1#include "backgammon.h"
3 2
4#include <opie/oapplicationfactory.h> 3#include <opie/oapplicationfactory.h>
5 4
6OPIE_EXPORT_APP( OApplicationFactory<BackGammon> ) 5OPIE_EXPORT_APP( OApplicationFactory<BackGammon> )
7 6
8 7
diff --git a/noncore/games/backgammon/moveengine.cpp b/noncore/games/backgammon/moveengine.cpp
index 37b73a6..7de7147 100644
--- a/noncore/games/backgammon/moveengine.cpp
+++ b/noncore/games/backgammon/moveengine.cpp
@@ -1,195 +1,194 @@
1#include "moveengine.h" 1#include "moveengine.h"
2 2
3#include <qmessagebox.h>
4#include <qtimer.h> 3#include <qtimer.h>
5#include <stdlib.h> 4#include <stdlib.h>
6 5
7MoveEngine::MoveEngine() 6MoveEngine::MoveEngine()
8 : QObject() 7 : QObject()
9{ 8{
10 int offset=7; 9 int offset=7;
11 int a=0; //counter variable 10 int a=0; //counter variable
12 int xfill[]={210,185,170,155,140,125,110,85,70,55,40,25,10,10,25,40,55,70,85,110,125,140,155,170,185,210}; 11 int xfill[]={210,185,170,155,140,125,110,85,70,55,40,25,10,10,25,40,55,70,85,110,125,140,155,170,185,210};
13 for(a=0;a<26;a++) 12 for(a=0;a<26;a++)
14 { 13 {
15 x_coord[a]=xfill[a]; 14 x_coord[a]=xfill[a];
16 } 15 }
17 16
18 int yfill[]={10,25,40,55,70,10+offset,25+offset,40+offset,55+offset,25,40,55, 25+offset,40+offset,40}; 17 int yfill[]={10,25,40,55,70,10+offset,25+offset,40+offset,55+offset,25,40,55, 25+offset,40+offset,40};
19 int zfill[]={1,1,1,1,1,2,2,2,2,3,3,3,4,4,5}; 18 int zfill[]={1,1,1,1,1,2,2,2,2,3,3,3,4,4,5};
20 for(a=0;a<15;a++) 19 for(a=0;a<15;a++)
21 { 20 {
22 yup_coord[a]=yfill[a]; 21 yup_coord[a]=yfill[a];
23 ylow_coord[a]=185-(yfill[a]); 22 ylow_coord[a]=185-(yfill[a]);
24 z_coord[a]=zfill[a]; 23 z_coord[a]=zfill[a];
25 } 24 }
26 for(a=0;a<5;a++) 25 for(a=0;a<5;a++)
27 { 26 {
28 if(a<3) 27 if(a<3)
29 { 28 {
30 x_fin1[a]=65+a*15; 29 x_fin1[a]=65+a*15;
31 x_fin2[a]=155-a*15; 30 x_fin2[a]=155-a*15;
32 } 31 }
33 y_fin[a]=225-a*5; 32 y_fin[a]=225-a*5;
34 } 33 }
35 z_fin=1; 34 z_fin=1;
36 35
37 reset(); 36 reset();
38} 37}
39 38
40MoveEngine::~MoveEngine() 39MoveEngine::~MoveEngine()
41{} 40{}
42 41
43void MoveEngine::position(Pieces& pieces,bool non_qte) 42void MoveEngine::position(Pieces& pieces,bool non_qte)
44{ 43{
45 int player1_counter=0; 44 int player1_counter=0;
46 int player2_counter=0; 45 int player2_counter=0;
47 46
48 //non qte styles are smaller !! 47 //non qte styles are smaller !!
49 int offset=(non_qte) ? 5 : 0; 48 int offset=(non_qte) ? 5 : 0;
50 49
51 for(int a=0;a<28;a++) 50 for(int a=0;a<28;a++)
52 { 51 {
53 for(int b=0;b<abs(population[a].total);b++) 52 for(int b=0;b<abs(population[a].total);b++)
54 { 53 {
55 if(population[a].total>0) //player 1 pieces 54 if(population[a].total>0) //player 1 pieces
56 { 55 {
57 pieces.player1[player1_counter].x=x_coord[a]-offset; 56 pieces.player1[player1_counter].x=x_coord[a]-offset;
58 if(a>=0 && a<13) 57 if(a>=0 && a<13)
59 { 58 {
60 pieces.player1[player1_counter].y=yup_coord[b]-offset; 59 pieces.player1[player1_counter].y=yup_coord[b]-offset;
61 pieces.player1[player1_counter].z=z_coord[b]; 60 pieces.player1[player1_counter].z=z_coord[b];
62 pieces.player1[player1_counter].side=false; 61 pieces.player1[player1_counter].side=false;
63 player1_counter++; 62 player1_counter++;
64 } 63 }
65 else if(a>12 && a<26) 64 else if(a>12 && a<26)
66 { 65 {
67 pieces.player1[player1_counter].y=ylow_coord[b]-offset; 66 pieces.player1[player1_counter].y=ylow_coord[b]-offset;
68 pieces.player1[player1_counter].z=z_coord[b]; 67 pieces.player1[player1_counter].z=z_coord[b];
69 pieces.player1[player1_counter].side=false; 68 pieces.player1[player1_counter].side=false;
70 player1_counter++; 69 player1_counter++;
71 } 70 }
72 else if(a==26) 71 else if(a==26)
73 { 72 {
74 if(b<5) 73 if(b<5)
75 { 74 {
76 pieces.player1[player1_counter].x=x_fin1[0]-offset; 75 pieces.player1[player1_counter].x=x_fin1[0]-offset;
77 pieces.player1[player1_counter].y=y_fin[b]-offset; 76 pieces.player1[player1_counter].y=y_fin[b]-offset;
78 pieces.player1[player1_counter].z=z_fin; 77 pieces.player1[player1_counter].z=z_fin;
79 } 78 }
80 else if(b>=5 && b<10) 79 else if(b>=5 && b<10)
81 { 80 {
82 pieces.player1[player1_counter].x=x_fin1[1]-offset; 81 pieces.player1[player1_counter].x=x_fin1[1]-offset;
83 pieces.player1[player1_counter].y=y_fin[b-5]-offset; 82 pieces.player1[player1_counter].y=y_fin[b-5]-offset;
84 pieces.player1[player1_counter].z=z_fin; 83 pieces.player1[player1_counter].z=z_fin;
85 } 84 }
86 else 85 else
87 { 86 {
88 pieces.player1[player1_counter].x=x_fin1[2]-offset; 87 pieces.player1[player1_counter].x=x_fin1[2]-offset;
89 pieces.player1[player1_counter].y=y_fin[b-10]-offset; 88 pieces.player1[player1_counter].y=y_fin[b-10]-offset;
90 pieces.player1[player1_counter].z=z_fin; 89 pieces.player1[player1_counter].z=z_fin;
91 } 90 }
92 pieces.player1[player1_counter].side=true; 91 pieces.player1[player1_counter].side=true;
93 player1_counter++; 92 player1_counter++;
94 93
95 } 94 }
96 } 95 }
97 96
98 else if(population[a].total<0) //player 2 pieces 97 else if(population[a].total<0) //player 2 pieces
99 { 98 {
100 pieces.player2[player2_counter].x=x_coord[a]-offset; 99 pieces.player2[player2_counter].x=x_coord[a]-offset;
101 if(a>=0 && a<13) 100 if(a>=0 && a<13)
102 { 101 {
103 pieces.player2[player2_counter].y=yup_coord[b]-offset; 102 pieces.player2[player2_counter].y=yup_coord[b]-offset;
104 pieces.player2[player2_counter].z=z_coord[b]; 103 pieces.player2[player2_counter].z=z_coord[b];
105 pieces.player2[player2_counter].side=false; 104 pieces.player2[player2_counter].side=false;
106 player2_counter++; 105 player2_counter++;
107 } 106 }
108 else if(a>12 && a<26) 107 else if(a>12 && a<26)
109 { 108 {
110 pieces.player2[player2_counter].y=ylow_coord[b]-offset; 109 pieces.player2[player2_counter].y=ylow_coord[b]-offset;
111 pieces.player2[player2_counter].z=z_coord[b]; 110 pieces.player2[player2_counter].z=z_coord[b];
112 pieces.player2[player2_counter].side=false; 111 pieces.player2[player2_counter].side=false;
113 player2_counter++; 112 player2_counter++;
114 } 113 }
115 else if(a==27) 114 else if(a==27)
116 { 115 {
117 if(b<5) 116 if(b<5)
118 { 117 {
119 pieces.player2[player2_counter].x=x_fin2[0]-offset; 118 pieces.player2[player2_counter].x=x_fin2[0]-offset;
120 pieces.player2[player2_counter].y=y_fin[b]-offset; 119 pieces.player2[player2_counter].y=y_fin[b]-offset;
121 pieces.player2[player2_counter].z=z_fin; 120 pieces.player2[player2_counter].z=z_fin;
122 } 121 }
123 else if(b>=5 && b<10) 122 else if(b>=5 && b<10)
124 { 123 {
125 pieces.player2[player2_counter].x=x_fin2[1]-offset; 124 pieces.player2[player2_counter].x=x_fin2[1]-offset;
126 pieces.player2[player2_counter].y=y_fin[b-5]-offset; 125 pieces.player2[player2_counter].y=y_fin[b-5]-offset;
127 pieces.player2[player2_counter].z=z_fin; 126 pieces.player2[player2_counter].z=z_fin;
128 } 127 }
129 else 128 else
130 { 129 {
131 pieces.player2[player2_counter].x=x_fin2[2]-offset; 130 pieces.player2[player2_counter].x=x_fin2[2]-offset;
132 pieces.player2[player2_counter].y=y_fin[b-10]-offset; 131 pieces.player2[player2_counter].y=y_fin[b-10]-offset;
133 pieces.player2[player2_counter].z=z_fin; 132 pieces.player2[player2_counter].z=z_fin;
134 } 133 }
135 pieces.player2[player2_counter].side=true; 134 pieces.player2[player2_counter].side=true;
136 player2_counter++; 135 player2_counter++;
137 136
138 } 137 }
139 } 138 }
140 } 139 }
141 } 140 }
142} 141}
143 142
144void MoveEngine::diceroll(const int& newplayer,const int& face1,const int& face2,const int& face3,const int& face4,bool computer) 143void MoveEngine::diceroll(const int& newplayer,const int& face1,const int& face2,const int& face3,const int& face4,bool computer)
145{ 144{
146 checkstate(); 145 checkstate();
147 player=newplayer; 146 player=newplayer;
148 otherplayer=(player==1) ? 2 : 1; 147 otherplayer=(player==1) ? 2 : 1;
149 dice[0]=face1; 148 dice[0]=face1;
150 dice[1]=face2; 149 dice[1]=face2;
151 dice[2]=face3; 150 dice[2]=face3;
152 dice[3]=face4; 151 dice[3]=face4;
153 marker_current=-1; 152 marker_current=-1;
154 if(getPossibleMoves()==0) 153 if(getPossibleMoves()==0)
155 { 154 {
156 emit nomove(); 155 emit nomove();
157 return; // player will be changed 156 return; // player will be changed
158 } 157 }
159 if(!computer) 158 if(!computer)
160 return; //human intervention required 159 return; //human intervention required
161 160
162 QTimer::singleShot(2000,this,SLOT(automove())); 161 QTimer::singleShot(2000,this,SLOT(automove()));
163} 162}
164 163
165 164
166void MoveEngine::automove() 165void MoveEngine::automove()
167{ 166{
168 //the maximimum possibility 167 //the maximimum possibility
169 int maxpos=0; 168 int maxpos=0;
170 //the position in the moves array 169 //the position in the moves array
171 int from=-1; 170 int from=-1;
172 int to=-1; 171 int to=-1;
173 //dice1 or dice 2 ?? 172 //dice1 or dice 2 ??
174 int index_dice=0; 173 int index_dice=0;
175 for(int counter=0;counter<26;counter++) 174 for(int counter=0;counter<26;counter++)
176 { 175 {
177 int a=(player==1) ? counter : 25-counter; 176 int a=(player==1) ? counter : 25-counter;
178 for(int b=0;b<4;b++) 177 for(int b=0;b<4;b++)
179 { 178 {
180 if(moves[a].weight[b]>maxpos) 179 if(moves[a].weight[b]>maxpos)
181 { 180 {
182 maxpos=moves[a].weight[b]; 181 maxpos=moves[a].weight[b];
183 from=a; 182 from=a;
184 to=moves[a].to[b]; 183 to=moves[a].to[b];
185 index_dice=b+1; 184 index_dice=b+1;
186 } 185 }
187 } 186 }
188 } 187 }
189 move(from,to,index_dice); 188 move(from,to,index_dice);
190} 189}
191 190
192 191
193void MoveEngine::boardpressed(const int& x,const int& y,Marker& marker,bool non_qte) 192void MoveEngine::boardpressed(const int& x,const int& y,Marker& marker,bool non_qte)
194{ 193{
195 //get the position of the mouse click 194 //get the position of the mouse click
diff --git a/noncore/games/backgammon/themedialog.cpp b/noncore/games/backgammon/themedialog.cpp
index f342381..afd6a1b 100644
--- a/noncore/games/backgammon/themedialog.cpp
+++ b/noncore/games/backgammon/themedialog.cpp
@@ -1,163 +1,161 @@
1#include "themedialog.h" 1#include "themedialog.h"
2 2
3#include <qdir.h> 3#include <qdir.h>
4#include <qfileinfo.h>
5#include <qlabel.h> 4#include <qlabel.h>
6#include <qpushbutton.h>
7#include <qpe/qpeapplication.h> 5#include <qpe/qpeapplication.h>
8 6
9 7
10ThemeDialog::ThemeDialog(QWidget* parent,const char* name,bool modal,WFlags f) 8ThemeDialog::ThemeDialog(QWidget* parent,const char* name,bool modal,WFlags f)
11 :QDialog(parent,name,modal,f) 9 :QDialog(parent,name,modal,f)
12{ 10{
13 setCaption("Theme Dialog"); 11 setCaption("Theme Dialog");
14 QLabel* labelname=new QLabel("name",this); 12 QLabel* labelname=new QLabel("name",this);
15 labelname->setGeometry(0,5,40,20); 13 labelname->setGeometry(0,5,40,20);
16 lineName=new QLineEdit("user",this); 14 lineName=new QLineEdit("user",this);
17 lineName->setGeometry(40,5,195,20); 15 lineName->setGeometry(40,5,195,20);
18 16
19 QLabel* labelboard=new QLabel("board",this); 17 QLabel* labelboard=new QLabel("board",this);
20 labelboard->setGeometry(0,30,40,20); 18 labelboard->setGeometry(0,30,40,20);
21 boxboard=new QComboBox(this,""); 19 boxboard=new QComboBox(this,"");
22 boxboard->setGeometry(40,30,195,20); 20 boxboard->setGeometry(40,30,195,20);
23 fillBox("boards",boxboard); 21 fillBox("boards",boxboard);
24 22
25 QLabel* labelpiecesA=new QLabel("pieces1",this); 23 QLabel* labelpiecesA=new QLabel("pieces1",this);
26 labelpiecesA->setGeometry(0,70,40,20); 24 labelpiecesA->setGeometry(0,70,40,20);
27 boxpiecesA=new QComboBox(this); 25 boxpiecesA=new QComboBox(this);
28 boxpiecesA->setGeometry(40,70,195,20); 26 boxpiecesA->setGeometry(40,70,195,20);
29 fillBox("pieces",boxpiecesA); 27 fillBox("pieces",boxpiecesA);
30 28
31 QLabel* labelpiecesB=new QLabel("pieces2",this); 29 QLabel* labelpiecesB=new QLabel("pieces2",this);
32 labelpiecesB->setGeometry(0,95,40,20); 30 labelpiecesB->setGeometry(0,95,40,20);
33 boxpiecesB=new QComboBox(this); 31 boxpiecesB=new QComboBox(this);
34 boxpiecesB->setGeometry(40,95,195,20); 32 boxpiecesB->setGeometry(40,95,195,20);
35 fillBox("pieces",boxpiecesB); 33 fillBox("pieces",boxpiecesB);
36 34
37 QLabel* labeldiceA=new QLabel("dice1",this); 35 QLabel* labeldiceA=new QLabel("dice1",this);
38 labeldiceA->setGeometry(0,135,40,20); 36 labeldiceA->setGeometry(0,135,40,20);
39 boxdiceA=new QComboBox(this); 37 boxdiceA=new QComboBox(this);
40 boxdiceA->setGeometry(40,135,195,20); 38 boxdiceA->setGeometry(40,135,195,20);
41 fillBox("dice",boxdiceA); 39 fillBox("dice",boxdiceA);
42 40
43 QLabel* labeldiceB=new QLabel("dice2",this); 41 QLabel* labeldiceB=new QLabel("dice2",this);
44 labeldiceB->setGeometry(0,160,40,20); 42 labeldiceB->setGeometry(0,160,40,20);
45 boxdiceB=new QComboBox(this); 43 boxdiceB=new QComboBox(this);
46 boxdiceB->setGeometry(40,160,195,20); 44 boxdiceB->setGeometry(40,160,195,20);
47 fillBox("dice",boxdiceB); 45 fillBox("dice",boxdiceB);
48 46
49 QLabel* labelodds=new QLabel("odds",this); 47 QLabel* labelodds=new QLabel("odds",this);
50 labelodds->setGeometry(0,200,40,20); 48 labelodds->setGeometry(0,200,40,20);
51 boxodds=new QComboBox(this); 49 boxodds=new QComboBox(this);
52 boxodds->setGeometry(40,200,195,20); 50 boxodds->setGeometry(40,200,195,20);
53 fillBox("odds",boxodds); 51 fillBox("odds",boxodds);
54 boxodds->setEnabled(false); 52 boxodds->setEnabled(false);
55 53
56 QLabel* labeltable=new QLabel("table",this); 54 QLabel* labeltable=new QLabel("table",this);
57 labeltable->setGeometry(0,225,40,20); 55 labeltable->setGeometry(0,225,40,20);
58 boxtable=new QComboBox(this); 56 boxtable=new QComboBox(this);
59 boxtable->setGeometry(40,225,195,20); 57 boxtable->setGeometry(40,225,195,20);
60 fillBox("table",boxtable); 58 fillBox("table",boxtable);
61 59
62 QPEApplication::showDialog( this ); 60 QPEApplication::showDialog( this );
63} 61}
64 62
65ThemeDialog::~ThemeDialog() 63ThemeDialog::~ThemeDialog()
66{} 64{}
67 65
68 66
69ImageNames ThemeDialog::getNames() 67ImageNames ThemeDialog::getNames()
70{ 68{
71 ImageNames names; 69 ImageNames names;
72 names.theme=lineName->text(); 70 names.theme=lineName->text();
73 names.board=boxboard->currentText(); 71 names.board=boxboard->currentText();
74 names.pieces1=boxpiecesA->currentText(); 72 names.pieces1=boxpiecesA->currentText();
75 names.pieces2=boxpiecesB->currentText(); 73 names.pieces2=boxpiecesB->currentText();
76 names.dice1=boxdiceA->currentText(); 74 names.dice1=boxdiceA->currentText();
77 names.dice2=boxdiceB->currentText(); 75 names.dice2=boxdiceB->currentText();
78 names.odds=boxodds->currentText(); 76 names.odds=boxodds->currentText();
79 names.table=boxtable->currentText(); 77 names.table=boxtable->currentText();
80 return names; 78 return names;
81} 79}
82 80
83void ThemeDialog::setCurrent(const ImageNames& current) 81void ThemeDialog::setCurrent(const ImageNames& current)
84{ 82{
85 int a=0; 83 int a=0;
86 lineName->setText(current.theme); 84 lineName->setText(current.theme);
87 for(a=0;a<boxboard->count();a++) 85 for(a=0;a<boxboard->count();a++)
88 { 86 {
89 if(boxboard->text(a)==current.board) 87 if(boxboard->text(a)==current.board)
90 { 88 {
91 boxboard->setCurrentItem(a); 89 boxboard->setCurrentItem(a);
92 break; 90 break;
93 } 91 }
94 } 92 }
95 for(a=0;a<boxpiecesA->count();a++) 93 for(a=0;a<boxpiecesA->count();a++)
96 { 94 {
97 if(boxpiecesA->text(a)==current.pieces1) 95 if(boxpiecesA->text(a)==current.pieces1)
98 { 96 {
99 boxpiecesA->setCurrentItem(a); 97 boxpiecesA->setCurrentItem(a);
100 break; 98 break;
101 } 99 }
102 } 100 }
103 for(a=0;a<boxpiecesB->count();a++) 101 for(a=0;a<boxpiecesB->count();a++)
104 { 102 {
105 if(boxpiecesB->text(a)==current.pieces2) 103 if(boxpiecesB->text(a)==current.pieces2)
106 { 104 {
107 boxpiecesB->setCurrentItem(a); 105 boxpiecesB->setCurrentItem(a);
108 break; 106 break;
109 } 107 }
110 } 108 }
111 for(a=0;a<boxdiceA->count();a++) 109 for(a=0;a<boxdiceA->count();a++)
112 { 110 {
113 if(boxdiceA->text(a)==current.dice1) 111 if(boxdiceA->text(a)==current.dice1)
114 { 112 {
115 boxdiceA->setCurrentItem(a); 113 boxdiceA->setCurrentItem(a);
116 break; 114 break;
117 } 115 }
118 } 116 }
119 for(a=0;a<boxdiceB->count();a++) 117 for(a=0;a<boxdiceB->count();a++)
120 { 118 {
121 if(boxdiceB->text(a)==current.dice2) 119 if(boxdiceB->text(a)==current.dice2)
122 { 120 {
123 boxdiceB->setCurrentItem(a); 121 boxdiceB->setCurrentItem(a);
124 break; 122 break;
125 } 123 }
126 } 124 }
127 for(a=0;a<boxodds->count();a++) 125 for(a=0;a<boxodds->count();a++)
128 { 126 {
129 if(boxodds->text(a)==current.odds) 127 if(boxodds->text(a)==current.odds)
130 { 128 {
131 boxodds->setCurrentItem(a); 129 boxodds->setCurrentItem(a);
132 break; 130 break;
133 } 131 }
134 } 132 }
135 for(a=0;a<boxtable->count();a++) 133 for(a=0;a<boxtable->count();a++)
136 { 134 {
137 if(boxtable->text(a)==current.table) 135 if(boxtable->text(a)==current.table)
138 { 136 {
139 boxtable->setCurrentItem(a); 137 boxtable->setCurrentItem(a);
140 break; 138 break;
141 } 139 }
142 } 140 }
143} 141}
144 142
145void ThemeDialog::fillBox(QString dirname,QComboBox* thebox) 143void ThemeDialog::fillBox(QString dirname,QComboBox* thebox)
146{ 144{
147 thebox->clear(); 145 thebox->clear();
148 QDir dir(QPEApplication::qpeDir()+"/pics/backgammon/"+dirname); 146 QDir dir(QPEApplication::qpeDir()+"/pics/backgammon/"+dirname);
149 dir.setFilter(QDir::Dirs | QDir::Files); 147 dir.setFilter(QDir::Dirs | QDir::Files);
150 QFileInfoListIterator it(*(dir.entryInfoList())); 148 QFileInfoListIterator it(*(dir.entryInfoList()));
151 QFileInfo* fi; 149 QFileInfo* fi;
152 150
153 while((fi=it.current())) // go through all file and subdirs 151 while((fi=it.current())) // go through all file and subdirs
154 { 152 {
155 QString file=fi->fileName(); 153 QString file=fi->fileName();
156 if(file.right(4)==".png") 154 if(file.right(4)==".png")
157 { 155 {
158 thebox->insertItem(file.left(file.find(".png"))); 156 thebox->insertItem(file.left(file.find(".png")));
159 } 157 }
160 ++it; 158 ++it;
161 } 159 }
162 delete fi; 160 delete fi;
163} 161}
diff --git a/noncore/games/bounce/game.cpp b/noncore/games/bounce/game.cpp
index 6ded218..c07f453 100644
--- a/noncore/games/bounce/game.cpp
+++ b/noncore/games/bounce/game.cpp
@@ -1,215 +1,214 @@
1/* 1/*
2 * Copyright (C) 2000 Stefan Schimanski <1Stein@gmx.de> 2 * Copyright (C) 2000 Stefan Schimanski <1Stein@gmx.de>
3 * 3 *
4 * This program is free software; you can redistribute it and/or 4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This program is distributed in the hope that it will be useful, 9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public 14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the Free 15 * License along with this program; if not, write to the Free
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */ 17 */
18 18
19 19
20#include <stdlib.h> 20#include <stdlib.h>
21#include <qtimer.h> 21#include <qtimer.h>
22#include <qpe/qpeapplication.h> 22#include <qpe/qpeapplication.h>
23#include <qimage.h>
24 23
25#include "game.h" 24#include "game.h"
26 25
27#define TILE_SIZE 9 26#define TILE_SIZE 9
28 27
29#define TILE_FIRST ((FIELD_WIDTH-2)*(FIELD_HEIGHT-2)) 28#define TILE_FIRST ((FIELD_WIDTH-2)*(FIELD_HEIGHT-2))
30#define TILE_FREE (TILE_FIRST + 0) 29#define TILE_FREE (TILE_FIRST + 0)
31#define TILE_BORDER (TILE_FIRST + 1) 30#define TILE_BORDER (TILE_FIRST + 1)
32#define TILE_WALLEND (TILE_FIRST + 2) 31#define TILE_WALLEND (TILE_FIRST + 2)
33#define TILE_WALLUP (TILE_FIRST + 3) 32#define TILE_WALLUP (TILE_FIRST + 3)
34#define TILE_WALLDOWN (TILE_FIRST + 4) 33#define TILE_WALLDOWN (TILE_FIRST + 4)
35#define TILE_WALLLEFT (TILE_FIRST + 5) 34#define TILE_WALLLEFT (TILE_FIRST + 5)
36#define TILE_WALLRIGHT (TILE_FIRST + 6) 35#define TILE_WALLRIGHT (TILE_FIRST + 6)
37 36
38#define GAME_DELAY 15 37#define GAME_DELAY 15
39#define BALL_ANIM_DELAY 60 38#define BALL_ANIM_DELAY 60
40#define WALL_DELAY 100 39#define WALL_DELAY 100
41 40
42#define MS2TICKS( ms ) ((ms)/GAME_DELAY) 41#define MS2TICKS( ms ) ((ms)/GAME_DELAY)
43 42
44Arrow::Arrow(QCanvasPixmapArray* array, QCanvas* canvas) 43Arrow::Arrow(QCanvasPixmapArray* array, QCanvas* canvas)
45 : QCanvasSprite( array, canvas ) 44 : QCanvasSprite( array, canvas )
46{ 45{
47 m_vertical = true; 46 m_vertical = true;
48 move(3,3); 47 move(3,3);
49} 48}
50 49
51void Arrow::update() 50void Arrow::update()
52{ 51{
53 if ( m_vertical ) 52 if ( m_vertical )
54 setFrame( 0 ); 53 setFrame( 0 );
55 else 54 else
56 setFrame( 1 ); 55 setFrame( 1 );
57} 56}
58 57
59void Arrow::changeDirection() 58void Arrow::changeDirection()
60{ 59{
61 m_vertical = ! m_vertical; 60 m_vertical = ! m_vertical;
62 update(); 61 update();
63} 62}
64 63
65 64
66Ball::Ball(QCanvasPixmapArray* array, QCanvas* canvas) 65Ball::Ball(QCanvasPixmapArray* array, QCanvas* canvas)
67 : QCanvasSprite( array, canvas ), m_animDelay( 0 ), m_soundDelay( MS2TICKS(BALL_ANIM_DELAY)/2 ) 66 : QCanvasSprite( array, canvas ), m_animDelay( 0 ), m_soundDelay( MS2TICKS(BALL_ANIM_DELAY)/2 )
68{ 67{
69} 68}
70 69
71void Ball::update() 70void Ball::update()
72{ 71{
73 m_animDelay--; 72 m_animDelay--;
74 if ( m_animDelay<=0 ) 73 if ( m_animDelay<=0 )
75 { 74 {
76 m_animDelay = MS2TICKS(BALL_ANIM_DELAY); 75 m_animDelay = MS2TICKS(BALL_ANIM_DELAY);
77 int frameNum = frame(); 76 int frameNum = frame();
78 frameNum++; 77 frameNum++;
79 if ( frameNum>=frameCount() ) 78 if ( frameNum>=frameCount() )
80 frameNum = 0; 79 frameNum = 0;
81 setFrame( frameNum ); 80 setFrame( frameNum );
82 } 81 }
83} 82}
84 83
85void Ball::advance(int stage) 84void Ball::advance(int stage)
86{ 85{
87 bool reflectX = false; 86 bool reflectX = false;
88 bool reflectY = false; 87 bool reflectY = false;
89 88
90 // check for collisions 89 // check for collisions
91 if ( collide(xVelocity(), 0) ) reflectX = true; 90 if ( collide(xVelocity(), 0) ) reflectX = true;
92 if ( collide(0, yVelocity()) ) reflectY = true; 91 if ( collide(0, yVelocity()) ) reflectY = true;
93 if ( !reflectX && !reflectY && collide(xVelocity(), yVelocity()) ) reflectX = reflectY = true; 92 if ( !reflectX && !reflectY && collide(xVelocity(), yVelocity()) ) reflectX = reflectY = true;
94 93
95 // emit collision 94 // emit collision
96 QRect r = boundingRect(); 95 QRect r = boundingRect();
97 r.moveBy( xVelocity(), yVelocity() ); 96 r.moveBy( xVelocity(), yVelocity() );
98 JezzField* field = (JezzField *)canvas(); 97 JezzField* field = (JezzField *)canvas();
99 98
100 int ul = field->tile( r.left() / TILE_SIZE, r.top() / TILE_SIZE ); 99 int ul = field->tile( r.left() / TILE_SIZE, r.top() / TILE_SIZE );
101 int ur = field->tile( r.right() / TILE_SIZE, r.top() / TILE_SIZE ); 100 int ur = field->tile( r.right() / TILE_SIZE, r.top() / TILE_SIZE );
102 int bl = field->tile( r.left() / TILE_SIZE, r.bottom() / TILE_SIZE ); 101 int bl = field->tile( r.left() / TILE_SIZE, r.bottom() / TILE_SIZE );
103 int br = field->tile( r.right() / TILE_SIZE, r.bottom() / TILE_SIZE ); 102 int br = field->tile( r.right() / TILE_SIZE, r.bottom() / TILE_SIZE );
104 103
105 if ( ul!=TILE_FREE ) field->emitBallCollisiton( this, r.left() / TILE_SIZE, r.top() / TILE_SIZE, ul ); else 104 if ( ul!=TILE_FREE ) field->emitBallCollisiton( this, r.left() / TILE_SIZE, r.top() / TILE_SIZE, ul ); else
106 if ( ur!=TILE_FREE ) field->emitBallCollisiton( this, r.right() / TILE_SIZE, r.top() / TILE_SIZE, ur ); else 105 if ( ur!=TILE_FREE ) field->emitBallCollisiton( this, r.right() / TILE_SIZE, r.top() / TILE_SIZE, ur ); else
107 if ( bl!=TILE_FREE ) field->emitBallCollisiton( this, r.left() / TILE_SIZE, r.bottom() / TILE_SIZE, bl ); else 106 if ( bl!=TILE_FREE ) field->emitBallCollisiton( this, r.left() / TILE_SIZE, r.bottom() / TILE_SIZE, bl ); else
108 if ( br!=TILE_FREE ) field->emitBallCollisiton( this, r.right() / TILE_SIZE, r.bottom() / TILE_SIZE, br ); 107 if ( br!=TILE_FREE ) field->emitBallCollisiton( this, r.right() / TILE_SIZE, r.bottom() / TILE_SIZE, br );
109 108
110 // apply reflection 109 // apply reflection
111 if ( reflectX ) setXVelocity( -xVelocity() ); 110 if ( reflectX ) setXVelocity( -xVelocity() );
112 if ( reflectY ) setYVelocity( -yVelocity() ); 111 if ( reflectY ) setYVelocity( -yVelocity() );
113 112
114 // update field 113 // update field
115 update(); 114 update();
116 QCanvasSprite::advance( stage ); 115 QCanvasSprite::advance( stage );
117} 116}
118 117
119bool Ball::collide( double dx, double dy ) 118bool Ball::collide( double dx, double dy )
120{ 119{
121 QRect r = boundingRect(); 120 QRect r = boundingRect();
122 r.moveBy( dx, dy ); 121 r.moveBy( dx, dy );
123 JezzField* field = (JezzField *)canvas(); 122 JezzField* field = (JezzField *)canvas();
124 123
125 int ul = field->tile( r.left() / TILE_SIZE, r.top() / TILE_SIZE ); 124 int ul = field->tile( r.left() / TILE_SIZE, r.top() / TILE_SIZE );
126 int ur = field->tile( r.right() / TILE_SIZE, r.top() / TILE_SIZE ); 125 int ur = field->tile( r.right() / TILE_SIZE, r.top() / TILE_SIZE );
127 int bl = field->tile( r.left() / TILE_SIZE, r.bottom() / TILE_SIZE ); 126 int bl = field->tile( r.left() / TILE_SIZE, r.bottom() / TILE_SIZE );
128 int br = field->tile( r.right() / TILE_SIZE, r.bottom() / TILE_SIZE ); 127 int br = field->tile( r.right() / TILE_SIZE, r.bottom() / TILE_SIZE );
129 128
130 return ( ul!=TILE_FREE || ur!=TILE_FREE || bl!=TILE_FREE || br!=TILE_FREE ); 129 return ( ul!=TILE_FREE || ur!=TILE_FREE || bl!=TILE_FREE || br!=TILE_FREE );
131} 130}
132 131
133/*************************************************************************/ 132/*************************************************************************/
134 133
135Wall::Wall( JezzField *field, int x, int y, Direction dir, int tile, QObject *parent, const char *name ) 134Wall::Wall( JezzField *field, int x, int y, Direction dir, int tile, QObject *parent, const char *name )
136 : QObject( parent, name ), m_dir( dir ), m_field( field ), m_startX( x ), m_startY( y ), 135 : QObject( parent, name ), m_dir( dir ), m_field( field ), m_startX( x ), m_startY( y ),
137 m_tile( tile ), m_delay( MS2TICKS(WALL_DELAY)/2 ), m_active( true ) 136 m_tile( tile ), m_delay( MS2TICKS(WALL_DELAY)/2 ), m_active( true )
138{ 137{
139 // setup position and direction 138 // setup position and direction
140 m_dx = 0; 139 m_dx = 0;
141 m_dy = 0; 140 m_dy = 0;
142 switch ( m_dir ) 141 switch ( m_dir )
143 { 142 {
144 case Up: m_dy = -1; break; 143 case Up: m_dy = -1; break;
145 case Down: m_dy = 1; break; 144 case Down: m_dy = 1; break;
146 case Left: m_dx = -1; break; 145 case Left: m_dx = -1; break;
147 case Right: m_dx = 1; break; 146 case Right: m_dx = 1; break;
148 } 147 }
149 148
150 m_x = m_startX; 149 m_x = m_startX;
151 m_y = m_startY; 150 m_y = m_startY;
152 151
153 m_field->setTile( m_x, m_y, m_tile ); 152 m_field->setTile( m_x, m_y, m_tile );
154} 153}
155 154
156void Wall::finish() 155void Wall::finish()
157{ 156{
158 m_active = false; 157 m_active = false;
159} 158}
160 159
161bool Wall::isFree( int x, int y ) 160bool Wall::isFree( int x, int y )
162{ 161{
163 if ( m_field->tile(x, y)==TILE_FREE ) 162 if ( m_field->tile(x, y)==TILE_FREE )
164 { 163 {
165 // check whether there is a ball at the moment 164 // check whether there is a ball at the moment
166 QCanvasItemList cols = m_field->collisions( QRect(x*TILE_SIZE, y*TILE_SIZE, 165 QCanvasItemList cols = m_field->collisions( QRect(x*TILE_SIZE, y*TILE_SIZE,
167 TILE_SIZE, TILE_SIZE) ); 166 TILE_SIZE, TILE_SIZE) );
168 if ( cols.count()==0 ) 167 if ( cols.count()==0 )
169 return true; 168 return true;
170 } 169 }
171 170
172 return false; 171 return false;
173} 172}
174 173
175void Wall::update() 174void Wall::update()
176{ 175{
177} 176}
178 177
179void Wall::advance() 178void Wall::advance()
180{ 179{
181 update(); 180 update();
182 181
183 // move wall 182 // move wall
184 if ( m_active ) 183 if ( m_active )
185 { 184 {
186 m_delay--; 185 m_delay--;
187 if ( m_delay<=0 ) 186 if ( m_delay<=0 )
188 { 187 {
189 m_delay = MS2TICKS(WALL_DELAY); 188 m_delay = MS2TICKS(WALL_DELAY);
190 189
191 // set previous tile 190 // set previous tile
192 m_field->setTile( m_x, m_y, m_tile ); 191 m_field->setTile( m_x, m_y, m_tile );
193 192
194 // check whether next place is still free 193 // check whether next place is still free
195 if ( isFree(m_x+m_dx, m_y+m_dy) ) 194 if ( isFree(m_x+m_dx, m_y+m_dy) )
196 { 195 {
197 // move ball 196 // move ball
198 m_x += m_dx; 197 m_x += m_dx;
199 m_y += m_dy; 198 m_y += m_dy;
200 199
201 // set tile 200 // set tile
202 m_field->setTile( m_x, m_y, TILE_WALLEND ); 201 m_field->setTile( m_x, m_y, TILE_WALLEND );
203 } else 202 } else
204 { 203 {
205 finish(); 204 finish();
206 emit finished( this, m_field->tile( m_x+m_dx, m_y+m_dy ) ); 205 emit finished( this, m_field->tile( m_x+m_dx, m_y+m_dy ) );
207 } 206 }
208 } 207 }
209 } 208 }
210} 209}
211 210
212void Wall::fill( bool black ) 211void Wall::fill( bool black )
213{ 212{
214 if ( m_dx ) 213 if ( m_dx )
215 { 214 {
diff --git a/noncore/games/bounce/kbounce.cpp b/noncore/games/bounce/kbounce.cpp
index 211f0ff..3b0cb6f 100644
--- a/noncore/games/bounce/kbounce.cpp
+++ b/noncore/games/bounce/kbounce.cpp
@@ -1,220 +1,216 @@
1/* 1/*
2 * Copyright (C) 2000 Stefan Schimanski <1Stein@gmx.de> 2 * Copyright (C) 2000 Stefan Schimanski <1Stein@gmx.de>
3 * 3 *
4 * This program is free software; you can redistribute it and/or 4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License,Life or (at your option) any later version. 7 * version 2 of the License,Life or (at your option) any later version.
8 * 8 *
9 * This program is distributed in the hope that it will be useful, 9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public 14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the Free 15 * License along with this program; if not, write to the Free
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */ 17 */
18 18
19#include <qlayout.h> 19#include <qlayout.h>
20#include <qtimer.h> 20#include <qtimer.h>
21#include <qlcdnumber.h>
22#include <qmessagebox.h> 21#include <qmessagebox.h>
23#include <qmainwindow.h>
24#include <qpe/qpeapplication.h>
25 22
26#include "kbounce.h" 23#include "kbounce.h"
27#include "game.h" 24#include "game.h"
28#include <qlabel.h>
29 25
30KJezzball::KJezzball(QWidget *p, const char* n, WFlags f) 26KJezzball::KJezzball(QWidget *p, const char* n, WFlags f)
31 : QMainWindow(p,n,f), m_gameWidget( 0 ) 27 : QMainWindow(p,n,f), m_gameWidget( 0 )
32{ 28{
33 setCaption(tr("Bounce")); 29 setCaption(tr("Bounce"));
34 // setup variables 30 // setup variables
35 m_game.level = 1; 31 m_game.level = 1;
36 m_game.score = 0; 32 m_game.score = 0;
37 m_state = Idle; 33 m_state = Idle;
38 34
39 35
40 menu = menuBar(); 36 menu = menuBar();
41 game = new QPopupMenu; 37 game = new QPopupMenu;
42 game->insertItem(tr("&New game"), this, SLOT(newGame()), Key_N ); 38 game->insertItem(tr("&New game"), this, SLOT(newGame()), Key_N );
43 game->insertItem(tr("&Pause game"), this, SLOT(pauseGame()), Key_P ); 39 game->insertItem(tr("&Pause game"), this, SLOT(pauseGame()), Key_P );
44 game->insertSeparator(); 40 game->insertSeparator();
45 game->insertItem(tr("&About"), this, SLOT(about())); 41 game->insertItem(tr("&About"), this, SLOT(about()));
46 menu->insertItem( tr("&Game"), game ); 42 menu->insertItem( tr("&Game"), game );
47 43
48 // create widgets 44 // create widgets
49 m_view = new QWidget( this, "m_view" ); 45 m_view = new QWidget( this, "m_view" );
50 setCentralWidget( m_view ); 46 setCentralWidget( m_view );
51 47
52 m_layout = new QGridLayout( m_view ); 48 m_layout = new QGridLayout( m_view );
53 m_layout->setSpacing( 0 ); 49 m_layout->setSpacing( 0 );
54 m_layout->setMargin( 0 ); 50 m_layout->setMargin( 0 );
55 51
56 ScoreLabel = new QLabel( m_view, "ScoreLabel" ); 52 ScoreLabel = new QLabel( m_view, "ScoreLabel" );
57 ScoreLabel->setText( tr( "Score: 00" ) ); 53 ScoreLabel->setText( tr( "Score: 00" ) );
58 ScoreLabel->setAlignment( int( QLabel::AlignCenter ) ); 54 ScoreLabel->setAlignment( int( QLabel::AlignCenter ) );
59 55
60 m_layout->addWidget( ScoreLabel, 1, 0 ); 56 m_layout->addWidget( ScoreLabel, 1, 0 );
61 57
62 LivesLabel = new QLabel( m_view, "LivesLabel" ); 58 LivesLabel = new QLabel( m_view, "LivesLabel" );
63 LivesLabel->setText( tr( "Lives: 0%" ) ); 59 LivesLabel->setText( tr( "Lives: 0%" ) );
64 LivesLabel->setAlignment( int( QLabel::AlignCenter ) ); 60 LivesLabel->setAlignment( int( QLabel::AlignCenter ) );
65 61
66 m_layout->addWidget( LivesLabel, 1, 2 ); 62 m_layout->addWidget( LivesLabel, 1, 2 );
67 63
68 FilledLabel = new QLabel( m_view, "FilledLabel" ); 64 FilledLabel = new QLabel( m_view, "FilledLabel" );
69 FilledLabel->setText( tr( "Filled: 00%" ) ); 65 FilledLabel->setText( tr( "Filled: 00%" ) );
70 FilledLabel->setAlignment( int( QLabel::AlignCenter ) ); 66 FilledLabel->setAlignment( int( QLabel::AlignCenter ) );
71 67
72 m_layout->addWidget( FilledLabel, 1, 1 ); 68 m_layout->addWidget( FilledLabel, 1, 1 );
73 69
74 TimeLabel = new QLabel( m_view, "TimeLabel" ); 70 TimeLabel = new QLabel( m_view, "TimeLabel" );
75 TimeLabel->setText( tr( "Time: 00" ) ); 71 TimeLabel->setText( tr( "Time: 00" ) );
76 TimeLabel->setAlignment( int( QLabel::AlignCenter ) ); 72 TimeLabel->setAlignment( int( QLabel::AlignCenter ) );
77 73
78 m_layout->addWidget( TimeLabel, 1, 3 ); 74 m_layout->addWidget( TimeLabel, 1, 3 );
79 75
80 // create timers 76 // create timers
81 m_nextLevelTimer = new QTimer( this, "m_nextLevelTimer" ); 77 m_nextLevelTimer = new QTimer( this, "m_nextLevelTimer" );
82 connect( m_nextLevelTimer, SIGNAL(timeout()), this, SLOT(switchLevel()) ); 78 connect( m_nextLevelTimer, SIGNAL(timeout()), this, SLOT(switchLevel()) );
83 79
84 m_gameOverTimer = new QTimer( this, "m_gameOverTimer" ); 80 m_gameOverTimer = new QTimer( this, "m_gameOverTimer" );
85 connect( m_gameOverTimer, SIGNAL(timeout()), this, SLOT(gameOverNow()) ); 81 connect( m_gameOverTimer, SIGNAL(timeout()), this, SLOT(gameOverNow()) );
86 82
87 m_timer = new QTimer( this, "m_timer" ); 83 m_timer = new QTimer( this, "m_timer" );
88 connect( m_timer, SIGNAL(timeout()), this, SLOT(second()) ); 84 connect( m_timer, SIGNAL(timeout()), this, SLOT(second()) );
89 85
90 // create demo game 86 // create demo game
91 createLevel( 1 ); 87 createLevel( 1 );
92} 88}
93 89
94void KJezzball::newGame() 90void KJezzball::newGame()
95{ 91{
96 // Check for running game 92 // Check for running game
97 closeGame(); 93 closeGame();
98 if ( m_state==Idle ) 94 if ( m_state==Idle )
99 { 95 {
100 // update displays 96 // update displays
101 m_game.level = 1; 97 m_game.level = 1;
102 m_game.score = 0; 98 m_game.score = 0;
103 99
104 setCaption(tr("Bounce Level %1").arg(m_game.level)); 100 setCaption(tr("Bounce Level %1").arg(m_game.level));
105 ScoreLabel->setText( tr( "Score: %1" ).arg(m_game.score) ); 101 ScoreLabel->setText( tr( "Score: %1" ).arg(m_game.score) );
106 102
107 // start new game 103 // start new game
108 m_state = Running; 104 m_state = Running;
109 105
110 createLevel( m_game.level ); 106 createLevel( m_game.level );
111 startLevel(); 107 startLevel();
112 } 108 }
113} 109}
114 110
115void KJezzball::about() 111void KJezzball::about()
116{ 112{
117 QMessageBox::information( this, tr("About"), 113 QMessageBox::information( this, tr("About"),
118 tr("Written by: Stefan Schimanski\n" 114 tr("Written by: Stefan Schimanski\n"
119 "Ported by: Martin Imobersteg\n" 115 "Ported by: Martin Imobersteg\n"
120 "\n" 116 "\n"
121 "Click to form walls.\n" 117 "Click to form walls.\n"
122 "Hit space to switch wall direction.\n" 118 "Hit space to switch wall direction.\n"
123 "Try to reduce total space by 75%.\n" 119 "Try to reduce total space by 75%.\n"
124 "\n" 120 "\n"
125 "This program is distributed under\n" 121 "This program is distributed under\n"
126 "the terms of the GPL v2.") ); 122 "the terms of the GPL v2.") );
127} 123}
128 124
129void KJezzball::closeGame() 125void KJezzball::closeGame()
130{ 126{
131 if ( m_state!=Idle ) 127 if ( m_state!=Idle )
132 { 128 {
133 stopLevel(); 129 stopLevel();
134 m_state = Idle; 130 m_state = Idle;
135 } 131 }
136} 132}
137 133
138void KJezzball::pauseGame() 134void KJezzball::pauseGame()
139{ 135{
140 switch ( m_state ) 136 switch ( m_state )
141 { 137 {
142 case Running: 138 case Running:
143 m_state = Paused; 139 m_state = Paused;
144 m_gameWidget->display( tr("Game paused.\nPress P to continue!") ); 140 m_gameWidget->display( tr("Game paused.\nPress P to continue!") );
145 stopLevel(); 141 stopLevel();
146 break; 142 break;
147 143
148 case Paused: 144 case Paused:
149 case Suspend: 145 case Suspend:
150 m_state = Running; 146 m_state = Running;
151 m_gameWidget->display( QString::null ); 147 m_gameWidget->display( QString::null );
152 startLevel(); 148 startLevel();
153 break; 149 break;
154 150
155 case Idle: 151 case Idle:
156 break; 152 break;
157 } 153 }
158} 154}
159 155
160void KJezzball::gameOver() 156void KJezzball::gameOver()
161{ 157{
162 stopLevel(); 158 stopLevel();
163 m_gameOverTimer->start( 100, TRUE ); 159 m_gameOverTimer->start( 100, TRUE );
164} 160}
165 161
166 162
167void KJezzball::gameOverNow() 163void KJezzball::gameOverNow()
168{ 164{
169 m_state = Idle; 165 m_state = Idle;
170 166
171 QString score; 167 QString score;
172 score.setNum( m_game.score ); 168 score.setNum( m_game.score );
173 QMessageBox::information( this, "Game Over", tr("Game Over!\nScore: %1").arg(score) ); 169 QMessageBox::information( this, "Game Over", tr("Game Over!\nScore: %1").arg(score) );
174} 170}
175 171
176void KJezzball::focusOutEvent( QFocusEvent *ev ) 172void KJezzball::focusOutEvent( QFocusEvent *ev )
177{ 173{
178 if ( m_state==Running ) 174 if ( m_state==Running )
179 { 175 {
180 stopLevel(); 176 stopLevel();
181 m_state = Suspend; 177 m_state = Suspend;
182 } 178 }
183 179
184 QMainWindow::focusOutEvent( ev ); 180 QMainWindow::focusOutEvent( ev );
185} 181}
186 182
187void KJezzball::focusInEvent ( QFocusEvent *ev ) 183void KJezzball::focusInEvent ( QFocusEvent *ev )
188{ 184{
189 if ( m_state==Suspend ) 185 if ( m_state==Suspend )
190 { 186 {
191 startLevel(); 187 startLevel();
192 m_state = Running; 188 m_state = Running;
193 } 189 }
194 190
195 QMainWindow::focusInEvent( ev ); 191 QMainWindow::focusInEvent( ev );
196} 192}
197 193
198void KJezzball::second() 194void KJezzball::second()
199{ 195{
200 m_level.time--; 196 m_level.time--;
201 TimeLabel->setText( tr( "Time: %1" ).arg(m_level.time) ); 197 TimeLabel->setText( tr( "Time: %1" ).arg(m_level.time) );
202 if ( m_level.time<=0 ) 198 if ( m_level.time<=0 )
203 { 199 {
204 gameOver(); 200 gameOver();
205 } 201 }
206} 202}
207 203
208void KJezzball::died() 204void KJezzball::died()
209{ 205{
210 m_level.lifes--; 206 m_level.lifes--;
211 LivesLabel->setText( tr( "Lives: %1" ).arg(m_level.lifes) ); 207 LivesLabel->setText( tr( "Lives: %1" ).arg(m_level.lifes) );
212 if ( m_level.lifes==0 ) gameOver(); 208 if ( m_level.lifes==0 ) gameOver();
213} 209}
214 210
215void KJezzball::newPercent( int percent ) 211void KJezzball::newPercent( int percent )
216{ 212{
217 FilledLabel->setText( tr( "Filled: %1%" ).arg(percent) ); 213 FilledLabel->setText( tr( "Filled: %1%" ).arg(percent) );
218 if ( percent>=75 ) 214 if ( percent>=75 )
219 { 215 {
220 m_level.score = m_level.lifes*15 + (percent-75)*2*(m_game.level+5); 216 m_level.score = m_level.lifes*15 + (percent-75)*2*(m_game.level+5);
diff --git a/noncore/games/bounce/main.cpp b/noncore/games/bounce/main.cpp
index 9ea86a6..a070c4b 100644
--- a/noncore/games/bounce/main.cpp
+++ b/noncore/games/bounce/main.cpp
@@ -1,24 +1,23 @@
1/* 1/*
2 * Copyright (C) 2000 Stefan Schimanski <schimmi@kde.org> 2 * Copyright (C) 2000 Stefan Schimanski <schimmi@kde.org>
3 * 3 *
4 * This program is free software; you can redistribute it and/or 4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This program is distributed in the hope that it will be useful, 9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public 14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the Free 15 * License along with this program; if not, write to the Free
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */ 17 */
18 18
19#include <qpe/qpeapplication.h>
20#include "kbounce.h" 19#include "kbounce.h"
21#include <opie/oapplicationfactory.h> 20#include <opie/oapplicationfactory.h>
22 21
23OPIE_EXPORT_APP( OApplicationFactory<KJezzball> ) 22OPIE_EXPORT_APP( OApplicationFactory<KJezzball> )
24 23
diff --git a/noncore/games/buzzword/buzzword.cpp b/noncore/games/buzzword/buzzword.cpp
index f746065..13eb481 100644
--- a/noncore/games/buzzword/buzzword.cpp
+++ b/noncore/games/buzzword/buzzword.cpp
@@ -1,182 +1,181 @@
1/* 1/*
2 * Copyright (C) 2002 Martin Imobersteg <imm@gmx.ch> 2 * Copyright (C) 2002 Martin Imobersteg <imm@gmx.ch>
3 * 3 *
4 * This program is free software; you can redistribute it and/or 4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public 5 * modify it under the terms of the GNU General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License,Life or (at your option) any later version. 7 * version 2 of the License,Life or (at your option) any later version.
8 * 8 *
9 * This program is distributed in the hope that it will be useful, 9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public 14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the Free 15 * License along with this program; if not, write to the Free
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */ 17 */
18 18
19#include <qlayout.h> 19#include <qlayout.h>
20#include <qmessagebox.h>
21#include <qmainwindow.h> 20#include <qmainwindow.h>
22#include <qlabel.h> 21#include <qlabel.h>
23#include <qgrid.h> 22#include <qgrid.h>
24#include <qcolor.h> 23#include <qcolor.h>
25#include <qbutton.h> 24#include <qbutton.h>
26#include <qfile.h> 25#include <qfile.h>
27#include <qtextstream.h> 26#include <qtextstream.h>
28#include <qstringlist.h> 27#include <qstringlist.h>
29#include <qmessagebox.h> 28#include <qmessagebox.h>
30#include <qdir.h> 29#include <qdir.h>
31 30
32#include <math.h> 31#include <math.h>
33#include <stdlib.h> 32#include <stdlib.h>
34 33
35#include <qpe/qpeapplication.h> 34#include <qpe/qpeapplication.h>
36 35
37#include "buzzword.h" 36#include "buzzword.h"
38 37
39BuzzLabel::BuzzLabel( QWidget *parent, const char *name ) 38BuzzLabel::BuzzLabel( QWidget *parent, const char *name )
40: QLabel( parent, name ) 39: QLabel( parent, name )
41{ 40{
42} 41}
43 42
44void BuzzLabel::mousePressEvent(QMouseEvent *e) 43void BuzzLabel::mousePressEvent(QMouseEvent *e)
45{ 44{
46 if(e->button() == LeftButton) 45 if(e->button() == LeftButton)
47 { 46 {
48 emit clicked(); 47 emit clicked();
49 } 48 }
50} 49}
51 50
52BuzzItem::BuzzItem( int row, int column, QString text, QWidget *parent, const char *name ) 51BuzzItem::BuzzItem( int row, int column, QString text, QWidget *parent, const char *name )
53: QVBox( parent, name ), _row(row), _column(column) 52: QVBox( parent, name ), _row(row), _column(column)
54{ 53{
55 setFrameStyle( QFrame::Panel | QFrame::Raised ); 54 setFrameStyle( QFrame::Panel | QFrame::Raised );
56 setLineWidth( 1 ); 55 setLineWidth( 1 );
57 label = new BuzzLabel(this, "label"); 56 label = new BuzzLabel(this, "label");
58 label->setText(text); 57 label->setText(text);
59 label->setAlignment( int( QLabel::AlignCenter ) ); 58 label->setAlignment( int( QLabel::AlignCenter ) );
60 59
61 connect( label, SIGNAL(clicked()), this, SLOT(flip()) ); 60 connect( label, SIGNAL(clicked()), this, SLOT(flip()) );
62} 61}
63 62
64void BuzzItem::flip() 63void BuzzItem::flip()
65{ 64{
66 setLineWidth( 1 ); 65 setLineWidth( 1 );
67 label->setBackgroundColor(label->colorGroup().highlight()); 66 label->setBackgroundColor(label->colorGroup().highlight());
68 emit clicked(_row, _column); 67 emit clicked(_row, _column);
69} 68}
70 69
71BuzzWord::BuzzWord(QWidget* parent, const char* name, WFlags fl ) : QMainWindow( parent, name, fl ) 70BuzzWord::BuzzWord(QWidget* parent, const char* name, WFlags fl ) : QMainWindow( parent, name, fl )
72{ 71{
73 setCaption(tr("buZzword")); 72 setCaption(tr("buZzword"));
74 73
75 menu = menuBar(); 74 menu = menuBar();
76 game = new QPopupMenu; 75 game = new QPopupMenu;
77 game->insertItem(tr("&New game"), this, SLOT(newGame()), Key_N ); 76 game->insertItem(tr("&New game"), this, SLOT(newGame()), Key_N );
78 menu->insertItem( tr("&Game"), game ); 77 menu->insertItem( tr("&Game"), game );
79 78
80 gridVal = 4; 79 gridVal = 4;
81 grid = NULL; 80 grid = NULL;
82 gameOver = false; 81 gameOver = false;
83 newGame(); 82 newGame();
84} 83}
85 84
86void BuzzWord::drawGrid() 85void BuzzWord::drawGrid()
87{ 86{
88 QStringList l; 87 QStringList l;
89 88
90 QString path = QPEApplication::qpeDir()+"share/buzzword/"; 89 QString path = QPEApplication::qpeDir()+"share/buzzword/";
91 QFile f( path + "buzzwords" ); 90 QFile f( path + "buzzwords" );
92 if ( !f.open( IO_ReadOnly ) ) 91 if ( !f.open( IO_ReadOnly ) )
93 return; 92 return;
94 93
95 QTextStream t( &f ); 94 QTextStream t( &f );
96 95
97 while (!t.atEnd()) 96 while (!t.atEnd())
98 { 97 {
99 l << t.readLine(); 98 l << t.readLine();
100 } 99 }
101 100
102 f.close(); 101 f.close();
103 102
104 grid = new QGrid(gridVal, this); 103 grid = new QGrid(gridVal, this);
105 //grid->setFixedSize( 480, 480 ); 104 //grid->setFixedSize( 480, 480 );
106 105
107 for( int c = 0 ; c < gridVal ; c++ ) 106 for( int c = 0 ; c < gridVal ; c++ )
108 { 107 {
109 for( int r = 0 ; r < gridVal ; r++ ) 108 for( int r = 0 ; r < gridVal ; r++ )
110 { 109 {
111 uint pos = rand() % l. count(); 110 uint pos = rand() % l. count();
112 111
113 QString word = QStringList::split(" ", l[pos]).join("\n"); 112 QString word = QStringList::split(" ", l[pos]).join("\n");
114 BuzzItem* bi = new BuzzItem( c, r, word, grid ); 113 BuzzItem* bi = new BuzzItem( c, r, word, grid );
115 connect( bi, SIGNAL(clicked(int, int)), this, SLOT(clicked(int,int)) ); 114 connect( bi, SIGNAL(clicked(int, int)), this, SLOT(clicked(int,int)) );
116 map[c][r] = 0; 115 map[c][r] = 0;
117 116
118 l.remove( l.at( pos )); 117 l.remove( l.at( pos ));
119 } 118 }
120 } 119 }
121} 120}
122 121
123void BuzzWord::clicked(int row, int column) 122void BuzzWord::clicked(int row, int column)
124{ 123{
125 if ( ! gameOver ) 124 if ( ! gameOver )
126 { 125 {
127 int rowTotal = 0; 126 int rowTotal = 0;
128 int columnTotal = 0; 127 int columnTotal = 0;
129 128
130 map[column][row] = 1; 129 map[column][row] = 1;
131 130
132 for( int c = 0 ; c < gridVal ; c++ ) 131 for( int c = 0 ; c < gridVal ; c++ )
133 { 132 {
134 for( int r = 0 ; r < gridVal ; r++ ) 133 for( int r = 0 ; r < gridVal ; r++ )
135 { 134 {
136 if ( map[c][r] == 1 ) 135 if ( map[c][r] == 1 )
137 rowTotal++; 136 rowTotal++;
138 137
139 if ( rowTotal == 4 ) 138 if ( rowTotal == 4 )
140 { 139 {
141 bingo(); 140 bingo();
142 } 141 }
143 } 142 }
144 rowTotal = 0; 143 rowTotal = 0;
145 } 144 }
146 145
147 for( int r = 0 ; r < gridVal ; r++ ) 146 for( int r = 0 ; r < gridVal ; r++ )
148 { 147 {
149 for( int c = 0 ; c < gridVal ; c++ ) 148 for( int c = 0 ; c < gridVal ; c++ )
150 { 149 {
151 if ( map[c][r] == 1 ) 150 if ( map[c][r] == 1 )
152 columnTotal++; 151 columnTotal++;
153 152
154 if ( columnTotal == 4 ) 153 if ( columnTotal == 4 )
155 { 154 {
156 bingo(); 155 bingo();
157 } 156 }
158 } 157 }
159 columnTotal = 0; 158 columnTotal = 0;
160 } 159 }
161 160
162 if ( map[0][0] && map[1][1] && map[2][2] && map[3][3] ) 161 if ( map[0][0] && map[1][1] && map[2][2] && map[3][3] )
163 bingo(); 162 bingo();
164 163
165 if ( map[0][3] && map[1][2] && map[2][1] && map[3][0] ) 164 if ( map[0][3] && map[1][2] && map[2][1] && map[3][0] )
166 bingo(); 165 bingo();
167 } 166 }
168} 167}
169 168
170void BuzzWord::bingo() 169void BuzzWord::bingo()
171{ 170{
172 gameOver = true; 171 gameOver = true;
173 QMessageBox::information( this, "BUZZWORD", tr("<h1><b>BINGO !</b></h1>")); 172 QMessageBox::information( this, "BUZZWORD", tr("<h1><b>BINGO !</b></h1>"));
174} 173}
175 174
176void BuzzWord::newGame() 175void BuzzWord::newGame()
177{ 176{
178 gameOver = false; 177 gameOver = false;
179 delete grid; 178 delete grid;
180 drawGrid(); 179 drawGrid();
181 setCentralWidget(grid); 180 setCentralWidget(grid);
182} 181}
diff --git a/noncore/games/buzzword/main.cpp b/noncore/games/buzzword/main.cpp
index 67f2c26..95b3176 100644
--- a/noncore/games/buzzword/main.cpp
+++ b/noncore/games/buzzword/main.cpp
@@ -1,24 +1,23 @@
1/* 1/*
2 * Copyright (C) 2002 Martin Imobersteg <imm@gmx.ch> 2 * Copyright (C) 2002 Martin Imobersteg <imm@gmx.ch>
3 * 3 *
4 * This program is free software; you can redistribute it and/or 4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public 5 * modify it under the terms of the GNU General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License,Life or (at your option) any later version. 7 * version 2 of the License,Life or (at your option) any later version.
8 * 8 *
9 * This program is distributed in the hope that it will be useful, 9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public 14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the Free 15 * License along with this program; if not, write to the Free
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */ 17 */
18 18
19#include <qpe/qpeapplication.h>
20#include <opie/oapplicationfactory.h> 19#include <opie/oapplicationfactory.h>
21 20
22#include "buzzword.h" 21#include "buzzword.h"
23 22
24OPIE_EXPORT_APP( OApplicationFactory<BuzzWord> ) 23OPIE_EXPORT_APP( OApplicationFactory<BuzzWord> )
diff --git a/noncore/games/fifteen/fifteen.cpp b/noncore/games/fifteen/fifteen.cpp
index b4e0308..506e87a 100644
--- a/noncore/games/fifteen/fifteen.cpp
+++ b/noncore/games/fifteen/fifteen.cpp
@@ -1,228 +1,223 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "fifteen.h" 21#include "fifteen.h"
22 22
23#include <qtopia/resource.h> 23#include <qtopia/resource.h>
24#include <qtopia/config.h> 24#include <qtopia/config.h>
25 25
26#include <qvbox.h> 26#include <qvbox.h>
27#include <qaction.h> 27#include <qaction.h>
28#include <qlayout.h>
29#include <qpainter.h> 28#include <qpainter.h>
30#include <qpopupmenu.h>
31#include <qmessagebox.h> 29#include <qmessagebox.h>
32#include <qtoolbar.h> 30#include <qtoolbar.h>
33#include <qmenubar.h> 31#include <qmenubar.h>
34#include <qstringlist.h>
35#include <qapplication.h>
36#include <qtoolbutton.h>
37 32
38#include <stdlib.h> 33#include <stdlib.h>
39#include <time.h> 34#include <time.h>
40 35
41FifteenMainWindow::FifteenMainWindow(QWidget *parent, const char* name, WFlags fl) 36FifteenMainWindow::FifteenMainWindow(QWidget *parent, const char* name, WFlags fl)
42 : QMainWindow( parent, name, fl ) 37 : QMainWindow( parent, name, fl )
43{ 38{
44 // random seed 39 // random seed
45 srand(time(0)); 40 srand(time(0));
46 setCaption( tr("Fifteen Pieces") ); 41 setCaption( tr("Fifteen Pieces") );
47 42
48 QToolBar *toolbar = new QToolBar(this); 43 QToolBar *toolbar = new QToolBar(this);
49 toolbar->setHorizontalStretchable( FALSE ); 44 toolbar->setHorizontalStretchable( FALSE );
50 QMenuBar *menubar = new QMenuBar( toolbar ); 45 QMenuBar *menubar = new QMenuBar( toolbar );
51 menubar->setMargin(0); 46 menubar->setMargin(0);
52 QPopupMenu *game = new QPopupMenu( this ); 47 QPopupMenu *game = new QPopupMenu( this );
53 48
54 QWidget *spacer = new QWidget( toolbar ); 49 QWidget *spacer = new QWidget( toolbar );
55 spacer->setBackgroundMode( PaletteButton ); 50 spacer->setBackgroundMode( PaletteButton );
56 toolbar->setStretchableWidget( spacer ); 51 toolbar->setStretchableWidget( spacer );
57 52
58 53
59 setToolBarsMovable( FALSE ); 54 setToolBarsMovable( FALSE );
60 QVBox *vbox = new QVBox( this ); 55 QVBox *vbox = new QVBox( this );
61 PiecesTable *table = new PiecesTable( vbox ); 56 PiecesTable *table = new PiecesTable( vbox );
62 setCentralWidget(vbox); 57 setCentralWidget(vbox);
63 58
64 59
65 60
66 QAction *a = new QAction( tr( "Randomize" ), Resource::loadPixmap( "new" ), 61 QAction *a = new QAction( tr( "Randomize" ), Resource::loadPixmap( "new" ),
67 QString::null, 0, this, 0 ); 62 QString::null, 0, this, 0 );
68 connect( a, SIGNAL( activated() ), table, SLOT( slotRandomize() ) ); 63 connect( a, SIGNAL( activated() ), table, SLOT( slotRandomize() ) );
69 a->addTo( game ); 64 a->addTo( game );
70 a->addTo( toolbar ); 65 a->addTo( toolbar );
71 66
72 /* This is pointless and confusing. 67 /* This is pointless and confusing.
73 a = new QAction( tr( "Solve" ), Resource::loadIconSet( "repeat" ), 68 a = new QAction( tr( "Solve" ), Resource::loadIconSet( "repeat" ),
74 QString::null, 0, this, 0 ); 69 QString::null, 0, this, 0 );
75 connect( a, SIGNAL( activated() ), table, SLOT( slotReset() ) ); 70 connect( a, SIGNAL( activated() ), table, SLOT( slotReset() ) );
76 a->addTo( game ); 71 a->addTo( game );
77 a->addTo( toolbar ); 72 a->addTo( toolbar );
78 */ 73 */
79 menubar->insertItem( tr( "Game" ), game ); 74 menubar->insertItem( tr( "Game" ), game );
80} 75}
81 76
82PiecesTable::PiecesTable(QWidget* parent, const char* name ) 77PiecesTable::PiecesTable(QWidget* parent, const char* name )
83 : QTableView(parent, name), _menu(0), _randomized(false) 78 : QTableView(parent, name), _menu(0), _randomized(false)
84{ 79{
85 // setup table view 80 // setup table view
86 setFrameStyle(StyledPanel | Sunken); 81 setFrameStyle(StyledPanel | Sunken);
87 setBackgroundMode(NoBackground); 82 setBackgroundMode(NoBackground);
88 setMouseTracking(true); 83 setMouseTracking(true);
89 84
90 setNumRows(4); 85 setNumRows(4);
91 setNumCols(4); 86 setNumCols(4);
92 87
93 // init arrays 88 // init arrays
94 initMap(); 89 initMap();
95 readConfig(); 90 readConfig();
96 initColors(); 91 initColors();
97 92
98 // set font 93 // set font
99 QFont f = font(); 94 QFont f = font();
100 f.setPixelSize(18); 95 f.setPixelSize(18);
101 f.setBold( TRUE ); 96 f.setBold( TRUE );
102 setFont(f); 97 setFont(f);
103} 98}
104 99
105PiecesTable::~PiecesTable() 100PiecesTable::~PiecesTable()
106{ 101{
107 writeConfig(); 102 writeConfig();
108} 103}
109 104
110void PiecesTable::writeConfig() 105void PiecesTable::writeConfig()
111{ 106{
112 Config cfg("Fifteen"); 107 Config cfg("Fifteen");
113 cfg.setGroup("Game"); 108 cfg.setGroup("Game");
114 QStringList map; 109 QStringList map;
115 for (int i = 0; i < 16; i++) 110 for (int i = 0; i < 16; i++)
116 map.append( QString::number( _map[i] ) ); 111 map.append( QString::number( _map[i] ) );
117 cfg.writeEntry("Map", map, '-'); 112 cfg.writeEntry("Map", map, '-');
118 cfg.writeEntry("Randomized", _randomized ); 113 cfg.writeEntry("Randomized", _randomized );
119} 114}
120 115
121void PiecesTable::readConfig() 116void PiecesTable::readConfig()
122{ 117{
123 Config cfg("Fifteen"); 118 Config cfg("Fifteen");
124 cfg.setGroup("Game"); 119 cfg.setGroup("Game");
125 QStringList map = cfg.readListEntry("Map", '-'); 120 QStringList map = cfg.readListEntry("Map", '-');
126 _randomized = cfg.readBoolEntry( "Randomized", FALSE ); 121 _randomized = cfg.readBoolEntry( "Randomized", FALSE );
127 int i = 0; 122 int i = 0;
128 for ( QStringList::Iterator it = map.begin(); it != map.end(); ++it ) { 123 for ( QStringList::Iterator it = map.begin(); it != map.end(); ++it ) {
129 _map[i] = (*it).toInt(); 124 _map[i] = (*it).toInt();
130 i++; 125 i++;
131 if ( i > 15 ) break; 126 if ( i > 15 ) break;
132 } 127 }
133} 128}
134 129
135void PiecesTable::paintCell(QPainter *p, int row, int col) 130void PiecesTable::paintCell(QPainter *p, int row, int col)
136{ 131{
137 int w = cellWidth(); 132 int w = cellWidth();
138 int h = cellHeight(); 133 int h = cellHeight();
139 int x2 = w - 1; 134 int x2 = w - 1;
140 int y2 = h - 1; 135 int y2 = h - 1;
141 136
142 int number = _map[col + row * numCols()] + 1; 137 int number = _map[col + row * numCols()] + 1;
143 138
144 // draw cell background 139 // draw cell background
145 if(number == 16) 140 if(number == 16)
146 p->setBrush(colorGroup().background()); 141 p->setBrush(colorGroup().background());
147 else 142 else
148 p->setBrush(_colors[number-1]); 143 p->setBrush(_colors[number-1]);
149 p->setPen(NoPen); 144 p->setPen(NoPen);
150 p->drawRect(0, 0, w, h); 145 p->drawRect(0, 0, w, h);
151 146
152 if (number == 16) return; 147 if (number == 16) return;
153 148
154 // draw borders 149 // draw borders
155 if (height() > 40) { 150 if (height() > 40) {
156 p->setBrush(_colors[number-1].light(130)); 151 p->setBrush(_colors[number-1].light(130));
157 p->drawPolygon(light_border); 152 p->drawPolygon(light_border);
158 153
159 p->setBrush(_colors[number-1].dark(130)); 154 p->setBrush(_colors[number-1].dark(130));
160 p->drawPolygon(dark_border); 155 p->drawPolygon(dark_border);
161 } 156 }
162 157
163 // draw number 158 // draw number
164 p->setPen(black); 159 p->setPen(black);
165 p->drawText(0, 0, x2, y2, AlignHCenter | AlignVCenter, QString::number(number)); 160 p->drawText(0, 0, x2, y2, AlignHCenter | AlignVCenter, QString::number(number));
166} 161}
167 162
168void PiecesTable::resizeEvent(QResizeEvent *e) 163void PiecesTable::resizeEvent(QResizeEvent *e)
169{ 164{
170 QTableView::resizeEvent(e); 165 QTableView::resizeEvent(e);
171 166
172 setCellWidth(contentsRect().width()/ numRows()); 167 setCellWidth(contentsRect().width()/ numRows());
173 setCellHeight(contentsRect().height() / numCols()); 168 setCellHeight(contentsRect().height() / numCols());
174 169
175 // 170 //
176 // Calculate 3d-effect borders 171 // Calculate 3d-effect borders
177 // 172 //
178 intcell_w = cellWidth(); 173 intcell_w = cellWidth();
179 intcell_h = cellHeight(); 174 intcell_h = cellHeight();
180 int x_offset = cell_w - int(cell_w * 0.9);// 10% should be enough 175 int x_offset = cell_w - int(cell_w * 0.9);// 10% should be enough
181 inty_offset = cell_h - int(cell_h * 0.9); 176 inty_offset = cell_h - int(cell_h * 0.9);
182 177
183 light_border.setPoints(6, 178 light_border.setPoints(6,
184 0, 0, 179 0, 0,
185 cell_w, 0, 180 cell_w, 0,
186 cell_w - x_offset, y_offset, 181 cell_w - x_offset, y_offset,
187 x_offset, y_offset, 182 x_offset, y_offset,
188 x_offset, cell_h - y_offset, 183 x_offset, cell_h - y_offset,
189 0, cell_h); 184 0, cell_h);
190 185
191 dark_border.setPoints(6, 186 dark_border.setPoints(6,
192 cell_w, 0, 187 cell_w, 0,
193 cell_w, cell_h, 188 cell_w, cell_h,
194 0, cell_h, 189 0, cell_h,
195 x_offset, cell_h - y_offset, 190 x_offset, cell_h - y_offset,
196 cell_w - x_offset, cell_h - y_offset, 191 cell_w - x_offset, cell_h - y_offset,
197 cell_w - x_offset, y_offset); 192 cell_w - x_offset, y_offset);
198} 193}
199 194
200void PiecesTable::initColors() 195void PiecesTable::initColors()
201{ 196{
202 _colors.resize(numRows() * numCols()); 197 _colors.resize(numRows() * numCols());
203 for (int r = 0; r < numRows(); r++) 198 for (int r = 0; r < numRows(); r++)
204 for (int c = 0; c < numCols(); c++) 199 for (int c = 0; c < numCols(); c++)
205 _colors[c + r *numCols()] = QColor(255 - 70 * c,255 - 70 * r, 150); 200 _colors[c + r *numCols()] = QColor(255 - 70 * c,255 - 70 * r, 150);
206} 201}
207 202
208void PiecesTable::initMap() 203void PiecesTable::initMap()
209{ 204{
210 _map.resize(16); 205 _map.resize(16);
211 for ( int i = 0; i < 16; i++) 206 for ( int i = 0; i < 16; i++)
212 _map[i] = i; 207 _map[i] = i;
213 208
214 _randomized = false; 209 _randomized = false;
215} 210}
216 211
217void PiecesTable::randomizeMap() 212void PiecesTable::randomizeMap()
218{ 213{
219 initMap(); 214 initMap();
220 _randomized = true; 215 _randomized = true;
221 // find the free position 216 // find the free position
222 int pos = _map.find(15); 217 int pos = _map.find(15);
223 218
224 int move = 0; 219 int move = 0;
225 while ( move < 333 ) { 220 while ( move < 333 ) {
226 221
227 int frow = pos / numCols(); 222 int frow = pos / numCols();
228 int fcol = pos - frow * numCols(); 223 int fcol = pos - frow * numCols();
diff --git a/noncore/games/go/gowidget.cpp b/noncore/games/go/gowidget.cpp
index cf89267..79820b1 100644
--- a/noncore/games/go/gowidget.cpp
+++ b/noncore/games/go/gowidget.cpp
@@ -1,230 +1,226 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "gowidget.h" 21#include "gowidget.h"
22 22
23#include <qpe/config.h> 23#include <qpe/config.h>
24#include <qpe/resource.h> 24#include <qpe/resource.h>
25 25
26#include <qpainter.h> 26#include <qpainter.h>
27#include <qpixmap.h>
28#include <qpe/qpetoolbar.h> 27#include <qpe/qpetoolbar.h>
29#include <qmenubar.h> 28#include <qmenubar.h>
30#include <qpopupmenu.h>
31#include <qaction.h> 29#include <qaction.h>
32#include <qapplication.h> //processEvents() 30#include <qapplication.h> //processEvents()
33#include <qlabel.h> 31#include <qlabel.h>
34 32
35//#include <stdio.h> 33//#include <stdio.h>
36 34
37#include "amigo.h"
38#include "goplayutils.h"
39 35
40static const enum bVal computer_color = BLACK; 36static const enum bVal computer_color = BLACK;
41 37
42static int current_handicap = 1; 38static int current_handicap = 1;
43 39
44static QBrush *goBrush; 40static QBrush *goBrush;
45//static QImage *newBlackStone; 41//static QImage *newBlackStone;
46//static QImage *blackStone; 42//static QImage *blackStone;
47//static QImage *whiteStone; 43//static QImage *whiteStone;
48static QPixmap *newBlackStone; 44static QPixmap *newBlackStone;
49static QPixmap *blackStone; 45static QPixmap *blackStone;
50static QPixmap *whiteStone; 46static QPixmap *whiteStone;
51 47
52static bool smallStones = FALSE; 48static bool smallStones = FALSE;
53 49
54GoMainWidget::GoMainWidget( QWidget *parent, const char* name, WFlags fl) : 50GoMainWidget::GoMainWidget( QWidget *parent, const char* name, WFlags fl) :
55 QMainWindow( parent, name, fl ) 51 QMainWindow( parent, name, fl )
56{ 52{
57 setToolBarsMovable( FALSE ); 53 setToolBarsMovable( FALSE );
58 GoWidget *go = new GoWidget(this); 54 GoWidget *go = new GoWidget(this);
59 55
60 setCentralWidget(go); 56 setCentralWidget(go);
61 toolbar = new QToolBar(this); 57 toolbar = new QToolBar(this);
62 toolbar->setHorizontalStretchable( TRUE ); 58 toolbar->setHorizontalStretchable( TRUE );
63 addToolBar(toolbar); 59 addToolBar(toolbar);
64 60
65 QMenuBar *mb = new QMenuBar( toolbar ); 61 QMenuBar *mb = new QMenuBar( toolbar );
66 mb->setMargin(0); 62 mb->setMargin(0);
67 QPopupMenu *file = new QPopupMenu( this ); 63 QPopupMenu *file = new QPopupMenu( this );
68 64
69 QAction *a = new QAction( tr( "New Game" ), QString::null, 0, this, 0 ); 65 QAction *a = new QAction( tr( "New Game" ), QString::null, 0, this, 0 );
70 connect( a, SIGNAL( activated() ), go, SLOT( newGame() ) ); 66 connect( a, SIGNAL( activated() ), go, SLOT( newGame() ) );
71 a->addTo( file ); 67 a->addTo( file );
72 68
73 a = new QAction( tr( "Pass" ), Resource::loadPixmap( "pass" ), QString::null, 0, this, 0 ); 69 a = new QAction( tr( "Pass" ), Resource::loadPixmap( "pass" ), QString::null, 0, this, 0 );
74 connect( a, SIGNAL( activated() ), go, SLOT( pass() ) ); 70 connect( a, SIGNAL( activated() ), go, SLOT( pass() ) );
75 a->addTo( file ); 71 a->addTo( file );
76 a->addTo( toolbar ); 72 a->addTo( toolbar );
77 73
78 74
79 a = new QAction( tr( "Resign" ), Resource::loadPixmap( "reset" ), QString::null, 0, this, 0 ); 75 a = new QAction( tr( "Resign" ), Resource::loadPixmap( "reset" ), QString::null, 0, this, 0 );
80 connect( a, SIGNAL( activated() ), go, SLOT( resign() ) ); 76 connect( a, SIGNAL( activated() ), go, SLOT( resign() ) );
81 a->addTo( file ); 77 a->addTo( file );
82 78
83 a = new QAction( tr( "Two player option" ), QString::null, 0, this, 0 ); 79 a = new QAction( tr( "Two player option" ), QString::null, 0, this, 0 );
84 a->setToggleAction( TRUE ); 80 a->setToggleAction( TRUE );
85 connect( a, SIGNAL( toggled(bool) ), go, SLOT( setTwoplayer(bool) ) ); 81 connect( a, SIGNAL( toggled(bool) ), go, SLOT( setTwoplayer(bool) ) );
86 a->addTo( file ); 82 a->addTo( file );
87 83
88 mb->insertItem( tr( "Game" ), file ); 84 mb->insertItem( tr( "Game" ), file );
89 85
90 QLabel *turnLabel = new QLabel( toolbar ); 86 QLabel *turnLabel = new QLabel( toolbar );
91 turnLabel->setBackgroundMode( PaletteButton ); 87 turnLabel->setBackgroundMode( PaletteButton );
92 connect( go, SIGNAL(showTurn(const QPixmap&)), 88 connect( go, SIGNAL(showTurn(const QPixmap&)),
93 turnLabel, SLOT(setPixmap(const QPixmap&)) ); 89 turnLabel, SLOT(setPixmap(const QPixmap&)) );
94 90
95 91
96 QLabel * scoreLabel = new QLabel( toolbar ); 92 QLabel * scoreLabel = new QLabel( toolbar );
97 scoreLabel->setBackgroundMode( PaletteButton ); 93 scoreLabel->setBackgroundMode( PaletteButton );
98 connect( go, SIGNAL(showScore(const QString&)), 94 connect( go, SIGNAL(showScore(const QString&)),
99 scoreLabel, SLOT(setText(const QString&)) ); 95 scoreLabel, SLOT(setText(const QString&)) );
100 96
101 toolbar->setStretchableWidget( scoreLabel ); 97 toolbar->setStretchableWidget( scoreLabel );
102 98
103 go->readConfig(); 99 go->readConfig();
104} 100}
105 101
106void GoMainWidget::resizeEvent( QResizeEvent * ) 102void GoMainWidget::resizeEvent( QResizeEvent * )
107{ 103{
108 //### this won't work because of the text label... 104 //### this won't work because of the text label...
109 /* 105 /*
110 if ( width() > height() ) 106 if ( width() > height() )
111 moveToolBar( toolbar, Left ); 107 moveToolBar( toolbar, Left );
112 else 108 else
113 moveToolBar( toolbar, Top ); 109 moveToolBar( toolbar, Top );
114 */ 110 */
115} 111}
116 112
117GoWidget *GoWidget::self = 0; 113GoWidget *GoWidget::self = 0;
118 114
119GoWidget::GoWidget( QWidget *parent, const char* name) : 115GoWidget::GoWidget( QWidget *parent, const char* name) :
120 QWidget( parent, name ) 116 QWidget( parent, name )
121{ 117{
122 if ( self ) 118 if ( self )
123 fatal( "Only one Go widget allowed" ); 119 fatal( "Only one Go widget allowed" );
124 self = this; 120 self = this;
125 twoplayer = FALSE; 121 twoplayer = FALSE;
126 122
127 123
128 d = bx = by = 1; 124 d = bx = by = 1;
129 125
130 QPixmap pix = Resource::loadPixmap( "go/pine" ); 126 QPixmap pix = Resource::loadPixmap( "go/pine" );
131 goBrush = new QBrush( black, pix ); 127 goBrush = new QBrush( black, pix );
132 /* 128 /*
133 QString fn = Resource::findPixmap("Go-black"); 129 QString fn = Resource::findPixmap("Go-black");
134 blackStone = new QImage( fn ); 130 blackStone = new QImage( fn );
135 fn = Resource::findPixmap("Go-black-highlight"); 131 fn = Resource::findPixmap("Go-black-highlight");
136 newBlackStone = new QImage( fn ); 132 newBlackStone = new QImage( fn );
137 fn = Resource::findPixmap("Go-white"); 133 fn = Resource::findPixmap("Go-white");
138 whiteStone = new QImage( fn ); 134 whiteStone = new QImage( fn );
139 */ 135 */
140 blackStone = new QPixmap(Resource::loadPixmap( "Go-black" )); 136 blackStone = new QPixmap(Resource::loadPixmap( "Go-black" ));
141 whiteStone = new QPixmap(Resource::loadPixmap( "Go-white" )); 137 whiteStone = new QPixmap(Resource::loadPixmap( "Go-white" ));
142 newBlackStone = new QPixmap(Resource::loadPixmap( "Go-black-highlight" )); 138 newBlackStone = new QPixmap(Resource::loadPixmap( "Go-black-highlight" ));
143 139
144 init(); 140 init();
145} 141}
146 142
147GoWidget::~GoWidget() 143GoWidget::~GoWidget()
148{ 144{
149 writeConfig(); 145 writeConfig();
150} 146}
151 147
152void GoWidget::writeConfig() 148void GoWidget::writeConfig()
153{ 149{
154 Config cfg("Go"); 150 Config cfg("Go");
155 cfg.setGroup("Game"); 151 cfg.setGroup("Game");
156 cfg.writeEntry("TwoPlayer", twoplayer); 152 cfg.writeEntry("TwoPlayer", twoplayer);
157 cfg.writeEntry("CurrentPlayer", currentPlayer); 153 cfg.writeEntry("CurrentPlayer", currentPlayer);
158 cfg.writeEntry("NPassed", nPassed); 154 cfg.writeEntry("NPassed", nPassed);
159 QString b; 155 QString b;
160 for (int i=0; i<19; i++) 156 for (int i=0; i<19; i++)
161 for (int j=0; j<19; j++) 157 for (int j=0; j<19; j++)
162 b += board[i][j] == BLACK ? 'B' : board[i][j] == WHITE ? 'W' : '.'; 158 b += board[i][j] == BLACK ? 'B' : board[i][j] == WHITE ? 'W' : '.';
163 cfg.writeEntry("Board", b); 159 cfg.writeEntry("Board", b);
164 cfg.writeEntry("LastX", lastX); 160 cfg.writeEntry("LastX", lastX);
165 cfg.writeEntry("LastY", lastY); 161 cfg.writeEntry("LastY", lastY);
166 extern int blackPrisoners, whitePrisoners; 162 extern int blackPrisoners, whitePrisoners;
167 cfg.writeEntry("BlackPrisoners", blackPrisoners); 163 cfg.writeEntry("BlackPrisoners", blackPrisoners);
168 cfg.writeEntry("WhitePrisoners", whitePrisoners); 164 cfg.writeEntry("WhitePrisoners", whitePrisoners);
169} 165}
170 166
171void GoWidget::readConfig() 167void GoWidget::readConfig()
172{ 168{
173 init(); 169 init();
174 Config cfg("Go"); 170 Config cfg("Go");
175 cfg.setGroup("Game"); 171 cfg.setGroup("Game");
176 twoplayer = cfg.readBoolEntry("TwoPlayer"); 172 twoplayer = cfg.readBoolEntry("TwoPlayer");
177 currentPlayer = (bVal)cfg.readNumEntry("CurrentPlayer",1); 173 currentPlayer = (bVal)cfg.readNumEntry("CurrentPlayer",1);
178 nPassed = cfg.readNumEntry("NPassed",0); 174 nPassed = cfg.readNumEntry("NPassed",0);
179 QString b = cfg.readEntry("Board"); 175 QString b = cfg.readEntry("Board");
180 if ( b.length() == 19*19 ) 176 if ( b.length() == 19*19 )
181 for (int i=0; i<19; i++) 177 for (int i=0; i<19; i++)
182 for (int j=0; j<19; j++) { 178 for (int j=0; j<19; j++) {
183 QChar ch = b[j+19*i]; 179 QChar ch = b[j+19*i];
184 if ( ch != '.' ) 180 if ( ch != '.' )
185 GoPlaceStone( ch == 'B' ? BLACK : WHITE, i, j ); 181 GoPlaceStone( ch == 'B' ? BLACK : WHITE, i, j );
186 } 182 }
187 lastX = cfg.readNumEntry("LastX"); 183 lastX = cfg.readNumEntry("LastX");
188 lastY = cfg.readNumEntry("LastY"); 184 lastY = cfg.readNumEntry("LastY");
189 extern int blackPrisoners, whitePrisoners; 185 extern int blackPrisoners, whitePrisoners;
190 blackPrisoners = cfg.readNumEntry("BlackPrisoners",0); 186 blackPrisoners = cfg.readNumEntry("BlackPrisoners",0);
191 whitePrisoners = cfg.readNumEntry("WhitePrisoners",0); 187 whitePrisoners = cfg.readNumEntry("WhitePrisoners",0);
192 reportPrisoners(blackPrisoners,whitePrisoners); 188 reportPrisoners(blackPrisoners,whitePrisoners);
193 emit showTurn( currentPlayer == WHITE ? *whiteStone : *blackStone ); 189 emit showTurn( currentPlayer == WHITE ? *whiteStone : *blackStone );
194} 190}
195 191
196void GoWidget::resizeEvent( QResizeEvent * ) 192void GoWidget::resizeEvent( QResizeEvent * )
197{ 193{
198 d = QMIN(width(),height())/19; 194 d = QMIN(width(),height())/19;
199 // int r = (d/2-1); 195 // int r = (d/2-1);
200 bx = (width() - 18*d)/2 ; 196 bx = (width() - 18*d)/2 ;
201 by = (height() - 18*d)/2 ; 197 by = (height() - 18*d)/2 ;
202 198
203 if ( d < 10 && !smallStones ) { 199 if ( d < 10 && !smallStones ) {
204 blackStone->convertFromImage( blackStone->convertToImage().smoothScale(8,8) ); 200 blackStone->convertFromImage( blackStone->convertToImage().smoothScale(8,8) );
205 whiteStone->convertFromImage( whiteStone->convertToImage().smoothScale(8,8) ); 201 whiteStone->convertFromImage( whiteStone->convertToImage().smoothScale(8,8) );
206 newBlackStone->convertFromImage( newBlackStone->convertToImage().smoothScale(8,8) ); 202 newBlackStone->convertFromImage( newBlackStone->convertToImage().smoothScale(8,8) );
207 203
208 smallStones = TRUE; 204 smallStones = TRUE;
209 } else if ( d >= 10 && smallStones ) { 205 } else if ( d >= 10 && smallStones ) {
210 blackStone = new QPixmap(Resource::loadPixmap( "Go-black" )); 206 blackStone = new QPixmap(Resource::loadPixmap( "Go-black" ));
211 whiteStone = new QPixmap(Resource::loadPixmap( "Go-white" )); 207 whiteStone = new QPixmap(Resource::loadPixmap( "Go-white" ));
212 newBlackStone = new QPixmap(Resource::loadPixmap( "Go-black-highlight" )); 208 newBlackStone = new QPixmap(Resource::loadPixmap( "Go-black-highlight" ));
213 smallStones = FALSE; 209 smallStones = FALSE;
214 } 210 }
215} 211}
216 212
217void GoWidget::init() 213void GoWidget::init()
218{ 214{
219 lastX = lastY = newX = newY = -1; 215 lastX = lastY = newX = newY = -1;
220 nPassed = 0; 216 nPassed = 0;
221 for ( int i = 0; i < 19; i++ ) 217 for ( int i = 0; i < 19; i++ )
222 for ( int j = 0; j < 19; j++ ) 218 for ( int j = 0; j < 19; j++ )
223 board[i][j]=-1; 219 board[i][j]=-1;
224 gameActive = TRUE; 220 gameActive = TRUE;
225 goRestart(current_handicap); 221 goRestart(current_handicap);
226 222
227 if ( twoplayer ) { 223 if ( twoplayer ) {
228 currentPlayer = BLACK; 224 currentPlayer = BLACK;
229 } else { 225 } else {
230 doComputerMove(); 226 doComputerMove();
diff --git a/noncore/games/go/main.cpp b/noncore/games/go/main.cpp
index f24e3c3..66f34ab 100644
--- a/noncore/games/go/main.cpp
+++ b/noncore/games/go/main.cpp
@@ -1,28 +1,27 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "gowidget.h" 21#include "gowidget.h"
22 22
23#include <qpe/qpeapplication.h>
24 23
25#include <opie/oapplicationfactory.h> 24#include <opie/oapplicationfactory.h>
26 25
27OPIE_EXPORT_APP( OApplicationFactory<GoMainWidget> ) 26OPIE_EXPORT_APP( OApplicationFactory<GoMainWidget> )
28 27
diff --git a/noncore/games/kbill/MCursor.cc b/noncore/games/kbill/MCursor.cc
index a3cb340..c581693 100644
--- a/noncore/games/kbill/MCursor.cc
+++ b/noncore/games/kbill/MCursor.cc
@@ -1,69 +1,64 @@
1/*************************************************************************** 1/***************************************************************************
2 MCursor.cc - description 2 MCursor.cc - description
3 ------------------- 3 -------------------
4 begin : Thu Dec 30 1999 4 begin : Thu Dec 30 1999
5 copyright : (C) 1999 by Jurrien Loonstra 5 copyright : (C) 1999 by Jurrien Loonstra
6 email : j.h.loonstra@st.hanze.nl 6 email : j.h.loonstra@st.hanze.nl
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17#include "MCursor.h" 17#include "MCursor.h"
18#include "objects.h"
19 18
20#include <qcursor.h>
21#include <qbitmap.h>
22#include <qwidget.h>
23#include <qstring.h>
24#ifdef KDEVER 19#ifdef KDEVER
25#include <kapp.h> 20#include <kapp.h>
26#include <kstandarddirs.h> 21#include <kstandarddirs.h>
27#endif 22#endif
28#include <iostream> 23#include <iostream>
29#include <qpe/resource.h> 24#include <qpe/resource.h>
30MCursor::~MCursor() { 25MCursor::~MCursor() {
31 delete cursor; 26 delete cursor;
32} 27}
33 28
34void MCursor::load(const char *name, int masked) { 29void MCursor::load(const char *name, int masked) {
35 30
36 #ifdef KDEVER 31 #ifdef KDEVER
37 QString file, mfile; 32 QString file, mfile;
38 KStandardDirs dirs; 33 KStandardDirs dirs;
39 34
40 35
41 file = dirs.findResource("data","kbill/bitmaps/" + QString::fromLocal8Bit(name) + ".xbm"); 36 file = dirs.findResource("data","kbill/bitmaps/" + QString::fromLocal8Bit(name) + ".xbm");
42 37
43 QBitmap bitmap, mask; 38 QBitmap bitmap, mask;
44 if (bitmap.load(file) == FALSE) { 39 if (bitmap.load(file) == FALSE) {
45 std::cerr << "cannot open " << file << std::endl; 40 std::cerr << "cannot open " << file << std::endl;
46 exit(1); 41 exit(1);
47 } 42 }
48 if (masked == SEP_MASK) { 43 if (masked == SEP_MASK) {
49 // mfile.sprintf ("%sbitmaps/%s_mask.xbm", (const char*)dir, name); 44 // mfile.sprintf ("%sbitmaps/%s_mask.xbm", (const char*)dir, name);
50 mfile = file = dirs.findResource("data","kbill/bitmaps/" + QString::fromLocal8Bit(name) + "_mask.xbm"); 45 mfile = file = dirs.findResource("data","kbill/bitmaps/" + QString::fromLocal8Bit(name) + "_mask.xbm");
51 if (mask.load(mfile) == FALSE) { 46 if (mask.load(mfile) == FALSE) {
52 std::cerr << "cannot open " << file << std::endl; 47 std::cerr << "cannot open " << file << std::endl;
53 exit(1); 48 exit(1);
54 } 49 }
55 } 50 }
56 else 51 else
57 mask = bitmap; 52 mask = bitmap;
58 #endif 53 #endif
59 54
60 QBitmap bitmap, mask; 55 QBitmap bitmap, mask;
61 bitmap = Resource::loadBitmap("kbill/bitmaps/" + QString::fromLocal8Bit(name)); 56 bitmap = Resource::loadBitmap("kbill/bitmaps/" + QString::fromLocal8Bit(name));
62 57
63 if (masked == SEP_MASK) 58 if (masked == SEP_MASK)
64 mask = bitmap = Resource::loadBitmap("kbill/bitmaps/" + QString::fromLocal8Bit(name) + "_mask.xbm"); 59 mask = bitmap = Resource::loadBitmap("kbill/bitmaps/" + QString::fromLocal8Bit(name) + "_mask.xbm");
65 else 60 else
66 mask = bitmap; 61 mask = bitmap;
67 cursor = new QCursor(bitmap, mask, bitmap.width() / 2, bitmap.height() / 2); 62 cursor = new QCursor(bitmap, mask, bitmap.width() / 2, bitmap.height() / 2);
68} 63}
69 64
diff --git a/noncore/games/kbill/Picture.cc b/noncore/games/kbill/Picture.cc
index fe0eff8..9d46257 100644
--- a/noncore/games/kbill/Picture.cc
+++ b/noncore/games/kbill/Picture.cc
@@ -1,72 +1,70 @@
1/*************************************************************************** 1/***************************************************************************
2 Picture.cc - description 2 Picture.cc - description
3 ------------------- 3 -------------------
4 begin : Thu Dec 30 1999 4 begin : Thu Dec 30 1999
5 copyright : (C) 1999 by Jurrien Loonstra 5 copyright : (C) 1999 by Jurrien Loonstra
6 email : j.h.loonstra@st.hanze.nl 6 email : j.h.loonstra@st.hanze.nl
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17#include "Picture.h" 17#include "Picture.h"
18#include "objects.h"
19 18
20#include <iostream> 19#include <iostream>
21 20
22#include <qstring.h>
23#include <qpe/resource.h> 21#include <qpe/resource.h>
24#ifdef KDEVER 22#ifdef KDEVER
25#include <kapp.h> 23#include <kapp.h>
26#include <kstandarddirs.h> 24#include <kstandarddirs.h>
27#include <kdebug.h> 25#include <kdebug.h>
28#endif 26#endif
29void Picture::load(const char *name, int index) { 27void Picture::load(const char *name, int index) {
30 //QString dir = KApplication::kde_datadir(), file; 28 //QString dir = KApplication::kde_datadir(), file;
31 // QString dir = locate("data",""),file; 29 // QString dir = locate("data",""),file;
32 // dir += "/kbill/"; 30 // dir += "/kbill/";
33 // if (index>=0) 31 // if (index>=0)
34 // file.sprintf ("%spixmaps/%s_%d.xpm", (const char *)dir, name, index); 32 // file.sprintf ("%spixmaps/%s_%d.xpm", (const char *)dir, name, index);
35 // else 33 // else
36 // file.sprintf("%spixmaps/%s.xpm", (const char *)dir, name); 34 // file.sprintf("%spixmaps/%s.xpm", (const char *)dir, name);
37#ifdef KDEVER 35#ifdef KDEVER
38 KStandardDirs dirs; 36 KStandardDirs dirs;
39 QString file; 37 QString file;
40 38
41 if (index>=0) { 39 if (index>=0) {
42 //kdDebug() << "Here"; 40 //kdDebug() << "Here";
43 QString sindex; 41 QString sindex;
44 sindex.setNum(index); 42 sindex.setNum(index);
45 // kdDebug() << "kbill/pixmaps/" + QString::fromLocal8Bit(name) + "_" + sindex + ".xpm"; 43 // kdDebug() << "kbill/pixmaps/" + QString::fromLocal8Bit(name) + "_" + sindex + ".xpm";
46 file = dirs.findResource("data","kbill/pixmaps/" + QString::fromLocal8Bit(name) + "_" + sindex + ".xpm"); 44 file = dirs.findResource("data","kbill/pixmaps/" + QString::fromLocal8Bit(name) + "_" + sindex + ".xpm");
47 } else { 45 } else {
48 file = dirs.findResource("data","kbill/pixmaps/" + QString::fromLocal8Bit(name) + ".xpm"); 46 file = dirs.findResource("data","kbill/pixmaps/" + QString::fromLocal8Bit(name) + ".xpm");
49 } 47 }
50 kdDebug() << file << std::endl; 48 kdDebug() << file << std::endl;
51 pix = new QPixmap(); 49 pix = new QPixmap();
52 if (pix->load(file) == FALSE) 50 if (pix->load(file) == FALSE)
53 std::cerr << "cannot open " << file << std::endl; 51 std::cerr << "cannot open " << file << std::endl;
54 width = pix->width(); 52 width = pix->width();
55 height = pix->height(); 53 height = pix->height();
56#endif 54#endif
57QString sindex; 55QString sindex;
58pix = new QPixmap(); 56pix = new QPixmap();
59sindex.setNum(index); 57sindex.setNum(index);
60if (index>=0) 58if (index>=0)
61pix->load(Resource::findPixmap("kbill/pixmaps/" + QString::fromLocal8Bit(name) +"_"+ sindex)); 59pix->load(Resource::findPixmap("kbill/pixmaps/" + QString::fromLocal8Bit(name) +"_"+ sindex));
62else 60else
63pix->load(Resource::findPixmap("kbill/pixmaps/" + QString::fromLocal8Bit(name))); 61pix->load(Resource::findPixmap("kbill/pixmaps/" + QString::fromLocal8Bit(name)));
64 62
65 width = pix->width(); 63 width = pix->width();
66 height = pix->height(); 64 height = pix->height();
67 65
68} 66}
69 67
70QPixmap* Picture::getPixmap() { 68QPixmap* Picture::getPixmap() {
71 return pix; 69 return pix;
72} 70}
diff --git a/noncore/games/kbill/UI.cpp b/noncore/games/kbill/UI.cpp
index 2afaf9b..611cebf 100644
--- a/noncore/games/kbill/UI.cpp
+++ b/noncore/games/kbill/UI.cpp
@@ -1,175 +1,172 @@
1/*************************************************************************** 1/***************************************************************************
2 UI.cc - description 2 UI.cc - description
3 ------------------- 3 -------------------
4 begin : Thu Dec 30 1999 4 begin : Thu Dec 30 1999
5 copyright : (C) 1999 by Jurrien Loonstra 5 copyright : (C) 1999 by Jurrien Loonstra
6 email : j.h.loonstra@st.hanze.nl 6 email : j.h.loonstra@st.hanze.nl
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17#include "kbill.h"
18#include "objects.h" 17#include "objects.h"
19#include "Strings.h" 18#include "Strings.h"
20#ifdef KDEVER 19#ifdef KDEVER
21#include <kapplication.h> 20#include <kapplication.h>
22#endif 21#endif
23#include <qpixmap.h>
24#include <qmessagebox.h> 22#include <qmessagebox.h>
25#include <qnamespace.h>
26 23
27#include "inputbox.h" 24#include "inputbox.h"
28 25
29/**************************/ 26/**************************/
30/* Timer control routines */ 27/* Timer control routines */
31/**************************/ 28/**************************/
32 29
33UI::~UI() { 30UI::~UI() {
34 paint.end(); 31 paint.end();
35 delete pix; 32 delete pix;
36} 33}
37 34
38void UI::restart_timer() { 35void UI::restart_timer() {
39 field->startTimer(); 36 field->startTimer();
40} 37}
41 38
42void UI::kill_timer() { 39void UI::kill_timer() {
43 field->stopTimer(); 40 field->stopTimer();
44} 41}
45 42
46/*******************/ 43/*******************/
47/* Window routines */ 44/* Window routines */
48/*******************/ 45/*******************/
49 46
50void UI::initialize(int *argc, char **argv) { 47void UI::initialize(int *argc, char **argv) {
51 #ifdef KDEVER 48 #ifdef KDEVER
52 app = new KApplication(*argc, argv, "kbill"); 49 app = new KApplication(*argc, argv, "kbill");
53 #endif 50 #endif
54 app = new QPEApplication(*argc, argv); 51 app = new QPEApplication(*argc, argv);
55} 52}
56 53
57void UI::graph_init() { 54void UI::graph_init() {
58 pix = new QPixmap(Game::scrwidth, Game::scrheight); 55 pix = new QPixmap(Game::scrwidth, Game::scrheight);
59 paint.begin(pix, field); 56 paint.begin(pix, field);
60 paint.setPen(QPen(Qt::black, 3)); 57 paint.setPen(QPen(Qt::black, 3));
61} 58}
62 59
63void UI::make_mainwin() { 60void UI::make_mainwin() {
64 main = new KBill(); 61 main = new KBill();
65 app->showMainWidget(main,true); 62 app->showMainWidget(main,true);
66 main->showMaximized(); 63 main->showMaximized();
67 field = main->getField(); 64 field = main->getField();
68} 65}
69 66
70void UI::popup_dialog (int dialog) { 67void UI::popup_dialog (int dialog) {
71 kill_timer(); 68 kill_timer();
72 switch (dialog) { 69 switch (dialog) {
73 case Game::ENDGAME: 70 case Game::ENDGAME:
74 QMessageBox::message(("Endgame"), QT_TR_NOOP(endgamestr)); 71 QMessageBox::message(("Endgame"), QT_TR_NOOP(endgamestr));
75 break; 72 break;
76 case Game::HIGHSCORE: 73 case Game::HIGHSCORE:
77 //QMessageBox::message(("HighScore"), highscorestr); 74 //QMessageBox::message(("HighScore"), highscorestr);
78 break; 75 break;
79 case Game::ENTERNAME: { 76 case Game::ENTERNAME: {
80 InputBox b(main, 0, ("Enter Name"), QT_TR_NOOP(enternamestr)); 77 InputBox b(main, 0, ("Enter Name"), QT_TR_NOOP(enternamestr));
81 bool state = b.exec() == 2; 78 bool state = b.exec() == 2;
82 char str[20], *nl; 79 char str[20], *nl;
83 strcpy(str, b.getText()); 80 strcpy(str, b.getText());
84 if (!str[0] || state) 81 if (!str[0] || state)
85 strcpy(str, "Anonymous"); 82 strcpy(str, "Anonymous");
86 else if ((nl = strchr(str, '\n'))) 83 else if ((nl = strchr(str, '\n')))
87 *nl = '\0'; 84 *nl = '\0';
88 if (strlen(str) > 20) 85 if (strlen(str) > 20)
89 str[20] = 0; /* truncate string if too long */ 86 str[20] = 0; /* truncate string if too long */
90 // scores.recalc(str); 87 // scores.recalc(str);
91 } 88 }
92 break; 89 break;
93 case Game::SCORE: 90 case Game::SCORE:
94 QMessageBox::message(("Score"), scorestr); 91 QMessageBox::message(("Score"), scorestr);
95 break; 92 break;
96 } 93 }
97 restart_timer(); 94 restart_timer();
98} 95}
99 96
100/*********************/ 97/*********************/
101/* Graphics routines */ 98/* Graphics routines */
102/*********************/ 99/*********************/
103 100
104void UI::set_cursor(int cursor) { 101void UI::set_cursor(int cursor) {
105 QCursor *cur; 102 QCursor *cur;
106 switch (cursor) { 103 switch (cursor) {
107 case Game::BUCKETC: 104 case Game::BUCKETC:
108 cur = bucket.cursor.cursor; 105 cur = bucket.cursor.cursor;
109 break; 106 break;
110 case Game::DOWNC: 107 case Game::DOWNC:
111 cur = downcursor.cursor; 108 cur = downcursor.cursor;
112 break; 109 break;
113 case Game::DEFAULTC: 110 case Game::DEFAULTC:
114 cur = defaultcursor.cursor; 111 cur = defaultcursor.cursor;
115 break; 112 break;
116 default: 113 default:
117 cur = OS.cursor[cursor].cursor; 114 cur = OS.cursor[cursor].cursor;
118 } 115 }
119 field->setCursor(*cur); 116 field->setCursor(*cur);
120} 117}
121 118
122void UI::load_cursors() { 119void UI::load_cursors() {
123 defaultcursor.load("hand_up", MCursor::SEP_MASK); 120 defaultcursor.load("hand_up", MCursor::SEP_MASK);
124 field->setCursor(*defaultcursor.cursor); 121 field->setCursor(*defaultcursor.cursor);
125 downcursor.load("hand_down", MCursor::SEP_MASK); 122 downcursor.load("hand_down", MCursor::SEP_MASK);
126} 123}
127 124
128void UI::clear() { 125void UI::clear() {
129 paint.eraseRect(0, 0, field->width(), field->height()); 126 paint.eraseRect(0, 0, field->width(), field->height());
130} 127}
131 128
132void UI::refresh() { 129void UI::refresh() {
133 paint.flush(); 130 paint.flush();
134 field->setPixmap(pix); 131 field->setPixmap(pix);
135 field->repaint(FALSE); 132 field->repaint(FALSE);
136} 133}
137 134
138void UI::draw (Picture pict, int x, int y) { 135void UI::draw (Picture pict, int x, int y) {
139 paint.drawPixmap(x, y, *pict.pix); 136 paint.drawPixmap(x, y, *pict.pix);
140} 137}
141 138
142void UI::draw_centered (Picture pict) { 139void UI::draw_centered (Picture pict) {
143 draw(pict, (field->width() - pict.width) / 2, (field->height() - pict.height) / 2); 140 draw(pict, (field->width() - pict.width) / 2, (field->height() - pict.height) / 2);
144} 141}
145 142
146void UI::draw_line(int x1, int y1, int x2, int y2) { 143void UI::draw_line(int x1, int y1, int x2, int y2) {
147 paint.drawLine(x1, y1, x2, y2); 144 paint.drawLine(x1, y1, x2, y2);
148 145
149} 146}
150 147
151void UI::draw_str(char *str, int x, int y) { 148void UI::draw_str(char *str, int x, int y) {
152 paint.drawText(x, y, str); 149 paint.drawText(x, y, str);
153} 150}
154 151
155 152
156/******************/ 153/******************/
157/* Other routines */ 154/* Other routines */
158/******************/ 155/******************/
159 156
160void UI::set_pausebutton (int action) { 157void UI::set_pausebutton (int action) {
161 main->file->setItemEnabled(main->pauseid, action); 158 main->file->setItemEnabled(main->pauseid, action);
162} 159}
163 160
164 161
165int UI::MainLoop() { 162int UI::MainLoop() {
166 return app->exec(); 163 return app->exec();
167} 164}
168 165
169void UI::update_hsbox(char *str) { 166void UI::update_hsbox(char *str) {
170 highscorestr = str; 167 highscorestr = str;
171} 168}
172 169
173void UI::update_scorebox(int level, int score) { 170void UI::update_scorebox(int level, int score) {
174 scorestr.sprintf ("%s %d:\n%s: %d", QT_TR_NOOP("After Level"), level, QT_TR_NOOP("Your score"), score); 171 scorestr.sprintf ("%s %d:\n%s: %d", QT_TR_NOOP("After Level"), level, QT_TR_NOOP("Your score"), score);
175} 172}
diff --git a/noncore/games/kbill/field.cpp b/noncore/games/kbill/field.cpp
index a1b3560..a974ab2 100644
--- a/noncore/games/kbill/field.cpp
+++ b/noncore/games/kbill/field.cpp
@@ -1,84 +1,83 @@
1/*************************************************************************** 1/***************************************************************************
2 field.cpp - description 2 field.cpp - description
3 ------------------- 3 -------------------
4 begin : Thu Dec 30 1999 4 begin : Thu Dec 30 1999
5 copyright : (C) 1999 by Jurrien Loonstra 5 copyright : (C) 1999 by Jurrien Loonstra
6 email : j.h.loonstra@st.hanze.nl 6 email : j.h.loonstra@st.hanze.nl
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17 17
18#include <qpainter.h>
19 18
20#include "objects.h" 19#include "objects.h"
21 20
22#include "field.h" 21#include "field.h"
23 22
24Field::Field(QWidget *parent, const char *name ) : QWidget(parent,name) { 23Field::Field(QWidget *parent, const char *name ) : QWidget(parent,name) {
25 setFixedSize(game.scrwidth, game.scrheight); 24 setFixedSize(game.scrwidth, game.scrheight);
26 setBackgroundColor(white); 25 setBackgroundColor(white);
27 timer = new QTimer(this); 26 timer = new QTimer(this);
28 27
29 playing = false; 28 playing = false;
30 29
31 connect(timer, SIGNAL(timeout()), SLOT(Timer())); 30 connect(timer, SIGNAL(timeout()), SLOT(Timer()));
32} 31}
33 32
34Field::~Field(){ 33Field::~Field(){
35 delete timer; 34 delete timer;
36} 35}
37 36
38void Field::setPixmap(QPixmap *pix) { 37void Field::setPixmap(QPixmap *pix) {
39 this->pix = pix; 38 this->pix = pix;
40} 39}
41 40
42// -------------------------------------------------------- 41// --------------------------------------------------------
43 42
44void Field::mousePressEvent(QMouseEvent *e){ 43void Field::mousePressEvent(QMouseEvent *e){
45 game.button_press(e->x(), e->y()); 44 game.button_press(e->x(), e->y());
46} 45}
47 46
48void Field::mouseReleaseEvent(QMouseEvent *e){ 47void Field::mouseReleaseEvent(QMouseEvent *e){
49 game.button_release(e->x(), e->y()); 48 game.button_release(e->x(), e->y());
50} 49}
51 50
52void Field::enterEvent(QEvent *) { 51void Field::enterEvent(QEvent *) {
53 if (playing && !timer->isActive()) { 52 if (playing && !timer->isActive()) {
54 playing = true; 53 playing = true;
55 timer->start(250, FALSE); 54 timer->start(250, FALSE);
56 } 55 }
57} 56}
58 57
59void Field::leaveEvent(QEvent *) { 58void Field::leaveEvent(QEvent *) {
60 if (timer->isActive() && playing) { 59 if (timer->isActive() && playing) {
61 playing = true; 60 playing = true;
62 timer->stop(); 61 timer->stop();
63 } 62 }
64} 63}
65 64
66void Field::stopTimer() { 65void Field::stopTimer() {
67 playing = false; 66 playing = false;
68 if (timer->isActive()) 67 if (timer->isActive())
69 timer->stop(); 68 timer->stop();
70} 69}
71 70
72void Field::startTimer() { 71void Field::startTimer() {
73 playing = true; 72 playing = true;
74 if (!timer->isActive()) 73 if (!timer->isActive())
75 timer->start(250, FALSE); 74 timer->start(250, FALSE);
76} 75}
77 76
78void Field::Timer(){ 77void Field::Timer(){
79 game.update(); 78 game.update();
80} 79}
81 80
82void Field::paintEvent(QPaintEvent *) { 81void Field::paintEvent(QPaintEvent *) {
83 bitBlt(this, 0, 0, pix); 82 bitBlt(this, 0, 0, pix);
84 } \ No newline at end of file 83 } \ No newline at end of file
diff --git a/noncore/games/kbill/inputbox.cpp b/noncore/games/kbill/inputbox.cpp
index b191ea8..5087fbb 100644
--- a/noncore/games/kbill/inputbox.cpp
+++ b/noncore/games/kbill/inputbox.cpp
@@ -1,51 +1,50 @@
1/*************************************************************************** 1/***************************************************************************
2 inputbox.cpp - description 2 inputbox.cpp - description
3 ------------------- 3 -------------------
4 begin : Sat Jan 1 2000 4 begin : Sat Jan 1 2000
5 copyright : (C) 2000 by Jurrien Loonstra 5 copyright : (C) 2000 by Jurrien Loonstra
6 email : j.h.loonstra@st.hanze.nl 6 email : j.h.loonstra@st.hanze.nl
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17 17
18#include "inputbox.h" 18#include "inputbox.h"
19#include <qdialog.h>
20InputBox::InputBox(QWidget *parent, const char *name, const char *caption, const char *text) : QDialog(parent, name, TRUE) { 19InputBox::InputBox(QWidget *parent, const char *name, const char *caption, const char *text) : QDialog(parent, name, TRUE) {
21 // setCaption(caption); 20 // setCaption(caption);
22// 21//
23 // question = new QLabel(this); 22 // question = new QLabel(this);
24 // question->setText(text); 23 // question->setText(text);
25 // question->setGeometry(10, 10, 240, 50); 24 // question->setGeometry(10, 10, 240, 50);
26// 25//
27 // input = new QLineEdit(this); 26 // input = new QLineEdit(this);
28// input->setGeometry(10, 60, 240, 30); 27// input->setGeometry(10, 60, 240, 30);
29 // input->setFocus(); 28 // input->setFocus();
30 // input->setMaxLength(19); 29 // input->setMaxLength(19);
31// 30//
32// ok = new QPushButton( "Ok", this ); 31// ok = new QPushButton( "Ok", this );
33// ok->setGeometry(10, 100, 100,30 ); 32// ok->setGeometry(10, 100, 100,30 );
34 // ok->setDefault(TRUE); 33 // ok->setDefault(TRUE);
35// connect( ok, SIGNAL(clicked()), SLOT(accept()) ); 34// connect( ok, SIGNAL(clicked()), SLOT(accept()) );
36// 35//
37// cancel = new QPushButton( "Cancel", this ); 36// cancel = new QPushButton( "Cancel", this );
38// cancel->setGeometry(150, 100, 100,30 ); 37// cancel->setGeometry(150, 100, 100,30 );
39// connect( cancel, SIGNAL(clicked()), SLOT(reject()) ); 38// connect( cancel, SIGNAL(clicked()), SLOT(reject()) );
40} 39}
41 40
42InputBox::~InputBox(){ 41InputBox::~InputBox(){
43 delete ok; 42 delete ok;
44 delete cancel; 43 delete cancel;
45 delete question; 44 delete question;
46 delete input; 45 delete input;
47} 46}
48 47
49QString InputBox::getText() const{ 48QString InputBox::getText() const{
50 return input->text(); 49 return input->text();
51} 50}
diff --git a/noncore/games/kbill/kbill.cpp b/noncore/games/kbill/kbill.cpp
index 18a6875..74d7c75 100644
--- a/noncore/games/kbill/kbill.cpp
+++ b/noncore/games/kbill/kbill.cpp
@@ -1,132 +1,128 @@
1/*************************************************************************** 1/***************************************************************************
2 kbill.cpp - description 2 kbill.cpp - description
3 ------------------- 3 -------------------
4 begin : Thu Dec 30 16:55:55 CET 1999 4 begin : Thu Dec 30 16:55:55 CET 1999
5 copyright : (C) 1999 by Jurrien Loonstra 5 copyright : (C) 1999 by Jurrien Loonstra
6 email : j.h.loonstra@st.hanze.nl 6 email : j.h.loonstra@st.hanze.nl
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17 17
18#include <qmessagebox.h> 18#include <qmessagebox.h>
19#include <qmultilinedit.h>
20#include <qmenubar.h> 19#include <qmenubar.h>
21#include <qtextbrowser.h> 20#include <qtextbrowser.h>
22#include <qfont.h>
23#include <qwidget.h>
24#include "kbill.h" 21#include "kbill.h"
25#include "inputbox.h"
26#include "helpdialog.h" 22#include "helpdialog.h"
27#include "objects.h" 23#include "objects.h"
28#include "Strings.h" 24#include "Strings.h"
29 25
30KBill::KBill() : QMainWindow() { 26KBill::KBill() : QMainWindow() {
31 setCaption(tr("kBill")); 27 setCaption(tr("kBill"));
32 file = new QPopupMenu(); 28 file = new QPopupMenu();
33 file->insertItem(tr("New game"), this, SLOT(NewGame())); 29 file->insertItem(tr("New game"), this, SLOT(NewGame()));
34 pauseid = file->insertItem(tr("Pause game"), this, SLOT(Pause())); 30 pauseid = file->insertItem(tr("Pause game"), this, SLOT(Pause()));
35 //these are dissabled until I fix them 31 //these are dissabled until I fix them
36 //file->insertItem(tr("Warp to level..."), this, SLOT(WarpTo())); 32 //file->insertItem(tr("Warp to level..."), this, SLOT(WarpTo()));
37 //file->insertItem(tr("View high scores"), this, SLOT(ViewHighScores())); 33 //file->insertItem(tr("View high scores"), this, SLOT(ViewHighScores()));
38 34
39 35
40 help = new QPopupMenu(); 36 help = new QPopupMenu();
41 help->insertItem(tr("Story of kBill"), this, SLOT(Story())); 37 help->insertItem(tr("Story of kBill"), this, SLOT(Story()));
42 help->insertItem(tr("Rules"), this, SLOT(Rules())); 38 help->insertItem(tr("Rules"), this, SLOT(Rules()));
43 39
44 40
45 menu = new QMenuBar(this); 41 menu = new QMenuBar(this);
46 menu->insertItem(tr("&File"), file); 42 menu->insertItem(tr("&File"), file);
47 menu->insertSeparator(); 43 menu->insertSeparator();
48 menu->insertItem(tr("&Help"), help); 44 menu->insertItem(tr("&Help"), help);
49 45
50 field = new Field(this); 46 field = new Field(this);
51 //setView(field); 47 //setView(field);
52 //setMainWidget(field); 48 //setMainWidget(field);
53 //setMenu(menu); 49 //setMenu(menu);
54} 50}
55 51
56KBill::~KBill() { 52KBill::~KBill() {
57} 53}
58 54
59Field* KBill::getField() { 55Field* KBill::getField() {
60 return field; 56 return field;
61} 57}
62 58
63// ----------------------------------------------------------------------- 59// -----------------------------------------------------------------------
64 60
65void KBill::Quit() { 61void KBill::Quit() {
66 field->stopTimer(); 62 field->stopTimer();
67 qApp->quit(); 63 qApp->quit();
68 64
69} 65}
70 66
71void KBill::About(){ 67void KBill::About(){
72 // field->stopTimer(); 68 // field->stopTimer();
73 // AboutBox about(this); 69 // AboutBox about(this);
74 // about.exec(); 70 // about.exec();
75 // field->startTimer(); 71 // field->startTimer();
76} 72}
77 73
78void KBill::NewGame() { 74void KBill::NewGame() {
79 field->stopTimer(); 75 field->stopTimer();
80 // if (KMsgBox::yesNo(this, i18n("New Game"), i18n(newgamestr), KMsgBox::QUESTION) == 1) 76 // if (KMsgBox::yesNo(this, i18n("New Game"), i18n(newgamestr), KMsgBox::QUESTION) == 1)
81 game.start(1); 77 game.start(1);
82 // else 78 // else
83 field->startTimer(); 79 field->startTimer();
84} 80}
85 81
86void KBill::Pause() { 82void KBill::Pause() {
87 field->stopTimer(); 83 field->stopTimer();
88 QMessageBox::message(tr("Pause Game"), tr(pausestr), 0); 84 QMessageBox::message(tr("Pause Game"), tr(pausestr), 0);
89 field->startTimer(); 85 field->startTimer();
90} 86}
91 87
92void KBill::WarpTo() { 88void KBill::WarpTo() {
93 /* field->stopTimer(); 89 /* field->stopTimer();
94 InputBox b(this, 0, "Warp To Level", tr(warpstr)); 90 InputBox b(this, 0, "Warp To Level", tr(warpstr));
95 bool status = b.exec() == 1; 91 bool status = b.exec() == 1;
96 field->startTimer(); 92 field->startTimer();
97 if (status) { 93 if (status) {
98 bool ok; 94 bool ok;
99 int level = b.getText().toUInt(&ok); 95 int level = b.getText().toUInt(&ok);
100 if (ok) { 96 if (ok) {
101 field->startTimer(); 97 field->startTimer();
102 game.warp_to_level(level); 98 game.warp_to_level(level);
103 return; 99 return;
104 } 100 }
105 }*/ 101 }*/
106} 102}
107 103
108void KBill::ViewHighScores() { 104void KBill::ViewHighScores() {
109 //ui.popup_dialog(Game::HIGHSCORE); 105 //ui.popup_dialog(Game::HIGHSCORE);
110} 106}
111 107
112void KBill::Story() { 108void KBill::Story() {
113 field->stopTimer(); 109 field->stopTimer();
114 HelpDialog *stryDialog = new HelpDialog(this,"helpdialog",1); 110 HelpDialog *stryDialog = new HelpDialog(this,"helpdialog",1);
115 QString stryString = tr("<b>The Story</b><p>Yet again, the fate of the world rests in your hands! An evil computer hacker, known only by his handle 'Bill', has created the ultimate computer virus. A virus so powerful that it has the power to transmute an ordinary computer into a toaster oven. (oooh!) 'Bill' has cloned himself into a billion-jillion micro-Bills. Their sole purpose is to deliver the nefarious virus, which has been cleverly disguised as a popular operating system. As System Administrator and Exterminator, your job is to keep Bill from succeeding at his task."); 111 QString stryString = tr("<b>The Story</b><p>Yet again, the fate of the world rests in your hands! An evil computer hacker, known only by his handle 'Bill', has created the ultimate computer virus. A virus so powerful that it has the power to transmute an ordinary computer into a toaster oven. (oooh!) 'Bill' has cloned himself into a billion-jillion micro-Bills. Their sole purpose is to deliver the nefarious virus, which has been cleverly disguised as a popular operating system. As System Administrator and Exterminator, your job is to keep Bill from succeeding at his task.");
116 stryDialog->setCaption(tr("The story of KBill")); 112 stryDialog->setCaption(tr("The story of KBill"));
117 stryDialog->TextBrowser1->setText(stryString); 113 stryDialog->TextBrowser1->setText(stryString);
118 stryDialog->resize(200,200); 114 stryDialog->resize(200,200);
119 stryDialog->show(); 115 stryDialog->show();
120 field->startTimer(); 116 field->startTimer();
121} 117}
122 118
123void KBill::Rules() { 119void KBill::Rules() {
124 field->stopTimer(); 120 field->stopTimer();
125 HelpDialog *rulesDialog = new HelpDialog(this,"helpdialog",1); 121 HelpDialog *rulesDialog = new HelpDialog(this,"helpdialog",1);
126 rulesDialog->setCaption(tr("The rules of KBill")); 122 rulesDialog->setCaption(tr("The rules of KBill"));
127 QString rulesStr = tr("<b>The Rules</b><p>kBill has been painstakingly designed and researched in order to make it as easy to use for the whole family as it is for little Sally. Years - nay - days of beta testing and consulting with the cheapest of human interface designers have resulted in a game that is easy to use, yet nothing at all like a Macintosh.<p><UL><LI>Whack the Bills (click)</LI><LI>Restart the computer (click)</LI><LI>Pick up stolen OSes & return (drag) them to their respective computers</LI><LI>Drag the bucket to extinguish sparks</LI><LI>Scoring is based on total uptime, with bonuses for killing Bills.</LI></UL><P>As for the rest, you can probably work it out for yourself. We did, so it can't be too hard"); 123 QString rulesStr = tr("<b>The Rules</b><p>kBill has been painstakingly designed and researched in order to make it as easy to use for the whole family as it is for little Sally. Years - nay - days of beta testing and consulting with the cheapest of human interface designers have resulted in a game that is easy to use, yet nothing at all like a Macintosh.<p><UL><LI>Whack the Bills (click)</LI><LI>Restart the computer (click)</LI><LI>Pick up stolen OSes & return (drag) them to their respective computers</LI><LI>Drag the bucket to extinguish sparks</LI><LI>Scoring is based on total uptime, with bonuses for killing Bills.</LI></UL><P>As for the rest, you can probably work it out for yourself. We did, so it can't be too hard");
128 rulesDialog->TextBrowser1->setText(rulesStr); 124 rulesDialog->TextBrowser1->setText(rulesStr);
129 rulesDialog->resize(200,200); 125 rulesDialog->resize(200,200);
130 rulesDialog->show(); 126 rulesDialog->show();
131 field->startTimer(); 127 field->startTimer();
132} 128}
diff --git a/noncore/games/kcheckers/kcheckers.cpp b/noncore/games/kcheckers/kcheckers.cpp
index 2eb37e5..a27dd18 100644
--- a/noncore/games/kcheckers/kcheckers.cpp
+++ b/noncore/games/kcheckers/kcheckers.cpp
@@ -1,195 +1,194 @@
1 1
2#include <qimage.h> 2#include <qimage.h>
3#include <qframe.h>
4#include <qlayout.h> 3#include <qlayout.h>
5#include <qmenubar.h> 4#include <qmenubar.h>
6#include <qtoolbar.h> 5#include <qtoolbar.h>
7#include <qpe/config.h> 6#include <qpe/config.h>
8#include <qwhatsthis.h> 7#include <qwhatsthis.h>
9#include <qtoolbutton.h> 8#include <qtoolbutton.h>
10#include <qmessagebox.h> 9#include <qmessagebox.h>
11#include <qapplication.h> 10#include <qapplication.h>
12 11
13#include "kcheckers.h" 12#include "kcheckers.h"
14#include "echeckers.h" 13#include "echeckers.h"
15#include "rcheckers.h" 14#include "rcheckers.h"
16 15
17#include "pics/logo.xpm" 16#include "pics/logo.xpm"
18#include "pics/undo.xpm" 17#include "pics/undo.xpm"
19#include "pics/exit.xpm" 18#include "pics/exit.xpm"
20#include "pics/help.xpm" 19#include "pics/help.xpm"
21#include "pics/wood1.xpm" 20#include "pics/wood1.xpm"
22#include "pics/wood2.xpm" 21#include "pics/wood2.xpm"
23#include "pics/wood3.xpm" 22#include "pics/wood3.xpm"
24#include "pics/green1.xpm" 23#include "pics/green1.xpm"
25#include "pics/green2.xpm" 24#include "pics/green2.xpm"
26#include "pics/green3.xpm" 25#include "pics/green3.xpm"
27#include "pics/marble1.xpm" 26#include "pics/marble1.xpm"
28#include "pics/marble2.xpm" 27#include "pics/marble2.xpm"
29#include "pics/marble3.xpm" 28#include "pics/marble3.xpm"
30#include "pics/biglogo.xpm" 29#include "pics/biglogo.xpm"
31#include "pics/man_black.xpm" 30#include "pics/man_black.xpm"
32#include "pics/man_white.xpm" 31#include "pics/man_white.xpm"
33#include "pics/king_black.xpm" 32#include "pics/king_black.xpm"
34#include "pics/king_white.xpm" 33#include "pics/king_white.xpm"
35#include "pics/contexthelp.xpm" 34#include "pics/contexthelp.xpm"
36 35
37 36
38QString KCheckers::enNumeration="1 2 3 4 5 6 7 8 9 1011121314151617181920212223242526272829303132"; 37QString KCheckers::enNumeration="1 2 3 4 5 6 7 8 9 1011121314151617181920212223242526272829303132";
39QString KCheckers::ruNumeration="B8D8F8H8A7C7E7G7B6D6F6H6A5C5E5G5B4D4F4H4A3C3E3G3B2D2F2H2A1C1E1G1"; 38QString KCheckers::ruNumeration="B8D8F8H8A7C7E7G7B6D6F6H6A5C5E5G5B4D4F4H4A3C3E3G3B2D2F2H2A1C1E1G1";
40 39
41const int KCheckers::t[]={6,7,8,9,11,12,13,14,17,18,19,20,22,23, 40const int KCheckers::t[]={6,7,8,9,11,12,13,14,17,18,19,20,22,23,
42 24,25,28,29,30,31,33,34,35,36,39,40,41,42,44,45,46,47}; 41 24,25,28,29,30,31,33,34,35,36,39,40,41,42,44,45,46,47};
43 42
44 43
45KCheckers::KCheckers(QWidget *p, const char* n, WFlags ) 44KCheckers::KCheckers(QWidget *p, const char* n, WFlags )
46 :QMainWindow(p,n,WStyle_DialogBorder) 45 :QMainWindow(p,n,WStyle_DialogBorder)
47{ 46{
48 setCaption(tr("KCheckers") ); 47 setCaption(tr("KCheckers") );
49 setIcon(QPixmap(biglogo_xpm)); 48 setIcon(QPixmap(biglogo_xpm));
50 49
51 setToolBarsMovable(false); 50 setToolBarsMovable(false);
52 51
53 // Make a menubar 52 // Make a menubar
54 53
55 gameMenu=new QPopupMenu; 54 gameMenu=new QPopupMenu;
56 CHECK_PTR(gameMenu); 55 CHECK_PTR(gameMenu);
57 56
58 gameMenu->insertItem(QPixmap(logo_xpm),tr("&New"),this,SLOT(newGame()),CTRL+Key_N); 57 gameMenu->insertItem(QPixmap(logo_xpm),tr("&New"),this,SLOT(newGame()),CTRL+Key_N);
59 gameMenu->insertSeparator(); 58 gameMenu->insertSeparator();
60 undoID=gameMenu->insertItem(QPixmap(undo_xpm),tr("&Undo Move"),this,SLOT(undoMove()),CTRL+Key_Z); 59 undoID=gameMenu->insertItem(QPixmap(undo_xpm),tr("&Undo Move"),this,SLOT(undoMove()),CTRL+Key_Z);
61 gameMenu->insertSeparator(); 60 gameMenu->insertSeparator();
62 gameMenu->insertItem(QPixmap(exit_xpm),tr("&Quit"),qApp,SLOT(closeAllWindows()),CTRL+Key_Q); 61 gameMenu->insertItem(QPixmap(exit_xpm),tr("&Quit"),qApp,SLOT(closeAllWindows()),CTRL+Key_Q);
63 62
64 skillMenu=new QPopupMenu; 63 skillMenu=new QPopupMenu;
65 CHECK_PTR(skillMenu); 64 CHECK_PTR(skillMenu);
66 65
67 skillMenu->insertItem(tr("&Beginner"),this,SLOT(setSkillBeginner()),CTRL+Key_1,BEGINNER); 66 skillMenu->insertItem(tr("&Beginner"),this,SLOT(setSkillBeginner()),CTRL+Key_1,BEGINNER);
68 skillMenu->insertItem(tr("&Novice"), this,SLOT(setSkillNovice()), CTRL+Key_2,NOVICE); 67 skillMenu->insertItem(tr("&Novice"), this,SLOT(setSkillNovice()), CTRL+Key_2,NOVICE);
69 skillMenu->insertItem(tr("&Average"), this,SLOT(setSkillAverage()), CTRL+Key_3,AVERAGE); 68 skillMenu->insertItem(tr("&Average"), this,SLOT(setSkillAverage()), CTRL+Key_3,AVERAGE);
70 skillMenu->insertItem(tr("&Good"), this,SLOT(setSkillGood()), CTRL+Key_4,GOOD); 69 skillMenu->insertItem(tr("&Good"), this,SLOT(setSkillGood()), CTRL+Key_4,GOOD);
71 skillMenu->insertItem(tr("&Expert"), this,SLOT(setSkillExpert()), CTRL+Key_5,EXPERT); 70 skillMenu->insertItem(tr("&Expert"), this,SLOT(setSkillExpert()), CTRL+Key_5,EXPERT);
72 skillMenu->insertItem(tr("&Master"), this,SLOT(setSkillMaster()), CTRL+Key_6,MASTER); 71 skillMenu->insertItem(tr("&Master"), this,SLOT(setSkillMaster()), CTRL+Key_6,MASTER);
73 72
74 optionsMenu=new QPopupMenu; 73 optionsMenu=new QPopupMenu;
75 CHECK_PTR(optionsMenu); 74 CHECK_PTR(optionsMenu);
76 75
77 numID=optionsMenu->insertItem(tr("&Show Numeration"),this,SLOT(showNumeration())); 76 numID=optionsMenu->insertItem(tr("&Show Numeration"),this,SLOT(showNumeration()));
78 optionsMenu->insertSeparator(); 77 optionsMenu->insertSeparator();
79 optionsMenu->insertItem(tr("&English Rules"),this,SLOT(setRulesEnglish()),0,ENGLISH); 78 optionsMenu->insertItem(tr("&English Rules"),this,SLOT(setRulesEnglish()),0,ENGLISH);
80 optionsMenu->insertItem(tr("&Russian Rules"),this,SLOT(setRulesRussian()),0,RUSSIAN); 79 optionsMenu->insertItem(tr("&Russian Rules"),this,SLOT(setRulesRussian()),0,RUSSIAN);
81 optionsMenu->insertSeparator(); 80 optionsMenu->insertSeparator();
82 optionsMenu->insertItem(tr("&Green Board"), this,SLOT(setPatternGreen()), 0,GREEN); 81 optionsMenu->insertItem(tr("&Green Board"), this,SLOT(setPatternGreen()), 0,GREEN);
83 optionsMenu->insertItem(tr("&Marble Board"),this,SLOT(setPatternMarble()),0,MARBLE); 82 optionsMenu->insertItem(tr("&Marble Board"),this,SLOT(setPatternMarble()),0,MARBLE);
84 optionsMenu->insertItem(tr("&Wooden Board"),this,SLOT(setPatternWooden()),0,WOODEN); 83 optionsMenu->insertItem(tr("&Wooden Board"),this,SLOT(setPatternWooden()),0,WOODEN);
85 84
86 QPopupMenu* helpMenu=new QPopupMenu; 85 QPopupMenu* helpMenu=new QPopupMenu;
87 CHECK_PTR(helpMenu); 86 CHECK_PTR(helpMenu);
88 87
89 helpMenu->insertItem(QPixmap(contexthelp_xpm),tr("What's This"),this,SLOT(whatsThis()),SHIFT+Key_F1); 88 helpMenu->insertItem(QPixmap(contexthelp_xpm),tr("What's This"),this,SLOT(whatsThis()),SHIFT+Key_F1);
90 helpMenu->insertItem(QPixmap(help_xpm),tr("&Rules of Play"),this,SLOT(help()),Key_F1); 89 helpMenu->insertItem(QPixmap(help_xpm),tr("&Rules of Play"),this,SLOT(help()),Key_F1);
91 helpMenu->insertSeparator(); 90 helpMenu->insertSeparator();
92 helpMenu->insertItem(QPixmap(logo_xpm),tr("&About KCheckers"),this,SLOT(about())); 91 helpMenu->insertItem(QPixmap(logo_xpm),tr("&About KCheckers"),this,SLOT(about()));
93 helpMenu->insertItem(tr("About &Qt"),this,SLOT(aboutQt())); 92 helpMenu->insertItem(tr("About &Qt"),this,SLOT(aboutQt()));
94 93
95 QToolBar* menuToolBar=new QToolBar(this); 94 QToolBar* menuToolBar=new QToolBar(this);
96 CHECK_PTR(menuToolBar); 95 CHECK_PTR(menuToolBar);
97 QMenuBar* menuBar=new QMenuBar(menuToolBar); 96 QMenuBar* menuBar=new QMenuBar(menuToolBar);
98 CHECK_PTR(menuBar); 97 CHECK_PTR(menuBar);
99 98
100 menuBar->insertItem(tr("&Game"), gameMenu); 99 menuBar->insertItem(tr("&Game"), gameMenu);
101 menuBar->insertItem(tr("&Skill"), skillMenu); 100 menuBar->insertItem(tr("&Skill"), skillMenu);
102 menuBar->insertItem(tr("&Options"),optionsMenu); 101 menuBar->insertItem(tr("&Options"),optionsMenu);
103 menuBar->insertItem(tr("&Help"), helpMenu); 102 menuBar->insertItem(tr("&Help"), helpMenu);
104 103
105 // Restore a settings 104 // Restore a settings
106 105
107 readConfig(); 106 readConfig();
108 107
109 skillMenu->setItemChecked(skill,true); 108 skillMenu->setItemChecked(skill,true);
110 optionsMenu->setItemChecked(rules,true); 109 optionsMenu->setItemChecked(rules,true);
111 optionsMenu->setItemChecked(numID,false); 110 optionsMenu->setItemChecked(numID,false);
112 111
113 // Make a toolbar 112 // Make a toolbar
114 113
115 QToolBar* emptyToolBar=new QToolBar(this); 114 QToolBar* emptyToolBar=new QToolBar(this);
116 emptyToolBar->setHorizontalStretchable(true); 115 emptyToolBar->setHorizontalStretchable(true);
117 116
118 QToolBar* toolBar=new QToolBar(this); 117 QToolBar* toolBar=new QToolBar(this);
119 CHECK_PTR(toolBar); 118 CHECK_PTR(toolBar);
120 119
121 QSize buttonSize(24,24); 120 QSize buttonSize(24,24);
122 121
123 QToolButton* gameButton=new QToolButton(QPixmap(logo_xpm),tr(" New Game ") ,"",this,SLOT(newGame()),toolBar); 122 QToolButton* gameButton=new QToolButton(QPixmap(logo_xpm),tr(" New Game ") ,"",this,SLOT(newGame()),toolBar);
124 CHECK_PTR(gameButton); 123 CHECK_PTR(gameButton);
125 gameButton->setMinimumSize(buttonSize); 124 gameButton->setMinimumSize(buttonSize);
126 125
127 undoButton=new QToolButton(QPixmap(undo_xpm),tr(" Undo Move "),"",this,SLOT(undoMove()),toolBar); 126 undoButton=new QToolButton(QPixmap(undo_xpm),tr(" Undo Move "),"",this,SLOT(undoMove()),toolBar);
128 CHECK_PTR(undoButton); 127 CHECK_PTR(undoButton);
129 undoButton->setMinimumSize(buttonSize); 128 undoButton->setMinimumSize(buttonSize);
130 129
131 QToolButton* helpButton=new QToolButton(QPixmap(help_xpm),tr(" Rules of Play "),"",this,SLOT(help()),toolBar); 130 QToolButton* helpButton=new QToolButton(QPixmap(help_xpm),tr(" Rules of Play "),"",this,SLOT(help()),toolBar);
132 CHECK_PTR(helpButton); 131 CHECK_PTR(helpButton);
133 helpButton->setMinimumSize(buttonSize); 132 helpButton->setMinimumSize(buttonSize);
134 133
135 // Make a checkers board 134 // Make a checkers board
136 135
137 imageMan1=new QImage(man_black_xpm); CHECK_PTR(imageMan1); 136 imageMan1=new QImage(man_black_xpm); CHECK_PTR(imageMan1);
138 imageMan2=new QImage(man_white_xpm); CHECK_PTR(imageMan2); 137 imageMan2=new QImage(man_white_xpm); CHECK_PTR(imageMan2);
139 imageKing1=new QImage(king_black_xpm); CHECK_PTR(imageKing1); 138 imageKing1=new QImage(king_black_xpm); CHECK_PTR(imageKing1);
140 imageKing2=new QImage(king_white_xpm); CHECK_PTR(imageKing2); 139 imageKing2=new QImage(king_white_xpm); CHECK_PTR(imageKing2);
141 140
142 imageWood1=new QImage(wood1_xpm); CHECK_PTR(imageWood1); 141 imageWood1=new QImage(wood1_xpm); CHECK_PTR(imageWood1);
143 imageWood2=new QImage(wood2_xpm); CHECK_PTR(imageWood2); 142 imageWood2=new QImage(wood2_xpm); CHECK_PTR(imageWood2);
144 imageWood3=new QImage(wood3_xpm); CHECK_PTR(imageWood3); 143 imageWood3=new QImage(wood3_xpm); CHECK_PTR(imageWood3);
145 imageGreen1=new QImage(green1_xpm); CHECK_PTR(imageGreen1); 144 imageGreen1=new QImage(green1_xpm); CHECK_PTR(imageGreen1);
146 imageGreen2=new QImage(green2_xpm); CHECK_PTR(imageGreen2); 145 imageGreen2=new QImage(green2_xpm); CHECK_PTR(imageGreen2);
147 imageGreen3=new QImage(green3_xpm); CHECK_PTR(imageGreen3); 146 imageGreen3=new QImage(green3_xpm); CHECK_PTR(imageGreen3);
148 imageMarble1=new QImage(marble1_xpm); CHECK_PTR(imageMarble1); 147 imageMarble1=new QImage(marble1_xpm); CHECK_PTR(imageMarble1);
149 imageMarble2=new QImage(marble2_xpm); CHECK_PTR(imageMarble2); 148 imageMarble2=new QImage(marble2_xpm); CHECK_PTR(imageMarble2);
150 imageMarble3=new QImage(marble3_xpm); CHECK_PTR(imageMarble3); 149 imageMarble3=new QImage(marble3_xpm); CHECK_PTR(imageMarble3);
151 150
152 QWidget* centralWidget=new QWidget(this); 151 QWidget* centralWidget=new QWidget(this);
153 setCentralWidget(centralWidget); 152 setCentralWidget(centralWidget);
154 153
155 QFrame* frame=new QFrame(centralWidget); 154 QFrame* frame=new QFrame(centralWidget);
156 CHECK_PTR(frame); 155 CHECK_PTR(frame);
157 frame->setFrameStyle(QFrame::Box|QFrame::Plain); 156 frame->setFrameStyle(QFrame::Box|QFrame::Plain);
158 frame->setFixedSize(SIZE*8+2,SIZE*8+2); 157 frame->setFixedSize(SIZE*8+2,SIZE*8+2);
159 158
160 statusLabel = new QLabel(centralWidget); 159 statusLabel = new QLabel(centralWidget);
161 statusLabel->setAlignment(Qt::AlignHCenter); 160 statusLabel->setAlignment(Qt::AlignHCenter);
162 161
163 QVBoxLayout* vlayout=new QVBoxLayout(centralWidget); 162 QVBoxLayout* vlayout=new QVBoxLayout(centralWidget);
164 163
165 vlayout->addStretch(); 164 vlayout->addStretch();
166 vlayout->addWidget(frame); 165 vlayout->addWidget(frame);
167 vlayout->addStretch(); 166 vlayout->addStretch();
168 vlayout->addWidget(statusLabel); 167 vlayout->addWidget(statusLabel);
169 vlayout->addStretch(); 168 vlayout->addStretch();
170 169
171 for(int i=0;i<64;i++) 170 for(int i=0;i<64;i++)
172 { 171 {
173 field[i]=new Field(frame,i); 172 field[i]=new Field(frame,i);
174 CHECK_PTR(field[i]); 173 CHECK_PTR(field[i]);
175 } 174 }
176 175
177 QGridLayout* grid=new QGridLayout(frame,8,8,1,0); 176 QGridLayout* grid=new QGridLayout(frame,8,8,1,0);
178 CHECK_PTR(grid); 177 CHECK_PTR(grid);
179 178
180 for(int i=0;i<4;i++) 179 for(int i=0;i<4;i++)
181 { 180 {
182 for(int k=0;k<4;k++) 181 for(int k=0;k<4;k++)
183 { 182 {
184 grid->addWidget(field[i*8+k+32],i*2, k*2 ); 183 grid->addWidget(field[i*8+k+32],i*2, k*2 );
185 grid->addWidget(field[i*8+k ],i*2, k*2+1); 184 grid->addWidget(field[i*8+k ],i*2, k*2+1);
186 grid->addWidget(field[i*8+k+4 ],i*2+1,k*2 ); 185 grid->addWidget(field[i*8+k+4 ],i*2+1,k*2 );
187 grid->addWidget(field[i*8+k+36],i*2+1,k*2+1); 186 grid->addWidget(field[i*8+k+36],i*2+1,k*2+1);
188 } 187 }
189 } 188 }
190 189
191 for(int i=0;i<32;i++) 190 for(int i=0;i<32;i++)
192 connect(field[i],SIGNAL(click(int)),this,SLOT(click(int))); 191 connect(field[i],SIGNAL(click(int)),this,SLOT(click(int)));
193 192
194 selected=false; 193 selected=false;
195 194
diff --git a/noncore/games/kcheckers/main.cpp b/noncore/games/kcheckers/main.cpp
index 6ac570a..e22dbcc 100644
--- a/noncore/games/kcheckers/main.cpp
+++ b/noncore/games/kcheckers/main.cpp
@@ -1,10 +1,8 @@
1 1
2#include <qpe/qpeapplication.h>
3#include <qfont.h>
4 2
5#include "kcheckers.h" 3#include "kcheckers.h"
6#include <opie/oapplicationfactory.h> 4#include <opie/oapplicationfactory.h>
7 5
8OPIE_EXPORT_APP( OApplicationFactory<KCheckers> ) 6OPIE_EXPORT_APP( OApplicationFactory<KCheckers> )
9 7
10 8
diff --git a/noncore/games/kpacman/board.cpp b/noncore/games/kpacman/board.cpp
index f95f699..f82b5f9 100644
--- a/noncore/games/kpacman/board.cpp
+++ b/noncore/games/kpacman/board.cpp
@@ -1,202 +1,199 @@
1 1
2#include "portable.h"
3 2
4#if defined( KDE2_PORT ) 3#if defined( KDE2_PORT )
5#include <kapp.h> 4#include <kapp.h>
6#include <klocale.h> 5#include <klocale.h>
7#endif 6#endif
8 7
9#include <qrect.h>
10#include <qregexp.h>
11#include <qmessagebox.h> 8#include <qmessagebox.h>
12#include <qfile.h> 9#include <qfile.h>
13#include <qtextstream.h> 10#include <qtextstream.h>
14 11
15#include "board.h" 12#include "board.h"
16#include "bitmaps.h" 13#include "bitmaps.h"
17 14
18Board::Board(int size) : QArray<int> (size) 15Board::Board(int size) : QArray<int> (size)
19{ 16{
20 sz = size; // set size of board 17 sz = size; // set size of board
21 18
22 map = ""; 19 map = "";
23 mapName = ""; // no map loaded so far 20 mapName = ""; // no map loaded so far
24 21
25 init(None); // initialize varibales 22 init(None); // initialize varibales
26} 23}
27 24
28void Board::init(Image image, QString levelName) 25void Board::init(Image image, QString levelName)
29{ 26{
30 prisonEntry = OUT; 27 prisonEntry = OUT;
31 prisonExit = OUT; 28 prisonExit = OUT;
32 fruitHome = OUT; 29 fruitHome = OUT;
33 fruitPosition = OUT; 30 fruitPosition = OUT;
34 pacmanHome = OUT; 31 pacmanHome = OUT;
35 pacmanPosition = OUT; 32 pacmanPosition = OUT;
36 for (int m = 0; m < 8; m++) { 33 for (int m = 0; m < 8; m++) {
37 monsterHome[m] = OUT; 34 monsterHome[m] = OUT;
38 monsterPosition[m] = OUT; 35 monsterPosition[m] = OUT;
39 } 36 }
40 for (int e = 0; e < 8; e++) { 37 for (int e = 0; e < 8; e++) {
41 energizerPosition[e] = OUT; 38 energizerPosition[e] = OUT;
42 } 39 }
43 for (int e = 0; e < 8; e++) { 40 for (int e = 0; e < 8; e++) {
44 tunnelPosition[e] = OUT; 41 tunnelPosition[e] = OUT;
45 } 42 }
46 43
47 fill(0); 44 fill(0);
48 numPoints = 0; 45 numPoints = 0;
49 numEnergizers = 0; 46 numEnergizers = 0;
50 numMonsters = 0; 47 numMonsters = 0;
51 numTunnels = 0; 48 numTunnels = 0;
52 49
53 if (!levelName.isNull() && !levelName.isEmpty()) 50 if (!levelName.isNull() && !levelName.isEmpty())
54 if (mapName == levelName) 51 if (mapName == levelName)
55 image = File; 52 image = File;
56 else { 53 else {
57 QFile levelFile(levelName); 54 QFile levelFile(levelName);
58 if (!levelFile.open(IO_ReadOnly)) { 55 if (!levelFile.open(IO_ReadOnly)) {
59 56
60 QString msg = "The levelmap could not be constructed.\n\n" 57 QString msg = "The levelmap could not be constructed.\n\n"
61 "The file '@LEVELNAME@' does not exist,\n" 58 "The file '@LEVELNAME@' does not exist,\n"
62 "or could not be opened for reading."; 59 "or could not be opened for reading.";
63 msg.replace(QRegExp("@LEVELNAME@"), levelName); 60 msg.replace(QRegExp("@LEVELNAME@"), levelName);
64 // QMessageBox::information(0, tr("Initialization Error"), msg); 61 // QMessageBox::information(0, tr("Initialization Error"), msg);
65 printf("%s\n", msg.data()); 62 printf("%s\n", msg.data());
66 } else { 63 } else {
67 map.fill(' ', BoardHeight*BoardWidth); 64 map.fill(' ', BoardHeight*BoardWidth);
68 int height = 0; 65 int height = 0;
69 66
70 QTextStream levelStream(&levelFile); 67 QTextStream levelStream(&levelFile);
71 while (!levelStream.eof() && height < BoardHeight) { 68 while (!levelStream.eof() && height < BoardHeight) {
72 QString line = levelStream.readLine(); 69 QString line = levelStream.readLine();
73 70
74 if (line.find(QRegExp("^ *;")) == -1) { 71 if (line.find(QRegExp("^ *;")) == -1) {
75 72
76 line.replace(QRegExp(";.*"), ""); // strip off comments 73 line.replace(QRegExp(";.*"), ""); // strip off comments
77 line.replace(QRegExp("\" *$"), ""); // strip off trailing " 74 line.replace(QRegExp("\" *$"), ""); // strip off trailing "
78 line.replace(QRegExp("^ *\""), ""); // strip off leading " 75 line.replace(QRegExp("^ *\""), ""); // strip off leading "
79 76
80 map.replace(height*BoardWidth, 77 map.replace(height*BoardWidth,
81 (line.length() > BoardWidth) ? BoardWidth : line.length(), 78 (line.length() > BoardWidth) ? BoardWidth : line.length(),
82 line.data()); 79 line.data());
83 80
84 height++; 81 height++;
85 } 82 }
86 } 83 }
87 mapName = levelName; 84 mapName = levelName;
88 levelFile.close(); 85 levelFile.close();
89 image = File; 86 image = File;
90 } 87 }
91 } 88 }
92 89
93 switch (image) { 90 switch (image) {
94 case Intro : // setup(demo_bits); 91 case Intro : // setup(demo_bits);
95 break; 92 break;
96 case Demo : setup(demo_bits); 93 case Demo : setup(demo_bits);
97 break; 94 break;
98 case Level : setup(demo_bits); 95 case Level : setup(demo_bits);
99 break; 96 break;
100 case File : setup((uchar *) map.data()); 97 case File : setup((uchar *) map.data());
101 break; 98 break;
102 default : break; 99 default : break;
103 } 100 }
104} 101}
105 102
106void Board::setup(const uchar *buf) 103void Board::setup(const uchar *buf)
107{ 104{
108 for ( int index = 0; buf[index] != 0 && index < BoardWidth*BoardHeight; index++ ) { 105 for ( int index = 0; buf[index] != 0 && index < BoardWidth*BoardHeight; index++ ) {
109 switch (buf[index]) { 106 switch (buf[index]) {
110 case '*' : set(index, brick); break; 107 case '*' : set(index, brick); break;
111 case '+' : set(index, out); break; 108 case '+' : set(index, out); break;
112 case '#' : set(index, prison); break; 109 case '#' : set(index, prison); break;
113 case '-' : set(index, gate); break; 110 case '-' : set(index, gate); break;
114 case 'E' : set(index, tunnel); break; 111 case 'E' : set(index, tunnel); break;
115 case '.' : set(index, Point); break; 112 case '.' : set(index, Point); break;
116 case 'o' : set(index, energizer); break; 113 case 'o' : set(index, energizer); break;
117 case 'I' : set(index, prisonentry); break; 114 case 'I' : set(index, prisonentry); break;
118 case 'O' : set(index, prisonexit); break; 115 case 'O' : set(index, prisonexit); break;
119 case 'F' : set(index, fruithome); break; 116 case 'F' : set(index, fruithome); break;
120 case 'P' : set(index, pacmanhome); break; 117 case 'P' : set(index, pacmanhome); break;
121 default : if (buf[index] >= '0' && buf[index] <= '7') { 118 default : if (buf[index] >= '0' && buf[index] <= '7') {
122 set(index, monsterhome, buf[index]-(uchar)'0'); 119 set(index, monsterhome, buf[index]-(uchar)'0');
123 } 120 }
124 } 121 }
125 } 122 }
126} 123}
127 124
128bool Board::inBounds(int pos) 125bool Board::inBounds(int pos)
129{ 126{
130 return ( pos < 0 || pos > sz-1 ? FALSE : TRUE); 127 return ( pos < 0 || pos > sz-1 ? FALSE : TRUE);
131} 128}
132 129
133void Board::set(int pos, Square sq, int m) 130void Board::set(int pos, Square sq, int m)
134{ 131{
135 if (inBounds(pos)) 132 if (inBounds(pos))
136 switch (sq) { 133 switch (sq) {
137 case out : at(pos) = OUT; break; 134 case out : at(pos) = OUT; break;
138 case Point : at(pos) |= pointBit; numPoints++; break; 135 case Point : at(pos) |= pointBit; numPoints++; break;
139 case tunnel : at(pos) = sq; 136 case tunnel : at(pos) = sq;
140 for (int e = 0; e < numTunnels; e++) { // if tunnel is already on board 137 for (int e = 0; e < numTunnels; e++) { // if tunnel is already on board
141 if (tunnelPosition[e] == pos) // don't do it again. 138 if (tunnelPosition[e] == pos) // don't do it again.
142 pos = OUT; 139 pos = OUT;
143 } 140 }
144 if (pos != OUT) { 141 if (pos != OUT) {
145 tunnelPosition[numTunnels] = pos; 142 tunnelPosition[numTunnels] = pos;
146 numTunnels++; 143 numTunnels++;
147 } 144 }
148 break; 145 break;
149 case energizer : at(pos) |= energizerBit; 146 case energizer : at(pos) |= energizerBit;
150 for (int e = 0; e < numEnergizers; e++) { 147 for (int e = 0; e < numEnergizers; e++) {
151 if (energizerPosition[e] == pos) 148 if (energizerPosition[e] == pos)
152 pos = OUT; 149 pos = OUT;
153 } 150 }
154 if (pos != OUT) { 151 if (pos != OUT) {
155 energizerPosition[numEnergizers] = pos; 152 energizerPosition[numEnergizers] = pos;
156 numEnergizers++; 153 numEnergizers++;
157 } 154 }
158 break; 155 break;
159 case fruit : at(pos) |= fruitBit; fruitPosition = pos; break; 156 case fruit : at(pos) |= fruitBit; fruitPosition = pos; break;
160 case pacman : at(pos) |= pacmanBit; pacmanPosition = pos; break; 157 case pacman : at(pos) |= pacmanBit; pacmanPosition = pos; break;
161 case monster : at(pos) |= (monsterBit << m); 158 case monster : at(pos) |= (monsterBit << m);
162 monsterPosition[m] = pos; break; 159 monsterPosition[m] = pos; break;
163 case prisonentry : prisonEntry = pos; at(pos) = empty; break; 160 case prisonentry : prisonEntry = pos; at(pos) = empty; break;
164 case prisonexit : prisonExit = pos; at(pos) = empty; break; 161 case prisonexit : prisonExit = pos; at(pos) = empty; break;
165 case fruithome : fruitHome = pos; at(pos) = empty; break; 162 case fruithome : fruitHome = pos; at(pos) = empty; break;
166 case pacmanhome : pacmanHome = pos; at(pos) = empty; break; 163 case pacmanhome : pacmanHome = pos; at(pos) = empty; break;
167 case monsterhome : monsterHome[m] = pos; at(pos) = empty; 164 case monsterhome : monsterHome[m] = pos; at(pos) = empty;
168 if (m == 0 && prisonExit == OUT) 165 if (m == 0 && prisonExit == OUT)
169 prisonExit = pos; 166 prisonExit = pos;
170 if (m == 1 && prisonEntry == OUT) 167 if (m == 1 && prisonEntry == OUT)
171 prisonEntry = pos; 168 prisonEntry = pos;
172 numMonsters++; 169 numMonsters++;
173 break; 170 break;
174 default : at(pos) = sq; 171 default : at(pos) = sq;
175 } 172 }
176} 173}
177 174
178void Board::reset(int pos, Square sq, int m) 175void Board::reset(int pos, Square sq, int m)
179{ 176{
180 bool found = FALSE; 177 bool found = FALSE;
181 if (inBounds(pos)) 178 if (inBounds(pos))
182 switch (sq) { 179 switch (sq) {
183 case out : at(pos) = empty; break; 180 case out : at(pos) = empty; break;
184 case Point : at(pos) &= ~ pointBit; numPoints--; break; 181 case Point : at(pos) &= ~ pointBit; numPoints--; break;
185 case energizer : at(pos) &= ~ energizerBit; 182 case energizer : at(pos) &= ~ energizerBit;
186 for (int e = 0; e < numEnergizers; e++) { // delete the position of the eaten 183 for (int e = 0; e < numEnergizers; e++) { // delete the position of the eaten
187 if (found) // energizer in the position array 184 if (found) // energizer in the position array
188 energizerPosition[e-1] = energizerPosition[e]; 185 energizerPosition[e-1] = energizerPosition[e];
189 if (energizerPosition[e] == pos) 186 if (energizerPosition[e] == pos)
190 found = TRUE; 187 found = TRUE;
191 } 188 }
192 energizerPosition[numEnergizers--] = OUT; 189 energizerPosition[numEnergizers--] = OUT;
193 break; 190 break;
194 case fruit : at(pos) &= ~ fruitBit; fruitPosition = OUT; break; 191 case fruit : at(pos) &= ~ fruitBit; fruitPosition = OUT; break;
195 case pacman : at(pos) &= ~ pacmanBit; pacmanPosition = OUT; break; 192 case pacman : at(pos) &= ~ pacmanBit; pacmanPosition = OUT; break;
196 case monster : at(pos) &= ~ (monsterBit << m); 193 case monster : at(pos) &= ~ (monsterBit << m);
197 monsterPosition[m] = OUT; break; 194 monsterPosition[m] = OUT; break;
198 default : at(pos) = at(pos) & varBits; 195 default : at(pos) = at(pos) & varBits;
199 } 196 }
200} 197}
201 198
202int Board::position(Square sq, int m) 199int Board::position(Square sq, int m)
diff --git a/noncore/games/kpacman/keys.cpp b/noncore/games/kpacman/keys.cpp
index 07ce135..5200bc2 100644
--- a/noncore/games/kpacman/keys.cpp
+++ b/noncore/games/kpacman/keys.cpp
@@ -1,205 +1,200 @@
1 1
2#include "portable.h" 2#include "portable.h"
3 3
4#if defined( KDE2_PORT ) 4#if defined( KDE2_PORT )
5#include <kapp.h> 5#include <kapp.h>
6#include <kconfig.h> 6#include <kconfig.h>
7#include <klocale.h> 7#include <klocale.h>
8#include <kstddirs.h> 8#include <kstddirs.h>
9#include <kaccel.h> 9#include <kaccel.h>
10 10
11#include <keys.h> 11#include <keys.h>
12#include <keys.moc> 12#include <keys.moc>
13#elif defined( QPE_PORT ) 13#elif defined( QPE_PORT )
14#include <qaccel.h> 14#include <qaccel.h>
15#include <qpe/qpeapplication.h> 15#include <qpe/qpeapplication.h>
16#include <qpe/config.h> 16#include <qpe/config.h>
17#include "keys.h" 17#include "keys.h"
18#endif 18#endif
19 19
20#include <qpushbt.h> 20#include <qpushbt.h>
21#include <qlabel.h>
22#include <qframe.h>
23#include <qkeycode.h>
24#include <qpixmap.h>
25#include <qstring.h>
26 21
27Keys::Keys( QWidget *parent, const char *name) 22Keys::Keys( QWidget *parent, const char *name)
28 : QDialog( parent, name, TRUE ) 23 : QDialog( parent, name, TRUE )
29{ 24{
30 //KStandardDirs *dirs = KGlobal::dirs(); 25 //KStandardDirs *dirs = KGlobal::dirs();
31 26
32 QPushButton *okButton = new QPushButton(this); 27 QPushButton *okButton = new QPushButton(this);
33 okButton->setText(tr("Ok")); 28 okButton->setText(tr("Ok"));
34 okButton->setFixedSize(okButton->size()); 29 okButton->setFixedSize(okButton->size());
35 connect( okButton, SIGNAL(clicked()),this, SLOT(ok()) ); 30 connect( okButton, SIGNAL(clicked()),this, SLOT(ok()) );
36 okButton->move(20,210); 31 okButton->move(20,210);
37 32
38 QPushButton *defaultButton = new QPushButton(this); 33 QPushButton *defaultButton = new QPushButton(this);
39 defaultButton->setText(tr("Defaults")); 34 defaultButton->setText(tr("Defaults"));
40 defaultButton->setFixedSize(defaultButton->size()); 35 defaultButton->setFixedSize(defaultButton->size());
41 connect( defaultButton, SIGNAL(clicked()),this, SLOT(defaults()) ); 36 connect( defaultButton, SIGNAL(clicked()),this, SLOT(defaults()) );
42 defaultButton->move(140,210); 37 defaultButton->move(140,210);
43 38
44 QPushButton *cancelButton = new QPushButton(this); 39 QPushButton *cancelButton = new QPushButton(this);
45 cancelButton->setText(tr("Cancel")); 40 cancelButton->setText(tr("Cancel"));
46 cancelButton->setFixedSize(cancelButton->size()); 41 cancelButton->setFixedSize(cancelButton->size());
47 connect( cancelButton, SIGNAL(clicked()),this, SLOT(reject()) ); 42 connect( cancelButton, SIGNAL(clicked()),this, SLOT(reject()) );
48 cancelButton->move(260,210); 43 cancelButton->move(260,210);
49 44
50 QFrame *separator = new QFrame(this); 45 QFrame *separator = new QFrame(this);
51 separator->setFrameStyle( QFrame::HLine | QFrame::Sunken ); 46 separator->setFrameStyle( QFrame::HLine | QFrame::Sunken );
52 separator->setGeometry( 20, 190, 340, 4 ); 47 separator->setGeometry( 20, 190, 340, 4 );
53 48
54 for ( int x = 0; x < 4; x++) { 49 for ( int x = 0; x < 4; x++) {
55 QLabel *l = new QLabel(this); 50 QLabel *l = new QLabel(this);
56 l->setAlignment(AlignCenter); 51 l->setAlignment(AlignCenter);
57 labels[x] = l; 52 labels[x] = l;
58 } 53 }
59 54
60 labels[0]->setGeometry(120, 20, 140, 20 ); 55 labels[0]->setGeometry(120, 20, 140, 20 );
61 labels[1]->setGeometry(120,160, 140, 20 ); 56 labels[1]->setGeometry(120,160, 140, 20 );
62 labels[2]->setGeometry( 20, 92, 100, 20 ); 57 labels[2]->setGeometry( 20, 92, 100, 20 );
63 labels[3]->setGeometry(265, 92, 100, 20 ); 58 labels[3]->setGeometry(265, 92, 100, 20 );
64 59
65 QString pixPath; 60 QString pixPath;
66 61
67 QPushButton *up = new QPushButton(this); 62 QPushButton *up = new QPushButton(this);
68 pixPath = FIND_APP_DATA( "pics/up.xpm" ); 63 pixPath = FIND_APP_DATA( "pics/up.xpm" );
69 up->setPixmap( QPixmap(pixPath)); 64 up->setPixmap( QPixmap(pixPath));
70 up->setFixedSize(up->pixmap()->size()); 65 up->setFixedSize(up->pixmap()->size());
71 connect( up, SIGNAL(clicked()),this, SLOT(butUp()) ); 66 connect( up, SIGNAL(clicked()),this, SLOT(butUp()) );
72 up->move(180, 50); 67 up->move(180, 50);
73 68
74 QPushButton *down = new QPushButton(this); 69 QPushButton *down = new QPushButton(this);
75 pixPath = FIND_APP_DATA( "pics/down.xpm"); 70 pixPath = FIND_APP_DATA( "pics/down.xpm");
76 down->setPixmap( QPixmap(pixPath)); 71 down->setPixmap( QPixmap(pixPath));
77 down->setFixedSize(down->pixmap()->size()); 72 down->setFixedSize(down->pixmap()->size());
78 connect( down, SIGNAL(clicked()),this, SLOT(butDown()) ); 73 connect( down, SIGNAL(clicked()),this, SLOT(butDown()) );
79 down->move(180, 130); 74 down->move(180, 130);
80 75
81 QPushButton *left = new QPushButton(this); 76 QPushButton *left = new QPushButton(this);
82 pixPath = FIND_APP_DATA( "pics/left.xpm"); 77 pixPath = FIND_APP_DATA( "pics/left.xpm");
83 left->setPixmap( QPixmap(pixPath)); 78 left->setPixmap( QPixmap(pixPath));
84 left->setFixedSize(left->pixmap()->size()); 79 left->setFixedSize(left->pixmap()->size());
85 connect( left, SIGNAL(clicked()),this, SLOT(butLeft()) ); 80 connect( left, SIGNAL(clicked()),this, SLOT(butLeft()) );
86 left->move(140, 90); 81 left->move(140, 90);
87 82
88 QPushButton *right = new QPushButton(this); 83 QPushButton *right = new QPushButton(this);
89 pixPath = FIND_APP_DATA( "pics/right.xpm"); 84 pixPath = FIND_APP_DATA( "pics/right.xpm");
90 right->setPixmap( QPixmap(pixPath)); 85 right->setPixmap( QPixmap(pixPath));
91 right->setFixedSize(right->pixmap()->size()); 86 right->setFixedSize(right->pixmap()->size());
92 connect( right, SIGNAL(clicked()),this, SLOT(butRight()) ); 87 connect( right, SIGNAL(clicked()),this, SLOT(butRight()) );
93 right->move(220, 90); 88 right->move(220, 90);
94 89
95 90
96 setCaption(tr("Change Direction Keys")); 91 setCaption(tr("Change Direction Keys"));
97 setFixedSize(380, 260); 92 setFixedSize(380, 260);
98 lab = 0; 93 lab = 0;
99 init(); 94 init();
100} 95}
101 96
102void Keys::keyPressEvent( QKeyEvent *e ) 97void Keys::keyPressEvent( QKeyEvent *e )
103{ 98{
104 uint kCode = e->key() & ~(SHIFT | CTRL | ALT); 99 uint kCode = e->key() & ~(SHIFT | CTRL | ALT);
105 QString string = KAccel::keyToString(kCode); 100 QString string = KAccel::keyToString(kCode);
106 101
107 if (lab != 0) { 102 if (lab != 0) {
108 if ( string.isNull() ) 103 if ( string.isNull() )
109 lab->setText(tr("Undefined key")); 104 lab->setText(tr("Undefined key"));
110 else 105 else
111 lab->setText(string); 106 lab->setText(string);
112 } 107 }
113 else if ( lab == 0 && e->key() == Key_Escape) 108 else if ( lab == 0 && e->key() == Key_Escape)
114 reject(); 109 reject();
115} 110}
116 111
117void Keys::butUp() 112void Keys::butUp()
118{ 113{
119 getKey(0); 114 getKey(0);
120} 115}
121 116
122void Keys::butDown() 117void Keys::butDown()
123{ 118{
124 getKey(1); 119 getKey(1);
125} 120}
126 121
127void Keys::butLeft() 122void Keys::butLeft()
128{ 123{
129 getKey(2); 124 getKey(2);
130} 125}
131 126
132void Keys::butRight() 127void Keys::butRight()
133{ 128{
134 getKey(3); 129 getKey(3);
135} 130}
136 131
137void Keys::getKey(int i) 132void Keys::getKey(int i)
138{ 133{
139 if ( lab != 0) 134 if ( lab != 0)
140 focusOut(lab); 135 focusOut(lab);
141 136
142 focusIn(labels[i]); 137 focusIn(labels[i]);
143} 138}
144 139
145void Keys::focusOut(QLabel *l) 140void Keys::focusOut(QLabel *l)
146{ 141{
147 l->setFrameStyle( QFrame::NoFrame ); 142 l->setFrameStyle( QFrame::NoFrame );
148 l->setBackgroundColor(backgroundColor()); 143 l->setBackgroundColor(backgroundColor());
149 l->repaint(); 144 l->repaint();
150} 145}
151 146
152void Keys::focusIn(QLabel *l) 147void Keys::focusIn(QLabel *l)
153{ 148{
154 lab = l; 149 lab = l;
155 lab->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 150 lab->setFrameStyle( QFrame::Panel | QFrame::Sunken );
156 lab->setBackgroundColor(white); 151 lab->setBackgroundColor(white);
157 lab->repaint(); 152 lab->repaint();
158} 153}
159 154
160void Keys::defaults() 155void Keys::defaults()
161{ 156{
162 if ( lab != 0) 157 if ( lab != 0)
163 focusOut(lab); 158 focusOut(lab);
164 159
165 lab = 0; 160 lab = 0;
166 161
167 labels[0]->setText("Up"); 162 labels[0]->setText("Up");
168 labels[1]->setText("Down"); 163 labels[1]->setText("Down");
169 labels[2]->setText("Left"); 164 labels[2]->setText("Left");
170 labels[3]->setText("Right"); 165 labels[3]->setText("Right");
171} 166}
172 167
173void Keys::init() 168void Keys::init()
174{ 169{
175 APP_CONFIG_BEGIN( cfg ); 170 APP_CONFIG_BEGIN( cfg );
176 QString up("Up"); 171 QString up("Up");
177 up = cfg->readEntry("upKey", (const char*) up); 172 up = cfg->readEntry("upKey", (const char*) up);
178 labels[0]->setText(up); 173 labels[0]->setText(up);
179 174
180 QString down("Down"); 175 QString down("Down");
181 down = cfg->readEntry("downKey", (const char*) down); 176 down = cfg->readEntry("downKey", (const char*) down);
182 labels[1]->setText(down); 177 labels[1]->setText(down);
183 178
184 QString left("Left"); 179 QString left("Left");
185 left = cfg->readEntry("leftKey", (const char*) left); 180 left = cfg->readEntry("leftKey", (const char*) left);
186 labels[2]->setText(left); 181 labels[2]->setText(left);
187 182
188 QString right("Right"); 183 QString right("Right");
189 right = cfg->readEntry("rightKey", (const char*) right); 184 right = cfg->readEntry("rightKey", (const char*) right);
190 labels[3]->setText(right); 185 labels[3]->setText(right);
191 APP_CONFIG_END( cfg ); 186 APP_CONFIG_END( cfg );
192} 187}
193 188
194void Keys::ok() 189void Keys::ok()
195{ 190{
196 /* 191 /*
197 APP_CONFIG_BEGIN( cfg ); 192 APP_CONFIG_BEGIN( cfg );
198 cfg->writeEntry("upKey", (const char*) labels[0]->text() ); 193 cfg->writeEntry("upKey", (const char*) labels[0]->text() );
199 cfg->writeEntry("downKey", (const char*) labels[1]->text() ); 194 cfg->writeEntry("downKey", (const char*) labels[1]->text() );
200 cfg->writeEntry("leftKey", (const char*) labels[2]->text() ); 195 cfg->writeEntry("leftKey", (const char*) labels[2]->text() );
201 cfg->writeEntry("rightKey",(const char*) labels[3]->text() ); 196 cfg->writeEntry("rightKey",(const char*) labels[3]->text() );
202 APP_CONFIG_END( cfg ); 197 APP_CONFIG_END( cfg );
203 */ 198 */
204 accept(); 199 accept();
205} 200}
diff --git a/noncore/games/kpacman/kpacman.cpp b/noncore/games/kpacman/kpacman.cpp
index df27c76..be2e46d 100644
--- a/noncore/games/kpacman/kpacman.cpp
+++ b/noncore/games/kpacman/kpacman.cpp
@@ -1,211 +1,206 @@
1 1
2#include "portable.h" 2#include "portable.h"
3 3
4#if defined( KDE2_PORT ) 4#if defined( KDE2_PORT )
5#include <kpacman.h> 5#include <kpacman.h>
6#include <kpacman.moc> 6#include <kpacman.moc>
7#include <kcolordlg.h> 7#include <kcolordlg.h>
8#elif defined( QPE_PORT ) 8#elif defined( QPE_PORT )
9#include <qmenubar.h> 9#include <qmenubar.h>
10#include <qpe/config.h> 10#include <qpe/config.h>
11#include <qapplication.h> 11#include <qapplication.h>
12#include "kpacman.h" 12#include "kpacman.h"
13#endif 13#endif
14 14
15#include <qkeycode.h>
16#include <qcolor.h>
17#include <qstring.h>
18#include <qpopmenu.h>
19#include <qmsgbox.h>
20 15
21Kpacman::Kpacman(QWidget *parent, const char *name) 16Kpacman::Kpacman(QWidget *parent, const char *name)
22 : KTMainWindow(parent, name) 17 : KTMainWindow(parent, name)
23{ 18{
24 schemesPopup = new QList<QPopupMenu>; 19 schemesPopup = new QList<QPopupMenu>;
25 schemesPopup->setAutoDelete(TRUE); 20 schemesPopup->setAutoDelete(TRUE);
26 21
27 menu(); 22 menu();
28 23
29 m_view = new QWidget( this, "m_view" ); 24 m_view = new QWidget( this, "m_view" );
30 m_view->setBackgroundColor( black ); 25 m_view->setBackgroundColor( black );
31 m_layout = new QGridLayout( m_view ); 26 m_layout = new QGridLayout( m_view );
32 m_layout->setMargin( 7 ); 27 m_layout->setMargin( 7 );
33 28
34 view = new KpacmanWidget( this, QString(name)+"widget"); 29 view = new KpacmanWidget( this, QString(name)+"widget");
35 m_layout->addWidget( view, 0, 0 ); 30 m_layout->addWidget( view, 0, 0 );
36 31
37 setCaption( tr("KPacman") ); 32 setCaption( tr("KPacman") );
38 33
39 view->referee->setFocus(); 34 view->referee->setFocus();
40 35
41 connect(view->referee, SIGNAL(setScore(int, int)), 36 connect(view->referee, SIGNAL(setScore(int, int)),
42 view->score, SLOT(setScore(int, int))); 37 view->score, SLOT(setScore(int, int)));
43 connect(view->referee, SIGNAL(setPoints(int)), 38 connect(view->referee, SIGNAL(setPoints(int)),
44 view->score, SLOT(set(int))); 39 view->score, SLOT(set(int)));
45 connect(view->referee, SIGNAL(setLifes(int)), 40 connect(view->referee, SIGNAL(setLifes(int)),
46 view->status, SLOT(setLifes(int))); 41 view->status, SLOT(setLifes(int)));
47 connect(view->referee, SIGNAL(setLevel(int)), 42 connect(view->referee, SIGNAL(setLevel(int)),
48 view->status, SLOT(setLevel(int))); 43 view->status, SLOT(setLevel(int)));
49 connect(view->referee, SIGNAL(forcedHallOfFame(bool)), 44 connect(view->referee, SIGNAL(forcedHallOfFame(bool)),
50 this, SLOT(forcedHallOfFame(bool))); 45 this, SLOT(forcedHallOfFame(bool)));
51 connect(view->referee, SIGNAL(togglePaused()), this, SLOT(togglePaused())); 46 connect(view->referee, SIGNAL(togglePaused()), this, SLOT(togglePaused()));
52 connect(view->referee, SIGNAL(toggleNew()), this, SLOT(toggleNew())); 47 connect(view->referee, SIGNAL(toggleNew()), this, SLOT(toggleNew()));
53 48
54 connect(view->score, SIGNAL(toggleNew()), this, SLOT(toggleNew())); 49 connect(view->score, SIGNAL(toggleNew()), this, SLOT(toggleNew()));
55 connect(view->score, SIGNAL(forcedHallOfFame(bool)), 50 connect(view->score, SIGNAL(forcedHallOfFame(bool)),
56 this, SLOT(forcedHallOfFame(bool))); 51 this, SLOT(forcedHallOfFame(bool)));
57 52
58 APP_CONFIG_BEGIN( cfg ); 53 APP_CONFIG_BEGIN( cfg );
59 focusOutPause = !cfg->readBoolEntry("FocusOutPause", TRUE); 54 focusOutPause = !cfg->readBoolEntry("FocusOutPause", TRUE);
60 focusInContinue = !cfg->readBoolEntry("FocusInContinue", TRUE); 55 focusInContinue = !cfg->readBoolEntry("FocusInContinue", TRUE);
61 hideMouseCursor = !cfg->readBoolEntry("HideMouseCursor", TRUE); 56 hideMouseCursor = !cfg->readBoolEntry("HideMouseCursor", TRUE);
62 APP_CONFIG_END( cfg ); 57 APP_CONFIG_END( cfg );
63 58
64 toggleFocusOutPause(); 59 toggleFocusOutPause();
65 toggleFocusInContinue(); 60 toggleFocusInContinue();
66 toggleHideMouseCursor(); 61 toggleHideMouseCursor();
67 62
68 setCentralWidget( m_view ); 63 setCentralWidget( m_view );
69} 64}
70 65
71Kpacman::~Kpacman() 66Kpacman::~Kpacman()
72{ 67{
73 /* APP_CONFIG_BEGIN( cfg ); 68 /* APP_CONFIG_BEGIN( cfg );
74 cfg->writeEntry("FocusOutPause", focusOutPause); 69 cfg->writeEntry("FocusOutPause", focusOutPause);
75 cfg->writeEntry("FocusInContinue", focusInContinue); 70 cfg->writeEntry("FocusInContinue", focusInContinue);
76 cfg->writeEntry("HideMouseCursor", hideMouseCursor); 71 cfg->writeEntry("HideMouseCursor", hideMouseCursor);
77 APP_CONFIG_END( cfg ); 72 APP_CONFIG_END( cfg );
78 */ 73 */
79 delete _menuBar; 74 delete _menuBar;
80} 75}
81 76
82void Kpacman::menu() 77void Kpacman::menu()
83{ 78{
84 gamePopup = new QPopupMenu(); 79 gamePopup = new QPopupMenu();
85 CHECK_PTR( gamePopup ); 80 CHECK_PTR( gamePopup );
86 newID = gamePopup->insertItem(tr("&New"), this, SLOT(newKpacman()),Key_F2); 81 newID = gamePopup->insertItem(tr("&New"), this, SLOT(newKpacman()),Key_F2);
87 pauseID = gamePopup->insertItem(tr("&Pause"), 82 pauseID = gamePopup->insertItem(tr("&Pause"),
88 this, SLOT(pauseKpacman()), Key_F3); 83 this, SLOT(pauseKpacman()), Key_F3);
89 hofID = gamePopup->insertItem(tr("&Hall of fame"), 84 hofID = gamePopup->insertItem(tr("&Hall of fame"),
90 this, SLOT(toggleHallOfFame()), Key_F4); 85 this, SLOT(toggleHallOfFame()), Key_F4);
91 gamePopup->insertSeparator(); 86 gamePopup->insertSeparator();
92 gamePopup->insertItem(tr("&Quit"), this, SLOT(quitKpacman()), CTRL+Key_Q); 87 gamePopup->insertItem(tr("&Quit"), this, SLOT(quitKpacman()), CTRL+Key_Q);
93 gamePopup->setCheckable(TRUE); 88 gamePopup->setCheckable(TRUE);
94 89
95 optionsPopup = new QPopupMenu(); 90 optionsPopup = new QPopupMenu();
96 CHECK_PTR(optionsPopup); 91 CHECK_PTR(optionsPopup);
97 92
98 modesPopup = new QPopupMenu(); 93 modesPopup = new QPopupMenu();
99 CHECK_PTR(modesPopup); 94 CHECK_PTR(modesPopup);
100 95
101 hideMouseCursorID = optionsPopup->insertItem(tr("&Hide Mousecursor"), 96 hideMouseCursorID = optionsPopup->insertItem(tr("&Hide Mousecursor"),
102 this, SLOT(toggleHideMouseCursor()), 97 this, SLOT(toggleHideMouseCursor()),
103 CTRL+Key_H); 98 CTRL+Key_H);
104 optionsPopup->insertSeparator(); 99 optionsPopup->insertSeparator();
105 100
106 if (lookupSchemes() > 0) { 101 if (lookupSchemes() > 0) {
107 optionsPopup->insertItem(tr("&Select graphic scheme"), modesPopup); 102 optionsPopup->insertItem(tr("&Select graphic scheme"), modesPopup);
108 optionsPopup->insertSeparator(); 103 optionsPopup->insertSeparator();
109 } 104 }
110 105
111 focusOutPauseID = optionsPopup->insertItem(tr("&Pause in Background"), 106 focusOutPauseID = optionsPopup->insertItem(tr("&Pause in Background"),
112 this, SLOT(toggleFocusOutPause())); 107 this, SLOT(toggleFocusOutPause()));
113 focusInContinueID = optionsPopup->insertItem(tr("&Continue in Foreground"), 108 focusInContinueID = optionsPopup->insertItem(tr("&Continue in Foreground"),
114 this, SLOT(toggleFocusInContinue())); 109 this, SLOT(toggleFocusInContinue()));
115 optionsPopup->insertSeparator(); 110 optionsPopup->insertSeparator();
116 111
117 optionsPopup->insertItem(tr("Change &keys..."), this, SLOT(confKeys())); 112 optionsPopup->insertItem(tr("Change &keys..."), this, SLOT(confKeys()));
118 113
119#ifndef QPE_PORT 114#ifndef QPE_PORT
120 QString aboutText = tr("@PACKAGE@ - @VERSION@\n\n" 115 QString aboutText = tr("@PACKAGE@ - @VERSION@\n\n"
121 "Joerg Thoennissen (joe@dsite.de)\n\n" 116 "Joerg Thoennissen (joe@dsite.de)\n\n"
122 "A pacman game for the KDE Desktop\n\n" 117 "A pacman game for the KDE Desktop\n\n"
123 "The program based on the source of ksnake\n" 118 "The program based on the source of ksnake\n"
124 "by Michel Filippi (mfilippi@sade.rhein-main.de).\n" 119 "by Michel Filippi (mfilippi@sade.rhein-main.de).\n"
125 "The design was strongly influenced by the pacman\n" 120 "The design was strongly influenced by the pacman\n"
126 "(c) 1980 MIDWAY MFG.CO.\n\n" 121 "(c) 1980 MIDWAY MFG.CO.\n\n"
127 "I like to thank my girlfriend Elke Krueers for\n" 122 "I like to thank my girlfriend Elke Krueers for\n"
128 "the last 10 years of her friendship.\n"); 123 "the last 10 years of her friendship.\n");
129 aboutText.replace(QRegExp("@PACKAGE@"), PACKAGE); 124 aboutText.replace(QRegExp("@PACKAGE@"), PACKAGE);
130 aboutText.replace(QRegExp("@VERSION@"), VERSION); 125 aboutText.replace(QRegExp("@VERSION@"), VERSION);
131 QPopupMenu *helpPopup = helpMenu(aboutText, FALSE); 126 QPopupMenu *helpPopup = helpMenu(aboutText, FALSE);
132#endif 127#endif
133 128
134 //_menuBar = new KMenuBar(this); 129 //_menuBar = new KMenuBar(this);
135 //CHECK_PTR( _menuBar ); 130 //CHECK_PTR( _menuBar );
136 //_menuBar->insertItem(tr("&Game"), gamePopup); 131 //_menuBar->insertItem(tr("&Game"), gamePopup);
137 //_menuBar->insertItem(tr("&Options"), optionsPopup); 132 //_menuBar->insertItem(tr("&Options"), optionsPopup);
138 //_menuBar->insertSeparator(); 133 //_menuBar->insertSeparator();
139#ifndef QPE_PORT 134#ifndef QPE_PORT
140 _menuBar->insertItem(tr("&Help"), helpPopup); 135 _menuBar->insertItem(tr("&Help"), helpPopup);
141#endif 136#endif
142} 137}
143 138
144int Kpacman::lookupSchemes() 139int Kpacman::lookupSchemes()
145{ 140{
146 APP_CONFIG_BEGIN( cfg ); 141 APP_CONFIG_BEGIN( cfg );
147 int ModeCount = cfg->readNumEntry("ModeCount", 0); 142 int ModeCount = cfg->readNumEntry("ModeCount", 0);
148 int Mode = cfg->readNumEntry("Mode", 0); 143 int Mode = cfg->readNumEntry("Mode", 0);
149 int SchemeCount = cfg->readNumEntry("SchemeCount", 0); 144 int SchemeCount = cfg->readNumEntry("SchemeCount", 0);
150 int Scheme = cfg->readNumEntry("Scheme", 0); 145 int Scheme = cfg->readNumEntry("Scheme", 0);
151 146
152 /* 147 /*
153 if (SchemeCount == 0 || Scheme == -1) { 148 if (SchemeCount == 0 || Scheme == -1) {
154 QMessageBox::warning(this, tr("Configuration Error"), 149 QMessageBox::warning(this, tr("Configuration Error"),
155 tr("There are no schemes defined,\n" 150 tr("There are no schemes defined,\n"
156 "or no scheme is selected.")); 151 "or no scheme is selected."));
157 APP_CONFIG_END( cfg ); 152 APP_CONFIG_END( cfg );
158 return 0; 153 return 0;
159 } 154 }
160 */ 155 */
161 156
162 connect(modesPopup, SIGNAL(activated(int)), this, SLOT(schemeChecked(int))); 157 connect(modesPopup, SIGNAL(activated(int)), this, SLOT(schemeChecked(int)));
163 modeID.resize(ModeCount > 0 ? ModeCount : 0); 158 modeID.resize(ModeCount > 0 ? ModeCount : 0);
164 159
165 if (!schemesPopup->isEmpty()) 160 if (!schemesPopup->isEmpty())
166 schemesPopup->clear(); 161 schemesPopup->clear();
167 162
168 SAVE_CONFIG_GROUP( cfg, oldgroup ); 163 SAVE_CONFIG_GROUP( cfg, oldgroup );
169 164
170 QString ModeGroup; 165 QString ModeGroup;
171 QString ModeName; 166 QString ModeName;
172 167
173 for (int m = 0; m < ModeCount; m++) { 168 for (int m = 0; m < ModeCount; m++) {
174 ModeGroup.sprintf("Mode %d", m); 169 ModeGroup.sprintf("Mode %d", m);
175 cfg->setGroup(ModeGroup); 170 cfg->setGroup(ModeGroup);
176 171
177 ModeName = cfg->readEntry("Description", ModeGroup); 172 ModeName = cfg->readEntry("Description", ModeGroup);
178 173
179 QPopupMenu *p = new QPopupMenu; 174 QPopupMenu *p = new QPopupMenu;
180 p->setCheckable(TRUE); 175 p->setCheckable(TRUE);
181 connect(p, SIGNAL(activated(int)), this, SLOT(schemeChecked(int))); 176 connect(p, SIGNAL(activated(int)), this, SLOT(schemeChecked(int)));
182 schemesPopup->append(p); 177 schemesPopup->append(p);
183 178
184 modeID[m] = modesPopup->insertItem(ModeName, schemesPopup->at(m)); 179 modeID[m] = modesPopup->insertItem(ModeName, schemesPopup->at(m));
185 modesPopup->setItemEnabled(modeID[m], FALSE); 180 modesPopup->setItemEnabled(modeID[m], FALSE);
186 modesPopup->setItemChecked(modeID[m], m == Mode); 181 modesPopup->setItemChecked(modeID[m], m == Mode);
187 } 182 }
188 183
189 schemeID.resize(SchemeCount); 184 schemeID.resize(SchemeCount);
190 schemeMode.resize(SchemeCount); 185 schemeMode.resize(SchemeCount);
191 186
192 QString SchemeGroup; 187 QString SchemeGroup;
193 QString SchemeName; 188 QString SchemeName;
194 int SchemeMode; 189 int SchemeMode;
195 190
196 for (int i = 0; i < SchemeCount; i++) { 191 for (int i = 0; i < SchemeCount; i++) {
197 SchemeGroup.sprintf("Scheme %d", i); 192 SchemeGroup.sprintf("Scheme %d", i);
198 cfg->setGroup(SchemeGroup); 193 cfg->setGroup(SchemeGroup);
199 194
200 SchemeName = cfg->readEntry("Description", SchemeGroup); 195 SchemeName = cfg->readEntry("Description", SchemeGroup);
201 SchemeMode = cfg->readNumEntry("Mode", -1); 196 SchemeMode = cfg->readNumEntry("Mode", -1);
202 197
203 schemeMode[i] = SchemeMode; 198 schemeMode[i] = SchemeMode;
204 if (SchemeMode == -1) { 199 if (SchemeMode == -1) {
205 schemeID[i] = modesPopup->insertItem(SchemeName); 200 schemeID[i] = modesPopup->insertItem(SchemeName);
206 modesPopup->setItemChecked(schemeID[i], i == Scheme); 201 modesPopup->setItemChecked(schemeID[i], i == Scheme);
207 } else { 202 } else {
208 schemeID[i] = schemesPopup->at(SchemeMode)->insertItem(SchemeName); 203 schemeID[i] = schemesPopup->at(SchemeMode)->insertItem(SchemeName);
209 schemesPopup->at(SchemeMode)-> 204 schemesPopup->at(SchemeMode)->
210 setItemChecked(schemeID[i], i == Scheme); 205 setItemChecked(schemeID[i], i == Scheme);
211 modesPopup->setItemEnabled(modeID[SchemeMode], TRUE); 206 modesPopup->setItemEnabled(modeID[SchemeMode], TRUE);
diff --git a/noncore/games/kpacman/kpacmanwidget.cpp b/noncore/games/kpacman/kpacmanwidget.cpp
index 823d2bf..9631495 100644
--- a/noncore/games/kpacman/kpacmanwidget.cpp
+++ b/noncore/games/kpacman/kpacmanwidget.cpp
@@ -1,158 +1,153 @@
1 1
2#include "portable.h" 2#include "portable.h"
3 3
4#if defined( KDE2_PORT ) 4#if defined( KDE2_PORT )
5#include <kapp.h> 5#include <kapp.h>
6#include <kconfig.h> 6#include <kconfig.h>
7#include <kstddirs.h> 7#include <kstddirs.h>
8#include <kpacmanwidget.h> 8#include <kpacmanwidget.h>
9#include <kpacmanwidget.moc> 9#include <kpacmanwidget.moc>
10#elif defined( QPE_PORT ) 10#elif defined( QPE_PORT )
11#include <qpe/qpeapplication.h> 11#include <qpe/qpeapplication.h>
12#include <qpe/config.h> 12#include <qpe/config.h>
13#include "kpacmanwidget.h" 13#include "kpacmanwidget.h"
14#endif 14#endif
15 15
16#include <qmessagebox.h>
17 16
18#include "bitfont.h"
19#include "score.h"
20#include "referee.h"
21#include "status.h"
22 17
23KpacmanWidget::KpacmanWidget( QWidget *parent, const char *name) 18KpacmanWidget::KpacmanWidget( QWidget *parent, const char *name)
24 : QWidget( parent, name ) 19 : QWidget( parent, name )
25{ 20{
26 score = 0l; 21 score = 0l;
27 referee = 0l; 22 referee = 0l;
28 status = 0l; 23 status = 0l;
29 bitfont = NULL; 24 bitfont = NULL;
30 fontName = ""; 25 fontName = "";
31 26
32 scheme = mode = -1; 27 scheme = mode = -1;
33 confScheme(); 28 confScheme();
34 29
35 score = new Score(this, name, scheme, mode, bitfont); 30 score = new Score(this, name, scheme, mode, bitfont);
36 referee = new Referee( this, name, scheme, mode, bitfont); 31 referee = new Referee( this, name, scheme, mode, bitfont);
37 status = new Status(this, name, scheme, mode); 32 status = new Status(this, name, scheme, mode);
38 33
39 setBackgroundColor( black ); 34 setBackgroundColor( black );
40} 35}
41 36
42KpacmanWidget::~KpacmanWidget() 37KpacmanWidget::~KpacmanWidget()
43{ 38{
44} 39}
45 40
46void KpacmanWidget::confMisc(bool defGroup) 41void KpacmanWidget::confMisc(bool defGroup)
47{ 42{
48 APP_CONFIG_BEGIN( cfg ); 43 APP_CONFIG_BEGIN( cfg );
49 //KStandardDirs *dirs = KGlobal::dirs(); 44 //KStandardDirs *dirs = KGlobal::dirs();
50 QString findPath; 45 QString findPath;
51 46
52 if (defGroup || cfg->hasKey("Font")) { 47 if (defGroup || cfg->hasKey("Font")) {
53 fontName = cfg->readEntry("Font"); 48 fontName = cfg->readEntry("Font");
54 49
55 if (fontName.left(1) != "/" && fontName.left(1) != "~") 50 if (fontName.left(1) != "/" && fontName.left(1) != "~")
56 fontName.insert(0, "fonts/"); 51 fontName.insert(0, "fonts/");
57 if (fontName.right(1) == "/") 52 if (fontName.right(1) == "/")
58 fontName.append("font.xbm"); 53 fontName.append("font.xbm");
59 54
60 //findPath = dirs->findResource("appdata", fontName); 55 //findPath = dirs->findResource("appdata", fontName);
61 findPath = FIND_APP_DATA( fontName ); 56 findPath = FIND_APP_DATA( fontName );
62 if (!findPath.isEmpty()) 57 if (!findPath.isEmpty())
63 fontName = findPath; 58 fontName = findPath;
64 59
65 bitfontFirstChar = cfg->readNumEntry("FontFirstChar", 0x0e); 60 bitfontFirstChar = cfg->readNumEntry("FontFirstChar", 0x0e);
66 bitfontLastChar = cfg->readNumEntry("FontLastChar", 0x5f); 61 bitfontLastChar = cfg->readNumEntry("FontLastChar", 0x5f);
67 } 62 }
68 APP_CONFIG_END( cfg ); 63 APP_CONFIG_END( cfg );
69} 64}
70 65
71void KpacmanWidget::confScheme() 66void KpacmanWidget::confScheme()
72{ 67{
73 APP_CONFIG_BEGIN( cfg ); 68 APP_CONFIG_BEGIN( cfg );
74 QString lastFontName = fontName; 69 QString lastFontName = fontName;
75 SAVE_CONFIG_GROUP( cfg, oldgroup ); 70 SAVE_CONFIG_GROUP( cfg, oldgroup );
76 QString newgroup; 71 QString newgroup;
77 72
78 // if not set, read mode and scheme from the configfile 73 // if not set, read mode and scheme from the configfile
79 if (mode == -1 && scheme == -1) { 74 if (mode == -1 && scheme == -1) {
80 scheme = cfg->readNumEntry("Scheme", -1); 75 scheme = cfg->readNumEntry("Scheme", -1);
81 mode = cfg->readNumEntry("Mode", -1); 76 mode = cfg->readNumEntry("Mode", -1);
82 77
83 // if mode is not set in the defGroup-group, lookup the scheme group 78 // if mode is not set in the defGroup-group, lookup the scheme group
84 if (scheme != -1 || mode == -1) { 79 if (scheme != -1 || mode == -1) {
85 newgroup.sprintf("Scheme %d", scheme); 80 newgroup.sprintf("Scheme %d", scheme);
86 cfg->setGroup(newgroup); 81 cfg->setGroup(newgroup);
87 82
88 mode = cfg->readNumEntry("Mode", -1); 83 mode = cfg->readNumEntry("Mode", -1);
89 RESTORE_CONFIG_GROUP( cfg, oldgroup ); 84 RESTORE_CONFIG_GROUP( cfg, oldgroup );
90 } 85 }
91 } 86 }
92 87
93 confMisc(); 88 confMisc();
94 89
95 if (mode != -1) { 90 if (mode != -1) {
96 newgroup.sprintf("Mode %d", mode); 91 newgroup.sprintf("Mode %d", mode);
97 cfg->setGroup(newgroup); 92 cfg->setGroup(newgroup);
98 93
99 confMisc(FALSE); 94 confMisc(FALSE);
100 } 95 }
101 96
102 if (scheme != -1) { 97 if (scheme != -1) {
103 newgroup.sprintf("Scheme %d", scheme); 98 newgroup.sprintf("Scheme %d", scheme);
104 cfg->setGroup(newgroup); 99 cfg->setGroup(newgroup);
105 100
106 confMisc(FALSE); 101 confMisc(FALSE);
107 } 102 }
108 103
109 if (lastFontName != fontName) { 104 if (lastFontName != fontName) {
110 105
111 if (bitfont != 0) 106 if (bitfont != 0)
112 delete bitfont; 107 delete bitfont;
113 108
114 bitfont = new Bitfont(fontName, bitfontFirstChar, bitfontLastChar); 109 bitfont = new Bitfont(fontName, bitfontFirstChar, bitfontLastChar);
115 if (bitfont->width() == 0 || bitfont->height() == 0) { 110 if (bitfont->width() == 0 || bitfont->height() == 0) {
116 QString msg = tr("The bitfont could not be contructed.\n\n" 111 QString msg = tr("The bitfont could not be contructed.\n\n"
117 "The file '@FONTNAME@' does not exist,\n" 112 "The file '@FONTNAME@' does not exist,\n"
118 "or is of an unknown format."); 113 "or is of an unknown format.");
119 msg.replace(QRegExp("@FONTNAME@"), fontName); 114 msg.replace(QRegExp("@FONTNAME@"), fontName);
120 // QMessageBox::critical(this, tr("Initialization Error"), msg); 115 // QMessageBox::critical(this, tr("Initialization Error"), msg);
121 printf("%s\n", msg.data()); 116 printf("%s\n", msg.data());
122 } 117 }
123 } 118 }
124 119
125 RESTORE_CONFIG_GROUP( cfg, oldgroup ); 120 RESTORE_CONFIG_GROUP( cfg, oldgroup );
126 APP_CONFIG_END( cfg ); 121 APP_CONFIG_END( cfg );
127} 122}
128 123
129void KpacmanWidget::setScheme(int Scheme, int Mode) 124void KpacmanWidget::setScheme(int Scheme, int Mode)
130{ 125{
131 mode = Mode; 126 mode = Mode;
132 scheme = Scheme; 127 scheme = Scheme;
133 128
134 confScheme(); 129 confScheme();
135 130
136 score->setScheme(Scheme, Mode, bitfont); 131 score->setScheme(Scheme, Mode, bitfont);
137 referee->setScheme(Scheme, Mode, bitfont); 132 referee->setScheme(Scheme, Mode, bitfont);
138 status->setScheme(Scheme, Mode); 133 status->setScheme(Scheme, Mode);
139 134
140 score->repaint(FALSE); 135 score->repaint(FALSE);
141 referee->repaint(FALSE); 136 referee->repaint(FALSE);
142 status->repaint(FALSE); 137 status->repaint(FALSE);
143} 138}
144 139
145void KpacmanWidget::resizeEvent( QResizeEvent * ) 140void KpacmanWidget::resizeEvent( QResizeEvent * )
146{ 141{
147 qWarning("Resize"); 142 qWarning("Resize");
148 referee->setGeometry(0, bitfont->height()*3, referee->width(), referee->height()); 143 referee->setGeometry(0, bitfont->height()*3, referee->width(), referee->height());
149 referee->setBackgroundColor(BLACK); 144 referee->setBackgroundColor(BLACK);
150 145
151 if(!status ) return; 146 if(!status ) return;
152 status->setGeometry(0, bitfont->height()*3+referee->height(), referee->width(), 147 status->setGeometry(0, bitfont->height()*3+referee->height(), referee->width(),
153 status->height()); 148 status->height());
154 status->setBackgroundColor(BLACK); 149 status->setBackgroundColor(BLACK);
155 150
156 score->setGeometry(0, 0, referee->width(), bitfont->height()*3+referee->height()+status->height()); 151 score->setGeometry(0, 0, referee->width(), bitfont->height()*3+referee->height()+status->height());
157 score->setBackgroundColor(BLACK); 152 score->setBackgroundColor(BLACK);
158} 153}
diff --git a/noncore/games/kpacman/monster.cpp b/noncore/games/kpacman/monster.cpp
index 2f402b4..80b4655 100644
--- a/noncore/games/kpacman/monster.cpp
+++ b/noncore/games/kpacman/monster.cpp
@@ -1,194 +1,193 @@
1#include "monster.h" 1#include "monster.h"
2#include "board.h"
3 2
4Monster::Monster(Board *b, int mid) 3Monster::Monster(Board *b, int mid)
5{ 4{
6 board = b; 5 board = b;
7 ID = mid; 6 ID = mid;
8 7
9 setREM(0); 8 setREM(0);
10 setHarmless(0, 0, 0); 9 setHarmless(0, 0, 0);
11 setArrested(0, 0); 10 setArrested(0, 0);
12 setFreedom(board->position(prisonexit)); 11 setFreedom(board->position(prisonexit));
13 if (mid == 0) 12 if (mid == 0)
14 setPrison(board->position(prisonentry)); 13 setPrison(board->position(prisonentry));
15 else 14 else
16 setPrison(board->position(monsterhome, mid)); 15 setPrison(board->position(monsterhome, mid));
17 16
18 actualPosition = lastPosition = OUT; 17 actualPosition = lastPosition = OUT;
19 feetPosition = 0; 18 feetPosition = 0;
20 IQ = 0; 19 IQ = 0;
21 maxBodyPixmaps = 0; 20 maxBodyPixmaps = 0;
22 maxEyesPixmaps = 0; 21 maxEyesPixmaps = 0;
23} 22}
24 23
25void Monster::setMaxPixmaps(int maxBody, int maxEyes) 24void Monster::setMaxPixmaps(int maxBody, int maxEyes)
26{ 25{
27 if (feetPosition >= (maxBody/10)) 26 if (feetPosition >= (maxBody/10))
28 feetPosition = 0; 27 feetPosition = 0;
29 maxBodyPixmaps = maxBody; 28 maxBodyPixmaps = maxBody;
30 maxEyesPixmaps = maxEyes; 29 maxEyesPixmaps = maxEyes;
31} 30}
32 31
33void Monster::setArrested(int ticks, int duration) 32void Monster::setArrested(int ticks, int duration)
34{ 33{
35 actualState = dangerous; 34 actualState = dangerous;
36 pauseDuration = ticks; 35 pauseDuration = ticks;
37 pause = 0; 36 pause = 0;
38 arrestDuration = arrestLeft = duration; 37 arrestDuration = arrestLeft = duration;
39 arrestPause = ticks; 38 arrestPause = ticks;
40 harmlessLeft = 0; 39 harmlessLeft = 0;
41} 40}
42 41
43void Monster::setDangerous(int ticks, int iq) 42void Monster::setDangerous(int ticks, int iq)
44{ 43{
45 actualState = dangerous; 44 actualState = dangerous;
46 pauseDuration = ticks; 45 pauseDuration = ticks;
47 pause = 0; 46 pause = 0;
48 dangerousPause = ticks; 47 dangerousPause = ticks;
49 harmlessLeft = 0; 48 harmlessLeft = 0;
50 IQ = iq; 49 IQ = iq;
51} 50}
52 51
53void Monster::setHarmless(int ticks, int hDuration, int wDuration) 52void Monster::setHarmless(int ticks, int hDuration, int wDuration)
54{ 53{
55 actualState = harmless; 54 actualState = harmless;
56 pauseDuration = ticks; 55 pauseDuration = ticks;
57 pause = 0; 56 pause = 0;
58 harmlessDuration = harmlessLeft = hDuration; 57 harmlessDuration = harmlessLeft = hDuration;
59 warningDuration = wDuration; 58 warningDuration = wDuration;
60} 59}
61 60
62void Monster::setREM(int ticks) 61void Monster::setREM(int ticks)
63{ 62{
64 actualState = rem; 63 actualState = rem;
65 pauseDuration = ticks; 64 pauseDuration = ticks;
66 pause = 0; 65 pause = 0;
67} 66}
68 67
69void Monster::setPosition(int pos) 68void Monster::setPosition(int pos)
70{ 69{
71 board->reset(lastPosition, monster, ID); // reset old position on the board 70 board->reset(lastPosition, monster, ID); // reset old position on the board
72 actualPosition = lastPosition = pos; // set position of monster 71 actualPosition = lastPosition = pos; // set position of monster
73 board->set(actualPosition, monster, ID); 72 board->set(actualPosition, monster, ID);
74 feetPosition = 0; 73 feetPosition = 0;
75} 74}
76 75
77void Monster::setPrison(int pos) 76void Monster::setPrison(int pos)
78{ 77{
79 prisonPosition = pos; 78 prisonPosition = pos;
80} 79}
81 80
82void Monster::setFreedom(int pos) 81void Monster::setFreedom(int pos)
83{ 82{
84 freedomPosition = pos; 83 freedomPosition = pos;
85} 84}
86 85
87void Monster::setDirection(int dir) 86void Monster::setDirection(int dir)
88{ 87{
89 if (dir == X) 88 if (dir == X)
90 lastDirection = actualDirection; 89 lastDirection = actualDirection;
91 actualDirection = dir; 90 actualDirection = dir;
92} 91}
93 92
94monsterState Monster::state() 93monsterState Monster::state()
95{ 94{
96 return actualState; 95 return actualState;
97} 96}
98 97
99int Monster::position() 98int Monster::position()
100{ 99{
101 return actualPosition; 100 return actualPosition;
102} 101}
103 102
104int Monster::direction() 103int Monster::direction()
105{ 104{
106 return actualDirection; 105 return actualDirection;
107} 106}
108 107
109int Monster::id() 108int Monster::id()
110{ 109{
111 return ID; 110 return ID;
112} 111}
113 112
114bool Monster::move() 113bool Monster::move()
115{ 114{
116 if (arrestLeft > 1) 115 if (arrestLeft > 1)
117 arrestLeft--; 116 arrestLeft--;
118 117
119 if (harmlessLeft > 0) { 118 if (harmlessLeft > 0) {
120 harmlessLeft--; 119 harmlessLeft--;
121 if (harmlessLeft == 0 && actualState == harmless) { 120 if (harmlessLeft == 0 && actualState == harmless) {
122 actualState = dangerous; 121 actualState = dangerous;
123 pauseDuration = dangerousPause; 122 pauseDuration = dangerousPause;
124 } 123 }
125 } 124 }
126 125
127 if (pause-- > 0) 126 if (pause-- > 0)
128 return FALSE; 127 return FALSE;
129 else 128 else
130 pause = pauseDuration; 129 pause = pauseDuration;
131 130
132 if (actualPosition == OUT) 131 if (actualPosition == OUT)
133 return FALSE; 132 return FALSE;
134 133
135 if (actualDirection == X) { 134 if (actualDirection == X) {
136 if (++feetPosition >= (maxBodyPixmaps/10)) 135 if (++feetPosition >= (maxBodyPixmaps/10))
137 feetPosition = 0; 136 feetPosition = 0;
138 return TRUE; 137 return TRUE;
139 } 138 }
140 139
141 lastPosition = actualPosition; 140 lastPosition = actualPosition;
142 int d = actualDirection; 141 int d = actualDirection;
143 142
144 if (arrestLeft > 1) { // during the arrest, only up and down 143 if (arrestLeft > 1) { // during the arrest, only up and down
145 if (!board->isWay(actualPosition, d, empty) && 144 if (!board->isWay(actualPosition, d, empty) &&
146 !board->isWay(actualPosition, d, tunnel)) 145 !board->isWay(actualPosition, d, tunnel))
147 d = board->turn(actualDirection); 146 d = board->turn(actualDirection);
148 } 147 }
149 148
150 if (arrestLeft == 1) { // going out of the prison 149 if (arrestLeft == 1) { // going out of the prison
151 if (((d == W || d == E) && 150 if (((d == W || d == E) &&
152 board->x(actualPosition) == board->x(freedomPosition)) || 151 board->x(actualPosition) == board->x(freedomPosition)) ||
153 ((d == S || d == N) && 152 ((d == S || d == N) &&
154 board->y(actualPosition) == board->y(freedomPosition)) || 153 board->y(actualPosition) == board->y(freedomPosition)) ||
155 board->isWay(actualPosition, d, brick) || 154 board->isWay(actualPosition, d, brick) ||
156 board->isWay(actualPosition, d, prison)) { 155 board->isWay(actualPosition, d, prison)) {
157 d = board->closeup(actualPosition, d, freedomPosition); 156 d = board->closeup(actualPosition, d, freedomPosition);
158 } 157 }
159 while (board->isWay(actualPosition, d, brick) || 158 while (board->isWay(actualPosition, d, brick) ||
160 board->isWay(actualPosition, d, prison)) { 159 board->isWay(actualPosition, d, prison)) {
161 if (d == actualDirection) 160 if (d == actualDirection)
162 d = rand() % 4; 161 d = rand() % 4;
163 else 162 else
164 d = actualDirection; 163 d = actualDirection;
165 } 164 }
166 if (actualState == dangerous) 165 if (actualState == dangerous)
167 pauseDuration = dangerousPause; 166 pauseDuration = dangerousPause;
168 167
169 } 168 }
170 169
171 if (arrestLeft == 0) 170 if (arrestLeft == 0)
172 if (actualState == rem) { // on the way to prison 171 if (actualState == rem) { // on the way to prison
173 172
174 d = board->closeup(actualPosition, d, prisonPosition); 173 d = board->closeup(actualPosition, d, prisonPosition);
175 174
176 while (board->isWay(actualPosition, d, brick) || 175 while (board->isWay(actualPosition, d, brick) ||
177 board->isWay(actualPosition, d, prison)) { 176 board->isWay(actualPosition, d, prison)) {
178 if (d != actualDirection) // if new direction is not possible, 177 if (d != actualDirection) // if new direction is not possible,
179 d = actualDirection; // try current direction first. 178 d = actualDirection; // try current direction first.
180 else 179 else
181 d = rand() % 4; 180 d = rand() % 4;
182 } 181 }
183 182
184 } else { // dangerous or harmless movement 183 } else { // dangerous or harmless movement
185 if (rand() % (int) ((190-IQ)/10) == 0) { 184 if (rand() % (int) ((190-IQ)/10) == 0) {
186 d = board->closeup(actualPosition, d, board->position(pacman)); 185 d = board->closeup(actualPosition, d, board->position(pacman));
187 if (actualState == harmless) 186 if (actualState == harmless)
188 d = board->turn(d); 187 d = board->turn(d);
189 } else 188 } else
190 do // try new direction, but not the opposite 189 do // try new direction, but not the opposite
191 d = rand() % 4; // direction, to prevent hectic movement. 190 d = rand() % 4; // direction, to prevent hectic movement.
192 while (d == board->turn(actualDirection)); 191 while (d == board->turn(actualDirection));
193 192
194 while ((!board->isWay(actualPosition, d, empty) && 193 while ((!board->isWay(actualPosition, d, empty) &&
diff --git a/noncore/games/kpacman/pacman.cpp b/noncore/games/kpacman/pacman.cpp
index 40f60a8..82524b4 100644
--- a/noncore/games/kpacman/pacman.cpp
+++ b/noncore/games/kpacman/pacman.cpp
@@ -1,147 +1,146 @@
1#include "pacman.h" 1#include "pacman.h"
2#include "board.h"
3 2
4Pacman::Pacman(Board *b) 3Pacman::Pacman(Board *b)
5{ 4{
6 board = b; 5 board = b;
7 setDemo(FALSE); 6 setDemo(FALSE);
8 setAlive(0); 7 setAlive(0);
9 actualPosition = lastPosition = OUT; 8 actualPosition = lastPosition = OUT;
10 mouthPosition = 0; 9 mouthPosition = 0;
11 lastPix = 0; 10 lastPix = 0;
12 maxPixmaps = 0; 11 maxPixmaps = 0;
13} 12}
14 13
15void Pacman::setMaxPixmaps(int max) 14void Pacman::setMaxPixmaps(int max)
16{ 15{
17 if (actualDirection == X && lastPix >= 0) { 16 if (actualDirection == X && lastPix >= 0) {
18 actualDirection = lastPix / (maxPixmaps/4); 17 actualDirection = lastPix / (maxPixmaps/4);
19 if (max < maxPixmaps) 18 if (max < maxPixmaps)
20 mouthPosition = 0; 19 mouthPosition = 0;
21 else 20 else
22 mouthPosition = lastPix % (maxPixmaps/4); 21 mouthPosition = lastPix % (maxPixmaps/4);
23 maxPixmaps = max; 22 maxPixmaps = max;
24 23
25 lastPix = pix(); 24 lastPix = pix();
26 25
27 actualDirection = X; 26 actualDirection = X;
28 } else 27 } else
29 maxPixmaps = max; 28 maxPixmaps = max;
30} 29}
31 30
32void Pacman::setAlive(int ticks) 31void Pacman::setAlive(int ticks)
33{ 32{
34 actualState = alive; 33 actualState = alive;
35 pauseDuration = ticks; 34 pauseDuration = ticks;
36 pause = 0; 35 pause = 0;
37} 36}
38 37
39void Pacman::setPosition(int pos) 38void Pacman::setPosition(int pos)
40{ 39{
41 board->reset(lastPosition, pacman); 40 board->reset(lastPosition, pacman);
42 actualPosition = lastPosition = pos; 41 actualPosition = lastPosition = pos;
43 board->set(actualPosition, pacman); 42 board->set(actualPosition, pacman);
44 mouthPosition = 0; 43 mouthPosition = 0;
45} 44}
46 45
47void Pacman::setDirection(int dir, bool forced) 46void Pacman::setDirection(int dir, bool forced)
48{ 47{
49 if (forced || 48 if (forced ||
50 board->isWay(actualPosition, dir, empty) || 49 board->isWay(actualPosition, dir, empty) ||
51 board->isWay(actualPosition, dir, tunnel)) { 50 board->isWay(actualPosition, dir, tunnel)) {
52 if (dir == X) 51 if (dir == X)
53 lastPix = pix(); 52 lastPix = pix();
54 actualDirection = dir; 53 actualDirection = dir;
55 nextDirection = X; 54 nextDirection = X;
56 } else 55 } else
57 nextDirection = dir; 56 nextDirection = dir;
58} 57}
59 58
60void Pacman::setDemo(bool yes) 59void Pacman::setDemo(bool yes)
61{ 60{
62 demo = yes; 61 demo = yes;
63} 62}
64 63
65pacmanState Pacman::state() 64pacmanState Pacman::state()
66{ 65{
67 return actualState; 66 return actualState;
68} 67}
69 68
70int Pacman::position() 69int Pacman::position()
71{ 70{
72 return actualPosition; 71 return actualPosition;
73} 72}
74 73
75int Pacman::direction() 74int Pacman::direction()
76{ 75{
77 return actualDirection; 76 return actualDirection;
78} 77}
79 78
80bool Pacman::move() 79bool Pacman::move()
81{ 80{
82 if (pause-- > 0) 81 if (pause-- > 0)
83 return FALSE; 82 return FALSE;
84 else 83 else
85 pause = pauseDuration; 84 pause = pauseDuration;
86 85
87 if (actualDirection == X || actualPosition == OUT) 86 if (actualDirection == X || actualPosition == OUT)
88 return FALSE; 87 return FALSE;
89 88
90 lastPosition = actualPosition; 89 lastPosition = actualPosition;
91 90
92 if (demo) { 91 if (demo) {
93 int d = actualDirection; 92 int d = actualDirection;
94 93
95 do // try new direction, but not the opposite 94 do // try new direction, but not the opposite
96 d = rand() % 4; // direction, to prevent hectic movement. 95 d = rand() % 4; // direction, to prevent hectic movement.
97 while (d == board->turn(actualDirection)); 96 while (d == board->turn(actualDirection));
98 97
99 while (!board->isWay(actualPosition, d, empty) && 98 while (!board->isWay(actualPosition, d, empty) &&
100 !board->isWay(actualPosition, d, tunnel)) { 99 !board->isWay(actualPosition, d, tunnel)) {
101 if (d != actualDirection) // if new actualDirection is not possible, 100 if (d != actualDirection) // if new actualDirection is not possible,
102 d = actualDirection; // try current actualDirection first. 101 d = actualDirection; // try current actualDirection first.
103 else 102 else
104 d = rand() % 4; 103 d = rand() % 4;
105 } 104 }
106 105
107 actualDirection = d; 106 actualDirection = d;
108 actualPosition = board->move(actualPosition, actualDirection); 107 actualPosition = board->move(actualPosition, actualDirection);
109 108
110 } else { 109 } else {
111 110
112 if (nextDirection != X) 111 if (nextDirection != X)
113 if (board->isWay(actualPosition, nextDirection, empty) || 112 if (board->isWay(actualPosition, nextDirection, empty) ||
114 board->isWay(actualPosition, nextDirection, tunnel)) { 113 board->isWay(actualPosition, nextDirection, tunnel)) {
115 actualDirection = nextDirection; 114 actualDirection = nextDirection;
116 nextDirection = X; 115 nextDirection = X;
117 } 116 }
118 117
119 if (board->isWay(actualPosition, actualDirection, empty) || 118 if (board->isWay(actualPosition, actualDirection, empty) ||
120 board->isWay(actualPosition, actualDirection, tunnel)) 119 board->isWay(actualPosition, actualDirection, tunnel))
121 actualPosition = board->move(actualPosition, actualDirection); 120 actualPosition = board->move(actualPosition, actualDirection);
122 } 121 }
123 122
124 if (actualPosition != lastPosition) { 123 if (actualPosition != lastPosition) {
125 board->reset(lastPosition, pacman); 124 board->reset(lastPosition, pacman);
126 board->set(actualPosition, pacman); 125 board->set(actualPosition, pacman);
127 126
128 if (++mouthPosition >= (maxPixmaps/4)) 127 if (++mouthPosition >= (maxPixmaps/4))
129 mouthPosition = 0; 128 mouthPosition = 0;
130 } 129 }
131 return TRUE; 130 return TRUE;
132} 131}
133 132
134int Pacman::pix() 133int Pacman::pix()
135{ 134{
136 if (actualPosition != OUT && maxPixmaps > 0) 135 if (actualPosition != OUT && maxPixmaps > 0)
137 switch (actualDirection) { 136 switch (actualDirection) {
138 case N : return ((maxPixmaps/4)*0)+mouthPosition; 137 case N : return ((maxPixmaps/4)*0)+mouthPosition;
139 case E : return ((maxPixmaps/4)*1)+mouthPosition; 138 case E : return ((maxPixmaps/4)*1)+mouthPosition;
140 case S : return ((maxPixmaps/4)*2)+mouthPosition; 139 case S : return ((maxPixmaps/4)*2)+mouthPosition;
141 case W : return ((maxPixmaps/4)*3)+mouthPosition; 140 case W : return ((maxPixmaps/4)*3)+mouthPosition;
142 case X : return lastPix; 141 case X : return lastPix;
143 } 142 }
144 143
145 return -1; 144 return -1;
146} 145}
147 146
diff --git a/noncore/games/kpacman/painter.cpp b/noncore/games/kpacman/painter.cpp
index d8c7460..410d3f5 100644
--- a/noncore/games/kpacman/painter.cpp
+++ b/noncore/games/kpacman/painter.cpp
@@ -1,216 +1,208 @@
1 1
2#include "portable.h" 2#include "portable.h"
3 3
4#if defined( KDE2_PORT ) 4#if defined( KDE2_PORT )
5#include <kapp.h> 5#include <kapp.h>
6#include <kconfig.h> 6#include <kconfig.h>
7#include <kstddirs.h> 7#include <kstddirs.h>
8#elif defined( QPE_PORT ) 8#elif defined( QPE_PORT )
9#include <qpe/qpeapplication.h> 9#include <qpe/qpeapplication.h>
10#include <qpe/config.h> 10#include <qpe/config.h>
11#endif 11#endif
12 12
13#include <qcolor.h> 13
14#include <qpainter.h>
15#include <qpixmap.h>
16#include <qbitmap.h>
17#include <qrect.h>
18#include <qstring.h>
19
20#include <qmessagebox.h>
21#include <qfileinfo.h> 14#include <qfileinfo.h>
22 15
23#include "painter.h" 16#include "painter.h"
24#include "board.h"
25 17
26Painter::Painter( Board *b, QWidget *parent, int Scheme, int Mode, Bitfont *font) 18Painter::Painter( Board *b, QWidget *parent, int Scheme, int Mode, Bitfont *font)
27{ 19{
28 w = parent; 20 w = parent;
29 board = b; 21 board = b;
30 22
31 pointPix = NULL; 23 pointPix = NULL;
32 wallPix = NULL; 24 wallPix = NULL;
33 prisonPix = NULL; 25 prisonPix = NULL;
34 energizerPix = NULL; 26 energizerPix = NULL;
35 fruitPix = NULL; 27 fruitPix = NULL;
36 pacmanPix = NULL; 28 pacmanPix = NULL;
37 dyingPix = NULL; 29 dyingPix = NULL;
38 eyesPix = NULL; 30 eyesPix = NULL;
39 monsterPix = NULL; 31 monsterPix = NULL;
40 fruitScorePix = NULL; 32 fruitScorePix = NULL;
41 monsterScorePix = NULL; 33 monsterScorePix = NULL;
42 34
43 lastPointPixmapName = ""; 35 lastPointPixmapName = "";
44 lastWallPixmapName = ""; 36 lastWallPixmapName = "";
45 lastPrisonPixmapName = ""; 37 lastPrisonPixmapName = "";
46 lastEnergizerPixmapName = ""; 38 lastEnergizerPixmapName = "";
47 lastFruitPixmapName = ""; 39 lastFruitPixmapName = "";
48 lastPacmanPixmapName = ""; 40 lastPacmanPixmapName = "";
49 lastDyingPixmapName = ""; 41 lastDyingPixmapName = "";
50 lastEyesPixmapName = ""; 42 lastEyesPixmapName = "";
51 lastMonsterPixmapName = ""; 43 lastMonsterPixmapName = "";
52 lastFruitScorePixmapName = ""; 44 lastFruitScorePixmapName = "";
53 lastMonsterScorePixmapName = ""; 45 lastMonsterScorePixmapName = "";
54 46
55 bitfont = font; 47 bitfont = font;
56 48
57 scheme = Scheme; 49 scheme = Scheme;
58 mode = Mode; 50 mode = Mode;
59 level = 0; 51 level = 0;
60 52
61 confScheme(); 53 confScheme();
62} 54}
63 55
64QList<QPixmap> *Painter::loadPixmap(QWidget*, QString pixmapName, 56QList<QPixmap> *Painter::loadPixmap(QWidget*, QString pixmapName,
65 QList<QPixmap> *pixmaps) 57 QList<QPixmap> *pixmaps)
66{ 58{
67 if (pixmaps == NULL) { 59 if (pixmaps == NULL) {
68 pixmaps = new QList<QPixmap>; 60 pixmaps = new QList<QPixmap>;
69 pixmaps->setAutoDelete(TRUE); 61 pixmaps->setAutoDelete(TRUE);
70 } 62 }
71 63
72 if (!pixmaps->isEmpty()) 64 if (!pixmaps->isEmpty())
73 pixmaps->clear(); 65 pixmaps->clear();
74 66
75 QPixmap PIXMAP(pixmapName); 67 QPixmap PIXMAP(pixmapName);
76 if (PIXMAP.isNull() || PIXMAP.mask() == NULL) { 68 if (PIXMAP.isNull() || PIXMAP.mask() == NULL) {
77 QString msg = "The pixmap could not be contructed.\n\n" 69 QString msg = "The pixmap could not be contructed.\n\n"
78 "The file '@PIXMAPNAME@' does not exist,\n" 70 "The file '@PIXMAPNAME@' does not exist,\n"
79 "or is of an unknown format."; 71 "or is of an unknown format.";
80 msg.replace(QRegExp("@PIXMAPNAME@"), pixmapName); 72 msg.replace(QRegExp("@PIXMAPNAME@"), pixmapName);
81 // QMessageBox::critical(parent, tr("Initialization Error"), msg); 73 // QMessageBox::critical(parent, tr("Initialization Error"), msg);
82 printf("%s\n", msg.data()); 74 printf("%s\n", msg.data());
83 return 0; 75 return 0;
84 } 76 }
85 77
86 int height = PIXMAP.height(); 78 int height = PIXMAP.height();
87 int width = (height == 0) ? 0 : PIXMAP.width()/(PIXMAP.width()/height); 79 int width = (height == 0) ? 0 : PIXMAP.width()/(PIXMAP.width()/height);
88 80
89 QBitmap BITMAP; 81 QBitmap BITMAP;
90 QBitmap MASK; 82 QBitmap MASK;
91 83
92 BITMAP = *PIXMAP.mask(); 84 BITMAP = *PIXMAP.mask();
93 MASK.resize(width, height); 85 MASK.resize(width, height);
94 86
95 for (int x = 0; x < PIXMAP.width()/width; x++) { 87 for (int x = 0; x < PIXMAP.width()/width; x++) {
96 QPixmap *pixmap = new QPixmap(width, height); 88 QPixmap *pixmap = new QPixmap(width, height);
97 pixmaps->append(pixmap); 89 pixmaps->append(pixmap);
98 bitBlt(pixmap, 0, 0, &PIXMAP, x*width, 0, width, height, QPixmap::CopyROP, TRUE); 90 bitBlt(pixmap, 0, 0, &PIXMAP, x*width, 0, width, height, QPixmap::CopyROP, TRUE);
99 bitBlt(&MASK, 0, 0, &BITMAP, x*width, 0, width, height, QPixmap::CopyROP, TRUE); 91 bitBlt(&MASK, 0, 0, &BITMAP, x*width, 0, width, height, QPixmap::CopyROP, TRUE);
100 pixmap->setMask(MASK); 92 pixmap->setMask(MASK);
101 } 93 }
102 94
103 return pixmaps; 95 return pixmaps;
104} 96}
105 97
106QList<QPixmap> *Painter::textPixmap(QStrList &str, QList<QPixmap> *pixmaps, 98QList<QPixmap> *Painter::textPixmap(QStrList &str, QList<QPixmap> *pixmaps,
107 QColor fg, QColor bg) 99 QColor fg, QColor bg)
108{ 100{
109 if (pixmaps == NULL) { 101 if (pixmaps == NULL) {
110 pixmaps = new QList<QPixmap>; 102 pixmaps = new QList<QPixmap>;
111 pixmaps->setAutoDelete(TRUE); 103 pixmaps->setAutoDelete(TRUE);
112 } 104 }
113 105
114 if (!pixmaps->isEmpty()) 106 if (!pixmaps->isEmpty())
115 pixmaps->clear(); 107 pixmaps->clear();
116 108
117 for (uint s = 0; s < str.count(); s++) { 109 for (uint s = 0; s < str.count(); s++) {
118 QPixmap *pixmap = new QPixmap(bitfont->text(str.at(s), fg, bg)); 110 QPixmap *pixmap = new QPixmap(bitfont->text(str.at(s), fg, bg));
119 pixmaps->append(pixmap); 111 pixmaps->append(pixmap);
120 } 112 }
121 113
122 return pixmaps; 114 return pixmaps;
123} 115}
124 116
125QList<QPixmap> *Painter::textPixmap(QString str, QList<QPixmap> *pixmaps, 117QList<QPixmap> *Painter::textPixmap(QString str, QList<QPixmap> *pixmaps,
126 QColor fg, QColor bg) 118 QColor fg, QColor bg)
127{ 119{
128 if (pixmaps == NULL) { 120 if (pixmaps == NULL) {
129 pixmaps = new QList<QPixmap>; 121 pixmaps = new QList<QPixmap>;
130 pixmaps->setAutoDelete(TRUE); 122 pixmaps->setAutoDelete(TRUE);
131 } 123 }
132 124
133 if (!pixmaps->isEmpty()) 125 if (!pixmaps->isEmpty())
134 pixmaps->clear(); 126 pixmaps->clear();
135 127
136 QPixmap *pixmap = new QPixmap(bitfont->text(str, fg, bg)); 128 QPixmap *pixmap = new QPixmap(bitfont->text(str, fg, bg));
137 pixmaps->append(pixmap); 129 pixmaps->append(pixmap);
138 130
139 return pixmaps; 131 return pixmaps;
140} 132}
141 133
142/* Return the point of the upperleft pixel of the block representing that position 134/* Return the point of the upperleft pixel of the block representing that position
143 * on the board. 135 * on the board.
144 */ 136 */
145QPoint Painter::point(int pos) 137QPoint Painter::point(int pos)
146{ 138{
147 return QPoint((board->x(pos)-1)*BlockWidth, (board->y(pos)-1)*BlockHeight); 139 return QPoint((board->x(pos)-1)*BlockWidth, (board->y(pos)-1)*BlockHeight);
148} 140}
149 141
150 142
151QRect Painter::rect(int pos, PixMap pix, uint i) 143QRect Painter::rect(int pos, PixMap pix, uint i)
152{ 144{
153 if (pos == OUT) 145 if (pos == OUT)
154 return QRect(); 146 return QRect();
155 147
156 QPixmap *PIXMAP = NULL; 148 QPixmap *PIXMAP = NULL;
157 switch (pix) { 149 switch (pix) {
158 case PacmanPix : PIXMAP = pacmanPix-> 150 case PacmanPix : PIXMAP = pacmanPix->
159 at(checkRange(i, pacmanPix->count()-1)); 151 at(checkRange(i, pacmanPix->count()-1));
160 break; 152 break;
161 case DyingPix : PIXMAP = dyingPix-> 153 case DyingPix : PIXMAP = dyingPix->
162 at(checkRange(i, dyingPix->count()-1)); 154 at(checkRange(i, dyingPix->count()-1));
163 break; 155 break;
164 case MonsterPix : PIXMAP = monsterPix-> 156 case MonsterPix : PIXMAP = monsterPix->
165 at(checkRange(i, monsterPix->count()-1)); 157 at(checkRange(i, monsterPix->count()-1));
166 break; 158 break;
167 case EyesPix : PIXMAP = eyesPix-> 159 case EyesPix : PIXMAP = eyesPix->
168 at(checkRange(i, eyesPix->count()-1)); 160 at(checkRange(i, eyesPix->count()-1));
169 break; 161 break;
170 case FruitPix : PIXMAP = fruitPix-> 162 case FruitPix : PIXMAP = fruitPix->
171 at(checkRange(i, fruitPix->count()-1)); 163 at(checkRange(i, fruitPix->count()-1));
172 break; 164 break;
173 case PointPix : PIXMAP = pointPix-> 165 case PointPix : PIXMAP = pointPix->
174 at(checkRange(i, pointPix->count()-1)); 166 at(checkRange(i, pointPix->count()-1));
175 break; 167 break;
176 case EnergizerPix : PIXMAP = energizerPix-> 168 case EnergizerPix : PIXMAP = energizerPix->
177 at(checkRange(i, energizerPix->count()-1)); 169 at(checkRange(i, energizerPix->count()-1));
178 break; 170 break;
179 case FruitScorePix : PIXMAP = fruitScorePix-> 171 case FruitScorePix : PIXMAP = fruitScorePix->
180 at(checkRange(i, fruitScorePix->count()-1)); 172 at(checkRange(i, fruitScorePix->count()-1));
181 break; 173 break;
182 case MonsterScorePix : PIXMAP = monsterScorePix-> 174 case MonsterScorePix : PIXMAP = monsterScorePix->
183 at(checkRange(i,monsterScorePix->count()-1)); 175 at(checkRange(i,monsterScorePix->count()-1));
184 break; 176 break;
185 default : PIXMAP = wallPix-> 177 default : PIXMAP = wallPix->
186 at(checkRange(i, wallPix->count()-1)); 178 at(checkRange(i, wallPix->count()-1));
187 } 179 }
188 if (PIXMAP == NULL) 180 if (PIXMAP == NULL)
189 return QRect(); 181 return QRect();
190 182
191 QRect rect = PIXMAP->rect(); 183 QRect rect = PIXMAP->rect();
192 QPoint point = this->point(pos); 184 QPoint point = this->point(pos);
193 rect.moveCenter(QPoint(point.x()-1, point.y()-1)); 185 rect.moveCenter(QPoint(point.x()-1, point.y()-1));
194 186
195 return rect; 187 return rect;
196} 188}
197 189
198QRect Painter::rect(int pos, QString str, int align) 190QRect Painter::rect(int pos, QString str, int align)
199{ 191{
200 if (pos == OUT) // return an empty rect if the position 192 if (pos == OUT) // return an empty rect if the position
201 return QRect(); // is invalid 193 return QRect(); // is invalid
202 QPoint point = this->point(pos); 194 QPoint point = this->point(pos);
203 QRect rect = bitfont->rect(str); 195 QRect rect = bitfont->rect(str);
204 196
205 rect.moveCenter(QPoint(point.x()-1, point.y()-1)); 197 rect.moveCenter(QPoint(point.x()-1, point.y()-1));
206 198
207 int dx = 0; 199 int dx = 0;
208 int dy = 0; 200 int dy = 0;
209 201
210 if (align & QLabel::AlignLeft || align & QLabel::AlignRight) { 202 if (align & QLabel::AlignLeft || align & QLabel::AlignRight) {
211 dx = (str.length()-1) * (bitfont->width()/2); 203 dx = (str.length()-1) * (bitfont->width()/2);
212 if (align & QLabel::AlignRight) 204 if (align & QLabel::AlignRight)
213 dx *= -1; 205 dx *= -1;
214 } 206 }
215 207
216 if (align & QLabel::AlignTop || align & QLabel::AlignBottom) { 208 if (align & QLabel::AlignTop || align & QLabel::AlignBottom) {
diff --git a/noncore/games/kpacman/referee.cpp b/noncore/games/kpacman/referee.cpp
index 1b810d8..2d0f3be 100644
--- a/noncore/games/kpacman/referee.cpp
+++ b/noncore/games/kpacman/referee.cpp
@@ -1,222 +1,213 @@
1 1
2#include "portable.h" 2#include "portable.h"
3 3
4#if defined( KDE2_PORT ) 4#if defined( KDE2_PORT )
5#include <kapp.h> 5#include <kapp.h>
6#include <kconfig.h> 6#include <kconfig.h>
7#include <kstddirs.h> 7#include <kstddirs.h>
8#include <kaccel.h> 8#include <kaccel.h>
9#include <referee.h> 9#include <referee.h>
10#include <referee.moc> 10#include <referee.moc>
11#elif defined( QPE_PORT ) 11#elif defined( QPE_PORT )
12#include <qaccel.h> 12#include <qaccel.h>
13#include <qpe/qpeapplication.h> 13#include <qpe/qpeapplication.h>
14#include <qpe/config.h> 14#include <qpe/config.h>
15#include "referee.h" 15#include "referee.h"
16#endif 16#endif
17 17
18#include <qdatetm.h>
19#include <stdlib.h> 18#include <stdlib.h>
20#include <qtimer.h> 19#include <qtimer.h>
21#include <qevent.h>
22#include <qcolor.h>
23#include <qkeycode.h>
24#include <qfileinfo.h> 20#include <qfileinfo.h>
25 21
26#include "board.h"
27#include "pacman.h"
28#include "monster.h"
29#include "fruit.h"
30#include "painter.h"
31 22
32Referee::Referee( QWidget *parent, const char *name, int Scheme, int Mode, Bitfont *font) 23Referee::Referee( QWidget *parent, const char *name, int Scheme, int Mode, Bitfont *font)
33 : QWidget( parent, name ) 24 : QWidget( parent, name )
34{ 25{
35 gameState.resize(12); 26 gameState.resize(12);
36 gameTimer = 0; 27 gameTimer = 0;
37 energizerTimer = 0; 28 energizerTimer = 0;
38 29
39 focusedPause = FALSE; 30 focusedPause = FALSE;
40 setFocusPolicy(QWidget::StrongFocus); 31 setFocusPolicy(QWidget::StrongFocus);
41 32
42 initKeys(); 33 initKeys();
43 34
44 scheme = Scheme; 35 scheme = Scheme;
45 mode = Mode; 36 mode = Mode;
46 confScheme(); 37 confScheme();
47 38
48 board = new Board(BoardWidth*BoardHeight); 39 board = new Board(BoardWidth*BoardHeight);
49 40
50 pix = new Painter(board, this, scheme, mode, font); 41 pix = new Painter(board, this, scheme, mode, font);
51 setFixedSize(pix->levelPix().size()); 42 setFixedSize(pix->levelPix().size());
52 43
53 pacman = new Pacman(board); 44 pacman = new Pacman(board);
54 45
55 fruit = new Fruit(board); 46 fruit = new Fruit(board);
56 47
57 monsters = new QList<Monster>; 48 monsters = new QList<Monster>;
58 monsters->setAutoDelete(TRUE); 49 monsters->setAutoDelete(TRUE);
59 50
60 monsterRect = new QList<QRect>; 51 monsterRect = new QList<QRect>;
61 monsterRect->setAutoDelete(TRUE); 52 monsterRect->setAutoDelete(TRUE);
62 53
63 energizers = new QList<Energizer>; 54 energizers = new QList<Energizer>;
64 energizers->setAutoDelete(TRUE); 55 energizers->setAutoDelete(TRUE);
65 56
66 energizerRect = new QList<QRect>; 57 energizerRect = new QList<QRect>;
67 energizerRect->setAutoDelete(TRUE); 58 energizerRect->setAutoDelete(TRUE);
68 59
69 pacmanRect.setRect(0, 0, 0, 0); 60 pacmanRect.setRect(0, 0, 0, 0);
70 fruitRect.setRect(0, 0, 0, 0); 61 fruitRect.setRect(0, 0, 0, 0);
71 62
72 QTime midnight( 0, 0, 0 ); 63 QTime midnight( 0, 0, 0 );
73 srand( midnight.secsTo(QTime::currentTime()) ); 64 srand( midnight.secsTo(QTime::currentTime()) );
74 65
75 lifes = 0; 66 lifes = 0;
76 points = 0; 67 points = 0;
77 68
78 emit setLifes(lifes); 69 emit setLifes(lifes);
79 emit setPoints(points); 70 emit setPoints(points);
80 71
81 intro(); 72 intro();
82} 73}
83 74
84void Referee::paintEvent( QPaintEvent *e) 75void Referee::paintEvent( QPaintEvent *e)
85{ 76{
86 if (gameState.testBit(HallOfFame)) 77 if (gameState.testBit(HallOfFame))
87 return; 78 return;
88 79
89 QRect rect = e->rect(); 80 QRect rect = e->rect();
90 81
91 if (!rect.isEmpty()) { 82 if (!rect.isEmpty()) {
92 QPixmap p = pix->levelPix(); 83 QPixmap p = pix->levelPix();
93 bitBlt(this, rect.x(), rect.y(), 84 bitBlt(this, rect.x(), rect.y(),
94 &p, rect.x(), rect.y(), rect.width(), rect.height()); 85 &p, rect.x(), rect.y(), rect.width(), rect.height());
95 } 86 }
96 87
97 if ((gameState.testBit(GameOver) || gameState.testBit(Demonstration)) && 88 if ((gameState.testBit(GameOver) || gameState.testBit(Demonstration)) &&
98 rect.intersects(pix->rect(board->position(fruithome), tr("GAME OVER")))) 89 rect.intersects(pix->rect(board->position(fruithome), tr("GAME OVER"))))
99 pix->draw(board->position(fruithome), Widget, tr("GAME OVER"), RED); 90 pix->draw(board->position(fruithome), Widget, tr("GAME OVER"), RED);
100 91
101 for (Energizer *e = energizers->first(); e != 0; e = energizers->next()) { 92 for (Energizer *e = energizers->first(); e != 0; e = energizers->next()) {
102 if (e && e->state() == on && 93 if (e && e->state() == on &&
103 rect.intersects(pix->rect(e->position(), EnergizerPix)) && 94 rect.intersects(pix->rect(e->position(), EnergizerPix)) &&
104 !(e->position() == pacman->position() && gameState.testBit(Scoring))) { 95 !(e->position() == pacman->position() && gameState.testBit(Scoring))) {
105 if (e->pix() != -1) 96 if (e->pix() != -1)
106 pix->draw(e->position(), Widget, EnergizerPix, e->pix()); 97 pix->draw(e->position(), Widget, EnergizerPix, e->pix());
107 } 98 }
108 } 99 }
109 100
110 if (!gameState.testBit(Init)) { 101 if (!gameState.testBit(Init)) {
111 102
112 if (!gameState.testBit(Dying) && (fruit->pix() != -1)) 103 if (!gameState.testBit(Dying) && (fruit->pix() != -1))
113 if (fruit->state() != active) { 104 if (fruit->state() != active) {
114 if (rect.intersects(pix->rect(fruit->position(), FruitScorePix, fruit->pix()))) 105 if (rect.intersects(pix->rect(fruit->position(), FruitScorePix, fruit->pix())))
115 pix->draw(fruit->position(), Widget, FruitScorePix, fruit->pix()); 106 pix->draw(fruit->position(), Widget, FruitScorePix, fruit->pix());
116 } else { 107 } else {
117 if (rect.intersects(pix->rect(fruit->position(), FruitPix, fruit->pix()))) 108 if (rect.intersects(pix->rect(fruit->position(), FruitPix, fruit->pix())))
118 pix->draw(fruit->position(), Widget, FruitPix, fruit->pix()); 109 pix->draw(fruit->position(), Widget, FruitPix, fruit->pix());
119 } 110 }
120 111
121 for (Monster *m = monsters->first(); m != 0; m = monsters->next()) 112 for (Monster *m = monsters->first(); m != 0; m = monsters->next())
122 if (m && m->state() == harmless && 113 if (m && m->state() == harmless &&
123 rect.intersects(pix->rect(m->position(), MonsterPix)) && 114 rect.intersects(pix->rect(m->position(), MonsterPix)) &&
124 !(m->position() == pacman->position() && gameState.testBit(Scoring))) { 115 !(m->position() == pacman->position() && gameState.testBit(Scoring))) {
125 if (m->body() != -1) 116 if (m->body() != -1)
126 pix->draw(m->position(), Widget, MonsterPix, m->body()); 117 pix->draw(m->position(), Widget, MonsterPix, m->body());
127 if (m->eyes() != -1) 118 if (m->eyes() != -1)
128 pix->draw(m->position(), Widget, EyesPix, m->eyes()); 119 pix->draw(m->position(), Widget, EyesPix, m->eyes());
129 } 120 }
130 121
131 if (!gameState.testBit(Scoring) && !gameState.testBit(LevelDone) && 122 if (!gameState.testBit(Scoring) && !gameState.testBit(LevelDone) &&
132 rect.intersects(pix->rect(pacman->position(), PacmanPix)) && pacman->pix() != -1) 123 rect.intersects(pix->rect(pacman->position(), PacmanPix)) && pacman->pix() != -1)
133 pix->draw(pacman->position(), Widget, PacmanPix, pacman->pix()); 124 pix->draw(pacman->position(), Widget, PacmanPix, pacman->pix());
134 125
135 for (Monster *m = monsters->first(); m != 0; m = monsters->next()) 126 for (Monster *m = monsters->first(); m != 0; m = monsters->next())
136 if (m && m->state() != harmless && 127 if (m && m->state() != harmless &&
137 rect.intersects(pix->rect(m->position(), MonsterPix)) && 128 rect.intersects(pix->rect(m->position(), MonsterPix)) &&
138 !(m->position() == pacman->position() && gameState.testBit(Scoring))) { 129 !(m->position() == pacman->position() && gameState.testBit(Scoring))) {
139 if (m->body() != -1) 130 if (m->body() != -1)
140 pix->draw(m->position(), Widget, MonsterPix, m->body()); 131 pix->draw(m->position(), Widget, MonsterPix, m->body());
141 if (m->eyes() != -1) 132 if (m->eyes() != -1)
142 pix->draw(m->position(), Widget, EyesPix, m->eyes()); 133 pix->draw(m->position(), Widget, EyesPix, m->eyes());
143 } 134 }
144 } 135 }
145 136
146 if (gameState.testBit(Scoring) && 137 if (gameState.testBit(Scoring) &&
147 rect.intersects(pix->rect(pacman->position(), MonsterScorePix, monstersEaten-1))) 138 rect.intersects(pix->rect(pacman->position(), MonsterScorePix, monstersEaten-1)))
148 pix->draw(pacman->position(), Widget, MonsterScorePix, monstersEaten-1); 139 pix->draw(pacman->position(), Widget, MonsterScorePix, monstersEaten-1);
149 140
150 if (gameState.testBit(Init) && gameState.testBit(Dying) && 141 if (gameState.testBit(Init) && gameState.testBit(Dying) &&
151 timerCount < pix->maxPixmaps(DyingPix) && 142 timerCount < pix->maxPixmaps(DyingPix) &&
152 rect.intersects(pix->rect(pacman->position(), PacmanPix))) 143 rect.intersects(pix->rect(pacman->position(), PacmanPix)))
153 pix->draw(pacman->position(), Widget, DyingPix, timerCount); 144 pix->draw(pacman->position(), Widget, DyingPix, timerCount);
154 145
155 if (gameState.testBit(LevelDone) && 146 if (gameState.testBit(LevelDone) &&
156 rect.intersects(pix->rect(pacman->position(), PacmanPix))) 147 rect.intersects(pix->rect(pacman->position(), PacmanPix)))
157 pix->draw(pacman->position(), Widget, PacmanPix, pacman->pix()); 148 pix->draw(pacman->position(), Widget, PacmanPix, pacman->pix());
158 149
159 if (gameState.testBit(Player) && 150 if (gameState.testBit(Player) &&
160 rect.intersects(pix->rect(board->position(monsterhome, 0), tr("PLAYER ONE")))) 151 rect.intersects(pix->rect(board->position(monsterhome, 0), tr("PLAYER ONE"))))
161 pix->draw(board->position(monsterhome, 0), Widget, tr("PLAYER ONE"), CYAN); 152 pix->draw(board->position(monsterhome, 0), Widget, tr("PLAYER ONE"), CYAN);
162 153
163 if (gameState.testBit(Ready) && 154 if (gameState.testBit(Ready) &&
164 rect.intersects(pix->rect(board->position(fruithome), tr("READY!")))) 155 rect.intersects(pix->rect(board->position(fruithome), tr("READY!"))))
165 pix->draw(board->position(fruithome), Widget, tr("READY!"), YELLOW); 156 pix->draw(board->position(fruithome), Widget, tr("READY!"), YELLOW);
166 157
167 if (gameState.testBit(Paused) && 158 if (gameState.testBit(Paused) &&
168 rect.intersects(pix->rect((BoardWidth*BoardHeight)/2-BoardWidth, tr("PAUSED")))) 159 rect.intersects(pix->rect((BoardWidth*BoardHeight)/2-BoardWidth, tr("PAUSED"))))
169 pix->draw((BoardWidth*BoardHeight)/2-BoardWidth, Widget, tr("PAUSED"), RED, BLACK); 160 pix->draw((BoardWidth*BoardHeight)/2-BoardWidth, Widget, tr("PAUSED"), RED, BLACK);
170} 161}
171 162
172void Referee::timerEvent( QTimerEvent *e ) 163void Referee::timerEvent( QTimerEvent *e )
173{ 164{
174 if (gameState.testBit(HallOfFame)) 165 if (gameState.testBit(HallOfFame))
175 return; 166 return;
176 167
177 QRect lastRect; 168 QRect lastRect;
178 int lastPix; 169 int lastPix;
179 bool moved = FALSE; 170 bool moved = FALSE;
180 int eated = 0; 171 int eated = 0;
181 172
182 if (e->timerId() == energizerTimer) { 173 if (e->timerId() == energizerTimer) {
183 for (int e = 0; e < board->energizers(); e++) { 174 for (int e = 0; e < board->energizers(); e++) {
184 lastRect = pix->rect(energizers->at(e)->position(), EnergizerPix); 175 lastRect = pix->rect(energizers->at(e)->position(), EnergizerPix);
185 lastPix = energizers->at(e)->pix(); 176 lastPix = energizers->at(e)->pix();
186 if (energizers->at(e)->move()) { 177 if (energizers->at(e)->move()) {
187 moved = TRUE; 178 moved = TRUE;
188 *energizerRect->at(e) = pix->rect(energizers->at(e)->position(), EnergizerPix); 179 *energizerRect->at(e) = pix->rect(energizers->at(e)->position(), EnergizerPix);
189 if (lastPix == energizers->at(e)->pix() && 180 if (lastPix == energizers->at(e)->pix() &&
190 lastRect == pix->rect(energizers->at(e)->position(), EnergizerPix)) 181 lastRect == pix->rect(energizers->at(e)->position(), EnergizerPix))
191 energizerRect->at(e)->setRect(0, 0, 0, 0); 182 energizerRect->at(e)->setRect(0, 0, 0, 0);
192 else 183 else
193 *energizerRect->at(e) = pix->rect(*energizerRect->at(e), lastRect); 184 *energizerRect->at(e) = pix->rect(*energizerRect->at(e), lastRect);
194 } 185 }
195 } 186 }
196 187
197 for (int e = 0; e < board->energizers(); e++) 188 for (int e = 0; e < board->energizers(); e++)
198 if (!energizerRect->at(e)->isNull()) 189 if (!energizerRect->at(e)->isNull())
199 repaint(*energizerRect->at(e), FALSE); 190 repaint(*energizerRect->at(e), FALSE);
200 191
201 return; 192 return;
202 } 193 }
203 194
204 timerCount++; 195 timerCount++;
205 196
206 lastRect = pix->rect(pacman->position(), PacmanPix); 197 lastRect = pix->rect(pacman->position(), PacmanPix);
207 lastPix = pacman->pix(); 198 lastPix = pacman->pix();
208 199
209 if (moved = pacman->move()) { // pacman really moved 200 if (moved = pacman->move()) { // pacman really moved
210 pacmanRect = pix->rect(pacman->position(), PacmanPix); 201 pacmanRect = pix->rect(pacman->position(), PacmanPix);
211 if (lastPix == pacman->pix() && 202 if (lastPix == pacman->pix() &&
212 lastRect == pix->rect(pacman->position(), PacmanPix)) 203 lastRect == pix->rect(pacman->position(), PacmanPix))
213 pacmanRect.setRect(0, 0, 0, 0); // nothing to do, because the pixmap 204 pacmanRect.setRect(0, 0, 0, 0); // nothing to do, because the pixmap
214 else // and the position isn't changed. 205 else // and the position isn't changed.
215 pacmanRect = pix->rect(pacmanRect, lastRect); 206 pacmanRect = pix->rect(pacmanRect, lastRect);
216 } else 207 } else
217 pacmanRect.setRect(0, 0, 0, 0); 208 pacmanRect.setRect(0, 0, 0, 0);
218 209
219 int pos = pacman->position(); 210 int pos = pacman->position();
220 211
221 if (moved && board->isMonster(pos) && !gameState.testBit(Dying)) { 212 if (moved && board->isMonster(pos) && !gameState.testBit(Dying)) {
222 for (Monster *m = monsters->first(); m != 0; m = monsters->next()) 213 for (Monster *m = monsters->first(); m != 0; m = monsters->next())
diff --git a/noncore/games/kpacman/score.cpp b/noncore/games/kpacman/score.cpp
index e91771b..6878b81 100644
--- a/noncore/games/kpacman/score.cpp
+++ b/noncore/games/kpacman/score.cpp
@@ -1,221 +1,215 @@
1 1
2#include "portable.h" 2#include "portable.h"
3 3
4#if defined( KDE2_PORT ) 4#if defined( KDE2_PORT )
5#include <score.h> 5#include <score.h>
6#include <score.moc> 6#include <score.moc>
7 7
8#include <kaccel.h> 8#include <kaccel.h>
9#include <kapp.h> 9#include <kapp.h>
10#include <kconfig.h> 10#include <kconfig.h>
11#include <kstddirs.h> 11#include <kstddirs.h>
12#include <kmessagebox.h> 12#include <kmessagebox.h>
13#elif defined( QPE_PORT ) 13#elif defined( QPE_PORT )
14#include <qaccel.h> 14#include <qaccel.h>
15#include <qpe/config.h> 15#include <qpe/config.h>
16#include "score.h" 16#include "score.h"
17#endif 17#endif
18 18
19#include <stdlib.h> 19#include <stdlib.h>
20#include <ctype.h> 20#include <ctype.h>
21 21
22#include <qpixmap.h>
23#include <qstring.h>
24#include <qdstream.h>
25#include <qkeycode.h>
26#include <qtimer.h> 22#include <qtimer.h>
27#include <qfileinfo.h>
28 23
29#include "bitfont.h"
30 24
31Score::Score(QWidget *parent, const char *name, int Scheme, int Mode, Bitfont *font) : QWidget(parent, name) 25Score::Score(QWidget *parent, const char *name, int Scheme, int Mode, Bitfont *font) : QWidget(parent, name)
32{ 26{
33 setFocusPolicy(QWidget::StrongFocus); 27 setFocusPolicy(QWidget::StrongFocus);
34 28
35 paused = FALSE; 29 paused = FALSE;
36 30
37 lastScore = -1; 31 lastScore = -1;
38 lastPlayer = -1; 32 lastPlayer = -1;
39 33
40 cursorBlinkTimer = 0; 34 cursorBlinkTimer = 0;
41 cursorBlinkMS = -1; 35 cursorBlinkMS = -1;
42 cursor.x = -1; 36 cursor.x = -1;
43 cursor.y = -1; 37 cursor.y = -1;
44 cursor.on = FALSE; 38 cursor.on = FALSE;
45 cursor.chr = QChar('?'); 39 cursor.chr = QChar('?');
46 40
47 initKeys(); 41 initKeys();
48 42
49 scheme = Scheme; 43 scheme = Scheme;
50 mode = Mode; 44 mode = Mode;
51 confScheme(); 45 confScheme();
52 46
53 bitfont = font; 47 bitfont = font;
54 48
55 highscoreFile.setName(locateHighscoreFilePath().filePath()); 49 highscoreFile.setName(locateHighscoreFilePath().filePath());
56 read(); 50 read();
57 51
58 for (int p = 0; p < maxPlayer; p++) { 52 for (int p = 0; p < maxPlayer; p++) {
59 playerScore[p] = 0; 53 playerScore[p] = 0;
60 playerName[p] = getenv("LOGNAME"); 54 playerName[p] = getenv("LOGNAME");
61 if (playerName[p].length() < minPlayerNameLength) 55 if (playerName[p].length() < minPlayerNameLength)
62 playerName[p].setExpand(minPlayerNameLength-1, ' '); 56 playerName[p].setExpand(minPlayerNameLength-1, ' ');
63 57
64 for (uint i = 0; i < playerName[p].length(); i++) 58 for (uint i = 0; i < playerName[p].length(); i++)
65 if (playerName[p].at(i) < bitfont->firstChar() || 59 if (playerName[p].at(i) < bitfont->firstChar() ||
66 playerName[p].at(i) > bitfont->lastChar()) 60 playerName[p].at(i) > bitfont->lastChar())
67 playerName[p].at(i) = playerName[p].at(i).upper(); 61 playerName[p].at(i) = playerName[p].at(i).upper();
68 } 62 }
69} 63}
70 64
71Score::~Score() 65Score::~Score()
72{ 66{
73 // write(); 67 // write();
74} 68}
75 69
76void Score::paintEvent( QPaintEvent *e) 70void Score::paintEvent( QPaintEvent *e)
77{ 71{
78 if (rect(1, 0, tr(" 1UP ")).intersects(e->rect())) { 72 if (rect(1, 0, tr(" 1UP ")).intersects(e->rect())) {
79 QPixmap pix; 73 QPixmap pix;
80 QColor fg = BLACK; 74 QColor fg = BLACK;
81 if (cursor.on || paused || lastPlayer != 0) 75 if (cursor.on || paused || lastPlayer != 0)
82 fg = WHITE; 76 fg = WHITE;
83 pix = bitfont->text(tr(" 1UP "), fg, BLACK); 77 pix = bitfont->text(tr(" 1UP "), fg, BLACK);
84 bitBlt(this, x(1), y(0), &pix); 78 bitBlt(this, x(1), y(0), &pix);
85 } 79 }
86 80
87 if (rect(8, 0, tr(" HIGH SCORE ")).intersects(e->rect())) { 81 if (rect(8, 0, tr(" HIGH SCORE ")).intersects(e->rect())) {
88 QPixmap pix = bitfont->text(tr(" HIGH SCORE "), WHITE, BLACK); 82 QPixmap pix = bitfont->text(tr(" HIGH SCORE "), WHITE, BLACK);
89 bitBlt(this, x(8), y(0), &pix); 83 bitBlt(this, x(8), y(0), &pix);
90 } 84 }
91 85
92 if (maxPlayer > 1 && rect(21, 0, tr(" 2UP ")).intersects(e->rect())) { 86 if (maxPlayer > 1 && rect(21, 0, tr(" 2UP ")).intersects(e->rect())) {
93 QPixmap pix; 87 QPixmap pix;
94 QColor fg = BLACK; 88 QColor fg = BLACK;
95 if (cursor.on || paused || lastPlayer != 1) 89 if (cursor.on || paused || lastPlayer != 1)
96 fg = WHITE; 90 fg = WHITE;
97 pix = bitfont->text(tr(" 2UP "), fg, BLACK); 91 pix = bitfont->text(tr(" 2UP "), fg, BLACK);
98 bitBlt(this, x(21), y(0), &pix); 92 bitBlt(this, x(21), y(0), &pix);
99 } 93 }
100 94
101 QString s; 95 QString s;
102 96
103 s.sprintf("%6d0", playerScore[0]/10); 97 s.sprintf("%6d0", playerScore[0]/10);
104 if (rect(0, 1, s).intersects(e->rect())) { 98 if (rect(0, 1, s).intersects(e->rect())) {
105 QPixmap pix = bitfont->text(s, WHITE, BLACK); 99 QPixmap pix = bitfont->text(s, WHITE, BLACK);
106 bitBlt(this, x(0), y(1), &pix); 100 bitBlt(this, x(0), y(1), &pix);
107 } 101 }
108 102
109 s.sprintf("%8d0", HighScore/10); 103 s.sprintf("%8d0", HighScore/10);
110 if (rect(8, 1, s).intersects(e->rect())) { 104 if (rect(8, 1, s).intersects(e->rect())) {
111 QPixmap pix = bitfont->text(s, WHITE, BLACK); 105 QPixmap pix = bitfont->text(s, WHITE, BLACK);
112 bitBlt(this, x(8), y(1), &pix); 106 bitBlt(this, x(8), y(1), &pix);
113 } 107 }
114 108
115 if (lastScore >= 0) { 109 if (lastScore >= 0) {
116 if (rect(1, 4*1.25, tr(" CONGRATULATIONS ")).intersects(e->rect())) { 110 if (rect(1, 4*1.25, tr(" CONGRATULATIONS ")).intersects(e->rect())) {
117 QPixmap pix = bitfont->text(tr(" CONGRATULATIONS "), YELLOW, BLACK); 111 QPixmap pix = bitfont->text(tr(" CONGRATULATIONS "), YELLOW, BLACK);
118 bitBlt(this, x(1), y(4*1.25), &pix); 112 bitBlt(this, x(1), y(4*1.25), &pix);
119 } 113 }
120 if (rect(1, 6*1.25, tr(" YOU HAVE ARCHIEVED ")).intersects(e->rect())) { 114 if (rect(1, 6*1.25, tr(" YOU HAVE ARCHIEVED ")).intersects(e->rect())) {
121 QPixmap pix = bitfont->text(tr(" YOU HAVE ARCHIEVED "), CYAN, BLACK); 115 QPixmap pix = bitfont->text(tr(" YOU HAVE ARCHIEVED "), CYAN, BLACK);
122 bitBlt(this, x(1), y(6*1.25), &pix); 116 bitBlt(this, x(1), y(6*1.25), &pix);
123 } 117 }
124 if (rect(1, 7*1.25, tr(" A SCORE IN THE TOP 10. ")).intersects(e->rect())) { 118 if (rect(1, 7*1.25, tr(" A SCORE IN THE TOP 10. ")).intersects(e->rect())) {
125 QPixmap pix = bitfont->text(tr(" A SCORE IN THE TOP 10. "), CYAN, BLACK); 119 QPixmap pix = bitfont->text(tr(" A SCORE IN THE TOP 10. "), CYAN, BLACK);
126 bitBlt(this, x(1), y(7*1.25), &pix); 120 bitBlt(this, x(1), y(7*1.25), &pix);
127 } 121 }
128 if (rect(1, 8*1.25, tr(" ")).intersects(e->rect())) { 122 if (rect(1, 8*1.25, tr(" ")).intersects(e->rect())) {
129 QPixmap pix = bitfont->text(tr(" "), CYAN, BLACK); 123 QPixmap pix = bitfont->text(tr(" "), CYAN, BLACK);
130 bitBlt(this, x(1), y(8*1.25), &pix); 124 bitBlt(this, x(1), y(8*1.25), &pix);
131 } 125 }
132 } 126 }
133 127
134 if (rect(1, 9.5*1.25, tr("RNK SCORE NAME DATE")).intersects(e->rect())) { 128 if (rect(1, 9.5*1.25, tr("RNK SCORE NAME DATE")).intersects(e->rect())) {
135 QPixmap pix = bitfont->text(tr("RNK SCORE NAME DATE"), WHITE, BLACK); 129 QPixmap pix = bitfont->text(tr("RNK SCORE NAME DATE"), WHITE, BLACK);
136 bitBlt(this, x(1), y(9.5*1.25), &pix); 130 bitBlt(this, x(1), y(9.5*1.25), &pix);
137 } 131 }
138 132
139 for (int i = 0; i < 10; i++) { 133 for (int i = 0; i < 10; i++) {
140 s.sprintf("%2d%9d %-3.3s %-8.8s", 134 s.sprintf("%2d%9d %-3.3s %-8.8s",
141 i+1, hallOfFame[i].points, hallOfFame[i].name.utf8().data(), 135 i+1, hallOfFame[i].points, hallOfFame[i].name.utf8().data(),
142 formatDate(hallOfFame[i].moment.date()).data()); 136 formatDate(hallOfFame[i].moment.date()).data());
143 if (rect(1, (11+i)*1.25, s).intersects(e->rect())) { 137 if (rect(1, (11+i)*1.25, s).intersects(e->rect())) {
144 QPixmap pix = bitfont->text(s, (i == lastScore) ? YELLOW : WHITE, BLACK); 138 QPixmap pix = bitfont->text(s, (i == lastScore) ? YELLOW : WHITE, BLACK);
145 bitBlt(this, x(1), y((11+i)*1.25), &pix); 139 bitBlt(this, x(1), y((11+i)*1.25), &pix);
146 } 140 }
147 } 141 }
148 142
149 if (cursor.x != -1 && cursor.y != -1 && cursor.on) { 143 if (cursor.x != -1 && cursor.y != -1 && cursor.on) {
150 if (rect(cursor.x, (cursor.y*1.25), cursor.chr).intersects(e->rect())) { 144 if (rect(cursor.x, (cursor.y*1.25), cursor.chr).intersects(e->rect())) {
151 QPixmap pix = bitfont->text(cursor.chr, BLACK, YELLOW); 145 QPixmap pix = bitfont->text(cursor.chr, BLACK, YELLOW);
152 bitBlt(this, x(cursor.x), y(cursor.y*1.25), &pix); 146 bitBlt(this, x(cursor.x), y(cursor.y*1.25), &pix);
153 } 147 }
154 } 148 }
155 149
156 if (paused) { 150 if (paused) {
157 151
158 QPixmap pix = bitfont->text(tr("PAUSED"), RED, BLACK); 152 QPixmap pix = bitfont->text(tr("PAUSED"), RED, BLACK);
159 QRect r = bitfont->rect(tr("PAUSED")); 153 QRect r = bitfont->rect(tr("PAUSED"));
160 r.moveCenter(QPoint(this->width()/2, this->height()/2)); 154 r.moveCenter(QPoint(this->width()/2, this->height()/2));
161 155
162 bitBlt(this, r.x(), r.y(), &pix); 156 bitBlt(this, r.x(), r.y(), &pix);
163 } 157 }
164} 158}
165 159
166void Score::timerEvent(QTimerEvent*) 160void Score::timerEvent(QTimerEvent*)
167{ 161{
168 cursor.on = !cursor.on; 162 cursor.on = !cursor.on;
169 163
170 if (paused) 164 if (paused)
171 return; 165 return;
172 166
173 if (cursor.x != -1 && cursor.y != -1) 167 if (cursor.x != -1 && cursor.y != -1)
174 repaint(rect(cursor.x, cursor.y*1.25, cursor.chr), FALSE); 168 repaint(rect(cursor.x, cursor.y*1.25, cursor.chr), FALSE);
175 scrollRepeat = FALSE; 169 scrollRepeat = FALSE;
176 170
177 if (lastPlayer == 0) 171 if (lastPlayer == 0)
178 repaint(rect(1, 0, tr(" 1UP ")), FALSE); 172 repaint(rect(1, 0, tr(" 1UP ")), FALSE);
179 173
180 if (lastPlayer == 1) 174 if (lastPlayer == 1)
181 repaint(rect(21, 0, tr(" 2UP ")), FALSE); 175 repaint(rect(21, 0, tr(" 2UP ")), FALSE);
182} 176}
183 177
184void Score::keyPressEvent(QKeyEvent *k) 178void Score::keyPressEvent(QKeyEvent *k)
185{ 179{
186 if (lastScore < 0 || lastPlayer < 0 || lastPlayer >= maxPlayer || paused) { 180 if (lastScore < 0 || lastPlayer < 0 || lastPlayer >= maxPlayer || paused) {
187 k->ignore(); 181 k->ignore();
188 return; 182 return;
189 } 183 }
190 184
191 int x = cursor.x; 185 int x = cursor.x;
192 int y = cursor.y; 186 int y = cursor.y;
193 187
194 uint key = k->key(); 188 uint key = k->key();
195 189
196 if (scrollRepeat && (key == UpKey || key == Key_Up || key == DownKey || key == Key_Down)) { 190 if (scrollRepeat && (key == UpKey || key == Key_Up || key == DownKey || key == Key_Down)) {
197 k->ignore(); 191 k->ignore();
198 return; 192 return;
199 } 193 }
200 194
201 if (key != Key_Return) { 195 if (key != Key_Return) {
202 if (key == RightKey || key == Key_Right) 196 if (key == RightKey || key == Key_Right)
203 if (++cursor.x > 16) 197 if (++cursor.x > 16)
204 cursor.x = 14; 198 cursor.x = 14;
205 if (key == LeftKey || key == Key_Left) 199 if (key == LeftKey || key == Key_Left)
206 if (--cursor.x < 14) 200 if (--cursor.x < 14)
207 cursor.x = 16; 201 cursor.x = 16;
208 if (key == UpKey || key == Key_Up) 202 if (key == UpKey || key == Key_Up)
209 if (cursor.chr.unicode() < bitfont->lastChar()) 203 if (cursor.chr.unicode() < bitfont->lastChar())
210 cursor.chr = cursor.chr.unicode()+1; 204 cursor.chr = cursor.chr.unicode()+1;
211 else 205 else
212 cursor.chr = bitfont->firstChar(); 206 cursor.chr = bitfont->firstChar();
213 if (key == DownKey || key == Key_Down) 207 if (key == DownKey || key == Key_Down)
214 if (cursor.chr.unicode() > bitfont->firstChar()) 208 if (cursor.chr.unicode() > bitfont->firstChar())
215 cursor.chr = cursor.chr.unicode()-1; 209 cursor.chr = cursor.chr.unicode()-1;
216 else 210 else
217 cursor.chr = bitfont->lastChar(); 211 cursor.chr = bitfont->lastChar();
218 212
219 if (cursor.x == x && cursor.y == y && 213 if (cursor.x == x && cursor.y == y &&
220 cursor.chr == hallOfFame[lastScore].name.at(cursor.x-14)) { 214 cursor.chr == hallOfFame[lastScore].name.at(cursor.x-14)) {
221 uint ascii = k->ascii(); 215 uint ascii = k->ascii();
diff --git a/noncore/games/kpacman/status.cpp b/noncore/games/kpacman/status.cpp
index 2a17c21..02ff63d 100644
--- a/noncore/games/kpacman/status.cpp
+++ b/noncore/games/kpacman/status.cpp
@@ -1,210 +1,208 @@
1 1
2#include "portable.h" 2#include "portable.h"
3 3
4#if defined( KDE2_PORT ) 4#if defined( KDE2_PORT )
5#include <kapp.h> 5#include <kapp.h>
6#include <klocale.h> 6#include <klocale.h>
7#include <kstddirs.h> 7#include <kstddirs.h>
8#include <status.h> 8#include <status.h>
9#include <status.moc> 9#include <status.moc>
10#elif defined( QPE_PORT ) 10#elif defined( QPE_PORT )
11#include <qpe/qpeapplication.h> 11#include <qpe/qpeapplication.h>
12#include <qpe/config.h> 12#include <qpe/config.h>
13#include "status.h" 13#include "status.h"
14#endif 14#endif
15 15
16#include <qpixmap.h>
17#include <qbitmap.h> 16#include <qbitmap.h>
18#include <qstring.h>
19#include <qmsgbox.h> 17#include <qmsgbox.h>
20#include <qfileinfo.h> 18#include <qfileinfo.h>
21 19
22Status::Status( QWidget *parent, const char *name, int Scheme, int Mode ) : 20Status::Status( QWidget *parent, const char *name, int Scheme, int Mode ) :
23 QWidget( parent, name ) 21 QWidget( parent, name )
24{ 22{
25 qWarning("Status::Status"); 23 qWarning("Status::Status");
26 actualLifes = 0; 24 actualLifes = 0;
27 actualLevel = 0; 25 actualLevel = 0;
28 26
29 lifesPix = NULL; 27 lifesPix = NULL;
30 levelPix = NULL; 28 levelPix = NULL;
31 29
32 scheme = Scheme; 30 scheme = Scheme;
33 mode = Mode; 31 mode = Mode;
34 level = 0; 32 level = 0;
35 33
36 confScheme(); 34 confScheme();
37} 35}
38 36
39QList<QPixmap> *Status::loadPixmap(QWidget *parent, QString pixmapName, 37QList<QPixmap> *Status::loadPixmap(QWidget *parent, QString pixmapName,
40 QList<QPixmap> *pixmaps) 38 QList<QPixmap> *pixmaps)
41{ 39{
42 if (pixmaps == NULL) { 40 if (pixmaps == NULL) {
43 pixmaps = new QList<QPixmap>; 41 pixmaps = new QList<QPixmap>;
44 pixmaps->setAutoDelete(TRUE); 42 pixmaps->setAutoDelete(TRUE);
45 } 43 }
46 44
47 if (!pixmaps->isEmpty()) 45 if (!pixmaps->isEmpty())
48 pixmaps->clear(); 46 pixmaps->clear();
49 47
50 QPixmap PIXMAP(pixmapName); 48 QPixmap PIXMAP(pixmapName);
51 if (PIXMAP.isNull() || PIXMAP.mask() == NULL) { 49 if (PIXMAP.isNull() || PIXMAP.mask() == NULL) {
52 QString msg = tr("The pixmap could not be contructed.\n\n" 50 QString msg = tr("The pixmap could not be contructed.\n\n"
53 "The file '@PIXMAPNAME@' does not exist,\n" 51 "The file '@PIXMAPNAME@' does not exist,\n"
54 "or is of an unknown format."); 52 "or is of an unknown format.");
55 msg.replace(QRegExp("@PIXMAPNAME@"), pixmapName); 53 msg.replace(QRegExp("@PIXMAPNAME@"), pixmapName);
56 QMessageBox::information(parent, tr("Initialization Error"), 54 QMessageBox::information(parent, tr("Initialization Error"),
57 (const char *) msg); 55 (const char *) msg);
58 return 0; 56 return 0;
59 } 57 }
60 58
61 int height = PIXMAP.height(); 59 int height = PIXMAP.height();
62 int width = (height == 0) ? 0 : PIXMAP.width()/(PIXMAP.width()/height); 60 int width = (height == 0) ? 0 : PIXMAP.width()/(PIXMAP.width()/height);
63 61
64 QBitmap BITMAP; 62 QBitmap BITMAP;
65 QBitmap MASK; 63 QBitmap MASK;
66 64
67 BITMAP = *PIXMAP.mask(); 65 BITMAP = *PIXMAP.mask();
68 MASK.resize(width, height); 66 MASK.resize(width, height);
69 67
70 for (int x = 0; x < PIXMAP.width()/width; x++) { 68 for (int x = 0; x < PIXMAP.width()/width; x++) {
71 QPixmap *pixmap = new QPixmap(width, height); 69 QPixmap *pixmap = new QPixmap(width, height);
72 pixmaps->append(pixmap); 70 pixmaps->append(pixmap);
73 bitBlt(pixmap, 0, 0, &PIXMAP, x*width, 0, width, height, CopyROP, TRUE); 71 bitBlt(pixmap, 0, 0, &PIXMAP, x*width, 0, width, height, CopyROP, TRUE);
74 bitBlt(&MASK, 0, 0, &BITMAP, x*width, 0, width, height, CopyROP, TRUE); 72 bitBlt(&MASK, 0, 0, &BITMAP, x*width, 0, width, height, CopyROP, TRUE);
75 pixmap->setMask(MASK); 73 pixmap->setMask(MASK);
76 } 74 }
77 75
78 return pixmaps; 76 return pixmaps;
79} 77}
80 78
81void Status::paintEvent( QPaintEvent *) 79void Status::paintEvent( QPaintEvent *)
82{ 80{
83 for (int x = 0; x < actualLifes && !lifesPix->isEmpty(); x++) 81 for (int x = 0; x < actualLifes && !lifesPix->isEmpty(); x++)
84 bitBlt(this, lifesPix->at(0)->width()+(lifesPix->at(0)->width()*x), 82 bitBlt(this, lifesPix->at(0)->width()+(lifesPix->at(0)->width()*x),
85 (height()-lifesPix->at(0)->height())/2, 83 (height()-lifesPix->at(0)->height())/2,
86 lifesPix->at(0), 0, 0, 84 lifesPix->at(0), 0, 0,
87 lifesPix->at(0)->width(), lifesPix->at(0)->height()); 85 lifesPix->at(0)->width(), lifesPix->at(0)->height());
88 86
89 for (int x = 0; x < actualLevel && !levelPix->isEmpty(); x++) { 87 for (int x = 0; x < actualLevel && !levelPix->isEmpty(); x++) {
90 erase((width()-levelPix->at(x)->width()*2)-(levelPix->at(x)->width()*levelPos[x]), 88 erase((width()-levelPix->at(x)->width()*2)-(levelPix->at(x)->width()*levelPos[x]),
91 (height()-levelPix->at(x)->height())/2, 89 (height()-levelPix->at(x)->height())/2,
92 levelPix->at(x)->width(), levelPix->at(x)->height()); 90 levelPix->at(x)->width(), levelPix->at(x)->height());
93 bitBlt(this, (width()-levelPix->at(x)->width()*2)-(levelPix->at(x)->width()*levelPos[x]), 91 bitBlt(this, (width()-levelPix->at(x)->width()*2)-(levelPix->at(x)->width()*levelPos[x]),
94 (height()-levelPix->at(x)->height())/2, 92 (height()-levelPix->at(x)->height())/2,
95 levelPix->at(x), 0, 0, 93 levelPix->at(x), 0, 0,
96 levelPix->at(x)->width(), levelPix->at(x)->height()); 94 levelPix->at(x)->width(), levelPix->at(x)->height());
97 } 95 }
98} 96}
99 97
100void Status::initPixmaps() 98void Status::initPixmaps()
101{ 99{
102 if (lastLifesPixmapName != lifesPixmapName.at(level)) { 100 if (lastLifesPixmapName != lifesPixmapName.at(level)) {
103 lifesPix = loadPixmap(this, lifesPixmapName.at(level), lifesPix); 101 lifesPix = loadPixmap(this, lifesPixmapName.at(level), lifesPix);
104 lastLifesPixmapName = lifesPixmapName.at(level); 102 lastLifesPixmapName = lifesPixmapName.at(level);
105 } 103 }
106 if (lastLevelPixmapName != levelPixmapName.at(level)) { 104 if (lastLevelPixmapName != levelPixmapName.at(level)) {
107 levelPix = loadPixmap(this, levelPixmapName.at(level), levelPix); 105 levelPix = loadPixmap(this, levelPixmapName.at(level), levelPix);
108 lastLevelPixmapName = levelPixmapName.at(level); 106 lastLevelPixmapName = levelPixmapName.at(level);
109 } 107 }
110} 108}
111 109
112QString Status::decodeHexOctString(QString s) 110QString Status::decodeHexOctString(QString s)
113{ 111{
114 QString value; 112 QString value;
115 QString valids; 113 QString valids;
116 int pos, xpos = 0, opos = 0; 114 int pos, xpos = 0, opos = 0;
117 int v, len, leadin; 115 int v, len, leadin;
118 const char *ptr; 116 const char *ptr;
119 uchar c; 117 uchar c;
120 118
121 while (((xpos = s.find(QRegExp("\\\\x[0-9a-fA-F]+"), xpos)) != -1) || 119 while (((xpos = s.find(QRegExp("\\\\x[0-9a-fA-F]+"), xpos)) != -1) ||
122 ((opos = s.find(QRegExp("\\\\[0-7]+"), opos)) != -1)) { 120 ((opos = s.find(QRegExp("\\\\[0-7]+"), opos)) != -1)) {
123 if (xpos != -1) { 121 if (xpos != -1) {
124 valids = "0123456789abcdef"; 122 valids = "0123456789abcdef";
125 leadin = 2; 123 leadin = 2;
126 pos = xpos; 124 pos = xpos;
127 } else { 125 } else {
128 valids = "01234567"; 126 valids = "01234567";
129 leadin = 1; 127 leadin = 1;
130 pos = opos; 128 pos = opos;
131 } 129 }
132 130
133 c = '\0'; 131 c = '\0';
134 len = 0; 132 len = 0;
135 value = s.mid(pos+leadin, 3); 133 value = s.mid(pos+leadin, 3);
136 ptr = (const char *) value; 134 ptr = (const char *) value;
137 135
138 while (*ptr != '\0' && (v = valids.find(*ptr++, 0, FALSE)) != -1) { 136 while (*ptr != '\0' && (v = valids.find(*ptr++, 0, FALSE)) != -1) {
139 c = (c * valids.length()) + v; 137 c = (c * valids.length()) + v;
140 len++; 138 len++;
141 } 139 }
142 140
143 value.fill(c, 1); 141 value.fill(c, 1);
144 s.replace(pos, len+leadin, value); 142 s.replace(pos, len+leadin, value);
145 } 143 }
146 144
147 return s; 145 return s;
148} 146}
149 147
150void Status::fillArray(QArray<int> &array, QString values, int max) 148void Status::fillArray(QArray<int> &array, QString values, int max)
151{ 149{
152 array.resize(max); 150 array.resize(max);
153 int last = 0; 151 int last = 0;
154 bool ok; 152 bool ok;
155 QString value; 153 QString value;
156 154
157 for (uint i = 0; i < array.size(); i++) { 155 for (uint i = 0; i < array.size(); i++) {
158 if (values.find(',') < 0 && values.length() > 0) { 156 if (values.find(',') < 0 && values.length() > 0) {
159 value = values; 157 value = values;
160 values = ""; 158 values = "";
161 } 159 }
162 if (values.find(',') >= 0) { 160 if (values.find(',') >= 0) {
163 value = values.left(values.find(',')); 161 value = values.left(values.find(','));
164 values.remove(0,values.find(',')+1); 162 values.remove(0,values.find(',')+1);
165 } 163 }
166 array[i] = value.toInt(&ok); 164 array[i] = value.toInt(&ok);
167 if (ok) 165 if (ok)
168 last = array[i]; 166 last = array[i];
169 else 167 else
170 array[i] = last; 168 array[i] = last;
171 } 169 }
172} 170}
173 171
174void Status::fillStrList(QStrList &list, QString values, int max) 172void Status::fillStrList(QStrList &list, QString values, int max)
175{ 173{
176 if (!list.isEmpty()) 174 if (!list.isEmpty())
177 list.clear(); 175 list.clear();
178 176
179 QString last = ""; 177 QString last = "";
180 QString value; 178 QString value;
181 179
182 for (uint i = 0; i < (uint) max; i++) { 180 for (uint i = 0; i < (uint) max; i++) {
183 if (values.find(',') < 0 && values.length() > 0) { 181 if (values.find(',') < 0 && values.length() > 0) {
184 value = values; 182 value = values;
185 values = ""; 183 values = "";
186 } 184 }
187 if (values.find(',') >= 0) { 185 if (values.find(',') >= 0) {
188 value = values.left(values.find(',')); 186 value = values.left(values.find(','));
189 values.remove(0,values.find(',')+1); 187 values.remove(0,values.find(',')+1);
190 } 188 }
191 if (!value.isEmpty()) 189 if (!value.isEmpty())
192 last = decodeHexOctString(value); 190 last = decodeHexOctString(value);
193 list.append(last); 191 list.append(last);
194 } 192 }
195} 193}
196 194
197void Status::fillPixmapName(QStrList &pixmapName) 195void Status::fillPixmapName(QStrList &pixmapName)
198{ 196{
199 QStrList list = pixmapName; 197 QStrList list = pixmapName;
200 198
201 if (!pixmapName.isEmpty()) 199 if (!pixmapName.isEmpty())
202 pixmapName.clear(); 200 pixmapName.clear();
203 201
204 QString pixmap; 202 QString pixmap;
205 203
206 QFileInfo fileInfo; 204 QFileInfo fileInfo;
207 205
208 for (uint i = 0; i < list.count(); i++) { 206 for (uint i = 0; i < list.count(); i++) {
209 pixmap = list.at(i); 207 pixmap = list.at(i);
210 208
diff --git a/noncore/games/mindbreaker/mindbreaker.cpp b/noncore/games/mindbreaker/mindbreaker.cpp
index e1f43d0..2b924c6 100644
--- a/noncore/games/mindbreaker/mindbreaker.cpp
+++ b/noncore/games/mindbreaker/mindbreaker.cpp
@@ -1,225 +1,221 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "mindbreaker.h" 21#include "mindbreaker.h"
22 22
23#include <qtopia/resource.h> 23#include <qtopia/resource.h>
24#include <qtopia/config.h> 24#include <qtopia/config.h>
25#include <qtopia/qpeapplication.h> 25#include <qtopia/qpeapplication.h>
26#include <qtoolbar.h> 26#include <qtoolbar.h>
27 27
28#include <qpainter.h>
29#include <qpixmap.h>
30#include <qtoolbutton.h> 28#include <qtoolbutton.h>
31#include <qpushbutton.h>
32#include <qmessagebox.h> 29#include <qmessagebox.h>
33#include <qlabel.h>
34#include <qlayout.h> 30#include <qlayout.h>
35#include <qtimer.h> 31#include <qtimer.h>
36 32
37#include <stdlib.h> 33#include <stdlib.h>
38#include <sys/time.h> 34#include <sys/time.h>
39#include <unistd.h> 35#include <unistd.h>
40 36
41static int pegRTTI = 3393393; 37static int pegRTTI = 3393393;
42 38
43static int adjusted_panel_height; 39static int adjusted_panel_height;
44static int adjusted_panel_width; 40static int adjusted_panel_width;
45 41
46static int adjusted_bin_margin; 42static int adjusted_bin_margin;
47static int adjusted_peg_size; 43static int adjusted_peg_size;
48static int adjusted_answerpeg_size; 44static int adjusted_answerpeg_size;
49 45
50static int adjusted_title_height; 46static int adjusted_title_height;
51static int adjusted_title_width; 47static int adjusted_title_width;
52 48
53static int adjusted_first_peg_x_diff; 49static int adjusted_first_peg_x_diff;
54static int adjusted_first_peg_y_diff; 50static int adjusted_first_peg_y_diff;
55static int adjusted_peg_spacing; 51static int adjusted_peg_spacing;
56 52
57static int adjusted_answerpegx; 53static int adjusted_answerpegx;
58static int adjusted_answerpegy; 54static int adjusted_answerpegy;
59static int adjusted_answerpeg_xdiff; 55static int adjusted_answerpeg_xdiff;
60static int adjusted_answerpeg_ydiff; 56static int adjusted_answerpeg_ydiff;
61 57
62static int adjusted_board_height; 58static int adjusted_board_height;
63static int adjusted_board_width; 59static int adjusted_board_width;
64 60
65static void setupBoardSize(int w, int h) 61static void setupBoardSize(int w, int h)
66{ 62{
67 adjusted_panel_width = w * 3/4; 63 adjusted_panel_width = w * 3/4;
68 adjusted_title_width = w * 3/4; 64 adjusted_title_width = w * 3/4;
69 65
70 adjusted_title_height = h/10; 66 adjusted_title_height = h/10;
71 adjusted_panel_height = (h-adjusted_title_height)/9; 67 adjusted_panel_height = (h-adjusted_title_height)/9;
72 68
73 adjusted_bin_margin = w * 10/240; 69 adjusted_bin_margin = w * 10/240;
74 adjusted_peg_size = adjusted_panel_height*3/4; 70 adjusted_peg_size = adjusted_panel_height*3/4;
75 adjusted_answerpeg_size = QMIN(adjusted_panel_width*15/180,adjusted_panel_height*15/25); 71 adjusted_answerpeg_size = QMIN(adjusted_panel_width*15/180,adjusted_panel_height*15/25);
76 72
77 // looks a bit dodgy on larger sizes 73 // looks a bit dodgy on larger sizes
78 if ( adjusted_peg_size > 40 ) 74 if ( adjusted_peg_size > 40 )
79 adjusted_peg_size = 40; 75 adjusted_peg_size = 40;
80 76
81 adjusted_first_peg_x_diff = w * 31/240-adjusted_peg_size/2; 77 adjusted_first_peg_x_diff = w * 31/240-adjusted_peg_size/2;
82 adjusted_first_peg_y_diff = (adjusted_panel_height - adjusted_peg_size)/2; 78 adjusted_first_peg_y_diff = (adjusted_panel_height - adjusted_peg_size)/2;
83 adjusted_peg_spacing = w * 30/240; 79 adjusted_peg_spacing = w * 30/240;
84 80
85 // looks a bit dodgy on larger sizes (still does though, but not as much...) 81 // looks a bit dodgy on larger sizes (still does though, but not as much...)
86 if ( adjusted_answerpeg_size > 22 ) 82 if ( adjusted_answerpeg_size > 22 )
87 adjusted_answerpeg_size = 22; 83 adjusted_answerpeg_size = 22;
88 84
89 adjusted_answerpegx = adjusted_panel_width * 159/180 - adjusted_answerpeg_size/2; 85 adjusted_answerpegx = adjusted_panel_width * 159/180 - adjusted_answerpeg_size/2;
90 adjusted_answerpegy = adjusted_panel_height/3 - adjusted_answerpeg_size/2; 86 adjusted_answerpegy = adjusted_panel_height/3 - adjusted_answerpeg_size/2;
91 adjusted_answerpeg_xdiff = adjusted_panel_width * 10/180; 87 adjusted_answerpeg_xdiff = adjusted_panel_width * 10/180;
92 adjusted_answerpeg_ydiff = adjusted_panel_height * 9/25; 88 adjusted_answerpeg_ydiff = adjusted_panel_height * 9/25;
93 89
94 adjusted_board_height = adjusted_title_height + (adjusted_panel_height * 9); 90 adjusted_board_height = adjusted_title_height + (adjusted_panel_height * 9);
95 adjusted_board_width = adjusted_panel_width + (adjusted_bin_margin * 2) + adjusted_peg_size; 91 adjusted_board_width = adjusted_panel_width + (adjusted_bin_margin * 2) + adjusted_peg_size;
96 92
97// qDebug("Adjusted width %d height %d", adjusted_board_width, adjusted_board_height); 93// qDebug("Adjusted width %d height %d", adjusted_board_width, adjusted_board_height);
98} 94}
99 95
100 96
101/* helper class, */ 97/* helper class, */
102class Peg : public QCanvasRectangle 98class Peg : public QCanvasRectangle
103{ 99{
104public: 100public:
105 Peg(QCanvas *canvas, int type, int go = -1, int pos = -1); 101 Peg(QCanvas *canvas, int type, int go = -1, int pos = -1);
106 int rtti() const {return pegRTTI; } 102 int rtti() const {return pegRTTI; }
107 void advance(int phase); 103 void advance(int phase);
108 104
109 bool hit( const QPoint &) const; 105 bool hit( const QPoint &) const;
110 106
111/* a placed peg is one that has been set down on the board correctly and 107/* a placed peg is one that has been set down on the board correctly and
112 should not be moved, only copied */ 108 should not be moved, only copied */
113 bool placed() const; 109 bool placed() const;
114 void setPlaced(bool); 110 void setPlaced(bool);
115 111
116 int pegGo() const; 112 int pegGo() const;
117 int pegPos() const; 113 int pegPos() const;
118 void setPegPos(int); 114 void setPegPos(int);
119 115
120 int type() const; 116 int type() const;
121 117
122 static void buildImages(); 118 static void buildImages();
123 static QImage imageForType(int t); 119 static QImage imageForType(int t);
124 120
125 static int eggLevel; 121 static int eggLevel;
126 122
127protected: 123protected:
128 void drawShape(QPainter &); 124 void drawShape(QPainter &);
129private: 125private:
130 static QVector<QImage> normalPegs; 126 static QVector<QImage> normalPegs;
131 static QVector<QImage> specialPegs; 127 static QVector<QImage> specialPegs;
132 128
133 bool isplaced; 129 bool isplaced;
134 int pegtype; 130 int pegtype;
135 int peg_go; 131 int peg_go;
136 int peg_pos; 132 int peg_pos;
137 133
138 int aniStep; 134 int aniStep;
139}; 135};
140int Peg::eggLevel = 0; 136int Peg::eggLevel = 0;
141QVector<QImage> Peg::normalPegs; 137QVector<QImage> Peg::normalPegs;
142QVector<QImage> Peg::specialPegs; 138QVector<QImage> Peg::specialPegs;
143 139
144void Peg::buildImages() 140void Peg::buildImages()
145{ 141{
146 QImage pegs = Resource::loadImage("mindbreaker/pegs"); 142 QImage pegs = Resource::loadImage("mindbreaker/pegs");
147 int x = 0; 143 int x = 0;
148 int y = 0; 144 int y = 0;
149 int i; 145 int i;
150 eggLevel = 0; 146 eggLevel = 0;
151 normalPegs.resize(10); 147 normalPegs.resize(10);
152 for (i = 0; i < 6; i++) { 148 for (i = 0; i < 6; i++) {
153 normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size). 149 normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size).
154 smoothScale(adjusted_peg_size, adjusted_peg_size) )); 150 smoothScale(adjusted_peg_size, adjusted_peg_size) ));
155 x += peg_size; 151 x += peg_size;
156 } 152 }
157 specialPegs.resize(5); 153 specialPegs.resize(5);
158 for (i = 0; i < 5; i++) { 154 for (i = 0; i < 5; i++) {
159 specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size). 155 specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size).
160 smoothScale(adjusted_peg_size, adjusted_peg_size) )); 156 smoothScale(adjusted_peg_size, adjusted_peg_size) ));
161 x += peg_size; 157 x += peg_size;
162 } 158 }
163 159
164 QImage image = Resource::loadImage("mindbreaker/mindbreaker"); 160 QImage image = Resource::loadImage("mindbreaker/mindbreaker");
165 /* copy from master image to functional images */ 161 /* copy from master image to functional images */
166 x = 0; 162 x = 0;
167 y = panel_height; 163 y = panel_height;
168 normalPegs.insert(8, 164 normalPegs.insert(8,
169 new QImage( image.copy(x, y, panel_width, panel_height). 165 new QImage( image.copy(x, y, panel_width, panel_height).
170 smoothScale( adjusted_panel_width, adjusted_panel_height) 166 smoothScale( adjusted_panel_width, adjusted_panel_height)
171 )); 167 ));
172 y += panel_height; 168 y += panel_height;
173 y += title_height; 169 y += title_height;
174 normalPegs.insert(9, 170 normalPegs.insert(9,
175 new QImage(image.copy(x, y, title_width, title_height). 171 new QImage(image.copy(x, y, title_width, title_height).
176 smoothScale( adjusted_title_width, adjusted_title_height) 172 smoothScale( adjusted_title_width, adjusted_title_height)
177 )); 173 ));
178 y += title_height; 174 y += title_height;
179 175
180 x = 6 * peg_size; 176 x = 6 * peg_size;
181 normalPegs.insert(6, 177 normalPegs.insert(6,
182 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size). 178 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size).
183 smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) )); 179 smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) ));
184 x += answerpeg_size; 180 x += answerpeg_size;
185 normalPegs.insert(7, 181 normalPegs.insert(7,
186 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size). 182 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size).
187 smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) )); 183 smoothScale( adjusted_answerpeg_size, adjusted_answerpeg_size) ));
188} 184}
189 185
190QImage Peg::imageForType(int t) 186QImage Peg::imageForType(int t)
191{ 187{
192 if (eggLevel > t ) { 188 if (eggLevel > t ) {
193 if( t < 5) { 189 if( t < 5) {
194 return *specialPegs[t]; 190 return *specialPegs[t];
195 } else { 191 } else {
196 return *normalPegs[rand() % 6]; 192 return *normalPegs[rand() % 6];
197 } 193 }
198 } 194 }
199 return *normalPegs[t]; 195 return *normalPegs[t];
200} 196}
201 197
202Peg::Peg(QCanvas *canvas , int t, int g, int p) 198Peg::Peg(QCanvas *canvas , int t, int g, int p)
203 : QCanvasRectangle(canvas) 199 : QCanvasRectangle(canvas)
204{ 200{
205 setSize(normalPegs[t]->width(), normalPegs[t]->height() ); 201 setSize(normalPegs[t]->width(), normalPegs[t]->height() );
206 pegtype = t; 202 pegtype = t;
207 isplaced = FALSE; 203 isplaced = FALSE;
208 peg_pos = p; 204 peg_pos = p;
209 peg_go = g; 205 peg_go = g;
210 aniStep = rand() % 6; 206 aniStep = rand() % 6;
211 setAnimated(TRUE); 207 setAnimated(TRUE);
212} 208}
213 209
214void Peg::advance(int phase) { 210void Peg::advance(int phase) {
215 if (phase == 0) 211 if (phase == 0)
216 aniStep = (++aniStep) % 6; 212 aniStep = (++aniStep) % 6;
217 else { 213 else {
218 hide(); 214 hide();
219 show(); 215 show();
220 } 216 }
221} 217}
222 218
223void Peg::drawShape(QPainter &p ) 219void Peg::drawShape(QPainter &p )
224{ 220{
225 if ((pegtype == 5) && eggLevel > 5) { 221 if ((pegtype == 5) && eggLevel > 5) {
diff --git a/noncore/games/minesweep/main.cpp b/noncore/games/minesweep/main.cpp
index bd70f7c..e187be5 100644
--- a/noncore/games/minesweep/main.cpp
+++ b/noncore/games/minesweep/main.cpp
@@ -1,27 +1,26 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "minesweep.h" 21#include "minesweep.h"
22 22
23#include <qpe/qpeapplication.h>
24#include <opie/oapplicationfactory.h> 23#include <opie/oapplicationfactory.h>
25 24
26OPIE_EXPORT_APP( OApplicationFactory<MineSweep> ) 25OPIE_EXPORT_APP( OApplicationFactory<MineSweep> )
27 26
diff --git a/noncore/games/minesweep/minefield.cpp b/noncore/games/minesweep/minefield.cpp
index 1790110..72c05b0 100644
--- a/noncore/games/minesweep/minefield.cpp
+++ b/noncore/games/minesweep/minefield.cpp
@@ -1,220 +1,216 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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#include "minefield.h" 20#include "minefield.h"
21 21
22#include <qtopia/config.h> 22#include <qtopia/config.h>
23#include <qtopia/qpeapplication.h> 23#include <qtopia/qpeapplication.h>
24 24
25#include <qpainter.h>
26#include <qdrawutil.h>
27#include <qpixmap.h>
28#include <qimage.h>
29#include <qtimer.h> 25#include <qtimer.h>
30 26
31#include <stdlib.h> 27#include <stdlib.h>
32 28
33static const char *pix_flag[]={ 29static const char *pix_flag[]={
34"13 13 3 1", 30"13 13 3 1",
35"# c #000000", 31"# c #000000",
36"x c #ff0000", 32"x c #ff0000",
37". c None", 33". c None",
38".............", 34".............",
39".............", 35".............",
40".....#xxxxxx.", 36".....#xxxxxx.",
41".....#xxxxxx.", 37".....#xxxxxx.",
42".....#xxxxxx.", 38".....#xxxxxx.",
43".....#xxxxxx.", 39".....#xxxxxx.",
44".....#.......", 40".....#.......",
45".....#.......", 41".....#.......",
46".....#.......", 42".....#.......",
47".....#.......", 43".....#.......",
48"...#####.....", 44"...#####.....",
49"..#######....", 45"..#######....",
50"............."}; 46"............."};
51 47
52static const char *pix_mine[]={ 48static const char *pix_mine[]={
53"13 13 3 1", 49"13 13 3 1",
54"# c #000000", 50"# c #000000",
55". c None", 51". c None",
56"a c #ffffff", 52"a c #ffffff",
57"......#......", 53"......#......",
58"......#......", 54"......#......",
59"..#.#####.#..", 55"..#.#####.#..",
60"...#######...", 56"...#######...",
61"..##aa#####..", 57"..##aa#####..",
62"..##aa#####..", 58"..##aa#####..",
63"#############", 59"#############",
64"..#########..", 60"..#########..",
65"..#########..", 61"..#########..",
66"...#######...", 62"...#######...",
67"..#.#####.#..", 63"..#.#####.#..",
68"......#......", 64"......#......",
69"......#......"}; 65"......#......"};
70 66
71 67
72static const int maxGrid = 28; 68static const int maxGrid = 28;
73static const int minGrid = 12; 69static const int minGrid = 12;
74 70
75 71
76 72
77class Mine : public Qt 73class Mine : public Qt
78{ 74{
79public: 75public:
80 enum MineState { 76 enum MineState {
81 Hidden = 0, 77 Hidden = 0,
82 Empty, 78 Empty,
83 Mined, 79 Mined,
84 Flagged, 80 Flagged,
85#ifdef MARK_UNSURE 81#ifdef MARK_UNSURE
86 Unsure, 82 Unsure,
87#endif 83#endif
88 Exploded, 84 Exploded,
89 Wrong 85 Wrong
90 }; 86 };
91 87
92 Mine( MineField* ); 88 Mine( MineField* );
93 void paint( QPainter * p, const QColorGroup & cg, const QRect & cr ); 89 void paint( QPainter * p, const QColorGroup & cg, const QRect & cr );
94 90
95 QSize sizeHint() const { return QSize( maxGrid, maxGrid ); } 91 QSize sizeHint() const { return QSize( maxGrid, maxGrid ); }
96 92
97 void activate( bool sure = TRUE ); 93 void activate( bool sure = TRUE );
98 void setHint( int ); 94 void setHint( int );
99 95
100 void setState( MineState ); 96 void setState( MineState );
101 MineState state() const { return st; } 97 MineState state() const { return st; }
102 98
103 bool isMined() const { return mined; } 99 bool isMined() const { return mined; }
104 void setMined( bool m ) { mined = m; } 100 void setMined( bool m ) { mined = m; }
105 101
106 static void paletteChange(); 102 static void paletteChange();
107 103
108private: 104private:
109 bool mined; 105 bool mined;
110 int hint; 106 int hint;
111 107
112 MineState st; 108 MineState st;
113 MineField *field; 109 MineField *field;
114 110
115 static QPixmap* knownField; 111 static QPixmap* knownField;
116 static QPixmap* unknownField; 112 static QPixmap* unknownField;
117 static QPixmap* flag_pix; 113 static QPixmap* flag_pix;
118 static QPixmap* mine_pix; 114 static QPixmap* mine_pix;
119}; 115};
120 116
121QPixmap* Mine::knownField = 0; 117QPixmap* Mine::knownField = 0;
122QPixmap* Mine::unknownField = 0; 118QPixmap* Mine::unknownField = 0;
123QPixmap* Mine::flag_pix = 0; 119QPixmap* Mine::flag_pix = 0;
124QPixmap* Mine::mine_pix = 0; 120QPixmap* Mine::mine_pix = 0;
125 121
126Mine::Mine( MineField *f ) 122Mine::Mine( MineField *f )
127{ 123{
128 mined = FALSE; 124 mined = FALSE;
129 st = Hidden; 125 st = Hidden;
130 hint = 0; 126 hint = 0;
131 field = f; 127 field = f;
132} 128}
133 129
134void Mine::activate( bool sure ) 130void Mine::activate( bool sure )
135{ 131{
136 if ( !sure ) { 132 if ( !sure ) {
137 switch ( st ) { 133 switch ( st ) {
138 case Hidden: 134 case Hidden:
139 setState( Flagged ); 135 setState( Flagged );
140 break; 136 break;
141 case Flagged: 137 case Flagged:
142#ifdef MARK_UNSURE 138#ifdef MARK_UNSURE
143 setState( Unsure ); 139 setState( Unsure );
144 break; 140 break;
145 case Unsure: 141 case Unsure:
146#endif 142#endif
147 setState( Hidden ); 143 setState( Hidden );
148 default: 144 default:
149 break; 145 break;
150 } 146 }
151 } else if ( st == Flagged ) { 147 } else if ( st == Flagged ) {
152 return; 148 return;
153 } else { 149 } else {
154 if ( mined ) { 150 if ( mined ) {
155 setState( Exploded ); 151 setState( Exploded );
156 } else { 152 } else {
157 setState( Empty ); 153 setState( Empty );
158 } 154 }
159 } 155 }
160} 156}
161 157
162void Mine::setState( MineState s ) 158void Mine::setState( MineState s )
163{ 159{
164 st = s; 160 st = s;
165} 161}
166 162
167void Mine::setHint( int h ) 163void Mine::setHint( int h )
168{ 164{
169 hint = h; 165 hint = h;
170} 166}
171 167
172void Mine::paletteChange() 168void Mine::paletteChange()
173{ 169{
174 delete knownField; 170 delete knownField;
175 knownField = 0; 171 knownField = 0;
176 delete unknownField; 172 delete unknownField;
177 unknownField = 0; 173 unknownField = 0;
178 delete mine_pix; 174 delete mine_pix;
179 mine_pix = 0; 175 mine_pix = 0;
180 delete flag_pix; 176 delete flag_pix;
181 flag_pix = 0; 177 flag_pix = 0;
182} 178}
183 179
184void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr ) 180void Mine::paint( QPainter* p, const QColorGroup &cg, const QRect& cr )
185{ 181{
186 int x = cr.x(); 182 int x = cr.x();
187 int y = cr.y(); 183 int y = cr.y();
188 if ( !knownField || knownField->width() != cr.width() || 184 if ( !knownField || knownField->width() != cr.width() ||
189 knownField->height() != cr.height() ) { 185 knownField->height() != cr.height() ) {
190 delete knownField; 186 delete knownField;
191 knownField = new QPixmap( cr.width(), cr.height() ); 187 knownField = new QPixmap( cr.width(), cr.height() );
192 QPainter pp( knownField ); 188 QPainter pp( knownField );
193 QBrush br( cg.button().dark(115) ); 189 QBrush br( cg.button().dark(115) );
194 qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, TRUE, &br ); 190 qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, TRUE, &br );
195 } 191 }
196 192
197 const int pmmarg=cr.width()/5; 193 const int pmmarg=cr.width()/5;
198 194
199 if ( !unknownField || unknownField->width() != cr.width() || 195 if ( !unknownField || unknownField->width() != cr.width() ||
200 unknownField->height() != cr.height() ) { 196 unknownField->height() != cr.height() ) {
201 delete unknownField; 197 delete unknownField;
202 unknownField = new QPixmap( cr.width(), cr.height() ); 198 unknownField = new QPixmap( cr.width(), cr.height() );
203 QPainter pp( unknownField ); 199 QPainter pp( unknownField );
204 QBrush br( cg.button() ); 200 QBrush br( cg.button() );
205 qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, FALSE, &br ); 201 qDrawWinButton( &pp, QRect( 0, 0, cr.width(), cr.height() ), cg, FALSE, &br );
206 } 202 }
207 203
208 if ( !flag_pix || flag_pix->width() != cr.width()-pmmarg*2 || 204 if ( !flag_pix || flag_pix->width() != cr.width()-pmmarg*2 ||
209 flag_pix->height() != cr.height()-pmmarg*2 ) { 205 flag_pix->height() != cr.height()-pmmarg*2 ) {
210 delete flag_pix; 206 delete flag_pix;
211 flag_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 ); 207 flag_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 );
212 flag_pix->convertFromImage( QImage(pix_flag).smoothScale(cr.width()-pmmarg*2, cr.height()-pmmarg*2) ); 208 flag_pix->convertFromImage( QImage(pix_flag).smoothScale(cr.width()-pmmarg*2, cr.height()-pmmarg*2) );
213 } 209 }
214 210
215 if ( !mine_pix || mine_pix->width() != cr.width()-pmmarg*2 || 211 if ( !mine_pix || mine_pix->width() != cr.width()-pmmarg*2 ||
216 mine_pix->height() != cr.height()-pmmarg*2 ) { 212 mine_pix->height() != cr.height()-pmmarg*2 ) {
217 delete mine_pix; 213 delete mine_pix;
218 mine_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 ); 214 mine_pix = new QPixmap( cr.width()-pmmarg*2, cr.height()-pmmarg*2 );
219 mine_pix->convertFromImage( QImage(pix_mine).smoothScale(cr.width()-pmmarg*2, cr.height()-pmmarg*2) ); 215 mine_pix->convertFromImage( QImage(pix_mine).smoothScale(cr.width()-pmmarg*2, cr.height()-pmmarg*2) );
220 } 216 }
diff --git a/noncore/games/minesweep/minesweep.cpp b/noncore/games/minesweep/minesweep.cpp
index d707dab..4a6a92c 100644
--- a/noncore/games/minesweep/minesweep.cpp
+++ b/noncore/games/minesweep/minesweep.cpp
@@ -1,229 +1,224 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "minesweep.h" 21#include "minesweep.h"
22#include "minefield.h" 22#include "minefield.h"
23 23
24#include <qtopia/qpeapplication.h> 24#include <qtopia/qpeapplication.h>
25#include <qtopia/resource.h> 25#include <qtopia/resource.h>
26#include <qtopia/config.h> 26#include <qtopia/config.h>
27 27
28#include <qtoolbar.h> 28#include <qtoolbar.h>
29#include <qmenubar.h> 29#include <qmenubar.h>
30#include <qpopupmenu.h>
31#include <qpushbutton.h> 30#include <qpushbutton.h>
32#include <qlcdnumber.h> 31#include <qlcdnumber.h>
33#include <qmessagebox.h>
34#include <qtimer.h> 32#include <qtimer.h>
35#include <qpalette.h>
36#include <qapplication.h>
37#include <qlayout.h>
38#include <qlabel.h> 33#include <qlabel.h>
39 34
40#include <stdlib.h> 35#include <stdlib.h>
41#include <time.h> 36#include <time.h>
42 37
43 38
44 39
45 40
46static const char *pix_new[]={ 41static const char *pix_new[]={
47"20 20 3 1", 42"20 20 3 1",
48" c None", 43" c None",
49"# c #00FF00", 44"# c #00FF00",
50". c #000000", 45". c #000000",
51" ", 46" ",
52" ...... ", 47" ...... ",
53" ..######.. ", 48" ..######.. ",
54" .##########. ", 49" .##########. ",
55" .############. ", 50" .############. ",
56" .##############. ", 51" .##############. ",
57" .##############. ", 52" .##############. ",
58" .################. ", 53" .################. ",
59" .################. ", 54" .################. ",
60" .################. ", 55" .################. ",
61" .################. ", 56" .################. ",
62" .################. ", 57" .################. ",
63" .################. ", 58" .################. ",
64" .##############. ", 59" .##############. ",
65" .##############. ", 60" .##############. ",
66" .############. ", 61" .############. ",
67" .##########. ", 62" .##########. ",
68" ..######.. ", 63" ..######.. ",
69" ...... ", 64" ...... ",
70" "}; 65" "};
71 66
72 67
73/* XPM */ 68/* XPM */
74static const char * happy_xpm[] = { 69static const char * happy_xpm[] = {
75"20 20 3 1", 70"20 20 3 1",
76 " c None", 71 " c None",
77 ".c #ffff3f ", 72 ".c #ffff3f ",
78 "#c #000000", 73 "#c #000000",
79" ", 74" ",
80" ###### ", 75" ###### ",
81" ##......## ", 76" ##......## ",
82" #..........# ", 77" #..........# ",
83" #............# ", 78" #............# ",
84" #..............# ", 79" #..............# ",
85" #..............# ", 80" #..............# ",
86" #....##....##....# ", 81" #....##....##....# ",
87" #....##....##....# ", 82" #....##....##....# ",
88" #................# ", 83" #................# ",
89" #................# ", 84" #................# ",
90" #................# ", 85" #................# ",
91" #...#........#...# ", 86" #...#........#...# ",
92" #.##........##.# ", 87" #.##........##.# ",
93" #...########...# ", 88" #...########...# ",
94" #...######...# ", 89" #...######...# ",
95" #..........# ", 90" #..........# ",
96" ##......## ", 91" ##......## ",
97" ###### ", 92" ###### ",
98" "}; 93" "};
99 94
100 95
101/* XPM */ 96/* XPM */
102static const char * worried_xpm[] = { 97static const char * worried_xpm[] = {
103"20 20 3 1", 98"20 20 3 1",
104 " c None", 99 " c None",
105 ".c #ffff3f", 100 ".c #ffff3f",
106 "#c #000000", 101 "#c #000000",
107" ", 102" ",
108" ###### ", 103" ###### ",
109" ##......## ", 104" ##......## ",
110" #..........# ", 105" #..........# ",
111" #............# ", 106" #............# ",
112" #..............# ", 107" #..............# ",
113" #..............# ", 108" #..............# ",
114" #....##....##....# ", 109" #....##....##....# ",
115" #....##....##....# ", 110" #....##....##....# ",
116" #................# ", 111" #................# ",
117" #................# ", 112" #................# ",
118" #................# ", 113" #................# ",
119" #................# ", 114" #................# ",
120" #....######....# ", 115" #....######....# ",
121" #..............# ", 116" #..............# ",
122" #............# ", 117" #............# ",
123" #..........# ", 118" #..........# ",
124" ##......## ", 119" ##......## ",
125" ###### ", 120" ###### ",
126" "}; 121" "};
127 122
128 123
129/* XPM */ 124/* XPM */
130static const char * dead_xpm[] = { 125static const char * dead_xpm[] = {
131"20 20 3 1", 126"20 20 3 1",
132 " c None", 127 " c None",
133 ".c #ffff3f", 128 ".c #ffff3f",
134 "#c #000000", 129 "#c #000000",
135" ", 130" ",
136" ###### ", 131" ###### ",
137" ##......## ", 132" ##......## ",
138" #..........# ", 133" #..........# ",
139" #............# ", 134" #............# ",
140" #..............# ", 135" #..............# ",
141" #..#.#...#.#...# ", 136" #..#.#...#.#...# ",
142" #....#.....#.....# ", 137" #....#.....#.....# ",
143" #...#.#...#.#....# ", 138" #...#.#...#.#....# ",
144" #................# ", 139" #................# ",
145" #................# ", 140" #................# ",
146" #................# ", 141" #................# ",
147" #......####......# ", 142" #......####......# ",
148" #....# #....# ", 143" #....# #....# ",
149" #...#......#...# ", 144" #...#......#...# ",
150" #............# ", 145" #............# ",
151" #..........# ", 146" #..........# ",
152" ##......## ", 147" ##......## ",
153" ###### ", 148" ###### ",
154" "}; 149" "};
155 150
156 151
157class ResultIndicator : private QLabel 152class ResultIndicator : private QLabel
158{ 153{
159public: 154public:
160 static void showResult( QWidget *ref, bool won ); 155 static void showResult( QWidget *ref, bool won );
161private: 156private:
162 ResultIndicator( QWidget *parent, const char *name, WFlags f) 157 ResultIndicator( QWidget *parent, const char *name, WFlags f)
163 :QLabel( parent, name, f ) {} 158 :QLabel( parent, name, f ) {}
164 159
165 void timerEvent( QTimerEvent *); 160 void timerEvent( QTimerEvent *);
166 void center(); 161 void center();
167 bool twoStage; 162 bool twoStage;
168 int timerId; 163 int timerId;
169}; 164};
170 165
171void ResultIndicator::showResult( QWidget *ref, bool won ) 166void ResultIndicator::showResult( QWidget *ref, bool won )
172{ 167{
173 ResultIndicator *r = new ResultIndicator( ref, 0, WStyle_Customize | WStyle_Tool | WType_TopLevel ); 168 ResultIndicator *r = new ResultIndicator( ref, 0, WStyle_Customize | WStyle_Tool | WType_TopLevel );
174 169
175 r->setAlignment( AlignCenter ); 170 r->setAlignment( AlignCenter );
176 r->setFrameStyle( Sunken|StyledPanel ); 171 r->setFrameStyle( Sunken|StyledPanel );
177 if ( won ) { 172 if ( won ) {
178 r->setText( MineSweep::tr("You won!") ); 173 r->setText( MineSweep::tr("You won!") );
179 r->center(); 174 r->center();
180 r->show(); 175 r->show();
181 r->twoStage = FALSE; 176 r->twoStage = FALSE;
182 r->timerId = r->startTimer(1500); 177 r->timerId = r->startTimer(1500);
183 } else { 178 } else {
184 QPalette p( red ); 179 QPalette p( red );
185 r->setPalette( p ); 180 r->setPalette( p );
186 r->setText( MineSweep::tr("You exploded!") ); 181 r->setText( MineSweep::tr("You exploded!") );
187 r->resize( ref->size() ); 182 r->resize( ref->size() );
188 r->move( ref->mapToGlobal(QPoint(0,0)) ); 183 r->move( ref->mapToGlobal(QPoint(0,0)) );
189 r->show(); 184 r->show();
190 r->twoStage = TRUE; 185 r->twoStage = TRUE;
191 r->timerId =r->startTimer(200); 186 r->timerId =r->startTimer(200);
192 } 187 }
193} 188}
194 189
195void ResultIndicator::center() 190void ResultIndicator::center()
196{ 191{
197 QWidget *w = parentWidget(); 192 QWidget *w = parentWidget();
198 193
199 QPoint pp = w->mapToGlobal( QPoint(0,0) ); 194 QPoint pp = w->mapToGlobal( QPoint(0,0) );
200 QSize s = sizeHint()*3; 195 QSize s = sizeHint()*3;
201 s.setWidth( QMIN(s.width(), w->width()) ); 196 s.setWidth( QMIN(s.width(), w->width()) );
202 pp = QPoint( pp.x() + w->width()/2 - s.width()/2, 197 pp = QPoint( pp.x() + w->width()/2 - s.width()/2,
203 pp.y() + w->height()/ 2 - s.height()/2 ); 198 pp.y() + w->height()/ 2 - s.height()/2 );
204 199
205 setGeometry( QRect(pp, s) ); 200 setGeometry( QRect(pp, s) );
206 201
207} 202}
208 203
209void ResultIndicator::timerEvent( QTimerEvent *te ) 204void ResultIndicator::timerEvent( QTimerEvent *te )
210{ 205{
211 if ( te->timerId() != timerId ) 206 if ( te->timerId() != timerId )
212 return; 207 return;
213 killTimer( timerId ); 208 killTimer( timerId );
214 if ( twoStage ) { 209 if ( twoStage ) {
215 center(); 210 center();
216 twoStage = FALSE; 211 twoStage = FALSE;
217 timerId = startTimer( 1000 ); 212 timerId = startTimer( 1000 );
218 } else { 213 } else {
219 delete this; 214 delete this;
220 } 215 }
221} 216}
222 217
223 218
224class MineFrame : public QFrame 219class MineFrame : public QFrame
225{ 220{
226public: 221public:
227 MineFrame( QWidget *parent, const char *name = 0 ) 222 MineFrame( QWidget *parent, const char *name = 0 )
228 :QFrame( parent, name ), field(0) {} 223 :QFrame( parent, name ), field(0) {}
229 void setField( MineField *f ) { 224 void setField( MineField *f ) {
diff --git a/noncore/games/oyatzee/oyatzee.cpp b/noncore/games/oyatzee/oyatzee.cpp
index 0bd22f6..86318db 100644
--- a/noncore/games/oyatzee/oyatzee.cpp
+++ b/noncore/games/oyatzee/oyatzee.cpp
@@ -1,204 +1,198 @@
1#include "oyatzee.h" 1#include "oyatzee.h"
2 2
3#include <qmessagebox.h> 3#include <qmessagebox.h>
4#include <qapplication.h>
5#include <qdir.h>
6#include <qlabel.h>
7#include <qpushbutton.h> 4#include <qpushbutton.h>
8#include <qtimer.h>
9#include <qvbox.h>
10#include <qpainter.h> 5#include <qpainter.h>
11#include <qlayout.h> 6#include <qlayout.h>
12#include <qpoint.h>
13 7
14#include <stdlib.h> 8#include <stdlib.h>
15 9
16OYatzee::OYatzee( QWidget *parent , const char *name, WFlags fl ) : QMainWindow( parent , name , fl ) 10OYatzee::OYatzee( QWidget *parent , const char *name, WFlags fl ) : QMainWindow( parent , name , fl )
17{ 11{
18 QWidget *thing = new QWidget( this ); 12 QWidget *thing = new QWidget( this );
19 setCentralWidget( thing ); 13 setCentralWidget( thing );
20 14
21 setCaption( tr( "OYatzee" ) ); 15 setCaption( tr( "OYatzee" ) );
22 16
23 setPlayerNumber( 4 ); 17 setPlayerNumber( 4 );
24 setRoundsNumber( 1 ); 18 setRoundsNumber( 1 );
25 19
26 lastPlayerFinished = false; 20 lastPlayerFinished = false;
27 currentPlayer = 1; 21 currentPlayer = 1;
28 22
29 ps.append( new Player( "Carsten" ) ); 23 ps.append( new Player( "Carsten" ) );
30 ps.append( new Player( "Julia" ) ); 24 ps.append( new Player( "Julia" ) );
31 ps.append( new Player( "Christine" ) ); 25 ps.append( new Player( "Christine" ) );
32 ps.append( new Player( "Stephan" ) ); 26 ps.append( new Player( "Stephan" ) );
33 27
34 28
35 QVBoxLayout *vbox = new QVBoxLayout( thing ); 29 QVBoxLayout *vbox = new QVBoxLayout( thing );
36 30
37 sb = new Scoreboard( ps, thing , "sb" ); 31 sb = new Scoreboard( ps, thing , "sb" );
38 connect( sb->pb , SIGNAL( item( int ) ), this , SLOT( slotEndRound( int ) ) ); 32 connect( sb->pb , SIGNAL( item( int ) ), this , SLOT( slotEndRound( int ) ) );
39 33
40 dw = new DiceWidget( thing , "dw" ); 34 dw = new DiceWidget( thing , "dw" );
41 dw->setMaximumHeight( this->height()/4 ); 35 dw->setMaximumHeight( this->height()/4 );
42 connect( dw->rollButton, SIGNAL( clicked() ), this , SLOT( slotRollDices() ) ); 36 connect( dw->rollButton, SIGNAL( clicked() ), this , SLOT( slotRollDices() ) );
43 37
44 vbox->addWidget( sb ); 38 vbox->addWidget( sb );
45 vbox->addWidget( dw ); 39 vbox->addWidget( dw );
46} 40}
47 41
48void OYatzee::slotEndRound( int item ) 42void OYatzee::slotEndRound( int item )
49{ 43{
50 qDebug( "Der User hat Nummer %d ausgewählt" , item ); 44 qDebug( "Der User hat Nummer %d ausgewählt" , item );
51 45
52 /* 46 /*
53 * if the user clicked on Total, Bonus or Score and thus not on a 47 * if the user clicked on Total, Bonus or Score and thus not on a
54 * selectable item return and do nothing 48 * selectable item return and do nothing
55 */ 49 */
56 if ( item == 7 || item == 8 || item == 16 ) return; 50 if ( item == 7 || item == 8 || item == 16 ) return;
57 51
58 /* 52 /*
59 * check if the user can really click on that item 53 * check if the user can really click on that item
60 */ 54 */
61 if ( posibilities.find( item ) == posibilities.end() ) return; 55 if ( posibilities.find( item ) == posibilities.end() ) return;
62 56
63 QValueListInt numbers; 57 QValueListInt numbers;
64 58
65 Dice *d = dw->diceList.first(); 59 Dice *d = dw->diceList.first();
66 for ( ; d != 0 ; d = dw->diceList.next() ) 60 for ( ; d != 0 ; d = dw->diceList.next() )
67 { 61 {
68 numbers.append( d->hasValue() ); 62 numbers.append( d->hasValue() );
69 } 63 }
70 64
71 int points = 0; 65 int points = 0;
72 66
73 switch ( item ) 67 switch ( item )
74 { 68 {
75 case Ones: 69 case Ones:
76 points = getPoints( 1 , numbers ); 70 points = getPoints( 1 , numbers );
77 break; 71 break;
78 case Twos: 72 case Twos:
79 points = getPoints( 2 , numbers ); 73 points = getPoints( 2 , numbers );
80 break; 74 break;
81 case Threes: 75 case Threes:
82 points = getPoints( 3 , numbers ); 76 points = getPoints( 3 , numbers );
83 break; 77 break;
84 case Fours: 78 case Fours:
85 points = getPoints( 4 , numbers ); 79 points = getPoints( 4 , numbers );
86 break; 80 break;
87 case Fives: 81 case Fives:
88 points = getPoints( 5 , numbers ); 82 points = getPoints( 5 , numbers );
89 break; 83 break;
90 case Sixes: 84 case Sixes:
91 points = getPoints( 6 , numbers ); 85 points = getPoints( 6 , numbers );
92 break; 86 break;
93 case ThreeOfAKind: 87 case ThreeOfAKind:
94 points = oakPoints; 88 points = oakPoints;
95 break; 89 break;
96 case FourOfAKind: 90 case FourOfAKind:
97 points = oakPoints; 91 points = oakPoints;
98 break; 92 break;
99 case FullHouse: 93 case FullHouse:
100 points = 25; 94 points = 25;
101 break; 95 break;
102 case SStraight: 96 case SStraight:
103 points = 30; 97 points = 30;
104 break; 98 break;
105 case LStraight: 99 case LStraight:
106 points = 40; 100 points = 40;
107 break; 101 break;
108 case Yatzee: 102 case Yatzee:
109 points = 50; 103 points = 50;
110 break; 104 break;
111 case Chance: 105 case Chance:
112 points = getPoints ( Chance , numbers ); 106 points = getPoints ( Chance , numbers );
113 } 107 }
114 108
115 sb->nextRB(currentPlayer-1)->updateMap( item , points ); 109 sb->nextRB(currentPlayer-1)->updateMap( item , points );
116 nextPlayer(); 110 nextPlayer();
117 111
118 qDebug( "Punkte: %d" , points ); 112 qDebug( "Punkte: %d" , points );
119} 113}
120 114
121void OYatzee::nextPlayer() 115void OYatzee::nextPlayer()
122{ 116{
123 currentPlayer++; 117 currentPlayer++;
124 118
125 if ( currentPlayer > numOfPlayers ) 119 if ( currentPlayer > numOfPlayers )
126 { 120 {
127 currentPlayer = 1; 121 currentPlayer = 1;
128 } 122 }
129 123
130 ps.at(currentPlayer-1)->turn = 0; 124 ps.at(currentPlayer-1)->turn = 0;
131} 125}
132 126
133int OYatzee::getPoints( const int num , QValueListInt l) 127int OYatzee::getPoints( const int num , QValueListInt l)
134{ 128{
135 QValueListInt::Iterator it = l.begin(); 129 QValueListInt::Iterator it = l.begin();
136 int c = 0; 130 int c = 0;
137 131
138 if ( num != Chance ) 132 if ( num != Chance )
139 { 133 {
140 for ( ; it != l.end() ; ++it ) 134 for ( ; it != l.end() ; ++it )
141 { 135 {
142 if ( *it == num ) 136 if ( *it == num )
143 c++; 137 c++;
144 } 138 }
145 139
146 return c * num; 140 return c * num;
147 } 141 }
148 else 142 else
149 { 143 {
150 for ( ; it != l.end() ; ++it ) 144 for ( ; it != l.end() ; ++it )
151 { 145 {
152 c += *it; 146 c += *it;
153 } 147 }
154 return c; 148 return c;
155 } 149 }
156 } 150 }
157 151
158OYatzee::~OYatzee() 152OYatzee::~OYatzee()
159{ 153{
160} 154}
161 155
162void OYatzee::detectPosibilities() 156void OYatzee::detectPosibilities()
163{ 157{
164 posibilities.clear(); 158 posibilities.clear();
165 qDebug( "running detectPosibilities()" ); 159 qDebug( "running detectPosibilities()" );
166 160
167 Dice *d = dw->diceList.first(); 161 Dice *d = dw->diceList.first();
168 162
169 QValueListInt numbers; 163 QValueListInt numbers;
170 164
171 for ( ; d != 0 ; d = dw->diceList.next() ) 165 for ( ; d != 0 ; d = dw->diceList.next() )
172 { 166 {
173 numbers.append( d->hasValue() ); 167 numbers.append( d->hasValue() );
174 } 168 }
175 169
176 //the 6 numbers 170 //the 6 numbers
177 QValueListInt::Iterator it; 171 QValueListInt::Iterator it;
178 172
179 for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6 173 for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6
180 { 174 {
181 bool cont = false; 175 bool cont = false;
182 it = numbers.begin(); 176 it = numbers.begin();
183 for ( ; it != numbers.end() ; ++it ) 177 for ( ; it != numbers.end() ; ++it )
184 { 178 {
185 if ( cont ) 179 if ( cont )
186 continue; 180 continue;
187 181
188 if ( numbers.find( i ) != numbers.end() ) 182 if ( numbers.find( i ) != numbers.end() )
189 { 183 {
190 posibilities.append( i ); 184 posibilities.append( i );
191 cont = true; 185 cont = true;
192 } 186 }
193 } 187 }
194 } 188 }
195 189
196 //3er, 4er, Yatzee 190 //3er, 4er, Yatzee
197 it = numbers.begin(); 191 it = numbers.begin();
198 int count; 192 int count;
199 int temp; 193 int temp;
200 int countFH = 0; //for the full-house-check 194 int countFH = 0; //for the full-house-check
201 195
202 for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6 at least 3 times 196 for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6 at least 3 times
203 { 197 {
204 count = 0; 198 count = 0;
diff --git a/noncore/games/parashoot/base.cpp b/noncore/games/parashoot/base.cpp
index cdf1dfa..5f3c79d 100644
--- a/noncore/games/parashoot/base.cpp
+++ b/noncore/games/parashoot/base.cpp
@@ -1,77 +1,75 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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#include "codes.h" 20#include "codes.h"
21#include "base.h" 21#include "base.h"
22#include "man.h"
23 22
24#include <qtopia/resource.h> 23#include <qtopia/resource.h>
25 24
26#include <qregexp.h>
27 25
28int damage; 26int damage;
29 27
30Base::Base(QCanvas* canvas) : 28Base::Base(QCanvas* canvas) :
31 QCanvasSprite(0, canvas), 29 QCanvasSprite(0, canvas),
32 kaboom("landmine"), 30 kaboom("landmine"),
33 ohdear("crmble01") 31 ohdear("crmble01")
34{ 32{
35 basearray = new QCanvasPixmapArray(); 33 basearray = new QCanvasPixmapArray();
36 QString b0 = Resource::findPixmap("parashoot/b0001"); 34 QString b0 = Resource::findPixmap("parashoot/b0001");
37 b0.replace(QRegExp("0001"),"%1"); 35 b0.replace(QRegExp("0001"),"%1");
38 basearray->readPixmaps(b0, 4); 36 basearray->readPixmaps(b0, 4);
39 setSequence(basearray); 37 setSequence(basearray);
40 setFrame(0); 38 setFrame(0);
41 move(2, canvas->height()-50); 39 move(2, canvas->height()-50);
42 setZ(10); 40 setZ(10);
43 show(); 41 show();
44 damage = 0; 42 damage = 0;
45} 43}
46 44
47void Base::damageBase() 45void Base::damageBase()
48{ 46{
49 damage++; 47 damage++;
50 48
51 switch(damage) { 49 switch(damage) {
52 case 1: setFrame(1); ohdear.play(); break; 50 case 1: setFrame(1); ohdear.play(); break;
53 case 2: setFrame(2); ohdear.play(); break; 51 case 2: setFrame(2); ohdear.play(); break;
54 case 3: setFrame(3); kaboom.play(); break; 52 case 3: setFrame(3); kaboom.play(); break;
55 } 53 }
56 show(); 54 show();
57} 55}
58 56
59bool Base::baseDestroyed() 57bool Base::baseDestroyed()
60{ 58{
61 return (damage >= 3); 59 return (damage >= 3);
62} 60}
63 61
64Base::~Base() 62Base::~Base()
65{ 63{
66} 64}
67 65
68int Base::rtti() const 66int Base::rtti() const
69{ 67{
70 return base_rtti; 68 return base_rtti;
71} 69}
72 70
73void 71void
74Base::reposition(void) 72Base::reposition(void)
75{ 73{
76 move(2, canvas()->height()-50); 74 move(2, canvas()->height()-50);
77} 75}
diff --git a/noncore/games/parashoot/cannon.cpp b/noncore/games/parashoot/cannon.cpp
index 5671351..330d850 100644
--- a/noncore/games/parashoot/cannon.cpp
+++ b/noncore/games/parashoot/cannon.cpp
@@ -1,150 +1,149 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 <qtopia/resource.h> 21#include <qtopia/resource.h>
22 22
23#include <qregexp.h>
24 23
25#include "codes.h" 24#include "codes.h"
26#include "cannon.h" 25#include "cannon.h"
27 26
28Cannon::Cannon(QCanvas* canvas) : 27Cannon::Cannon(QCanvas* canvas) :
29 QCanvasSprite(0, canvas) 28 QCanvasSprite(0, canvas)
30{ 29{
31shotsfired=0; 30shotsfired=0;
32 index = 8; 31 index = 8;
33 cannonx = 0; 32 cannonx = 0;
34 cannony = 0; 33 cannony = 0;
35 cannonarray = new QCanvasPixmapArray(); 34 cannonarray = new QCanvasPixmapArray();
36 QString c0 = Resource::findPixmap("parashoot/can0001"); 35 QString c0 = Resource::findPixmap("parashoot/can0001");
37 c0.replace(QRegExp("0001"),"%1"); 36 c0.replace(QRegExp("0001"),"%1");
38 cannonarray->readPixmaps(c0,17); 37 cannonarray->readPixmaps(c0,17);
39 setSequence(cannonarray); 38 setSequence(cannonarray);
40 setFrame(index); 39 setFrame(index);
41 40
42 reposition(); 41 reposition();
43 42
44 movedir = NoDir; 43 movedir = NoDir;
45 moveDelay = 0; 44 moveDelay = 0;
46 setAnimated(TRUE); 45 setAnimated(TRUE);
47 show(); 46 show();
48} 47}
49 48
50void Cannon::advance(int stage) 49void Cannon::advance(int stage)
51{ 50{
52 if ( stage == 1 && moveDelay-- == 0 ) { 51 if ( stage == 1 && moveDelay-- == 0 ) {
53 if (movedir == Left) { 52 if (movedir == Left) {
54 if (index > 0) { 53 if (index > 0) {
55 setFrame(index-1); 54 setFrame(index-1);
56 index--; 55 index--;
57 } 56 }
58 } 57 }
59 if (movedir == Right) { 58 if (movedir == Right) {
60 if (index < 16) { 59 if (index < 16) {
61 setFrame(index+1); 60 setFrame(index+1);
62 index++; 61 index++;
63 } 62 }
64 } 63 }
65 moveDelay = 0; 64 moveDelay = 0;
66 } 65 }
67} 66}
68 67
69void Cannon::pointCannon(Direction dir) 68void Cannon::pointCannon(Direction dir)
70{ 69{
71 movedir = dir; 70 movedir = dir;
72 moveDelay = 0; 71 moveDelay = 0;
73 advance(1); 72 advance(1);
74 moveDelay = 1; 73 moveDelay = 1;
75} 74}
76 75
77void Cannon::setCoords() 76void Cannon::setCoords()
78{ 77{
79 switch(index) { 78 switch(index) {
80 case 0: cannonx = barrelxpos-29; cannony = barrelypos-8; break; 79 case 0: cannonx = barrelxpos-29; cannony = barrelypos-8; break;
81 case 1: cannonx = barrelxpos-27; cannony = barrelypos-8; break; 80 case 1: cannonx = barrelxpos-27; cannony = barrelypos-8; break;
82 case 2: cannonx = barrelxpos-25; cannony = barrelypos-6; break; 81 case 2: cannonx = barrelxpos-25; cannony = barrelypos-6; break;
83 case 3: cannonx = barrelxpos-23; cannony = barrelypos-4; break; 82 case 3: cannonx = barrelxpos-23; cannony = barrelypos-4; break;
84 case 4: cannonx = barrelxpos-21; cannony = barrelypos-2; break; 83 case 4: cannonx = barrelxpos-21; cannony = barrelypos-2; break;
85 case 5: cannonx = barrelxpos-19; cannony = barrelypos; break; 84 case 5: cannonx = barrelxpos-19; cannony = barrelypos; break;
86 case 6: cannonx = barrelxpos-15; cannony = barrelypos; break; 85 case 6: cannonx = barrelxpos-15; cannony = barrelypos; break;
87 case 7: cannonx = barrelxpos-10; cannony = barrelypos; break; 86 case 7: cannonx = barrelxpos-10; cannony = barrelypos; break;
88 case 8: cannonx = barrelxpos; cannony = barrelypos; break; 87 case 8: cannonx = barrelxpos; cannony = barrelypos; break;
89 case 9: cannonx = barrelxpos+2; cannony = barrelypos; break; 88 case 9: cannonx = barrelxpos+2; cannony = barrelypos; break;
90 case 10: cannonx = barrelxpos+6; cannony = barrelypos; break; 89 case 10: cannonx = barrelxpos+6; cannony = barrelypos; break;
91 case 11: cannonx = barrelxpos+8; cannony = barrelypos; break; 90 case 11: cannonx = barrelxpos+8; cannony = barrelypos; break;
92 case 12: cannonx = barrelxpos+12; cannony = barrelypos-2; break; 91 case 12: cannonx = barrelxpos+12; cannony = barrelypos-2; break;
93 case 13: cannonx = barrelxpos+18; cannony = barrelypos-4; break; 92 case 13: cannonx = barrelxpos+18; cannony = barrelypos-4; break;
94 case 14: cannonx = barrelxpos+22; cannony = barrelypos-6; break; 93 case 14: cannonx = barrelxpos+22; cannony = barrelypos-6; break;
95 case 15: cannonx = barrelxpos+26; cannony = barrelypos-8; break; 94 case 15: cannonx = barrelxpos+26; cannony = barrelypos-8; break;
96 case 16: cannonx = barrelxpos+28; cannony = barrelypos-8; break; 95 case 16: cannonx = barrelxpos+28; cannony = barrelypos-8; break;
97 } 96 }
98} 97}
99 98
100double Cannon::shootAngle() 99double Cannon::shootAngle()
101{ 100{
102 switch(index) { 101 switch(index) {
103 case 0: return 30.0; 102 case 0: return 30.0;
104 case 1: return 37.5; 103 case 1: return 37.5;
105 case 2: return 45.0; 104 case 2: return 45.0;
106 case 3: return 52.5; 105 case 3: return 52.5;
107 case 4: return 60.0; 106 case 4: return 60.0;
108 case 5: return 67.5; 107 case 5: return 67.5;
109 case 6: return 75.0; 108 case 6: return 75.0;
110 case 7: return 82.5; 109 case 7: return 82.5;
111 case 8: return 90.0; 110 case 8: return 90.0;
112 case 9: return 97.5; 111 case 9: return 97.5;
113 case 10: return 105.0; 112 case 10: return 105.0;
114 case 11: return 112.5; 113 case 11: return 112.5;
115 case 12: return 120.0; 114 case 12: return 120.0;
116 case 13: return 127.5; 115 case 13: return 127.5;
117 case 14: return 135.0; 116 case 14: return 135.0;
118 case 15: return 142.5; 117 case 15: return 142.5;
119 case 16: return 150.0; 118 case 16: return 150.0;
120 } 119 }
121 return 0; 120 return 0;
122} 121}
123 122
124void Cannon::shoot() 123void Cannon::shoot()
125{ 124{
126 setCoords(); 125 setCoords();
127 Bullet* bullet = new Bullet(canvas(), shootAngle(), cannonx, cannony); 126 Bullet* bullet = new Bullet(canvas(), shootAngle(), cannonx, cannony);
128 connect(bullet, SIGNAL(score(int)), this, SIGNAL(score(int))); 127 connect(bullet, SIGNAL(score(int)), this, SIGNAL(score(int)));
129 shotsfired++; 128 shotsfired++;
130} 129}
131 130
132Cannon::~Cannon() 131Cannon::~Cannon()
133{ 132{
134} 133}
135 134
136int Cannon::rtti() const 135int Cannon::rtti() const
137{ 136{
138 return cannon_rtti; 137 return cannon_rtti;
139} 138}
140 139
141void Cannon::reposition(void) 140void Cannon::reposition(void)
142{ 141{
143 move(canvas()->width()/2-20, canvas()->height()-32); 142 move(canvas()->width()/2-20, canvas()->height()-32);
144 // co ords for barrel of cannon when upright 143 // co ords for barrel of cannon when upright
145 barrelypos = canvas()->height()-32; 144 barrelypos = canvas()->height()-32;
146 barrelxpos = canvas()->width()/2; 145 barrelxpos = canvas()->width()/2;
147 146
148 setFrame(index); 147 setFrame(index);
149 setCoords(); 148 setCoords();
150} 149}
diff --git a/noncore/games/parashoot/helicopter.cpp b/noncore/games/parashoot/helicopter.cpp
index 036b21e..7d91cd1 100644
--- a/noncore/games/parashoot/helicopter.cpp
+++ b/noncore/games/parashoot/helicopter.cpp
@@ -1,120 +1,119 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "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 <qtopia/resource.h> 25#include <qtopia/resource.h>
26 26
27#include <qregexp.h>
28 27
29static QList<Helicopter> all; 28static QList<Helicopter> all;
30 29
31Helicopter::Helicopter(QCanvas* canvas) : 30Helicopter::Helicopter(QCanvas* canvas) :
32 QCanvasSprite(0, canvas), 31 QCanvasSprite(0, canvas),
33 chikachika("aland01") 32 chikachika("aland01")
34{ 33{
35 all.append(this); 34 all.append(this);
36 hits = 0; 35 hits = 0;
37 QCanvasPixmapArray* helicopterarray = new QCanvasPixmapArray(); 36 QCanvasPixmapArray* helicopterarray = new QCanvasPixmapArray();
38 QString h0 = Resource::findPixmap("parashoot/helicopter0001"); 37 QString h0 = Resource::findPixmap("parashoot/helicopter0001");
39 h0.replace(QRegExp("0001"),"%1"); 38 h0.replace(QRegExp("0001"),"%1");
40 helicopterarray->readPixmaps(h0,4 ); 39 helicopterarray->readPixmaps(h0,4 );
41 40
42 setSequence(helicopterarray); 41 setSequence(helicopterarray);
43 setAnimated(true); 42 setAnimated(true);
44 move(canvas->width(), 5); 43 move(canvas->width(), 5);
45 setVelocity(-2, 0); 44 setVelocity(-2, 0);
46 chikachika.playLoop(); 45 chikachika.playLoop();
47 show(); 46 show();
48} 47}
49 48
50Helicopter::~Helicopter() 49Helicopter::~Helicopter()
51{ 50{
52 all.remove(this); 51 all.remove(this);
53} 52}
54 53
55int fr = 0; 54int fr = 0;
56 55
57void Helicopter::advance(int phase) 56void Helicopter::advance(int phase)
58{ 57{
59 QCanvasSprite::advance(phase); 58 QCanvasSprite::advance(phase);
60 if (phase == 0) { 59 if (phase == 0) {
61 if (frame() == 3) { 60 if (frame() == 3) {
62 delete this; 61 delete this;
63 return; 62 return;
64 } 63 }
65 64
66 if (hits >= 2) { 65 if (hits >= 2) {
67 setFrame(3); 66 setFrame(3);
68 } else { 67 } else {
69 setFrame(fr%3); 68 setFrame(fr%3);
70 fr++; 69 fr++;
71 checkCollision(); 70 checkCollision();
72 } 71 }
73 } 72 }
74} 73}
75 74
76void Helicopter::checkCollision() 75void Helicopter::checkCollision()
77{ 76{
78 if (x() == 6) { 77 if (x() == 6) {
79 setAnimated(false); //setVelocity(0, 0); 78 setAnimated(false); //setVelocity(0, 0);
80 dropman(); 79 dropman();
81 } 80 }
82 if (x() < 0) 81 if (x() < 0)
83 done(); 82 done();
84} 83}
85 84
86void Helicopter::dropman() 85void Helicopter::dropman()
87{ 86{
88 (void)new Man(canvas(), 15, 25); 87 (void)new Man(canvas(), 15, 25);
89 (void)new Man(canvas(), 35, 25); 88 (void)new Man(canvas(), 35, 25);
90 takeOff(); 89 takeOff();
91} 90}
92 91
93void Helicopter::done() 92void Helicopter::done()
94{ 93{
95 hits++; 94 hits++;
96} 95}
97 96
98void Helicopter::takeOff() 97void Helicopter::takeOff()
99{ 98{
100 setVelocity(-1, 0); 99 setVelocity(-1, 0);
101} 100}
102 101
103int Helicopter::rtti() const 102int Helicopter::rtti() const
104{ 103{
105 return helicopter_rtti; 104 return helicopter_rtti;
106} 105}
107 106
108void Helicopter::silenceAll() 107void Helicopter::silenceAll()
109{ 108{
110 for (Helicopter* h = all.first(); h; h = all.next()) 109 for (Helicopter* h = all.first(); h; h = all.next())
111 h->chikachika.stop(); 110 h->chikachika.stop();
112} 111}
113 112
114void Helicopter::deleteAll() 113void Helicopter::deleteAll()
115{ 114{
116 Helicopter* h; 115 Helicopter* h;
117 while ((h = all.first())) 116 while ((h = all.first()))
118 delete h; 117 delete h;
119} 118}
120 119
diff --git a/noncore/games/parashoot/interface.cpp b/noncore/games/parashoot/interface.cpp
index 948b92c..5c9b0ef 100644
--- a/noncore/games/parashoot/interface.cpp
+++ b/noncore/games/parashoot/interface.cpp
@@ -1,222 +1,218 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "interface.h" 21#include "interface.h"
22#include "man.h" 22#include "man.h"
23 23
24#include <qtopia/qpeapplication.h> 24#include <qtopia/qpeapplication.h>
25#include <qtopia/resource.h> 25#include <qtopia/resource.h>
26 26
27#include <qlabel.h>
28#include <qmessagebox.h>
29#include <qapplication.h>
30#include <qstyle.h>
31#include <qtoolbar.h> 27#include <qtoolbar.h>
32#include <qtoolbutton.h> 28#include <qtoolbutton.h>
33 29
34ParaShoot::ParaShoot(QWidget* parent, const char* name, WFlags f) : 30ParaShoot::ParaShoot(QWidget* parent, const char* name, WFlags f) :
35 QMainWindow(parent,name,f), 31 QMainWindow(parent,name,f),
36 canvas( 232, 258 ), 32 canvas( 232, 258 ),
37 cannon(NULL), 33 cannon(NULL),
38 base(NULL), 34 base(NULL),
39 gamestopped( true ), 35 gamestopped( true ),
40 waitover( false ), 36 waitover( false ),
41 fanfare("level_up"), 37 fanfare("level_up"),
42 score(0) 38 score(0)
43{ 39{
44 QPEApplication::grabKeyboard(); 40 QPEApplication::grabKeyboard();
45 QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff ); 41 QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff );
46 42
47 updatespeed = 80; 43 updatespeed = 80;
48 canvas.setAdvancePeriod(80); 44 canvas.setAdvancePeriod(80);
49 45
50 pb = new QCanvasView(&canvas, this); 46 pb = new QCanvasView(&canvas, this);
51 pb->setFocus(); 47 pb->setFocus();
52 48
53 setToolBarsMovable( FALSE ); 49 setToolBarsMovable( FALSE );
54 50
55 QToolBar* toolbar = new QToolBar(this); 51 QToolBar* toolbar = new QToolBar(this);
56 toolbar->setHorizontalStretchable( TRUE ); 52 toolbar->setHorizontalStretchable( TRUE );
57 53
58 setCaption( tr("ParaShoot") ); 54 setCaption( tr("ParaShoot") );
59 new QToolButton( Resource::loadIconSet("new"), tr("New Game"), 0, 55 new QToolButton( Resource::loadIconSet("new"), tr("New Game"), 0,
60 this, SLOT(newGame()), toolbar, "New Game"); 56 this, SLOT(newGame()), toolbar, "New Game");
61 57
62 levelscore = new QLabel(toolbar); 58 levelscore = new QLabel(toolbar);
63 levelscore->setBackgroundMode( PaletteButton ); 59 levelscore->setBackgroundMode( PaletteButton );
64 levelscore->setAlignment( AlignRight | AlignVCenter | ExpandTabs ); 60 levelscore->setAlignment( AlignRight | AlignVCenter | ExpandTabs );
65 toolbar->setStretchableWidget( levelscore ); 61 toolbar->setStretchableWidget( levelscore );
66 showScore(0,0); 62 showScore(0,0);
67 63
68 setCentralWidget(pb); 64 setCentralWidget(pb);
69 65
70 autoDropTimer = new QTimer(this); 66 autoDropTimer = new QTimer(this);
71 connect (autoDropTimer, SIGNAL(timeout()), this, SLOT(play()) ); 67 connect (autoDropTimer, SIGNAL(timeout()), this, SLOT(play()) );
72 68
73 pauseTimer = new QTimer(this); 69 pauseTimer = new QTimer(this);
74 connect(pauseTimer, SIGNAL(timeout()), this, SLOT(wait()) ); 70 connect(pauseTimer, SIGNAL(timeout()), this, SLOT(wait()) );
75 71
76 setFocusPolicy(StrongFocus); 72 setFocusPolicy(StrongFocus);
77} 73}
78 74
79 75
80void ParaShoot::resizeEvent(QResizeEvent *) 76void ParaShoot::resizeEvent(QResizeEvent *)
81{ 77{
82 QSize s = centralWidget()->size(); 78 QSize s = centralWidget()->size();
83 int fw = style().defaultFrameWidth(); 79 int fw = style().defaultFrameWidth();
84 canvas.resize( s.width() - fw - 2, s.height() - fw - 2); 80 canvas.resize( s.width() - fw - 2, s.height() - fw - 2);
85 81
86 QImage bgimage = Resource::loadImage("parashoot/sky"); 82 QImage bgimage = Resource::loadImage("parashoot/sky");
87 QPixmap bgpixmap; 83 QPixmap bgpixmap;
88 84
89 bgpixmap.convertFromImage(bgimage.smoothScale(canvas.width(), 85 bgpixmap.convertFromImage(bgimage.smoothScale(canvas.width(),
90 canvas.height()), QPixmap::Auto); 86 canvas.height()), QPixmap::Auto);
91 canvas.setBackgroundPixmap(bgpixmap); 87 canvas.setBackgroundPixmap(bgpixmap);
92 88
93 if (base) { 89 if (base) {
94 base->reposition(); 90 base->reposition();
95 } 91 }
96 92
97 if (cannon) { 93 if (cannon) {
98 cannon->reposition(); 94 cannon->reposition();
99 } 95 }
100} 96}
101 97
102void ParaShoot::focusOutEvent (QFocusEvent *) 98void ParaShoot::focusOutEvent (QFocusEvent *)
103{ 99{
104 if (!gamestopped) 100 if (!gamestopped)
105 canvas.setAdvancePeriod(-1); 101 canvas.setAdvancePeriod(-1);
106} 102}
107 103
108void ParaShoot::focusInEvent (QFocusEvent *) 104void ParaShoot::focusInEvent (QFocusEvent *)
109{ 105{
110 if (!gamestopped) 106 if (!gamestopped)
111 canvas.setAdvancePeriod(updatespeed); 107 canvas.setAdvancePeriod(updatespeed);
112} 108}
113 109
114void ParaShoot::showScore( int score, int level ) 110void ParaShoot::showScore( int score, int level )
115{ 111{
116 levelscore->setText(tr(" Level: %1 Score: %2 ").arg(score).arg(level) ); 112 levelscore->setText(tr(" Level: %1 Score: %2 ").arg(score).arg(level) );
117} 113}
118 114
119 115
120void ParaShoot::newGame() 116void ParaShoot::newGame()
121{ 117{
122 clear(); 118 clear();
123 if (pauseTimer->isActive()) 119 if (pauseTimer->isActive())
124 pauseTimer->stop(); 120 pauseTimer->stop();
125 clear(); 121 clear();
126 Man::setManCount(0); 122 Man::setManCount(0);
127 score = 0; 123 score = 0;
128 Bullet::setShotCount(0); 124 Bullet::setShotCount(0);
129 Bullet::setNobullets(0); 125 Bullet::setNobullets(0);
130 nomen = 2; 126 nomen = 2;
131 Bullet::setLimit(nomen); 127 Bullet::setLimit(nomen);
132 level = 0; 128 level = 0;
133 updatespeed = 80; 129 updatespeed = 80;
134 showScore(0,0); 130 showScore(0,0);
135 gamestopped = false; 131 gamestopped = false;
136 Helicopter::deleteAll(); 132 Helicopter::deleteAll();
137 waitover = true; 133 waitover = true;
138 base = new Base(&canvas); 134 base = new Base(&canvas);
139 cannon = new Cannon(&canvas); 135 cannon = new Cannon(&canvas);
140 connect( cannon, SIGNAL(score(int)), this, SLOT(increaseScore(int))); 136 connect( cannon, SIGNAL(score(int)), this, SLOT(increaseScore(int)));
141 autoDropTimer->start(100); 137 autoDropTimer->start(100);
142} 138}
143 139
144 140
145void ParaShoot::clear() 141void ParaShoot::clear()
146{ 142{
147 autoDropTimer->stop(); 143 autoDropTimer->stop();
148// QCanvasItem* item; 144// QCanvasItem* item;
149 QCanvasItemList l = canvas.allItems(); 145 QCanvasItemList l = canvas.allItems();
150 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) { 146 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) {
151 delete *it; 147 delete *it;
152 } 148 }
153} 149}
154 150
155void ParaShoot::gameOver() 151void ParaShoot::gameOver()
156{ 152{
157 QCanvasItem* item; 153 QCanvasItem* item;
158 QCanvasItemList l = canvas.allItems(); 154 QCanvasItemList l = canvas.allItems();
159 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) { 155 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) {
160 item = *it; 156 item = *it;
161 if ((item->rtti()==1500) || (item->rtti()==1600) || item->rtti()==1900) 157 if ((item->rtti()==1500) || (item->rtti()==1600) || item->rtti()==1900)
162 item->setAnimated(false); 158 item->setAnimated(false);
163 } 159 }
164 autoDropTimer->stop(); 160 autoDropTimer->stop();
165 Helicopter::silenceAll(); 161 Helicopter::silenceAll();
166 162
167 int shots = Bullet::getShotCount(); 163 int shots = Bullet::getShotCount();
168 164
169 int shotsFired = cannon->shotsFired(); 165 int shotsFired = cannon->shotsFired();
170 if ( shotsFired == 0 ) 166 if ( shotsFired == 0 )
171 shotsFired = 1; 167 shotsFired = 1;
172 QCanvasText* gameover = new QCanvasText( 168 QCanvasText* gameover = new QCanvasText(
173 tr( " GAME OVER!\n" 169 tr( " GAME OVER!\n"
174 " Your Score: %1\n" 170 " Your Score: %1\n"
175 " Parachuters Killed: %2\n" 171 " Parachuters Killed: %2\n"
176 " Accuracy: %3% " ).arg(score).arg(shots).arg(shots * 100 / shotsFired ), 172 " Accuracy: %3% " ).arg(score).arg(shots).arg(shots * 100 / shotsFired ),
177 &canvas); 173 &canvas);
178 gameover->setColor(red); 174 gameover->setColor(red);
179 gameover->setFont( QFont("times", 16, QFont::Bold) ); 175 gameover->setFont( QFont("times", 16, QFont::Bold) );
180 gameover->move((canvas.width() - gameover->boundingRect().width()) / 2, 176 gameover->move((canvas.width() - gameover->boundingRect().width()) / 2,
181 (canvas.height() - gameover->boundingRect().height()) / 2); 177 (canvas.height() - gameover->boundingRect().height()) / 2);
182 gameover->setZ(500); 178 gameover->setZ(500);
183 gameover->show(); 179 gameover->show();
184 gamestopped = true; 180 gamestopped = true;
185 waitover = false; 181 waitover = false;
186 pauseTimer->start(3000); 182 pauseTimer->start(3000);
187} 183}
188 184
189void ParaShoot::wait() 185void ParaShoot::wait()
190{ 186{
191 waitover = true; 187 waitover = true;
192 pauseTimer->stop(); 188 pauseTimer->stop();
193} 189}
194 190
195void ParaShoot::play() 191void ParaShoot::play()
196{ 192{
197 if (Man::getManCount() < nomen ) { 193 if (Man::getManCount() < nomen ) {
198 new Man(&canvas); 194 new Man(&canvas);
199 } 195 }
200 if (Base::baseDestroyed()) { 196 if (Base::baseDestroyed()) {
201 gameOver(); 197 gameOver();
202 return; 198 return;
203 } 199 }
204} 200}
205 201
206void ParaShoot::increaseScore(int x) 202void ParaShoot::increaseScore(int x)
207{ 203{
208 score += x; 204 score += x;
209 if ( score / 150 != (score-x) / 150 ) 205 if ( score / 150 != (score-x) / 150 )
210 levelUp(); 206 levelUp();
211 showScore(level,score); 207 showScore(level,score);
212} 208}
213 209
214void ParaShoot::levelUp() 210void ParaShoot::levelUp()
215{ 211{
216 level++; 212 level++;
217 int stage = level % 3; 213 int stage = level % 3;
218 switch(stage) { 214 switch(stage) {
219 case 0: 215 case 0:
220 nomen++; 216 nomen++;
221 Bullet::setLimit(nomen); 217 Bullet::setLimit(nomen);
222 fanfare.play(); 218 fanfare.play();
diff --git a/noncore/games/parashoot/main.cpp b/noncore/games/parashoot/main.cpp
index ee36d26..40f809f 100644
--- a/noncore/games/parashoot/main.cpp
+++ b/noncore/games/parashoot/main.cpp
@@ -1,27 +1,26 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "interface.h" 21#include "interface.h"
22 22
23#include <qpe/qpeapplication.h>
24#include <opie/oapplicationfactory.h> 23#include <opie/oapplicationfactory.h>
25 24
26OPIE_EXPORT_APP( OApplicationFactory<ParaShoot> ) 25OPIE_EXPORT_APP( OApplicationFactory<ParaShoot> )
27 26
diff --git a/noncore/games/parashoot/man.cpp b/noncore/games/parashoot/man.cpp
index 94807c2..0a151b0 100644
--- a/noncore/games/parashoot/man.cpp
+++ b/noncore/games/parashoot/man.cpp
@@ -1,191 +1,190 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "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 <qtopia/resource.h> 25#include <qtopia/resource.h>
26 26
27#include <qregexp.h>
28 27
29int mancount; 28int mancount;
30 29
31Man::Man(QCanvas* canvas) : 30Man::Man(QCanvas* canvas) :
32 QCanvasSprite(0, canvas), 31 QCanvasSprite(0, canvas),
33 splat("lose") // No tr 32 splat("lose") // No tr
34{ 33{
35 manarray = new QCanvasPixmapArray(); 34 manarray = new QCanvasPixmapArray();
36 QString m0 = Resource::findPixmap("parashoot/man0001"); 35 QString m0 = Resource::findPixmap("parashoot/man0001");
37 m0.replace(QRegExp("0001"),"%1"); 36 m0.replace(QRegExp("0001"),"%1");
38 manarray->readPixmaps(m0, 7); 37 manarray->readPixmaps(m0, 7);
39 setSequence(manarray); 38 setSequence(manarray);
40 setAnimated(true); 39 setAnimated(true);
41 mancount++; 40 mancount++;
42 dead = false; 41 dead = false;
43 start(); 42 start();
44} 43}
45 44
46Man::Man(QCanvas* canvas, int x, int y) : 45Man::Man(QCanvas* canvas, int x, int y) :
47 QCanvasSprite(0, canvas), 46 QCanvasSprite(0, canvas),
48 splat("bang") // No tr 47 splat("bang") // No tr
49{ 48{
50 manarray = new QCanvasPixmapArray(); 49 manarray = new QCanvasPixmapArray();
51 QString m0 = Resource::findPixmap("parashoot/man0001"); 50 QString m0 = Resource::findPixmap("parashoot/man0001");
52 m0.replace(QString("0001"),"%1"); 51 m0.replace(QString("0001"),"%1");
53 manarray->readPixmaps(m0, 7); 52 manarray->readPixmaps(m0, 7);
54 setSequence(manarray); 53 setSequence(manarray);
55 move(x, y); 54 move(x, y);
56 setFrame(5); 55 setFrame(5);
57 setZ(300); 56 setZ(300);
58 show(); 57 show();
59 58
60 static bool first_time = TRUE; 59 static bool first_time = TRUE;
61 if (first_time) { 60 if (first_time) {
62 first_time = FALSE; 61 first_time = FALSE;
63 QTime midnight(0, 0, 0); 62 QTime midnight(0, 0, 0);
64 srand(midnight.secsTo(QTime::currentTime()) ); 63 srand(midnight.secsTo(QTime::currentTime()) );
65 } 64 }
66 int yfallspeed = 0; 65 int yfallspeed = 0;
67 yfallspeed = (rand() % 3) + 1; 66 yfallspeed = (rand() % 3) + 1;
68 setVelocity(0, yfallspeed); 67 setVelocity(0, yfallspeed);
69 68
70 mancount++; 69 mancount++;
71 dead = false; 70 dead = false;
72} 71}
73int f = 0; 72int f = 0;
74 73
75void Man::advance(int phase) 74void Man::advance(int phase)
76{ 75{
77 QCanvasSprite::advance(phase); 76 QCanvasSprite::advance(phase);
78 if (phase == 0) { 77 if (phase == 0) {
79 checkCollision(); 78 checkCollision();
80 if (dead) { 79 if (dead) {
81 if (count < 10) { 80 if (count < 10) {
82 setFrame(6); 81 setFrame(6);
83 setVelocity(0,0); 82 setVelocity(0,0);
84 count++; 83 count++;
85 } else { 84 } else {
86 delete this; 85 delete this;
87 return; 86 return;
88 } 87 }
89 } 88 }
90 if (y() > canvas()->height()-43) { 89 if (y() > canvas()->height()-43) {
91 setFrame(f%5); 90 setFrame(f%5);
92 f++; 91 f++;
93 move(x(), canvas()->height()-26); 92 move(x(), canvas()->height()-26);
94 setVelocity(-2, 0); 93 setVelocity(-2, 0);
95 } else if (xVelocity() == -2) { 94 } else if (xVelocity() == -2) {
96 // 95 //
97 // There's been a resize event while this Man has 96 // There's been a resize event while this Man has
98 // been on the ground. Move the man back to the 97 // been on the ground. Move the man back to the
99 // new ground location. This is not neat. 98 // new ground location. This is not neat.
100 // 99 //
101 move(x(), canvas()->height()-26); 100 move(x(), canvas()->height()-26);
102 } 101 }
103 } 102 }
104} 103}
105 104
106void Man::setInitialCoords() 105void Man::setInitialCoords()
107{ 106{
108 static bool first_time = TRUE; 107 static bool first_time = TRUE;
109 if (first_time) { 108 if (first_time) {
110 first_time = FALSE; 109 first_time = FALSE;
111 QTime midnight(0, 0, 0); 110 QTime midnight(0, 0, 0);
112 srand(midnight.secsTo(QTime::currentTime()) ); 111 srand(midnight.secsTo(QTime::currentTime()) );
113 } 112 }
114 dx = rand() % (canvas()->width()-16); 113 dx = rand() % (canvas()->width()-16);
115 dy = -43; //height of a man off the screen 114 dy = -43; //height of a man off the screen
116} 115}
117 116
118//check if man has reached the base 117//check if man has reached the base
119void Man::checkCollision() 118void Man::checkCollision()
120{ 119{
121 if ( (x() < 23) && (y() == canvas()->height()-26)) { 120 if ( (x() < 23) && (y() == canvas()->height()-26)) {
122 QCanvasItem* item; 121 QCanvasItem* item;
123 QCanvasItemList l=collisions(FALSE); 122 QCanvasItemList l=collisions(FALSE);
124 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) { 123 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) {
125 item = *it; 124 item = *it;
126 if ( (item->rtti()== 1800) && (item->collidesWith(this)) ) { 125 if ( (item->rtti()== 1800) && (item->collidesWith(this)) ) {
127 Base* base = (Base*) item; 126 Base* base = (Base*) item;
128 base->damageBase(); 127 base->damageBase();
129 start(); 128 start();
130 } 129 }
131 } 130 }
132 } 131 }
133 132
134 // 133 //
135 // resize events may cause Man objects to appear 134 // resize events may cause Man objects to appear
136 // outside the screen. Get rid of them if this 135 // outside the screen. Get rid of them if this
137 // is the case. 136 // is the case.
138 // 137 //
139 if ((x() < 0) || (x() > canvas()->width())) { 138 if ((x() < 0) || (x() > canvas()->width())) {
140 delete this; 139 delete this;
141 return; 140 return;
142 } 141 }
143} 142}
144 143
145void Man::start() 144void Man::start()
146{ 145{
147 setInitialCoords(); 146 setInitialCoords();
148 move(dx, dy); 147 move(dx, dy);
149 setFrame(5); 148 setFrame(5);
150 setZ(300); 149 setZ(300);
151 show(); 150 show();
152 151
153 static bool first_time = TRUE; 152 static bool first_time = TRUE;
154 if (first_time) { 153 if (first_time) {
155 first_time = FALSE; 154 first_time = FALSE;
156 QTime midnight(0, 0, 0); 155 QTime midnight(0, 0, 0);
157 srand(midnight.secsTo(QTime::currentTime()) ); 156 srand(midnight.secsTo(QTime::currentTime()) );
158 } 157 }
159 int yfallspeed = 0; 158 int yfallspeed = 0;
160 yfallspeed = (rand() % 3) + 1; 159 yfallspeed = (rand() % 3) + 1;
161 setVelocity(0, yfallspeed); 160 setVelocity(0, yfallspeed);
162} 161}
163 162
164void Man::done() 163void Man::done()
165{ 164{
166 splat.play(); 165 splat.play();
167 count = 0; 166 count = 0;
168 dead = true; 167 dead = true;
169 setFrame(6); 168 setFrame(6);
170} 169}
171 170
172int Man::getManCount() 171int Man::getManCount()
173{ 172{
174 return mancount; 173 return mancount;
175} 174}
176 175
177void Man::setManCount(int count) 176void Man::setManCount(int count)
178{ 177{
179 mancount = count; 178 mancount = count;
180} 179}
181 180
182 181
183int Man::rtti() const 182int Man::rtti() const
184{ 183{
185 return man_rtti; 184 return man_rtti;
186} 185}
187 186
188Man::~Man() 187Man::~Man()
189{ 188{
190 mancount--; 189 mancount--;
191} 190}
diff --git a/noncore/games/qasteroids/main.cpp b/noncore/games/qasteroids/main.cpp
index c762990..18a13eb 100644
--- a/noncore/games/qasteroids/main.cpp
+++ b/noncore/games/qasteroids/main.cpp
@@ -1,27 +1,26 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "toplevel.h" 21#include "toplevel.h"
22 22
23#include <qpe/qpeapplication.h>
24#include <opie/oapplicationfactory.h> 23#include <opie/oapplicationfactory.h>
25 24
26 25
27OPIE_EXPORT_APP( OApplicationFactory<KAstTopLevel> ) 26OPIE_EXPORT_APP( OApplicationFactory<KAstTopLevel> )
diff --git a/noncore/games/qasteroids/toplevel.cpp b/noncore/games/qasteroids/toplevel.cpp
index c4fea89..9053d3d 100644
--- a/noncore/games/qasteroids/toplevel.cpp
+++ b/noncore/games/qasteroids/toplevel.cpp
@@ -1,228 +1,226 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 * KAsteroids - Copyright (c) Martin R. Jones 1997 20 * KAsteroids - Copyright (c) Martin R. Jones 1997
21 * 21 *
22 * Part of the KDE project 22 * Part of the KDE project
23 */ 23 */
24 //--- toplevel.cpp --- 24 //--- toplevel.cpp ---
25 25
26#include "toplevel.h" 26#include "toplevel.h"
27#include "ledmeter.h" 27#include "ledmeter.h"
28 28
29#include <qpe/qpeapplication.h> 29#include <qpe/qpeapplication.h>
30#include <qpe/resource.h> 30#include <qpe/resource.h>
31 31
32#include <qaccel.h>
33#include <qlabel.h> 32#include <qlabel.h>
34#include <qlayout.h> 33#include <qlayout.h>
35#include <qlcdnumber.h> 34#include <qlcdnumber.h>
36#include <qpushbutton.h>
37 35
38#include <sys/utsname.h> 36#include <sys/utsname.h>
39 37
40 38
41 #define SB_SCORE1 39 #define SB_SCORE1
42 #define SB_LEVEL2 40 #define SB_LEVEL2
43 #define SB_SHIPS3 41 #define SB_SHIPS3
44 42
45struct SLevel 43struct SLevel
46{ 44{
47 int nrocks; 45 int nrocks;
48 double rockSpeed; 46 double rockSpeed;
49}; 47};
50 48
51 #define MAX_LEVELS16 49 #define MAX_LEVELS16
52 50
53SLevel levels[MAX_LEVELS] = 51SLevel levels[MAX_LEVELS] =
54{ 52{
55 { 1, 0.4 }, 53 { 1, 0.4 },
56 { 1, 0.6 }, 54 { 1, 0.6 },
57 { 2, 0.5 }, 55 { 2, 0.5 },
58 { 2, 0.7 }, 56 { 2, 0.7 },
59 { 2, 0.8 }, 57 { 2, 0.8 },
60 { 3, 0.6 }, 58 { 3, 0.6 },
61 { 3, 0.7 }, 59 { 3, 0.7 },
62 { 3, 0.8 }, 60 { 3, 0.8 },
63 { 4, 0.6 }, 61 { 4, 0.6 },
64 { 4, 0.7 }, 62 { 4, 0.7 },
65 { 4, 0.8 }, 63 { 4, 0.8 },
66 { 5, 0.7 }, 64 { 5, 0.7 },
67 { 5, 0.8 }, 65 { 5, 0.8 },
68 { 5, 0.9 }, 66 { 5, 0.9 },
69 { 5, 1.0 } 67 { 5, 1.0 }
70}; 68};
71 69
72const char *soundEvents[] = 70const char *soundEvents[] =
73{ 71{
74 "ShipDestroyed", 72 "ShipDestroyed",
75 "RockDestroyed", 73 "RockDestroyed",
76 0 74 0
77}; 75};
78 76
79const char *soundDefaults[] = 77const char *soundDefaults[] =
80{ 78{
81 "Explosion.wav", 79 "Explosion.wav",
82 "ploop.wav", 80 "ploop.wav",
83 0 81 0
84}; 82};
85 83
86 84
87KAstTopLevel::KAstTopLevel( QWidget *parent, const char *_name, WFlags fl ) 85KAstTopLevel::KAstTopLevel( QWidget *parent, const char *_name, WFlags fl )
88 : QMainWindow( parent, _name, fl ) 86 : QMainWindow( parent, _name, fl )
89{ 87{
90 setCaption( tr("Asteroids") ); 88 setCaption( tr("Asteroids") );
91 89
92 QPEApplication::grabKeyboard(); 90 QPEApplication::grabKeyboard();
93 91
94 QWidget *border = new QWidget( this ); 92 QWidget *border = new QWidget( this );
95 border->setBackgroundColor( black ); 93 border->setBackgroundColor( black );
96 setCentralWidget( border ); 94 setCentralWidget( border );
97 95
98 QVBoxLayout *borderLayout = new QVBoxLayout( border ); 96 QVBoxLayout *borderLayout = new QVBoxLayout( border );
99 97
100 QWidget *mainWin = new QWidget( border ); 98 QWidget *mainWin = new QWidget( border );
101 borderLayout->addWidget( mainWin, 2, AlignHCenter ); 99 borderLayout->addWidget( mainWin, 2, AlignHCenter );
102 100
103 view = new KAsteroidsView( mainWin ); 101 view = new KAsteroidsView( mainWin );
104 connect( view, SIGNAL( shipKilled() ), SLOT( slotShipKilled() ) ); 102 connect( view, SIGNAL( shipKilled() ), SLOT( slotShipKilled() ) );
105 connect( view, SIGNAL( rockHit(int) ), SLOT( slotRockHit(int) ) ); 103 connect( view, SIGNAL( rockHit(int) ), SLOT( slotRockHit(int) ) );
106 connect( view, SIGNAL( rocksRemoved() ), SLOT( slotRocksRemoved() ) ); 104 connect( view, SIGNAL( rocksRemoved() ), SLOT( slotRocksRemoved() ) );
107 connect( view, SIGNAL( updateVitals() ), SLOT( slotUpdateVitals() ) ); 105 connect( view, SIGNAL( updateVitals() ), SLOT( slotUpdateVitals() ) );
108 106
109 QVBoxLayout *vb = new QVBoxLayout( mainWin ); 107 QVBoxLayout *vb = new QVBoxLayout( mainWin );
110 QHBoxLayout *hb = new QHBoxLayout; 108 QHBoxLayout *hb = new QHBoxLayout;
111 QHBoxLayout *hbd = new QHBoxLayout; 109 QHBoxLayout *hbd = new QHBoxLayout;
112 vb->addLayout( hb ); 110 vb->addLayout( hb );
113 111
114 QFont labelFont( "helvetica", 12 ); 112 QFont labelFont( "helvetica", 12 );
115 QColorGroup grp( darkGreen, black, QColor( 128, 128, 128 ), 113 QColorGroup grp( darkGreen, black, QColor( 128, 128, 128 ),
116 QColor( 64, 64, 64 ), black, darkGreen, black ); 114 QColor( 64, 64, 64 ), black, darkGreen, black );
117 QPalette pal( grp, grp, grp ); 115 QPalette pal( grp, grp, grp );
118 116
119 mainWin->setPalette( pal ); 117 mainWin->setPalette( pal );
120 118
121 QLabel *label; 119 QLabel *label;
122 label = new QLabel( tr("Score"), mainWin ); 120 label = new QLabel( tr("Score"), mainWin );
123 label->setFont( labelFont ); 121 label->setFont( labelFont );
124 label->setPalette( pal ); 122 label->setPalette( pal );
125// label->setFixedWidth( label->sizeHint().width() ); 123// label->setFixedWidth( label->sizeHint().width() );
126 hb->addWidget( label ); 124 hb->addWidget( label );
127 125
128 scoreLCD = new QLCDNumber( 5, mainWin ); 126 scoreLCD = new QLCDNumber( 5, mainWin );
129 scoreLCD->setFrameStyle( QFrame::NoFrame ); 127 scoreLCD->setFrameStyle( QFrame::NoFrame );
130 scoreLCD->setSegmentStyle( QLCDNumber::Flat ); 128 scoreLCD->setSegmentStyle( QLCDNumber::Flat );
131 scoreLCD->setFixedHeight( 16 ); 129 scoreLCD->setFixedHeight( 16 );
132 scoreLCD->setPalette( pal ); 130 scoreLCD->setPalette( pal );
133 hb->addWidget( scoreLCD ); 131 hb->addWidget( scoreLCD );
134 hb->addStretch( 1 ); 132 hb->addStretch( 1 );
135 133
136 label = new QLabel( tr("Level"), mainWin ); 134 label = new QLabel( tr("Level"), mainWin );
137 label->setFont( labelFont ); 135 label->setFont( labelFont );
138 label->setPalette( pal ); 136 label->setPalette( pal );
139// label->setFixedWidth( label->sizeHint().width() ); 137// label->setFixedWidth( label->sizeHint().width() );
140 hb->addWidget( label ); 138 hb->addWidget( label );
141 139
142 levelLCD = new QLCDNumber( 2, mainWin ); 140 levelLCD = new QLCDNumber( 2, mainWin );
143 levelLCD->setFrameStyle( QFrame::NoFrame ); 141 levelLCD->setFrameStyle( QFrame::NoFrame );
144 levelLCD->setSegmentStyle( QLCDNumber::Flat ); 142 levelLCD->setSegmentStyle( QLCDNumber::Flat );
145 levelLCD->setFixedHeight( 16 ); 143 levelLCD->setFixedHeight( 16 );
146 levelLCD->setPalette( pal ); 144 levelLCD->setPalette( pal );
147 hb->addWidget( levelLCD ); 145 hb->addWidget( levelLCD );
148 hb->addStretch( 1 ); 146 hb->addStretch( 1 );
149 147
150 label = new QLabel( tr("Ships"), mainWin ); 148 label = new QLabel( tr("Ships"), mainWin );
151 label->setFont( labelFont ); 149 label->setFont( labelFont );
152// label->setFixedWidth( label->sizeHint().width() ); 150// label->setFixedWidth( label->sizeHint().width() );
153 label->setPalette( pal ); 151 label->setPalette( pal );
154 hb->addWidget( label ); 152 hb->addWidget( label );
155 153
156 shipsLCD = new QLCDNumber( 1, mainWin ); 154 shipsLCD = new QLCDNumber( 1, mainWin );
157 shipsLCD->setFrameStyle( QFrame::NoFrame ); 155 shipsLCD->setFrameStyle( QFrame::NoFrame );
158 shipsLCD->setSegmentStyle( QLCDNumber::Flat ); 156 shipsLCD->setSegmentStyle( QLCDNumber::Flat );
159 shipsLCD->setFixedHeight( 16 ); 157 shipsLCD->setFixedHeight( 16 );
160 shipsLCD->setPalette( pal ); 158 shipsLCD->setPalette( pal );
161 hb->addWidget( shipsLCD ); 159 hb->addWidget( shipsLCD );
162 160
163// hb->addStrut( 14 ); 161// hb->addStrut( 14 );
164 162
165 vb->addWidget( view, 10 ); 163 vb->addWidget( view, 10 );
166 164
167// -- bottom layout: 165// -- bottom layout:
168 vb->addLayout( hbd ); 166 vb->addLayout( hbd );
169 167
170 QFont smallFont( "helvetica", 12 ); 168 QFont smallFont( "helvetica", 12 );
171 hbd->addSpacing( 5 ); 169 hbd->addSpacing( 5 );
172 170
173/* 171/*
174 label = new QLabel( tr( "T" ), mainWin ); 172 label = new QLabel( tr( "T" ), mainWin );
175 label->setFont( smallFont ); 173 label->setFont( smallFont );
176 label->setFixedWidth( label->sizeHint().width() ); 174 label->setFixedWidth( label->sizeHint().width() );
177 label->setPalette( pal ); 175 label->setPalette( pal );
178 hbd->addWidget( label ); 176 hbd->addWidget( label );
179 177
180 teleportsLCD = new QLCDNumber( 1, mainWin ); 178 teleportsLCD = new QLCDNumber( 1, mainWin );
181 teleportsLCD->setFrameStyle( QFrame::NoFrame ); 179 teleportsLCD->setFrameStyle( QFrame::NoFrame );
182 teleportsLCD->setSegmentStyle( QLCDNumber::Flat ); 180 teleportsLCD->setSegmentStyle( QLCDNumber::Flat );
183 teleportsLCD->setPalette( pal ); 181 teleportsLCD->setPalette( pal );
184 teleportsLCD->setFixedHeight( 18 ); 182 teleportsLCD->setFixedHeight( 18 );
185 hbd->addWidget( teleportsLCD ); 183 hbd->addWidget( teleportsLCD );
186 184
187 hbd->addSpacing( 10 ); 185 hbd->addSpacing( 10 );
188*/ 186*/
189 label = new QLabel( mainWin ); 187 label = new QLabel( mainWin );
190 label->setPixmap( Resource::loadPixmap("qasteroids/powerups/brake.png") ); 188 label->setPixmap( Resource::loadPixmap("qasteroids/powerups/brake.png") );
191 label->setFixedWidth( 16 ); 189 label->setFixedWidth( 16 );
192 label->setPalette( pal ); 190 label->setPalette( pal );
193 hbd->addWidget( label ); 191 hbd->addWidget( label );
194 192
195 brakesLCD = new QLCDNumber( 1, mainWin ); 193 brakesLCD = new QLCDNumber( 1, mainWin );
196 brakesLCD->setFrameStyle( QFrame::NoFrame ); 194 brakesLCD->setFrameStyle( QFrame::NoFrame );
197 brakesLCD->setSegmentStyle( QLCDNumber::Flat ); 195 brakesLCD->setSegmentStyle( QLCDNumber::Flat );
198 brakesLCD->setPalette( pal ); 196 brakesLCD->setPalette( pal );
199 brakesLCD->setFixedHeight( 16 ); 197 brakesLCD->setFixedHeight( 16 );
200 hbd->addWidget( brakesLCD ); 198 hbd->addWidget( brakesLCD );
201 199
202 hbd->addSpacing( 5 ); 200 hbd->addSpacing( 5 );
203 201
204 label = new QLabel( mainWin ); 202 label = new QLabel( mainWin );
205 label->setPixmap( Resource::loadPixmap("qasteroids/powerups/shield.png") ); 203 label->setPixmap( Resource::loadPixmap("qasteroids/powerups/shield.png") );
206 label->setFixedWidth( 16 ); 204 label->setFixedWidth( 16 );
207 label->setPalette( pal ); 205 label->setPalette( pal );
208 hbd->addWidget( label ); 206 hbd->addWidget( label );
209 207
210 shieldLCD = new QLCDNumber( 1, mainWin ); 208 shieldLCD = new QLCDNumber( 1, mainWin );
211 shieldLCD->setFrameStyle( QFrame::NoFrame ); 209 shieldLCD->setFrameStyle( QFrame::NoFrame );
212 shieldLCD->setSegmentStyle( QLCDNumber::Flat ); 210 shieldLCD->setSegmentStyle( QLCDNumber::Flat );
213 shieldLCD->setPalette( pal ); 211 shieldLCD->setPalette( pal );
214 shieldLCD->setFixedHeight( 16 ); 212 shieldLCD->setFixedHeight( 16 );
215 hbd->addWidget( shieldLCD ); 213 hbd->addWidget( shieldLCD );
216 214
217 hbd->addSpacing( 5 ); 215 hbd->addSpacing( 5 );
218 216
219 label = new QLabel( mainWin ); 217 label = new QLabel( mainWin );
220 label->setPixmap( Resource::loadPixmap("qasteroids/powerups/shoot.png") ); 218 label->setPixmap( Resource::loadPixmap("qasteroids/powerups/shoot.png") );
221 label->setFixedWidth( 16 ); 219 label->setFixedWidth( 16 );
222 label->setPalette( pal ); 220 label->setPalette( pal );
223 hbd->addWidget( label ); 221 hbd->addWidget( label );
224 222
225 shootLCD = new QLCDNumber( 1, mainWin ); 223 shootLCD = new QLCDNumber( 1, mainWin );
226 shootLCD->setFrameStyle( QFrame::NoFrame ); 224 shootLCD->setFrameStyle( QFrame::NoFrame );
227 shootLCD->setSegmentStyle( QLCDNumber::Flat ); 225 shootLCD->setSegmentStyle( QLCDNumber::Flat );
228 shootLCD->setPalette( pal ); 226 shootLCD->setPalette( pal );
diff --git a/noncore/games/qasteroids/view.cpp b/noncore/games/qasteroids/view.cpp
index 448a54a..352c63b 100644
--- a/noncore/games/qasteroids/view.cpp
+++ b/noncore/games/qasteroids/view.cpp
@@ -1,223 +1,220 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 * KAsteroids - Copyright (c) Martin R. Jones 1997 20 * KAsteroids - Copyright (c) Martin R. Jones 1997
21 * 21 *
22 * Part of the KDE project 22 * Part of the KDE project
23 */ 23 */
24 24
25#include "view.h" 25#include "view.h"
26 26
27#include <qpe/resource.h> 27#include <qpe/resource.h>
28 28
29#include <qapplication.h>
30#include <qkeycode.h>
31#include <qaccel.h>
32 29
33#include <stdlib.h> 30#include <stdlib.h>
34#include <math.h> 31#include <math.h>
35 32
36#define IMG_BACKGROUND "qasteroids/bg.png" 33#define IMG_BACKGROUND "qasteroids/bg.png"
37 34
38#define REFRESH_DELAY 33 35#define REFRESH_DELAY 33
39#define SHIP_SPEED 0.3 36#define SHIP_SPEED 0.3
40#define MISSILE_SPEED 10.0 37#define MISSILE_SPEED 10.0
41#define SHIP_STEPS 64 38#define SHIP_STEPS 64
42#define ROTATE_RATE 2 39#define ROTATE_RATE 2
43#define SHIELD_ON_COST 1 40#define SHIELD_ON_COST 1
44#define SHIELD_HIT_COST 30 41#define SHIELD_HIT_COST 30
45#define BRAKE_ON_COST 4 42#define BRAKE_ON_COST 4
46 43
47#define MAX_ROCK_SPEED 2.5 44#define MAX_ROCK_SPEED 2.5
48#define MAX_POWERUP_SPEED 1.5 45#define MAX_POWERUP_SPEED 1.5
49 #define MAX_SHIP_SPEED 8 46 #define MAX_SHIP_SPEED 8
50#define MAX_BRAKES 5 47#define MAX_BRAKES 5
51#define MAX_SHIELDS 5 48#define MAX_SHIELDS 5
52 #define MAX_FIREPOWER 5 49 #define MAX_FIREPOWER 5
53 50
54#define TEXT_SPEED 4 51#define TEXT_SPEED 4
55 52
56#define PI_X_2 6.283185307 53#define PI_X_2 6.283185307
57#ifndef M_PI 54#ifndef M_PI
58#define M_PI 3.141592654 55#define M_PI 3.141592654
59#endif 56#endif
60 57
61struct 58struct
62{ 59{
63 int id; 60 int id;
64 const char *path; 61 const char *path;
65 int frames; 62 int frames;
66} 63}
67kas_animations [] = 64kas_animations [] =
68{ 65{
69// { ID_ROCK_LARGE, "rock1/rock1\%1.png", 32 }, 66// { ID_ROCK_LARGE, "rock1/rock1\%1.png", 32 },
70 { ID_ROCK_MEDIUM, "rock2/rock2\%1.png", 32 }, 67 { ID_ROCK_MEDIUM, "rock2/rock2\%1.png", 32 },
71 { ID_ROCK_SMALL, "rock3/rock3\%1.png", 32 }, 68 { ID_ROCK_SMALL, "rock3/rock3\%1.png", 32 },
72 { ID_SHIP, "ship/ship\%1.png", 32 }, 69 { ID_SHIP, "ship/ship\%1.png", 32 },
73 { ID_MISSILE, "missile/missile.png", 0 }, 70 { ID_MISSILE, "missile/missile.png", 0 },
74 { ID_BIT, "bits/bits\%1.png", 16 }, 71 { ID_BIT, "bits/bits\%1.png", 16 },
75 { ID_EXHAUST, "exhaust/exhaust.png", 0 }, 72 { ID_EXHAUST, "exhaust/exhaust.png", 0 },
76 { ID_ENERGY_POWERUP, "powerups/energy.png", 0 }, 73 { ID_ENERGY_POWERUP, "powerups/energy.png", 0 },
77// { ID_TELEPORT_POWERUP, "powerups/teleport%1.png", 12 }, 74// { ID_TELEPORT_POWERUP, "powerups/teleport%1.png", 12 },
78 { ID_BRAKE_POWERUP, "powerups/brake.png", 0 }, 75 { ID_BRAKE_POWERUP, "powerups/brake.png", 0 },
79 { ID_SHIELD_POWERUP, "powerups/shield.png", 0 }, 76 { ID_SHIELD_POWERUP, "powerups/shield.png", 0 },
80 { ID_SHOOT_POWERUP, "powerups/shoot.png", 0 }, 77 { ID_SHOOT_POWERUP, "powerups/shoot.png", 0 },
81 { ID_SHIELD, "shield/shield\%1.png", 6 }, 78 { ID_SHIELD, "shield/shield\%1.png", 6 },
82 { 0, 0, 0 } 79 { 0, 0, 0 }
83}; 80};
84 81
85 82
86 83
87KAsteroidsView::KAsteroidsView( QWidget *parent, const char *name ) 84KAsteroidsView::KAsteroidsView( QWidget *parent, const char *name )
88 : QWidget( parent, name ), 85 : QWidget( parent, name ),
89 field(200, 200), 86 field(200, 200),
90 view(&field,this) 87 view(&field,this)
91{ 88{
92 view.setVScrollBarMode( QScrollView::AlwaysOff ); 89 view.setVScrollBarMode( QScrollView::AlwaysOff );
93 view.setHScrollBarMode( QScrollView::AlwaysOff ); 90 view.setHScrollBarMode( QScrollView::AlwaysOff );
94 rocks.setAutoDelete( TRUE ); 91 rocks.setAutoDelete( TRUE );
95 missiles.setAutoDelete( TRUE ); 92 missiles.setAutoDelete( TRUE );
96 bits.setAutoDelete( TRUE ); 93 bits.setAutoDelete( TRUE );
97 powerups.setAutoDelete( TRUE ); 94 powerups.setAutoDelete( TRUE );
98 exhaust.setAutoDelete( TRUE ); 95 exhaust.setAutoDelete( TRUE );
99 96
100 QPixmap pm( Resource::loadPixmap(IMG_BACKGROUND) ); 97 QPixmap pm( Resource::loadPixmap(IMG_BACKGROUND) );
101 field.setBackgroundPixmap( pm ); 98 field.setBackgroundPixmap( pm );
102 99
103 textSprite = new QCanvasText( &field ); 100 textSprite = new QCanvasText( &field );
104 QFont font( "helvetica", 14 ); 101 QFont font( "helvetica", 14 );
105 textSprite->setFont( font ); 102 textSprite->setFont( font );
106 103
107 shield = 0; 104 shield = 0;
108 shieldOn = FALSE; 105 shieldOn = FALSE;
109 refreshRate = REFRESH_DELAY; 106 refreshRate = REFRESH_DELAY;
110 107
111 readSprites(); 108 readSprites();
112 109
113 shieldTimer = new QTimer( this ); 110 shieldTimer = new QTimer( this );
114 connect( shieldTimer, SIGNAL(timeout()), this, SLOT(hideShield()) ); 111 connect( shieldTimer, SIGNAL(timeout()), this, SLOT(hideShield()) );
115 mTimerId = -1; 112 mTimerId = -1;
116 113
117 shipPower = MAX_POWER_LEVEL; 114 shipPower = MAX_POWER_LEVEL;
118 vitalsChanged = TRUE; 115 vitalsChanged = TRUE;
119 can_destroy_powerups = FALSE; 116 can_destroy_powerups = FALSE;
120 117
121 mPaused = TRUE; 118 mPaused = TRUE;
122} 119}
123 120
124// - - - 121// - - -
125 122
126KAsteroidsView::~KAsteroidsView() 123KAsteroidsView::~KAsteroidsView()
127{ 124{
128} 125}
129 126
130// - - - 127// - - -
131 128
132void KAsteroidsView::reset() 129void KAsteroidsView::reset()
133{ 130{
134 rocks.clear(); 131 rocks.clear();
135 missiles.clear(); 132 missiles.clear();
136 bits.clear(); 133 bits.clear();
137 powerups.clear(); 134 powerups.clear();
138 exhaust.clear(); 135 exhaust.clear();
139 136
140 shotsFired = 0; 137 shotsFired = 0;
141 shotsHit = 0; 138 shotsHit = 0;
142 139
143 rockSpeed = 1.0; 140 rockSpeed = 1.0;
144 powerupSpeed = 1.0; 141 powerupSpeed = 1.0;
145 mFrameNum = 0; 142 mFrameNum = 0;
146 mPaused = FALSE; 143 mPaused = FALSE;
147 144
148 ship->hide(); 145 ship->hide();
149 shield->hide(); 146 shield->hide();
150/* 147/*
151 if ( mTimerId >= 0 ) { 148 if ( mTimerId >= 0 ) {
152 killTimer( mTimerId ); 149 killTimer( mTimerId );
153 mTimerId = -1; 150 mTimerId = -1;
154 } 151 }
155*/ 152*/
156} 153}
157 154
158// - -- 155// - --
159 156
160void KAsteroidsView::newGame() 157void KAsteroidsView::newGame()
161{ 158{
162 if ( shieldOn ) 159 if ( shieldOn )
163 { 160 {
164 shield->hide(); 161 shield->hide();
165 shieldOn = FALSE; 162 shieldOn = FALSE;
166 } 163 }
167 reset(); 164 reset();
168 if ( mTimerId < 0 ) 165 if ( mTimerId < 0 )
169 mTimerId = startTimer( REFRESH_DELAY ); 166 mTimerId = startTimer( REFRESH_DELAY );
170 emit updateVitals(); 167 emit updateVitals();
171} 168}
172 169
173// - - - 170// - - -
174 171
175void KAsteroidsView::endGame() 172void KAsteroidsView::endGame()
176{ 173{
177} 174}
178 175
179void KAsteroidsView::pause( bool p ) 176void KAsteroidsView::pause( bool p )
180{ 177{
181 if ( !mPaused && p ) { 178 if ( !mPaused && p ) {
182 if ( mTimerId >= 0 ) { 179 if ( mTimerId >= 0 ) {
183 killTimer( mTimerId ); 180 killTimer( mTimerId );
184 mTimerId = -1; 181 mTimerId = -1;
185 } 182 }
186 } else if ( mPaused && !p ) 183 } else if ( mPaused && !p )
187 mTimerId = startTimer( REFRESH_DELAY ); 184 mTimerId = startTimer( REFRESH_DELAY );
188 mPaused = p; 185 mPaused = p;
189} 186}
190 187
191// - - - 188// - - -
192 189
193void KAsteroidsView::newShip() 190void KAsteroidsView::newShip()
194{ 191{
195 ship->move( field.width()/2, field.height()/2, 0 ); 192 ship->move( field.width()/2, field.height()/2, 0 );
196 shield->move( field.width()/2, field.height()/2, 0 ); 193 shield->move( field.width()/2, field.height()/2, 0 );
197 ship->setVelocity( 0.0, 0.0 ); 194 ship->setVelocity( 0.0, 0.0 );
198 shipDx = 0; 195 shipDx = 0;
199 shipDy = 0; 196 shipDy = 0;
200 shipAngle = 0; 197 shipAngle = 0;
201 rotateL = FALSE; 198 rotateL = FALSE;
202 rotateR = FALSE; 199 rotateR = FALSE;
203 thrustShip = FALSE; 200 thrustShip = FALSE;
204 shootShip = FALSE; 201 shootShip = FALSE;
205 brakeShip = FALSE; 202 brakeShip = FALSE;
206 teleportShip = FALSE; 203 teleportShip = FALSE;
207 shieldOn = TRUE; 204 shieldOn = TRUE;
208 shootDelay = 0; 205 shootDelay = 0;
209 shipPower = MAX_POWER_LEVEL; 206 shipPower = MAX_POWER_LEVEL;
210 rotateRate = ROTATE_RATE; 207 rotateRate = ROTATE_RATE;
211 rotateSlow = 0; 208 rotateSlow = 0;
212 209
213 mBrakeCount = 0; 210 mBrakeCount = 0;
214 mTeleportCount = 0; 211 mTeleportCount = 0;
215 mShootCount = 0; 212 mShootCount = 0;
216 213
217 ship->show(); 214 ship->show();
218 shield->show(); 215 shield->show();
219 mShieldCount = 1; // just in case the ship appears on a rock. 216 mShieldCount = 1; // just in case the ship appears on a rock.
220 shieldTimer->start( 1000, TRUE ); 217 shieldTimer->start( 1000, TRUE );
221} 218}
222 219
223void KAsteroidsView::setShield( bool s ) 220void KAsteroidsView::setShield( bool s )
diff --git a/noncore/games/sfcave/helpwindow.cpp b/noncore/games/sfcave/helpwindow.cpp
index 544e237..8a5d034 100644
--- a/noncore/games/sfcave/helpwindow.cpp
+++ b/noncore/games/sfcave/helpwindow.cpp
@@ -1,81 +1,79 @@
1/*************************************************************************** 1/***************************************************************************
2 helpwindow.cpp - description 2 helpwindow.cpp - description
3 ------------------- 3 -------------------
4 begin : Sun Sep 8 2002 4 begin : Sun Sep 8 2002
5 copyright : (C) 2002 by Andy Qua 5 copyright : (C) 2002 by Andy Qua
6 email : andy.qua@blueyonder.co.uk 6 email : andy.qua@blueyonder.co.uk
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17 17
18#include <qwidget.h>
19#include <qlayout.h> 18#include <qlayout.h>
20#include <qstring.h>
21#include <qtextview.h> 19#include <qtextview.h>
22 20
23#include <qpe/qpeapplication.h> 21#include <qpe/qpeapplication.h>
24 22
25#include "helpwindow.h" 23#include "helpwindow.h"
26 24
27 25
28#define HELP_TEXT \ 26#define HELP_TEXT \
29"<qt><h1>SFCave Help</h1><p> " \ 27"<qt><h1>SFCave Help</h1><p> " \
30"SFCave is a flying game for the Zaurus.<br><br> " \ 28"SFCave is a flying game for the Zaurus.<br><br> " \
31"The aim is to stay alive for as long as possible and get the highest score " \ 29"The aim is to stay alive for as long as possible and get the highest score " \
32"you can.<br><br>" \ 30"you can.<br><br>" \
33"There are three game types currently - SFCave, Gates, and Fly.<br>" \ 31"There are three game types currently - SFCave, Gates, and Fly.<br>" \
34"<b>SFCave</b> is a remake of the classic SFCave game - fly through the " \ 32"<b>SFCave</b> is a remake of the classic SFCave game - fly through the " \
35"cavern avoiding all the blocks that just happen to be hanging in " \ 33"cavern avoiding all the blocks that just happen to be hanging in " \
36"midair<br><br>" \ 34"midair<br><br>" \
37"<b>Gates</b> is similar to SFCave but instead you must fly through the " \ 35"<b>Gates</b> is similar to SFCave but instead you must fly through the " \
38"without crashing.<br><br>" \ 36"without crashing.<br><br>" \
39"<b>Fly</b> is somewhat different to SFCave and above. Instead, you have " \ 37"<b>Fly</b> is somewhat different to SFCave and above. Instead, you have " \
40"are flying in the open air above a scrolling landscape, and the aim is to " \ 38"are flying in the open air above a scrolling landscape, and the aim is to " \
41"hug the ground - the closer to the land you fly the more points " \ 39"hug the ground - the closer to the land you fly the more points " \
42"scored.<br><br><br>" \ 40"scored.<br><br><br>" \
43"Basic instruction - Press <b>Up</B> or <b>Down</b> on the circle pad to " \ 41"Basic instruction - Press <b>Up</B> or <b>Down</b> on the circle pad to " \
44"start a new game, press the middle of the pad to apply thrust (makes you " \ 42"start a new game, press the middle of the pad to apply thrust (makes you " \
45"go up), and release the pad to remove thrust and drop down.<br><br>" \ 43"go up), and release the pad to remove thrust and drop down.<br><br>" \
46"Also, if playing the Fly game, you can press z to toggle the display " \ 44"Also, if playing the Fly game, you can press z to toggle the display " \
47"of the scoring zones. This will display 4 red lines at varying heights " \ 45"of the scoring zones. This will display 4 red lines at varying heights " \
48"above the landscape - if your ship falls into this zone, point are scored. " \ 46"above the landscape - if your ship falls into this zone, point are scored. " \
49"The closer to the landscape you get the more points you get.<br><br>" \ 47"The closer to the landscape you get the more points you get.<br><br>" \
50"In addition, SFCave has replays - save and load too so you can show off to all " \ 48"In addition, SFCave has replays - save and load too so you can show off to all " \
51"your friends (or vice versa). Currently, this is in its infancy but will improve.<br>" \ 49"your friends (or vice versa). Currently, this is in its infancy but will improve.<br>" \
52"To use, once you have crashed, press 'r' to replay the last game.<br>" \ 50"To use, once you have crashed, press 'r' to replay the last game.<br>" \
53"To save the replay press 's'.<br>" \ 51"To save the replay press 's'.<br>" \
54"To load a saved replay press 'l' (after you've crashed at least once).<br><br>" \ 52"To load a saved replay press 'l' (after you've crashed at least once).<br><br>" \
55"Replays are currently saved to your home directory in a file called sfcave.replay." \ 53"Replays are currently saved to your home directory in a file called sfcave.replay." \
56"This file can be copied and given to others as long as it it put in their home directory.<br><br>" \ 54"This file can be copied and given to others as long as it it put in their home directory.<br><br>" \
57"Have lots of fun.<br>" \ 55"Have lots of fun.<br>" \
58"Andy" \ 56"Andy" \
59"</p></qt>" 57"</p></qt>"
60 58
61 59
62HelpWindow::HelpWindow( QWidget *parent, const char *name, bool modal, WFlags flags ) 60HelpWindow::HelpWindow( QWidget *parent, const char *name, bool modal, WFlags flags )
63 : QDialog( parent, name, modal, flags ) 61 : QDialog( parent, name, modal, flags )
64{ 62{
65// resize( 230, 280 ); 63// resize( 230, 280 );
66 64
67 setCaption( "Help for SFCave" ); 65 setCaption( "Help for SFCave" );
68 66
69 QVBoxLayout *layout = new QVBoxLayout( this ); 67 QVBoxLayout *layout = new QVBoxLayout( this );
70 QString text = HELP_TEXT;; 68 QString text = HELP_TEXT;;
71 QTextView *view = new QTextView( text, 0, this, "view" ); 69 QTextView *view = new QTextView( text, 0, this, "view" );
72 layout->insertSpacing( -1, 5 ); 70 layout->insertSpacing( -1, 5 );
73 layout->insertWidget( -1, view ); 71 layout->insertWidget( -1, view );
74 layout->insertSpacing( -1, 5 ); 72 layout->insertSpacing( -1, 5 );
75 73
76 QPEApplication::showDialog( this ); 74 QPEApplication::showDialog( this );
77} 75}
78 76
79HelpWindow::~HelpWindow() 77HelpWindow::~HelpWindow()
80{ 78{
81} 79}
diff --git a/noncore/games/snake/interface.cpp b/noncore/games/snake/interface.cpp
index 2c60693..b5fb5bf 100644
--- a/noncore/games/snake/interface.cpp
+++ b/noncore/games/snake/interface.cpp
@@ -1,222 +1,218 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "interface.h" 21#include "interface.h"
22 22
23#include <qpe/resource.h> 23#include <qpe/resource.h>
24#include <qpe/qpeapplication.h>
25 24
26#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
27#include <qtoolbutton.h> 26#include <qtoolbutton.h>
28#include <qstyle.h>
29#include <qapplication.h>
30#include <qmessagebox.h>
31 27
32SnakeGame::SnakeGame(QWidget* parent, const char* name, WFlags f) : 28SnakeGame::SnakeGame(QWidget* parent, const char* name, WFlags f) :
33 QMainWindow(parent,name,f), 29 QMainWindow(parent,name,f),
34 canvas(232, 258) 30 canvas(232, 258)
35{ 31{
36 setCaption( tr("Snake") ); 32 setCaption( tr("Snake") );
37 QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff ); 33 QPEApplication::setInputMethodHint(this, QPEApplication::AlwaysOff );
38 QPixmap bg = Resource::loadPixmap("snake/grass"); 34 QPixmap bg = Resource::loadPixmap("snake/grass");
39 canvas.setBackgroundPixmap(bg); 35 canvas.setBackgroundPixmap(bg);
40 canvas.setUpdatePeriod(100); 36 canvas.setUpdatePeriod(100);
41 snake = 0; 37 snake = 0;
42 38
43 cv = new QCanvasView(&canvas, this); 39 cv = new QCanvasView(&canvas, this);
44 40
45 pauseTimer = new QTimer(this); 41 pauseTimer = new QTimer(this);
46 connect(pauseTimer, SIGNAL(timeout()), this, SLOT(wait()) ); 42 connect(pauseTimer, SIGNAL(timeout()), this, SLOT(wait()) );
47 43
48 setToolBarsMovable( FALSE ); 44 setToolBarsMovable( FALSE );
49 45
50 QToolBar* toolbar = new QToolBar( this); 46 QToolBar* toolbar = new QToolBar( this);
51 toolbar->setHorizontalStretchable( TRUE ); 47 toolbar->setHorizontalStretchable( TRUE );
52 48
53 QPixmap newicon = Resource::loadPixmap("ksnake"); 49 QPixmap newicon = Resource::loadPixmap("ksnake");
54 setIcon(newicon); 50 setIcon(newicon);
55 (void)new QToolButton(newicon, tr("New Game"), 0, 51 (void)new QToolButton(newicon, tr("New Game"), 0,
56 this, SLOT(newGame()), toolbar, "New Game"); 52 this, SLOT(newGame()), toolbar, "New Game");
57 53
58 scorelabel = new QLabel(toolbar); 54 scorelabel = new QLabel(toolbar);
59 showScore(0); 55 showScore(0);
60 scorelabel->setBackgroundMode( PaletteButton ); 56 scorelabel->setBackgroundMode( PaletteButton );
61 scorelabel->setAlignment( AlignRight | AlignVCenter | ExpandTabs ); 57 scorelabel->setAlignment( AlignRight | AlignVCenter | ExpandTabs );
62 toolbar->setStretchableWidget( scorelabel ); 58 toolbar->setStretchableWidget( scorelabel );
63 59
64 setFocusPolicy(StrongFocus); 60 setFocusPolicy(StrongFocus);
65 61
66 setCentralWidget(cv); 62 setCentralWidget(cv);
67 63
68 QTimer::singleShot( 16, this, SLOT(welcomescreen()) ); 64 QTimer::singleShot( 16, this, SLOT(welcomescreen()) );
69 gamestopped = true; 65 gamestopped = true;
70 waitover = true; 66 waitover = true;
71} 67}
72 68
73SnakeGame::~SnakeGame() 69SnakeGame::~SnakeGame()
74{ 70{
75 delete snake; 71 delete snake;
76} 72}
77 73
78void SnakeGame::resizeEvent(QResizeEvent *) 74void SnakeGame::resizeEvent(QResizeEvent *)
79{ 75{
80 QSize s = centralWidget()->size(); 76 QSize s = centralWidget()->size();
81 int fw = style().defaultFrameWidth(); 77 int fw = style().defaultFrameWidth();
82 canvas.resize( s.width() - fw - 2, s.height() - fw - 2); 78 canvas.resize( s.width() - fw - 2, s.height() - fw - 2);
83} 79}
84 80
85void SnakeGame::welcomescreen() 81void SnakeGame::welcomescreen()
86{ 82{
87 QCanvasText* title = new QCanvasText(tr("SNAKE!"), &canvas); 83 QCanvasText* title = new QCanvasText(tr("SNAKE!"), &canvas);
88 title->setColor(yellow); 84 title->setColor(yellow);
89 title->setFont( QFont("times", 18, QFont::Bold) ); 85 title->setFont( QFont("times", 18, QFont::Bold) );
90 int w = title->boundingRect().width(); 86 int w = title->boundingRect().width();
91 title->move(canvas.width()/2 -w/2, canvas.height()/2-110); 87 title->move(canvas.width()/2 -w/2, canvas.height()/2-110);
92 title->show(); 88 title->show();
93 QCanvasPixmapArray* titlearray = new QCanvasPixmapArray(Resource::findPixmap("snake/title")); 89 QCanvasPixmapArray* titlearray = new QCanvasPixmapArray(Resource::findPixmap("snake/title"));
94 QCanvasSprite* titlepic = new QCanvasSprite(titlearray, &canvas); 90 QCanvasSprite* titlepic = new QCanvasSprite(titlearray, &canvas);
95 titlepic->move(canvas.width()/2 - 33, canvas.height()/2-85); 91 titlepic->move(canvas.width()/2 - 33, canvas.height()/2-85);
96 titlepic->show(); 92 titlepic->show();
97 QCanvasText* instr = new QCanvasText(tr("Use the arrow keys to guide the\n" 93 QCanvasText* instr = new QCanvasText(tr("Use the arrow keys to guide the\n"
98 "snake to eat the mouse. You must not\n" 94 "snake to eat the mouse. You must not\n"
99 "crash into the walls, edges or its tail."), 95 "crash into the walls, edges or its tail."),
100 &canvas); 96 &canvas);
101 w = instr->boundingRect().width(); 97 w = instr->boundingRect().width();
102 instr->move(canvas.width()/2-w/2, canvas.height()/2-20); 98 instr->move(canvas.width()/2-w/2, canvas.height()/2-20);
103 instr->setColor(white); 99 instr->setColor(white);
104 instr->show(); 100 instr->show();
105 QCanvasText* cont = new QCanvasText(tr("Press any key to start"), &canvas); 101 QCanvasText* cont = new QCanvasText(tr("Press any key to start"), &canvas);
106 w = cont->boundingRect().width(); 102 w = cont->boundingRect().width();
107 cont->move(canvas.width()/2-w/2, canvas.height()-20); 103 cont->move(canvas.width()/2-w/2, canvas.height()-20);
108 cont->setColor(yellow); 104 cont->setColor(yellow);
109 cont->show(); 105 cont->show();
110 106
111} 107}
112 108
113void SnakeGame::newGame() 109void SnakeGame::newGame()
114{ 110{
115 clear(); 111 clear();
116 snake = new Snake(&canvas); 112 snake = new Snake(&canvas);
117 connect(snake, SIGNAL(dead()), this, SLOT(gameOver()) ); 113 connect(snake, SIGNAL(dead()), this, SLOT(gameOver()) );
118 connect(snake, SIGNAL(targethit()), this, SLOT(levelUp()) ); 114 connect(snake, SIGNAL(targethit()), this, SLOT(levelUp()) );
119 connect(snake, SIGNAL(scorechanged()), this, SLOT(scoreInc()) ); 115 connect(snake, SIGNAL(scorechanged()), this, SLOT(scoreInc()) );
120 connect(this, SIGNAL(moveFaster()), snake, SLOT(increaseSpeed()) ); 116 connect(this, SIGNAL(moveFaster()), snake, SLOT(increaseSpeed()) );
121 last = 0; 117 last = 0;
122 targetamount = 1; 118 targetamount = 1;
123 notargets = 1; 119 notargets = 1;
124 level = 1; 120 level = 1;
125 stage = 1; 121 stage = 1;
126 showScore(0); 122 showScore(0);
127 gamestopped = false; 123 gamestopped = false;
128 waitover = true; 124 waitover = true;
129 int y = canvas.height()-50; 125 int y = canvas.height()-50;
130 (void)new Obstacle(&canvas, 32); 126 (void)new Obstacle(&canvas, 32);
131 (void)new Obstacle(&canvas, y); 127 (void)new Obstacle(&canvas, y);
132 createTargets(); 128 createTargets();
133} 129}
134 130
135 131
136void SnakeGame::showScore(int score) 132void SnakeGame::showScore(int score)
137{ 133{
138 scorelabel->setText(tr(" Score : %1 ").arg(score) ); 134 scorelabel->setText(tr(" Score : %1 ").arg(score) );
139} 135}
140 136
141 137
142void SnakeGame::scoreInc() 138void SnakeGame::scoreInc()
143{ 139{
144 showScore( snake->getScore() ); 140 showScore( snake->getScore() );
145} 141}
146 142
147void SnakeGame::levelUp() 143void SnakeGame::levelUp()
148{ 144{
149 notargets--; 145 notargets--;
150 if (notargets == 0) { 146 if (notargets == 0) {
151 stage++; 147 stage++;
152 if (stage == 3) { 148 if (stage == 3) {
153 level++; 149 level++;
154 emit moveFaster(); 150 emit moveFaster();
155 targetamount++; 151 targetamount++;
156 stage = 0; 152 stage = 0;
157 } 153 }
158 createTargets(); 154 createTargets();
159 } 155 }
160} 156}
161 157
162void SnakeGame::createTargets() 158void SnakeGame::createTargets()
163{ 159{
164 for (int i = 0; i < targetamount; i++) 160 for (int i = 0; i < targetamount; i++)
165 (void)new Target(&canvas); 161 (void)new Target(&canvas);
166 notargets = targetamount; 162 notargets = targetamount;
167} 163}
168 164
169void SnakeGame::clear() 165void SnakeGame::clear()
170{ 166{
171 delete snake; 167 delete snake;
172 snake = 0; 168 snake = 0;
173 QCanvasItemList l = canvas.allItems(); 169 QCanvasItemList l = canvas.allItems();
174 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) { 170 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) {
175 delete *it; 171 delete *it;
176 } 172 }
177} 173}
178 174
179void SnakeGame::gameOver() 175void SnakeGame::gameOver()
180{ 176{
181 int score = snake->getScore(); 177 int score = snake->getScore();
182 QString scoreoutput=""; 178 QString scoreoutput="";
183 scoreoutput.setNum(score); 179 scoreoutput.setNum(score);
184 QCanvasText* gameover = new QCanvasText(tr("GAME OVER!\n Your Score: %1").arg( scoreoutput), &canvas); 180 QCanvasText* gameover = new QCanvasText(tr("GAME OVER!\n Your Score: %1").arg( scoreoutput), &canvas);
185 181
186 gameover->setZ(100); 182 gameover->setZ(100);
187 gameover->setColor(yellow); 183 gameover->setColor(yellow);
188 gameover->setFont( QFont("times", 18, QFont::Bold) ); 184 gameover->setFont( QFont("times", 18, QFont::Bold) );
189 int w = gameover->boundingRect().width(); 185 int w = gameover->boundingRect().width();
190 gameover->move(canvas.width()/2 -w/2, canvas.height()/2 -50); 186 gameover->move(canvas.width()/2 -w/2, canvas.height()/2 -50);
191 gameover->show(); 187 gameover->show();
192 gamestopped = true; 188 gamestopped = true;
193 waitover = false; 189 waitover = false;
194 pauseTimer->start(1500); 190 pauseTimer->start(1500);
195} 191}
196 192
197void SnakeGame::wait() 193void SnakeGame::wait()
198{ 194{
199 waitover = true; 195 waitover = true;
200 pauseTimer->stop(); 196 pauseTimer->stop();
201 QCanvasText* cont = new QCanvasText(tr("Press any key to begin a new game."), 197 QCanvasText* cont = new QCanvasText(tr("Press any key to begin a new game."),
202 &canvas); 198 &canvas);
203 cont->setZ(100); 199 cont->setZ(100);
204 cont->setColor(white); 200 cont->setColor(white);
205 int w = cont->boundingRect().width(); 201 int w = cont->boundingRect().width();
206 cont->move(canvas.width()/2 -w/2, canvas.height()/2); 202 cont->move(canvas.width()/2 -w/2, canvas.height()/2);
207 cont->show(); 203 cont->show();
208} 204}
209 205
210void SnakeGame::keyPressEvent(QKeyEvent* event) 206void SnakeGame::keyPressEvent(QKeyEvent* event)
211{ 207{
212 if (gamestopped) { 208 if (gamestopped) {
213 if (waitover) 209 if (waitover)
214 newGame(); 210 newGame();
215 else 211 else
216 return; 212 return;
217 } 213 }
218 else { 214 else {
219 int newkey = event->key(); 215 int newkey = event->key();
220 snake->go(newkey); 216 snake->go(newkey);
221 } 217 }
222} 218}
diff --git a/noncore/games/snake/main.cpp b/noncore/games/snake/main.cpp
index 77a2769..9a9b167 100644
--- a/noncore/games/snake/main.cpp
+++ b/noncore/games/snake/main.cpp
@@ -1,29 +1,28 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "interface.h" 21#include "interface.h"
22 22
23#include <qpe/qpeapplication.h>
24#include <opie/oapplicationfactory.h> 23#include <opie/oapplicationfactory.h>
25 24
26 25
27OPIE_EXPORT_APP( OApplicationFactory<SnakeGame> ) 26OPIE_EXPORT_APP( OApplicationFactory<SnakeGame> )
28 27
29 28
diff --git a/noncore/games/snake/snake.cpp b/noncore/games/snake/snake.cpp
index 9f19841..8a683ab 100644
--- a/noncore/games/snake/snake.cpp
+++ b/noncore/games/snake/snake.cpp
@@ -1,219 +1,217 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "snake.h" 21#include "snake.h"
22#include "target.h" 22#include "target.h"
23#include "codes.h"
24 23
25#include <qpe/resource.h> 24#include <qpe/resource.h>
26 25
27#include <qregexp.h>
28 26
29static int Piecekey[4][4] = { {6, 0, 4, 3 }, {0, 6, 2, 1 }, { 1, 3, 5, 0 }, {2, 4, 0, 5 } }; 27static int Piecekey[4][4] = { {6, 0, 4, 3 }, {0, 6, 2, 1 }, { 1, 3, 5, 0 }, {2, 4, 0, 5 } };
30 28
31Snake::Snake(QCanvas* c) 29Snake::Snake(QCanvas* c)
32{ 30{
33 canvas = c; 31 canvas = c;
34 score = 0; 32 score = 0;
35 snakelist.setAutoDelete(true); 33 snakelist.setAutoDelete(true);
36 autoMoveTimer = new QTimer(this); 34 autoMoveTimer = new QTimer(this);
37 connect( autoMoveTimer, SIGNAL(timeout()), this, SLOT(moveSnake()) ); 35 connect( autoMoveTimer, SIGNAL(timeout()), this, SLOT(moveSnake()) );
38 createSnake(); 36 createSnake();
39} 37}
40 38
41void Snake::createSnake() 39void Snake::createSnake()
42{ 40{
43 snakeparts = new QCanvasPixmapArray(); 41 snakeparts = new QCanvasPixmapArray();
44 QString s0 = Resource::findPixmap("snake/s0001"); 42 QString s0 = Resource::findPixmap("snake/s0001");
45 s0.replace(QRegExp("0001"),"%1"); 43 s0.replace(QRegExp("0001"),"%1");
46 snakeparts->readPixmaps(s0, 15); 44 snakeparts->readPixmaps(s0, 15);
47 45
48 grow = 0; 46 grow = 0;
49 last = Key_Right; 47 last = Key_Right;
50 48
51 QCanvasSprite* head = new QCanvasSprite(snakeparts, canvas ); 49 QCanvasSprite* head = new QCanvasSprite(snakeparts, canvas );
52 head->setFrame(7); 50 head->setFrame(7);
53 snakelist.insert(0, head); 51 snakelist.insert(0, head);
54 head->show(); 52 head->show();
55 head->move(34, 16); 53 head->move(34, 16);
56 54
57 QCanvasSprite* body = new QCanvasSprite(snakeparts, canvas ); 55 QCanvasSprite* body = new QCanvasSprite(snakeparts, canvas );
58 body->setFrame(6); 56 body->setFrame(6);
59 snakelist.append( body ); 57 snakelist.append( body );
60 body->show(); 58 body->show();
61 body->move(18, 16); 59 body->move(18, 16);
62 60
63 QCanvasSprite* end = new QCanvasSprite(snakeparts, canvas ); 61 QCanvasSprite* end = new QCanvasSprite(snakeparts, canvas );
64 end->setFrame(11); 62 end->setFrame(11);
65 snakelist.append( end ); 63 snakelist.append( end );
66 end->show(); 64 end->show();
67 end->move(2, 16); 65 end->move(2, 16);
68 66
69 currentdir = right; 67 currentdir = right;
70 speed = 250; 68 speed = 250;
71 autoMoveTimer->start(speed); 69 autoMoveTimer->start(speed);
72 moveSnake(); 70 moveSnake();
73} 71}
74 72
75void Snake::increaseSpeed() 73void Snake::increaseSpeed()
76{ 74{
77 if (speed > 150) 75 if (speed > 150)
78 speed = speed - 5; 76 speed = speed - 5;
79 autoMoveTimer->start(speed); 77 autoMoveTimer->start(speed);
80} 78}
81 79
82void Snake::go(int newkey) 80void Snake::go(int newkey)
83{ 81{
84 // check key is a direction 82 // check key is a direction
85 if (!( (newkey == Key_Up) || (newkey == Key_Left) || 83 if (!( (newkey == Key_Up) || (newkey == Key_Left) ||
86 (newkey == Key_Right) || (newkey == Key_Down) )) 84 (newkey == Key_Right) || (newkey == Key_Down) ))
87 return; 85 return;
88 // check move is possible 86 // check move is possible
89 if ( ((currentdir == left) && ((newkey == Key_Right) || (newkey == Key_Left)) ) || 87 if ( ((currentdir == left) && ((newkey == Key_Right) || (newkey == Key_Left)) ) ||
90 ((currentdir == right) && ((newkey == Key_Left) || (newkey == Key_Right)) ) || 88 ((currentdir == right) && ((newkey == Key_Left) || (newkey == Key_Right)) ) ||
91 ((currentdir == up) && ((newkey == Key_Down) || (newkey == Key_Up)) ) || 89 ((currentdir == up) && ((newkey == Key_Down) || (newkey == Key_Up)) ) ||
92 ((currentdir == down) && ((newkey == Key_Up) || (newkey == Key_Down)) ) ) 90 ((currentdir == down) && ((newkey == Key_Up) || (newkey == Key_Down)) ) )
93 return; 91 return;
94 else { 92 else {
95 Snake::changeHead(newkey); 93 Snake::changeHead(newkey);
96 Snake::moveSnake(); 94 Snake::moveSnake();
97 } 95 }
98} 96}
99 97
100void Snake::move(Direction dir) 98void Snake::move(Direction dir)
101{ 99{
102 autoMoveTimer->start(speed); 100 autoMoveTimer->start(speed);
103 int x = 0; 101 int x = 0;
104 int y = 0; 102 int y = 0;
105 newdir = dir; 103 newdir = dir;
106 switch (dir) { 104 switch (dir) {
107 case right: x = 16; break; 105 case right: x = 16; break;
108 case left: x = -16; break; 106 case left: x = -16; break;
109 case down: y = 16; break; 107 case down: y = 16; break;
110 case up: y = -16; break; 108 case up: y = -16; break;
111 } 109 }
112 int index = lookUpPiece(currentdir, newdir); 110 int index = lookUpPiece(currentdir, newdir);
113 QCanvasSprite* sprite = new QCanvasSprite(snakeparts, canvas ); 111 QCanvasSprite* sprite = new QCanvasSprite(snakeparts, canvas );
114 sprite->setFrame(index); 112 sprite->setFrame(index);
115 snakelist.insert(1, sprite); 113 snakelist.insert(1, sprite);
116 sprite->move(snakelist.first()->x(), snakelist.first()->y() ); 114 sprite->move(snakelist.first()->x(), snakelist.first()->y() );
117 115
118 snakelist.first()->moveBy(x, y); 116 snakelist.first()->moveBy(x, y);
119 if (grow <= 0) 117 if (grow <= 0)
120 changeTail(); 118 changeTail();
121 else 119 else
122 grow--; 120 grow--;
123 sprite->show(); 121 sprite->show();
124 122
125 currentdir = dir; 123 currentdir = dir;
126} 124}
127 125
128void Snake::changeTail() 126void Snake::changeTail()
129{ 127{
130 snakelist.removeLast(); 128 snakelist.removeLast();
131 129
132 double lastx = snakelist.last()->x(); 130 double lastx = snakelist.last()->x();
133 double prevx = snakelist.prev()->x(); 131 double prevx = snakelist.prev()->x();
134 int index = 0; 132 int index = 0;
135 133
136 if ( prevx == lastx ) { //vertical 134 if ( prevx == lastx ) { //vertical
137 if ( snakelist.prev()->y() > snakelist.last()->y() ) 135 if ( snakelist.prev()->y() > snakelist.last()->y() )
138 index = 13; 136 index = 13;
139 else 137 else
140 index = 14; 138 index = 14;
141 } else { //horizontal 139 } else { //horizontal
142 if (snakelist.prev()->x() > snakelist.last()->x() ) 140 if (snakelist.prev()->x() > snakelist.last()->x() )
143 index = 11; 141 index = 11;
144 else 142 else
145 index = 12; 143 index = 12;
146 } 144 }
147 145
148 snakelist.last()->setFrame(index); 146 snakelist.last()->setFrame(index);
149} 147}
150 148
151void Snake::changeHead(int lastkey) 149void Snake::changeHead(int lastkey)
152{ 150{
153 int index = 0; 151 int index = 0;
154 last = lastkey; 152 last = lastkey;
155 153
156 switch (last) 154 switch (last)
157 { 155 {
158 case Key_Up: index = 10; break; 156 case Key_Up: index = 10; break;
159 case Key_Left: index = 8; break; 157 case Key_Left: index = 8; break;
160 case Key_Right: index = 7; break; 158 case Key_Right: index = 7; break;
161 case Key_Down: index = 9; break; 159 case Key_Down: index = 9; break;
162 } 160 }
163 161
164 if (index) { 162 if (index) {
165 snakelist.first()->setFrame(index); 163 snakelist.first()->setFrame(index);
166 } 164 }
167} 165}
168 166
169// returns an integer corresponding to a particular type of snake piece 167// returns an integer corresponding to a particular type of snake piece
170int Snake::lookUpPiece(Direction currentdir, Direction newdir) 168int Snake::lookUpPiece(Direction currentdir, Direction newdir)
171{ 169{
172 return Piecekey[currentdir][newdir]; 170 return Piecekey[currentdir][newdir];
173} 171}
174 172
175void Snake::extendSnake() 173void Snake::extendSnake()
176{ 174{
177 grow++; 175 grow++;
178} 176}
179 177
180void Snake::moveSnake() 178void Snake::moveSnake()
181{ 179{
182 switch (last) 180 switch (last)
183 { 181 {
184 case Key_Up: move(up); break; 182 case Key_Up: move(up); break;
185 case Key_Left: move(left); break; 183 case Key_Left: move(left); break;
186 case Key_Right: move(right); break; 184 case Key_Right: move(right); break;
187 case Key_Down: move(down); break; 185 case Key_Down: move(down); break;
188 } 186 }
189 detectCrash(); 187 detectCrash();
190} 188}
191 189
192void Snake::detectCrash() 190void Snake::detectCrash()
193{ 191{
194 QCanvasSprite* head = snakelist.first(); 192 QCanvasSprite* head = snakelist.first();
195 QCanvasItem* item; 193 QCanvasItem* item;
196 QCanvasItemList l=head->collisions(FALSE); 194 QCanvasItemList l=head->collisions(FALSE);
197 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) { 195 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) {
198 item = *it; 196 item = *it;
199 // check if snake hit target 197 // check if snake hit target
200 if ( (item->rtti()== 1500 ) && (item->collidesWith(head)) ) { 198 if ( (item->rtti()== 1500 ) && (item->collidesWith(head)) ) {
201 Target* target = (Target*) item; 199 Target* target = (Target*) item;
202 target->done(); 200 target->done();
203 emit targethit(); 201 emit targethit();
204 extendSnake(); 202 extendSnake();
205 setScore(5); 203 setScore(5);
206 return; 204 return;
207 } 205 }
208 // check if snake hit obstacles 206 // check if snake hit obstacles
209 if ( (item->rtti()==1600) && (item->collidesWith(head)) ) { 207 if ( (item->rtti()==1600) && (item->collidesWith(head)) ) {
210 emit dead(); 208 emit dead();
211 autoMoveTimer->stop(); 209 autoMoveTimer->stop();
212 return; 210 return;
213 } 211 }
214 } 212 }
215 //check if snake hit itself 213 //check if snake hit itself
216 for (uint i = 3; i < snakelist.count(); i++) { 214 for (uint i = 3; i < snakelist.count(); i++) {
217 if (head->collidesWith(snakelist.at(i)) ) { 215 if (head->collidesWith(snakelist.at(i)) ) {
218 emit dead(); 216 emit dead();
219 autoMoveTimer->stop(); 217 autoMoveTimer->stop();
diff --git a/noncore/games/solitaire/canvascard.cpp b/noncore/games/solitaire/canvascard.cpp
index 7c4a5ba..c36da6c 100644
--- a/noncore/games/solitaire/canvascard.cpp
+++ b/noncore/games/solitaire/canvascard.cpp
@@ -1,221 +1,216 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "cardgame.h"
22#include "canvascard.h" 21#include "canvascard.h"
23 22
24#include <qpe/resource.h> 23#include <qpe/resource.h>
25 24
26#include <qpainter.h>
27#include <qimage.h>
28#include <qpaintdevice.h>
29#include <qbitmap.h>
30#include <qgfx_qws.h> // Needed to get the device's width 25#include <qgfx_qws.h> // Needed to get the device's width
31 26
32#include <math.h> 27#include <math.h>
33 28
34#if defined( QT_QWS_CASSIOPEIA ) 29#if defined( QT_QWS_CASSIOPEIA )
35#define SLOW_HARDWARE 30#define SLOW_HARDWARE
36#endif 31#endif
37 32
38// Seems to be fast enough to me even without Transformations in the library 33// Seems to be fast enough to me even without Transformations in the library
39//#if defined( QT_NO_TRANSFORMATIONS ) && defined( QT_QWS_IPAQ ) 34//#if defined( QT_NO_TRANSFORMATIONS ) && defined( QT_QWS_IPAQ )
40//#define SLOW_HARDWARE 35//#define SLOW_HARDWARE
41//#endif 36//#endif
42 37
43 38
44QBitmap *Create180RotatedBitmap(QBitmap *srcBitmap) 39QBitmap *Create180RotatedBitmap(QBitmap *srcBitmap)
45{ 40{
46#ifdef QT_NO_TRANSFORMATIONS 41#ifdef QT_NO_TRANSFORMATIONS
47 int w = srcBitmap->width(); 42 int w = srcBitmap->width();
48 int h = srcBitmap->height(); 43 int h = srcBitmap->height();
49 QBitmap *dstBitmap = new QBitmap( w, h ); 44 QBitmap *dstBitmap = new QBitmap( w, h );
50 // ### this is very poorly implemented and probably could be much faster 45 // ### this is very poorly implemented and probably could be much faster
51 for (int i = 0; i < w; i++) 46 for (int i = 0; i < w; i++)
52 for (int j = 0; j < h; j++) 47 for (int j = 0; j < h; j++)
53 bitBlt( dstBitmap, i, j, srcBitmap, w - i - 1, h - j - 1, 1, 1 ); 48 bitBlt( dstBitmap, i, j, srcBitmap, w - i - 1, h - j - 1, 1, 1 );
54 return dstBitmap; 49 return dstBitmap;
55#else 50#else
56 QWMatrix m; 51 QWMatrix m;
57 m.rotate( 180.0 ); 52 m.rotate( 180.0 );
58 return new QBitmap( srcBitmap->xForm( m ) ); 53 return new QBitmap( srcBitmap->xForm( m ) );
59#endif 54#endif
60} 55}
61 56
62 57
63QPixmap *CreateScaledPixmap(QPixmap *srcPixmap, double scaleX, double scaleY) 58QPixmap *CreateScaledPixmap(QPixmap *srcPixmap, double scaleX, double scaleY)
64{ 59{
65#ifdef QT_NO_TRANSFORMATIONS 60#ifdef QT_NO_TRANSFORMATIONS
66 int w = srcPixmap->width(); 61 int w = srcPixmap->width();
67 int h = srcPixmap->height(); 62 int h = srcPixmap->height();
68 int newW = (int)(w * scaleX); 63 int newW = (int)(w * scaleX);
69 int newH = (int)(h * scaleY); 64 int newH = (int)(h * scaleY);
70 QPixmap *dstPixmap = new QPixmap( newW, newH ); 65 QPixmap *dstPixmap = new QPixmap( newW, newH );
71 // ### this is very poorly implemented and probably could be much faster 66 // ### this is very poorly implemented and probably could be much faster
72 for (int i = 0; i < newW; i++) { 67 for (int i = 0; i < newW; i++) {
73 int srcX = w * i / newW; 68 int srcX = w * i / newW;
74 if (newH == h) { 69 if (newH == h) {
75 // Optimise for scaleing in the X-axis only 70 // Optimise for scaleing in the X-axis only
76 bitBlt( dstPixmap, i, 0, srcPixmap, srcX, 0, 1, h ); 71 bitBlt( dstPixmap, i, 0, srcPixmap, srcX, 0, 1, h );
77 } else { 72 } else {
78 for (int j = 0; j < newH; j++) { 73 for (int j = 0; j < newH; j++) {
79 int srcY = h * j / newH; 74 int srcY = h * j / newH;
80 bitBlt( dstPixmap, i, j, srcPixmap, srcX, srcY, 1, 1 ); 75 bitBlt( dstPixmap, i, j, srcPixmap, srcX, srcY, 1, 1 );
81 } 76 }
82 } 77 }
83 } 78 }
84 return dstPixmap; 79 return dstPixmap;
85#else 80#else
86 QWMatrix s; 81 QWMatrix s;
87 s.scale( scaleX, scaleY ); 82 s.scale( scaleX, scaleY );
88 return new QPixmap( srcPixmap->xForm( s ) ); 83 return new QPixmap( srcPixmap->xForm( s ) );
89#endif 84#endif
90} 85}
91 86
92 87
93// Initialise static member variables to NULL 88// Initialise static member variables to NULL
94QPixmap *CanvasCard::cardsFaces = NULL; 89QPixmap *CanvasCard::cardsFaces = NULL;
95QPixmap *CanvasCard::cardsBacks = NULL; 90QPixmap *CanvasCard::cardsBacks = NULL;
96QBitmap *CanvasCard::cardsChars = NULL; 91QBitmap *CanvasCard::cardsChars = NULL;
97QBitmap *CanvasCard::cardsSuits = NULL; 92QBitmap *CanvasCard::cardsSuits = NULL;
98QBitmap *CanvasCard::cardsCharsUpsideDown = NULL; 93QBitmap *CanvasCard::cardsCharsUpsideDown = NULL;
99QBitmap *CanvasCard::cardsSuitsUpsideDown = NULL; 94QBitmap *CanvasCard::cardsSuitsUpsideDown = NULL;
100 95
101 96
102CanvasCard::CanvasCard( eValue v, eSuit s, bool f, QCanvas *canvas ) : 97CanvasCard::CanvasCard( eValue v, eSuit s, bool f, QCanvas *canvas ) :
103 Card(v, s, f), QCanvasRectangle( 0, 0, 1, 1, canvas ), cardBack(1), scaleX(1.0), scaleY(1.0) 98 Card(v, s, f), QCanvasRectangle( 0, 0, 1, 1, canvas ), cardBack(1), scaleX(1.0), scaleY(1.0)
104{ 99{
105 if ( !cardsFaces ) { 100 if ( !cardsFaces ) {
106 if ( qt_screen->deviceWidth() < 200 ) { 101 if ( qt_screen->deviceWidth() < 200 ) {
107 cardsFaces = new QPixmap( Resource::loadPixmap( "cards/card_face_small" ) ); 102 cardsFaces = new QPixmap( Resource::loadPixmap( "cards/card_face_small" ) );
108 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001_small" ) ); 103 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001_small" ) );
109 cardsChars = new QBitmap( Resource::loadBitmap( "cards/card_chars_small" ) ); 104 cardsChars = new QBitmap( Resource::loadBitmap( "cards/card_chars_small" ) );
110 cardsSuits = new QBitmap( Resource::loadBitmap( "cards/card_suits_small" ) ); 105 cardsSuits = new QBitmap( Resource::loadBitmap( "cards/card_suits_small" ) );
111 } else { 106 } else {
112 cardsFaces = new QPixmap( Resource::loadPixmap( "cards/card_face" ) ); 107 cardsFaces = new QPixmap( Resource::loadPixmap( "cards/card_face" ) );
113 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) ); 108 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) );
114 cardsChars = new QBitmap( Resource::loadBitmap( "cards/card_chars" ) ); 109 cardsChars = new QBitmap( Resource::loadBitmap( "cards/card_chars" ) );
115 cardsSuits = new QBitmap( Resource::loadBitmap( "cards/card_suits" ) ); 110 cardsSuits = new QBitmap( Resource::loadBitmap( "cards/card_suits" ) );
116 } 111 }
117 cardsCharsUpsideDown = Create180RotatedBitmap( cardsChars ); 112 cardsCharsUpsideDown = Create180RotatedBitmap( cardsChars );
118 cardsSuitsUpsideDown = Create180RotatedBitmap( cardsSuits ); 113 cardsSuitsUpsideDown = Create180RotatedBitmap( cardsSuits );
119 } 114 }
120 xOff = cardsFaces->width() / 2; 115 xOff = cardsFaces->width() / 2;
121 yOff = cardsFaces->height() / 2; 116 yOff = cardsFaces->height() / 2;
122 setSize( cardsFaces->width(), cardsFaces->height() ); 117 setSize( cardsFaces->width(), cardsFaces->height() );
123 setPen( NoPen ); 118 setPen( NoPen );
124 flipping = FALSE; 119 flipping = FALSE;
125} 120}
126 121
127 122
128void CanvasCard::setCardBack(int b) 123void CanvasCard::setCardBack(int b)
129{ 124{
130 if ( cardBack != b ) { 125 if ( cardBack != b ) {
131 126
132 cardBack = b; 127 cardBack = b;
133 128
134 if ( cardsBacks ) 129 if ( cardsBacks )
135 delete cardsBacks; 130 delete cardsBacks;
136 131
137 if ( qt_screen->deviceWidth() < 200 ) { 132 if ( qt_screen->deviceWidth() < 200 ) {
138 switch (cardBack) { 133 switch (cardBack) {
139 case 0: 134 case 0:
140 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001_small" ) ); break; 135 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001_small" ) ); break;
141 case 1: 136 case 1:
142 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0002_small" ) ); break; 137 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0002_small" ) ); break;
143 case 2: 138 case 2:
144 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0003_small" ) ); break; 139 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0003_small" ) ); break;
145 case 3: 140 case 3:
146 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0004_small" ) ); break; 141 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0004_small" ) ); break;
147 case 4: 142 case 4:
148 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0005_small" ) ); break; 143 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0005_small" ) ); break;
149 } 144 }
150 } else { 145 } else {
151 switch (cardBack) { 146 switch (cardBack) {
152 case 0: 147 case 0:
153 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) ); break; 148 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) ); break;
154 case 1: 149 case 1:
155 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0002" ) ); break; 150 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0002" ) ); break;
156 case 2: 151 case 2:
157 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0003" ) ); break; 152 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0003" ) ); break;
158 case 3: 153 case 3:
159 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0004" ) ); break; 154 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0004" ) ); break;
160 case 4: 155 case 4:
161 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0005" ) ); break; 156 cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0005" ) ); break;
162 } 157 }
163 } 158 }
164 159
165 if ( !isFacing() ) 160 if ( !isFacing() )
166 redraw(); 161 redraw();
167 } 162 }
168} 163}
169 164
170 165
171void CanvasCard::draw(QPainter &painter) 166void CanvasCard::draw(QPainter &painter)
172{ 167{
173 int ix = (int)x(), iy = (int)y(); 168 int ix = (int)x(), iy = (int)y();
174 169
175 QPainter *p = &painter; 170 QPainter *p = &painter;
176 QPixmap *unscaledCard = NULL; 171 QPixmap *unscaledCard = NULL;
177 172
178 if ((scaleX <= 0.98) || (scaleY <= 0.98)) 173 if ((scaleX <= 0.98) || (scaleY <= 0.98))
179 { 174 {
180 p = new QPainter(); 175 p = new QPainter();
181 unscaledCard = new QPixmap( cardsFaces->width(), cardsFaces->height() ); 176 unscaledCard = new QPixmap( cardsFaces->width(), cardsFaces->height() );
182 p->begin(unscaledCard); 177 p->begin(unscaledCard);
183 ix = 0; 178 ix = 0;
184 iy = 0; 179 iy = 0;
185 } 180 }
186 181
187 if ( isFacing() ) { 182 if ( isFacing() ) {
188 183
189/* 184/*
190 // Now add the joker and card backs to the list of pixmaps 185 // Now add the joker and card backs to the list of pixmaps
191 QPixmap *CardsBack = new QPixmap( Resource::loadPixmap( "cards/card_joker.png" ) ); 186 QPixmap *CardsBack = new QPixmap( Resource::loadPixmap( "cards/card_joker.png" ) );
192 QPoint *newBackHotspot = new QPoint( 0, 0 ); 187 QPoint *newBackHotspot = new QPoint( 0, 0 );
193 pixmaps->append((const QPixmap *)CardsBack); 188 pixmaps->append((const QPixmap *)CardsBack);
194 hotspots->append((const QPoint *)newBackHotspot); 189 hotspots->append((const QPoint *)newBackHotspot);
195*/ 190*/
196 191
197 int w = cardsFaces->width(), h = cardsFaces->height(); 192 int w = cardsFaces->width(), h = cardsFaces->height();
198 193
199 //p->setBrush( NoBrush ); 194 //p->setBrush( NoBrush );
200 p->setBrush( QColor( 0xFF, 0xFF, 0xFF ) ); 195 p->setBrush( QColor( 0xFF, 0xFF, 0xFF ) );
201 196
202 if ( isRed() == TRUE ) 197 if ( isRed() == TRUE )
203 p->setPen( QColor( 0xFF, 0, 0 ) ); 198 p->setPen( QColor( 0xFF, 0, 0 ) );
204 else 199 else
205 p->setPen( QColor( 0, 0, 0 ) ); 200 p->setPen( QColor( 0, 0, 0 ) );
206 201
207 if ( qt_screen->deviceWidth() < 200 ) { 202 if ( qt_screen->deviceWidth() < 200 ) {
208 p->drawPixmap( ix + 0, iy + 0, *cardsFaces ); 203 p->drawPixmap( ix + 0, iy + 0, *cardsFaces );
209 p->drawPixmap( ix + 3, iy + 3, *cardsChars, 5*(getValue()-1), 0, 5, 6 ); 204 p->drawPixmap( ix + 3, iy + 3, *cardsChars, 5*(getValue()-1), 0, 5, 6 );
210 p->drawPixmap( ix + 11, iy + 3, *cardsSuits, 5*(getSuit()-1), 0, 5, 6 ); 205 p->drawPixmap( ix + 11, iy + 3, *cardsSuits, 5*(getSuit()-1), 0, 5, 6 );
211 p->drawPixmap( ix + w-3-5, iy + h-3-6, *cardsCharsUpsideDown, 5*(12-getValue()+1), 0, 5, 6 ); 206 p->drawPixmap( ix + w-3-5, iy + h-3-6, *cardsCharsUpsideDown, 5*(12-getValue()+1), 0, 5, 6 );
212 p->drawPixmap( ix + w-11-5, iy + h-3-6, *cardsSuitsUpsideDown, 5*(3-getSuit()+1), 0, 5, 6 ); 207 p->drawPixmap( ix + w-11-5, iy + h-3-6, *cardsSuitsUpsideDown, 5*(3-getSuit()+1), 0, 5, 6 );
213 } else { 208 } else {
214 p->drawPixmap( ix + 0, iy + 0, *cardsFaces ); 209 p->drawPixmap( ix + 0, iy + 0, *cardsFaces );
215 p->drawPixmap( ix + 4, iy + 4, *cardsChars, 7*(getValue()-1), 0, 7, 7 ); 210 p->drawPixmap( ix + 4, iy + 4, *cardsChars, 7*(getValue()-1), 0, 7, 7 );
216 p->drawPixmap( ix + 12, iy + 4, *cardsSuits, 7*(getSuit()-1), 0, 7, 8 ); 211 p->drawPixmap( ix + 12, iy + 4, *cardsSuits, 7*(getSuit()-1), 0, 7, 8 );
217 p->drawPixmap( ix + w-4-7, iy + h-4-7, *cardsCharsUpsideDown, 7*(12-getValue()+1), 0, 7, 7 ); 212 p->drawPixmap( ix + w-4-7, iy + h-4-7, *cardsCharsUpsideDown, 7*(12-getValue()+1), 0, 7, 7 );
218 p->drawPixmap( ix + w-12-7, iy + h-5-7, *cardsSuitsUpsideDown, 7*(3-getSuit()+1), 0, 7, 8 ); 213 p->drawPixmap( ix + w-12-7, iy + h-5-7, *cardsSuitsUpsideDown, 7*(3-getSuit()+1), 0, 7, 8 );
219 } 214 }
220 215
221 } else { 216 } else {
diff --git a/noncore/games/solitaire/canvascardgame.cpp b/noncore/games/solitaire/canvascardgame.cpp
index 9ae2a23..ed5748e 100644
--- a/noncore/games/solitaire/canvascardgame.cpp
+++ b/noncore/games/solitaire/canvascardgame.cpp
@@ -1,223 +1,215 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "cardgame.h"
22#include "canvasshapes.h"
23#include "canvascard.h"
24#include "canvascardgame.h" 21#include "canvascardgame.h"
25 22
26#include <qpe/resource.h>
27#include <qpe/config.h>
28 23
29#include <qmainwindow.h>
30#include <qmenubar.h>
31#include <qpainter.h>
32#include <qgfx_qws.h> 24#include <qgfx_qws.h>
33 25
34#include <stdlib.h> 26#include <stdlib.h>
35#include <limits.h> 27#include <limits.h>
36#include <time.h> 28#include <time.h>
37#include <math.h> 29#include <math.h>
38 30
39 31
40extern int highestZ; 32extern int highestZ;
41 33
42 34
43class CanvasCardPile : public QCanvasRectangle 35class CanvasCardPile : public QCanvasRectangle
44{ 36{
45public: 37public:
46 CanvasCardPile( CanvasCardGame *ccg, QCanvas *canvas ) : QCanvasRectangle( canvas ), parent( ccg ) { 38 CanvasCardPile( CanvasCardGame *ccg, QCanvas *canvas ) : QCanvasRectangle( canvas ), parent( ccg ) {
47 pile = new QPixmap( 0, 0 ); 39 pile = new QPixmap( 0, 0 );
48 pileHeight = 0; 40 pileHeight = 0;
49 firstCard = NULL; 41 firstCard = NULL;
50 } 42 }
51 43
52 void addCard( CanvasCard *card ); 44 void addCard( CanvasCard *card );
53 void advance(int stage); 45 void advance(int stage);
54 void animatedMove() { animatedMove(savedX, savedY); } 46 void animatedMove() { animatedMove(savedX, savedY); }
55 void savePos(void) { savedX = (int)x(); savedY = (int)y(); } 47 void savePos(void) { savedX = (int)x(); savedY = (int)y(); }
56 void animatedMove(int x2, int y2, int steps = 7 ); 48 void animatedMove(int x2, int y2, int steps = 7 );
57 49
58protected: 50protected:
59 virtual void draw( QPainter& p ); 51 virtual void draw( QPainter& p );
60 52
61private: 53private:
62 CanvasCardGame *parent; 54 CanvasCardGame *parent;
63 QPixmap *pile; 55 QPixmap *pile;
64 QImage tempImage32; 56 QImage tempImage32;
65 CanvasCard *firstCard; 57 CanvasCard *firstCard;
66 int pileHeight; 58 int pileHeight;
67 int destX, destY; 59 int destX, destY;
68 int savedX, savedY; 60 int savedX, savedY;
69 int animSteps; 61 int animSteps;
70}; 62};
71 63
72 64
73void CanvasCardPile::addCard( CanvasCard *card ) 65void CanvasCardPile::addCard( CanvasCard *card )
74{ 66{
75 int offsetDown = ( qt_screen->deviceWidth() < 200 ) ? 9 : 13; 67 int offsetDown = ( qt_screen->deviceWidth() < 200 ) ? 9 : 13;
76 int cardHeight = ( qt_screen->deviceWidth() < 200 ) ? 27 : 36; 68 int cardHeight = ( qt_screen->deviceWidth() < 200 ) ? 27 : 36;
77 int cardWidth = ( qt_screen->deviceWidth() < 200 ) ? 20 : 23; 69 int cardWidth = ( qt_screen->deviceWidth() < 200 ) ? 20 : 23;
78 70
79 if ( !firstCard ) 71 if ( !firstCard )
80 firstCard = card; 72 firstCard = card;
81 73
82 int height = cardHeight + pileHeight * offsetDown; 74 int height = cardHeight + pileHeight * offsetDown;
83 setSize( cardWidth, height ); 75 setSize( cardWidth, height );
84 pile->resize( cardWidth, height ); 76 pile->resize( cardWidth, height );
85 QPainter p( pile ); 77 QPainter p( pile );
86 p.translate( -card->x(), -card->y() + pileHeight * offsetDown ); 78 p.translate( -card->x(), -card->y() + pileHeight * offsetDown );
87 card->draw( p ); 79 card->draw( p );
88 pileHeight++; 80 pileHeight++;
89 81
90 QImage tempImage; 82 QImage tempImage;
91 tempImage = *pile; 83 tempImage = *pile;
92 tempImage32 = tempImage.convertDepth( 32 ); 84 tempImage32 = tempImage.convertDepth( 32 );
93 tempImage32.setAlphaBuffer( TRUE ); 85 tempImage32.setAlphaBuffer( TRUE );
94 for ( int i = 0; i < tempImage32.width(); i++ ) 86 for ( int i = 0; i < tempImage32.width(); i++ )
95 for ( int j = 0; j < tempImage32.height(); j++ ) { 87 for ( int j = 0; j < tempImage32.height(); j++ ) {
96 QRgb col = tempImage32.pixel( i, j ); 88 QRgb col = tempImage32.pixel( i, j );
97 int a = 255-j*220/tempImage32.height(); 89 int a = 255-j*220/tempImage32.height();
98 QRgb alpha = qRgba( qRed( col ), qGreen( col ), qBlue( col ), a ); 90 QRgb alpha = qRgba( qRed( col ), qGreen( col ), qBlue( col ), a );
99 tempImage32.setPixel( i, j, alpha ); 91 tempImage32.setPixel( i, j, alpha );
100 } 92 }
101 93
102 QRgb alpha = qRgba( 0, 0, 0, 0 ); 94 QRgb alpha = qRgba( 0, 0, 0, 0 );
103 tempImage32.setPixel( 1, 0, alpha ); 95 tempImage32.setPixel( 1, 0, alpha );
104 tempImage32.setPixel( 0, 0, alpha ); 96 tempImage32.setPixel( 0, 0, alpha );
105 tempImage32.setPixel( 0, 1, alpha ); 97 tempImage32.setPixel( 0, 1, alpha );
106 98
107 tempImage32.setPixel( cardWidth - 2, 0, alpha ); 99 tempImage32.setPixel( cardWidth - 2, 0, alpha );
108 tempImage32.setPixel( cardWidth - 1, 0, alpha ); 100 tempImage32.setPixel( cardWidth - 1, 0, alpha );
109 tempImage32.setPixel( cardWidth - 1, 1, alpha ); 101 tempImage32.setPixel( cardWidth - 1, 1, alpha );
110 height--; 102 height--;
111 tempImage32.setPixel( 1, height, alpha ); 103 tempImage32.setPixel( 1, height, alpha );
112 tempImage32.setPixel( 0, height - 1, alpha ); 104 tempImage32.setPixel( 0, height - 1, alpha );
113 tempImage32.setPixel( 0, height, alpha ); 105 tempImage32.setPixel( 0, height, alpha );
114 106
115 tempImage32.setPixel( cardWidth - 2, height, alpha ); 107 tempImage32.setPixel( cardWidth - 2, height, alpha );
116 tempImage32.setPixel( cardWidth - 1, height, alpha ); 108 tempImage32.setPixel( cardWidth - 1, height, alpha );
117 tempImage32.setPixel( cardWidth - 1, height - 1, alpha ); 109 tempImage32.setPixel( cardWidth - 1, height - 1, alpha );
118} 110}
119 111
120 112
121void CanvasCardPile::advance(int stage) 113void CanvasCardPile::advance(int stage)
122{ 114{
123 if ( stage==1 ) { 115 if ( stage==1 ) {
124 if ( animSteps-- <= 0 ) { 116 if ( animSteps-- <= 0 ) {
125 CanvasCard *item = firstCard; 117 CanvasCard *item = firstCard;
126 while (item) { 118 while (item) {
127 item->show(); 119 item->show();
128 item = (CanvasCard *)item->getCardPile()->cardInfront(item); 120 item = (CanvasCard *)item->getCardPile()->cardInfront(item);
129 } 121 }
130 setVelocity(0,0); 122 setVelocity(0,0);
131 setAnimated(FALSE); 123 setAnimated(FALSE);
132 parent->cancelMoving(); 124 parent->cancelMoving();
133 hide(); 125 hide();
134 move(destX,destY); // exact 126 move(destX,destY); // exact
135 } 127 }
136 } 128 }
137 QCanvasRectangle::advance(stage); 129 QCanvasRectangle::advance(stage);
138} 130}
139 131
140 132
141void CanvasCardPile::animatedMove(int x2, int y2, int steps ) 133void CanvasCardPile::animatedMove(int x2, int y2, int steps )
142{ 134{
143 destX = x2; 135 destX = x2;
144 destY = y2; 136 destY = y2;
145 137
146 double x1 = x(), y1 = y(), dx = x2 - x1, dy = y2 - y1; 138 double x1 = x(), y1 = y(), dx = x2 - x1, dy = y2 - y1;
147 139
148 // Ensure a good speed 140 // Ensure a good speed
149 while ( fabs(dx/steps)+fabs(dy/steps) < 5.0 && steps > 4 ) 141 while ( fabs(dx/steps)+fabs(dy/steps) < 5.0 && steps > 4 )
150 steps--; 142 steps--;
151 143
152 setAnimated(TRUE); 144 setAnimated(TRUE);
153 setVelocity(dx/steps, dy/steps); 145 setVelocity(dx/steps, dy/steps);
154 146
155 animSteps = steps; 147 animSteps = steps;
156} 148}
157 149
158 150
159void CanvasCardPile::draw( QPainter& p ) 151void CanvasCardPile::draw( QPainter& p )
160{ 152{
161 int ix = (int)x(), iy = (int)y(); 153 int ix = (int)x(), iy = (int)y();
162 p.drawImage( ix, iy, tempImage32 ); 154 p.drawImage( ix, iy, tempImage32 );
163} 155}
164 156
165 157
166CanvasCardGame::~CanvasCardGame() { 158CanvasCardGame::~CanvasCardGame() {
167 // the deletion stuff should be fixed now and only deletes 159 // the deletion stuff should be fixed now and only deletes
168 // items created by this CardGame. I haven't verified there are zero 160 // items created by this CardGame. I haven't verified there are zero
169 // memory leaks yet 161 // memory leaks yet
170 if ( alphaCardPile ) 162 if ( alphaCardPile )
171 delete alphaCardPile; 163 delete alphaCardPile;
172} 164}
173 165
174 166
175void CanvasCardGame::gameWon() { 167void CanvasCardGame::gameWon() {
176 168
177 srand(time(NULL)); 169 srand(time(NULL));
178 170
179 QCanvasItemList list = canvas()->allItems(); 171 QCanvasItemList list = canvas()->allItems();
180 QCanvasItemList::Iterator it = list.begin(); 172 QCanvasItemList::Iterator it = list.begin();
181 173
182 for (; it != list.end(); ++it) { 174 for (; it != list.end(); ++it) {
183 if ( (*it)->rtti() == canvasCardId ) { 175 if ( (*it)->rtti() == canvasCardId ) {
184 // disperse the cards everywhere 176 // disperse the cards everywhere
185 int x = 300 - rand() % 1000; 177 int x = 300 - rand() % 1000;
186 int y = 300 + rand() % 200; 178 int y = 300 + rand() % 200;
187 ((CanvasCard *)*it)->animatedMove( x, y, 50 ); 179 ((CanvasCard *)*it)->animatedMove( x, y, 50 );
188 } 180 }
189 } 181 }
190} 182}
191 183
192 184
193void CanvasCardGame::contentsMousePressEvent(QMouseEvent *e) { 185void CanvasCardGame::contentsMousePressEvent(QMouseEvent *e) {
194 186
195 if ( moving ) 187 if ( moving )
196 return; 188 return;
197 189
198 QCanvasItemList l = canvas()->collisions( e->pos() ); 190 QCanvasItemList l = canvas()->collisions( e->pos() );
199 191
200 for (QCanvasItemList::Iterator it = l.begin(); it != l.end(); ++it) { 192 for (QCanvasItemList::Iterator it = l.begin(); it != l.end(); ++it) {
201 193
202 if ( (*it)->rtti() == canvasCardId ) { 194 if ( (*it)->rtti() == canvasCardId ) {
203 195
204 moving = (CanvasCard *)*it; 196 moving = (CanvasCard *)*it;
205 197
206 if ( moving->animated() ) 198 if ( moving->animated() )
207 return; 199 return;
208 200
209 cardXOff = (int)(e->pos().x() - moving->x()); 201 cardXOff = (int)(e->pos().x() - moving->x());
210 cardYOff = (int)(e->pos().y() - moving->y()); 202 cardYOff = (int)(e->pos().y() - moving->y());
211 203
212 if ( !mousePressCard( moving, e->pos() ) ) { 204 if ( !mousePressCard( moving, e->pos() ) ) {
213 CanvasCard *card = moving; 205 CanvasCard *card = moving;
214 206
215 if ( alphaCardPile ) 207 if ( alphaCardPile )
216 delete alphaCardPile; 208 delete alphaCardPile;
217 209
218 alphaCardPile = new CanvasCardPile( this, canvas() ); 210 alphaCardPile = new CanvasCardPile( this, canvas() );
219 alphaCardPile->move( card->x(), card->y() ); 211 alphaCardPile->move( card->x(), card->y() );
220 alphaCardPile->savePos(); 212 alphaCardPile->savePos();
221 alphaCardPile->show(); 213 alphaCardPile->show();
222 214
223 while (card) { 215 while (card) {
diff --git a/noncore/games/solitaire/canvascardwindow.cpp b/noncore/games/solitaire/canvascardwindow.cpp
index c12344a..503bc92 100644
--- a/noncore/games/solitaire/canvascardwindow.cpp
+++ b/noncore/games/solitaire/canvascardwindow.cpp
@@ -1,224 +1,219 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "canvascardwindow.h" 21#include "canvascardwindow.h"
22#include "patiencecardgame.h"
23#include "freecellcardgame.h" 22#include "freecellcardgame.h"
24#include "chicanecardgame.h" 23#include "chicanecardgame.h"
25#include "harpcardgame.h" 24#include "harpcardgame.h"
26#include "teeclubcardgame.h" 25#include "teeclubcardgame.h"
27 26
28#include <qpe/resource.h>
29 27
30#include <qmainwindow.h>
31#include <qpopupmenu.h>
32#include <qstyle.h>
33 28
34 29
35CanvasCardWindow::CanvasCardWindow(QWidget* parent, const char* name, WFlags f) : 30CanvasCardWindow::CanvasCardWindow(QWidget* parent, const char* name, WFlags f) :
36 QMainWindow(parent, name, f), canvas(230, 260), snapOn(TRUE), cardBack(4), gameType(0), 31 QMainWindow(parent, name, f), canvas(230, 260), snapOn(TRUE), cardBack(4), gameType(0),
37 cardGame(NULL) 32 cardGame(NULL)
38{ 33{
39 setIcon( Resource::loadPixmap( "cards" ) ); 34 setIcon( Resource::loadPixmap( "cards" ) );
40 setCaption(tr("Patience")); 35 setCaption(tr("Patience"));
41 36
42 // Create Playing Area for Games 37 // Create Playing Area for Games
43 if ( QPixmap::defaultDepth() < 12 ) { 38 if ( QPixmap::defaultDepth() < 12 ) {
44// canvas.setBackgroundColor(QColor(0x51, 0x74, 0x6B)); 39// canvas.setBackgroundColor(QColor(0x51, 0x74, 0x6B));
45// canvas.setBackgroundColor(QColor(0x20, 0xb0, 0x50)); 40// canvas.setBackgroundColor(QColor(0x20, 0xb0, 0x50));
46 canvas.setBackgroundColor(QColor(0x08, 0x98, 0x2D)); 41 canvas.setBackgroundColor(QColor(0x08, 0x98, 0x2D));
47 } else { 42 } else {
48 QPixmap bg; 43 QPixmap bg;
49 bg.convertFromImage( Resource::loadImage( "table_pattern" ), ThresholdDither ); 44 bg.convertFromImage( Resource::loadImage( "table_pattern" ), ThresholdDither );
50 canvas.setBackgroundPixmap(bg); 45 canvas.setBackgroundPixmap(bg);
51 } 46 }
52 47
53#if defined( QT_QWS_CASSIOPEIA ) 48#if defined( QT_QWS_CASSIOPEIA )
54 canvas.setAdvancePeriod(70); 49 canvas.setAdvancePeriod(70);
55#else 50#else
56 canvas.setAdvancePeriod(30); 51 canvas.setAdvancePeriod(30);
57#endif 52#endif
58 53
59 54
60#ifdef _PATIENCE_USE_ACCELS_ 55#ifdef _PATIENCE_USE_ACCELS_
61 QMenuBar* menu = menuBar(); 56 QMenuBar* menu = menuBar();
62 57
63 QPopupMenu* file = new QPopupMenu; 58 QPopupMenu* file = new QPopupMenu;
64 file->insertItem(tr("Patience"), this, SLOT(initPatience()), CTRL+Key_F); 59 file->insertItem(tr("Patience"), this, SLOT(initPatience()), CTRL+Key_F);
65 file->insertItem(tr("Freecell"), this, SLOT(initFreecell()), CTRL+Key_F); 60 file->insertItem(tr("Freecell"), this, SLOT(initFreecell()), CTRL+Key_F);
66 file->insertItem(tr("Chicane"), this, SLOT(initChicane()), CTRL+Key_F); 61 file->insertItem(tr("Chicane"), this, SLOT(initChicane()), CTRL+Key_F);
67 file->insertItem(tr("Harp"), this, SLOT(initHarp()), CTRL+Key_F); 62 file->insertItem(tr("Harp"), this, SLOT(initHarp()), CTRL+Key_F);
68 file->insertItem(tr("Teeclub"), this, SLOT(initTeeclub()), CTRL+Key_F); 63 file->insertItem(tr("Teeclub"), this, SLOT(initTeeclub()), CTRL+Key_F);
69 menu->insertItem(tr("&Game"), file); 64 menu->insertItem(tr("&Game"), file);
70 65
71 menu->insertSeparator(); 66 menu->insertSeparator();
72 67
73 settings = new QPopupMenu; 68 settings = new QPopupMenu;
74 settings->insertItem(tr("&Change card backs"), this, SLOT(changeCardBacks()), Key_F2); 69 settings->insertItem(tr("&Change card backs"), this, SLOT(changeCardBacks()), Key_F2);
75 snap_id = settings->insertItem(tr("&Snap to position"), this, SLOT(snapToggle()), Key_F3); 70 snap_id = settings->insertItem(tr("&Snap to position"), this, SLOT(snapToggle()), Key_F3);
76 settings->setCheckable(TRUE); 71 settings->setCheckable(TRUE);
77 menu->insertItem(tr("&Settings"),settings); 72 menu->insertItem(tr("&Settings"),settings);
78 73
79 menu->insertSeparator(); 74 menu->insertSeparator();
80 75
81 QPopupMenu* help = new QPopupMenu; 76 QPopupMenu* help = new QPopupMenu;
82 help->insertItem(tr("&About"), this, SLOT(help()), Key_F1); 77 help->insertItem(tr("&About"), this, SLOT(help()), Key_F1);
83 help->setItemChecked(dbf_id, TRUE); 78 help->setItemChecked(dbf_id, TRUE);
84 menu->insertItem(tr("&Help"),help); 79 menu->insertItem(tr("&Help"),help);
85#else 80#else
86 QMenuBar* menu = menuBar(); 81 QMenuBar* menu = menuBar();
87 82
88 QPopupMenu* file = new QPopupMenu; 83 QPopupMenu* file = new QPopupMenu;
89 file->insertItem(tr("Patience"), this, SLOT(initPatience())); 84 file->insertItem(tr("Patience"), this, SLOT(initPatience()));
90 file->insertItem(tr("Freecell"), this, SLOT(initFreecell())); 85 file->insertItem(tr("Freecell"), this, SLOT(initFreecell()));
91 file->insertItem(tr("Chicane"), this, SLOT(initChicane())); 86 file->insertItem(tr("Chicane"), this, SLOT(initChicane()));
92 file->insertItem(tr("Harp"), this, SLOT(initHarp())); 87 file->insertItem(tr("Harp"), this, SLOT(initHarp()));
93 file->insertItem(tr("Teeclub"), this, SLOT(initTeeclub())); 88 file->insertItem(tr("Teeclub"), this, SLOT(initTeeclub()));
94 menu->insertItem(tr("Play"), file); 89 menu->insertItem(tr("Play"), file);
95 90
96 menu->insertSeparator(); 91 menu->insertSeparator();
97 92
98 settings = new QPopupMenu; 93 settings = new QPopupMenu;
99 settings->setCheckable(TRUE); 94 settings->setCheckable(TRUE);
100 settings->insertItem(tr("Change card backs"), this, SLOT(changeCardBacks())); 95 settings->insertItem(tr("Change card backs"), this, SLOT(changeCardBacks()));
101 snap_id = settings->insertItem(tr("Snap to position"), this, SLOT(snapToggle())); 96 snap_id = settings->insertItem(tr("Snap to position"), this, SLOT(snapToggle()));
102 QString m; 97 QString m;
103 98
104 drawId = settings->insertItem(tr("Turn one card"), this, SLOT(drawnToggle())); 99 drawId = settings->insertItem(tr("Turn one card"), this, SLOT(drawnToggle()));
105 menu->insertItem(tr("Settings"),settings); 100 menu->insertItem(tr("Settings"),settings);
106 settings->setCheckable(TRUE); 101 settings->setCheckable(TRUE);
107 102
108#endif 103#endif
109 104
110 menu->show(); 105 menu->show();
111 106
112 Config cfg( "Patience" ); 107 Config cfg( "Patience" );
113 cfg.setGroup( "GlobalSettings" ); 108 cfg.setGroup( "GlobalSettings" );
114 snapOn = cfg.readBoolEntry( "SnapOn", TRUE); 109 snapOn = cfg.readBoolEntry( "SnapOn", TRUE);
115 settings->setItemChecked(snap_id, snapOn); 110 settings->setItemChecked(snap_id, snapOn);
116 111
117 gameType = cfg.readNumEntry( "GameType", -1 ); 112 gameType = cfg.readNumEntry( "GameType", -1 );
118 drawThree = cfg.readBoolEntry( "DrawThree", FALSE); 113 drawThree = cfg.readBoolEntry( "DrawThree", FALSE);
119 if ( gameType == 0 ) { 114 if ( gameType == 0 ) {
120 cardGame = new PatienceCardGame( &canvas, snapOn, this ); 115 cardGame = new PatienceCardGame( &canvas, snapOn, this );
121 cardGame->setNumberToDraw(drawThree ? 3 : 1); 116 cardGame->setNumberToDraw(drawThree ? 3 : 1);
122 117
123 setCaption(tr("Patience")); 118 setCaption(tr("Patience"));
124 setCentralWidget(cardGame); 119 setCentralWidget(cardGame);
125 cardGame->readConfig( cfg ); 120 cardGame->readConfig( cfg );
126 setCardBacks(); 121 setCardBacks();
127 } else if ( gameType == 1 ) { 122 } else if ( gameType == 1 ) {
128 cardGame = new FreecellCardGame( &canvas, snapOn, this ); 123 cardGame = new FreecellCardGame( &canvas, snapOn, this );
129 setCaption(tr("Freecell")); 124 setCaption(tr("Freecell"));
130 setCentralWidget(cardGame); 125 setCentralWidget(cardGame);
131 //cardGame->newGame(); // Until we know how to handle reading freecell config 126 //cardGame->newGame(); // Until we know how to handle reading freecell config
132 cardGame->readConfig( cfg ); 127 cardGame->readConfig( cfg );
133 setCardBacks(); 128 setCardBacks();
134 } else if ( gameType == 2 ) { 129 } else if ( gameType == 2 ) {
135 cardGame = new ChicaneCardGame( &canvas, snapOn, this ); 130 cardGame = new ChicaneCardGame( &canvas, snapOn, this );
136 cardGame->setNumberToDraw(1); 131 cardGame->setNumberToDraw(1);
137 setCaption(tr("Chicane")); 132 setCaption(tr("Chicane"));
138 setCentralWidget(cardGame); 133 setCentralWidget(cardGame);
139 cardGame->readConfig( cfg ); 134 cardGame->readConfig( cfg );
140 setCardBacks(); 135 setCardBacks();
141 } else if ( gameType == 3 ) { 136 } else if ( gameType == 3 ) {
142 cardGame = new HarpCardGame( &canvas, snapOn, this ); 137 cardGame = new HarpCardGame( &canvas, snapOn, this );
143 cardGame->setNumberToDraw(1); 138 cardGame->setNumberToDraw(1);
144 setCaption(tr("Harp")); 139 setCaption(tr("Harp"));
145 setCentralWidget(cardGame); 140 setCentralWidget(cardGame);
146 cardGame->readConfig( cfg ); 141 cardGame->readConfig( cfg );
147 setCardBacks(); 142 setCardBacks();
148 } else if ( gameType == 4 ) { 143 } else if ( gameType == 4 ) {
149 cardGame = new TeeclubCardGame( &canvas, snapOn, this ); 144 cardGame = new TeeclubCardGame( &canvas, snapOn, this );
150 cardGame->setNumberToDraw(1); 145 cardGame->setNumberToDraw(1);
151 setCaption(tr("Teeclub")); 146 setCaption(tr("Teeclub"));
152 setCentralWidget(cardGame); 147 setCentralWidget(cardGame);
153 cardGame->readConfig( cfg ); 148 cardGame->readConfig( cfg );
154 setCardBacks(); 149 setCardBacks();
155 } else { 150 } else {
156 // Probably there isn't a config file or it is broken 151 // Probably there isn't a config file or it is broken
157 // Start a new game 152 // Start a new game
158 initPatience(); 153 initPatience();
159 } 154 }
160 155
161 updateDraw(); 156 updateDraw();
162} 157}
163 158
164 159
165CanvasCardWindow::~CanvasCardWindow() 160CanvasCardWindow::~CanvasCardWindow()
166{ 161{
167 if (cardGame) { 162 if (cardGame) {
168 Config cfg("Patience"); 163 Config cfg("Patience");
169 cfg.setGroup( "GlobalSettings" ); 164 cfg.setGroup( "GlobalSettings" );
170 cfg.writeEntry( "GameType", gameType ); 165 cfg.writeEntry( "GameType", gameType );
171 cfg.writeEntry( "SnapOn", snapOn ); 166 cfg.writeEntry( "SnapOn", snapOn );
172 cfg.writeEntry( "DrawThree", drawThree); 167 cfg.writeEntry( "DrawThree", drawThree);
173 cfg.write(); 168 cfg.write();
174 cardGame->writeConfig( cfg ); 169 cardGame->writeConfig( cfg );
175 delete cardGame; 170 delete cardGame;
176 } 171 }
177} 172}
178 173
179 174
180void CanvasCardWindow::resizeEvent(QResizeEvent *) 175void CanvasCardWindow::resizeEvent(QResizeEvent *)
181{ 176{
182 QSize s = centralWidget()->size(); 177 QSize s = centralWidget()->size();
183 int fw = style().defaultFrameWidth(); 178 int fw = style().defaultFrameWidth();
184 canvas.resize( s.width() - fw - 2, s.height() - fw - 2); 179 canvas.resize( s.width() - fw - 2, s.height() - fw - 2);
185} 180}
186 181
187 182
188void CanvasCardWindow::initPatience() 183void CanvasCardWindow::initPatience()
189{ 184{
190 // Create New Game 185 // Create New Game
191 if ( cardGame ) 186 if ( cardGame )
192 delete cardGame; 187 delete cardGame;
193 cardGame = new PatienceCardGame( &canvas, snapOn, this ); 188 cardGame = new PatienceCardGame( &canvas, snapOn, this );
194 cardGame->setNumberToDraw(drawThree ? 3 : 1); 189 cardGame->setNumberToDraw(drawThree ? 3 : 1);
195 gameType = 0; 190 gameType = 0;
196 setCaption(tr("Patience")); 191 setCaption(tr("Patience"));
197 setCentralWidget(cardGame); 192 setCentralWidget(cardGame);
198 cardGame->newGame(); 193 cardGame->newGame();
199 setCardBacks(); 194 setCardBacks();
200 updateDraw(); 195 updateDraw();
201} 196}
202 197
203 198
204void CanvasCardWindow::initFreecell() 199void CanvasCardWindow::initFreecell()
205{ 200{
206 // Create New Game 201 // Create New Game
207 if ( cardGame ) { 202 if ( cardGame ) {
208 delete cardGame; 203 delete cardGame;
209 } 204 }
210 cardGame = new FreecellCardGame( &canvas, snapOn, this ); 205 cardGame = new FreecellCardGame( &canvas, snapOn, this );
211 gameType = 1; 206 gameType = 1;
212 setCaption(tr("Freecell")); 207 setCaption(tr("Freecell"));
213 setCentralWidget(cardGame); 208 setCentralWidget(cardGame);
214 cardGame->newGame(); 209 cardGame->newGame();
215 setCardBacks(); 210 setCardBacks();
216} 211}
217 212
218 213
219void CanvasCardWindow::initChicane() 214void CanvasCardWindow::initChicane()
220{ 215{
221 // Create New Game 216 // Create New Game
222 if ( cardGame ) { 217 if ( cardGame ) {
223 delete cardGame; 218 delete cardGame;
224 } 219 }
diff --git a/noncore/games/solitaire/canvasshapes.cpp b/noncore/games/solitaire/canvasshapes.cpp
index 6ccd4a4..011958d 100644
--- a/noncore/games/solitaire/canvasshapes.cpp
+++ b/noncore/games/solitaire/canvasshapes.cpp
@@ -1,114 +1,112 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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#include <qpainter.h>
21#include <qcanvas.h>
22#include <qgfx_qws.h> 20#include <qgfx_qws.h>
23#include "canvasshapes.h" 21#include "canvasshapes.h"
24 22
25 23
26CanvasRoundRect::CanvasRoundRect(int x, int y, QCanvas *canvas) : 24CanvasRoundRect::CanvasRoundRect(int x, int y, QCanvas *canvas) :
27 QCanvasRectangle( x, y, ( qt_screen->deviceWidth() < 200 ) ? 20 : 23, ( qt_screen->deviceWidth() < 200 ) ? 27 : 36, canvas) 25 QCanvasRectangle( x, y, ( qt_screen->deviceWidth() < 200 ) ? 20 : 23, ( qt_screen->deviceWidth() < 200 ) ? 27 : 36, canvas)
28{ 26{
29 setZ(0); 27 setZ(0);
30 show(); 28 show();
31} 29}
32 30
33 31
34void CanvasRoundRect::redraw() 32void CanvasRoundRect::redraw()
35{ 33{
36 hide(); 34 hide();
37 show(); 35 show();
38} 36}
39 37
40 38
41void CanvasRoundRect::drawShape(QPainter &p) 39void CanvasRoundRect::drawShape(QPainter &p)
42{ 40{
43 if ( qt_screen->deviceWidth() < 200 ) 41 if ( qt_screen->deviceWidth() < 200 )
44 p.drawRoundRect( (int)x() + 1, (int)y() + 1, 18, 25); 42 p.drawRoundRect( (int)x() + 1, (int)y() + 1, 18, 25);
45 else 43 else
46 p.drawRoundRect( (int)x(), (int)y(), 23, 36); 44 p.drawRoundRect( (int)x(), (int)y(), 23, 36);
47} 45}
48 46
49 47
50CanvasCircleOrCross::CanvasCircleOrCross(int x, int y, QCanvas *canvas) : 48CanvasCircleOrCross::CanvasCircleOrCross(int x, int y, QCanvas *canvas) :
51 QCanvasRectangle( x, y, 21, 21, canvas), circleShape(TRUE) 49 QCanvasRectangle( x, y, 21, 21, canvas), circleShape(TRUE)
52{ 50{
53 show(); 51 show();
54} 52}
55 53
56 54
57void CanvasCircleOrCross::redraw() 55void CanvasCircleOrCross::redraw()
58{ 56{
59 hide(); 57 hide();
60 show(); 58 show();
61} 59}
62 60
63 61
64void CanvasCircleOrCross::setCircle() 62void CanvasCircleOrCross::setCircle()
65{ 63{
66 circleShape = TRUE; 64 circleShape = TRUE;
67 redraw(); 65 redraw();
68} 66}
69 67
70 68
71void CanvasCircleOrCross::setCross() 69void CanvasCircleOrCross::setCross()
72{ 70{
73 circleShape = FALSE; 71 circleShape = FALSE;
74 redraw(); 72 redraw();
75} 73}
76 74
77 75
78void CanvasCircleOrCross::drawShape(QPainter &p) 76void CanvasCircleOrCross::drawShape(QPainter &p)
79{ 77{
80 if ( qt_screen->deviceWidth() < 200 ) { 78 if ( qt_screen->deviceWidth() < 200 ) {
81 int x1 = (int)x(), y1 = (int)y(); 79 int x1 = (int)x(), y1 = (int)y();
82 // Green circle 80 // Green circle
83 if (circleShape == TRUE) { 81 if (circleShape == TRUE) {
84 p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) ); 82 p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) );
85 p.drawEllipse( x1 - 1, y1 - 1, 17, 17); 83 p.drawEllipse( x1 - 1, y1 - 1, 17, 17);
86 p.drawEllipse( x1 - 1, y1 - 0, 17, 15); 84 p.drawEllipse( x1 - 1, y1 - 0, 17, 15);
87 p.drawEllipse( x1 + 0, y1 + 0, 15, 15); 85 p.drawEllipse( x1 + 0, y1 + 0, 15, 15);
88 p.drawEllipse( x1 + 1, y1 + 0, 13, 15); 86 p.drawEllipse( x1 + 1, y1 + 0, 13, 15);
89 p.drawEllipse( x1 + 1, y1 + 1, 13, 13); 87 p.drawEllipse( x1 + 1, y1 + 1, 13, 13);
90 // Red cross 88 // Red cross
91 } else { 89 } else {
92 p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 4 ) ); 90 p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 4 ) );
93 p.drawLine( x1, y1, x1 + 14, y1 + 14); 91 p.drawLine( x1, y1, x1 + 14, y1 + 14);
94 p.drawLine( x1 + 14, y1, x1, y1 + 14); 92 p.drawLine( x1 + 14, y1, x1, y1 + 14);
95 } 93 }
96 } else { 94 } else {
97 int x1 = (int)x(), y1 = (int)y(); 95 int x1 = (int)x(), y1 = (int)y();
98 // Green circle 96 // Green circle
99 if (circleShape == TRUE) { 97 if (circleShape == TRUE) {
100 p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) ); 98 p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) );
101 p.drawEllipse( x1 - 1, y1 - 1, 21, 21); 99 p.drawEllipse( x1 - 1, y1 - 1, 21, 21);
102 p.drawEllipse( x1 - 1, y1 - 0, 21, 19); 100 p.drawEllipse( x1 - 1, y1 - 0, 21, 19);
103 p.drawEllipse( x1 + 0, y1 + 0, 19, 19); 101 p.drawEllipse( x1 + 0, y1 + 0, 19, 19);
104 p.drawEllipse( x1 + 1, y1 + 0, 17, 19); 102 p.drawEllipse( x1 + 1, y1 + 0, 17, 19);
105 p.drawEllipse( x1 + 1, y1 + 1, 17, 17); 103 p.drawEllipse( x1 + 1, y1 + 1, 17, 17);
106 // Red cross 104 // Red cross
107 } else { 105 } else {
108 p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 5 ) ); 106 p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 5 ) );
109 p.drawLine( x1, y1, x1 + 20, y1 + 20); 107 p.drawLine( x1, y1, x1 + 20, y1 + 20);
110 p.drawLine( x1 + 20, y1, x1, y1 + 20); 108 p.drawLine( x1 + 20, y1, x1, y1 + 20);
111 } 109 }
112 } 110 }
113} 111}
114 112
diff --git a/noncore/games/solitaire/card.cpp b/noncore/games/solitaire/card.cpp
index 609e280..52e38ac 100644
--- a/noncore/games/solitaire/card.cpp
+++ b/noncore/games/solitaire/card.cpp
@@ -1,53 +1,50 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "card.h" 21#include "card.h"
22 22
23#include <qpe/config.h>
24 23
25#include <qpoint.h>
26#include <qlist.h>
27 24
28/* 25/*
29Card( eValue v, eSuit s, bool f ) : 26Card( eValue v, eSuit s, bool f ) :
30 val(v), suit(s), faceUp(f), showing(FALSE), ix(0), iy(0), iz(0), cardPile(NULL) { } 27 val(v), suit(s), faceUp(f), showing(FALSE), ix(0), iy(0), iz(0), cardPile(NULL) { }
31virtual ~Card() { } 28virtual ~Card() { }
32eValue getValue() { return val; } 29eValue getValue() { return val; }
33eSuit getSuit() { return suit; } 30eSuit getSuit() { return suit; }
34CardPile *getCardPile() { return cardPile; } 31CardPile *getCardPile() { return cardPile; }
35bool isFacing() { return faceUp; } 32bool isFacing() { return faceUp; }
36bool isShowing() { return showing; } 33bool isShowing() { return showing; }
37bool isRed() { return ((suit == diamonds) || (suit == hearts)); } 34bool isRed() { return ((suit == diamonds) || (suit == hearts)); }
38int getX(void) { return ix; } 35int getX(void) { return ix; }
39int getY(void) { return iy; } 36int getY(void) { return iy; }
40int getZ(void) { return iz; } 37int getZ(void) { return iz; }
41void setCardPile(CardPile *p) { cardPile = p; } 38void setCardPile(CardPile *p) { cardPile = p; }
42void setFace(bool f) { faceUp = f; } 39void setFace(bool f) { faceUp = f; }
43void flip(void) { flipTo(getX(), getY()); } 40void flip(void) { flipTo(getX(), getY()); }
44virtual void setPos(int x, int y, int z) { ix = x; iy = y; iz = z; } 41virtual void setPos(int x, int y, int z) { ix = x; iy = y; iz = z; }
45virtual void move(int x, int y) { ix = x; iy = y; } 42virtual void move(int x, int y) { ix = x; iy = y; }
46virtual void move(QPoint p) { ix = p.x(); iy = p.y(); } 43virtual void move(QPoint p) { ix = p.x(); iy = p.y(); }
47virtual void flipTo(int x, int y, int steps = 8) { ix = x; iy = y; faceUp = !faceUp; redraw(); Q_UNUSED(steps); } 44virtual void flipTo(int x, int y, int steps = 8) { ix = x; iy = y; faceUp = !faceUp; redraw(); Q_UNUSED(steps); }
48virtual void showCard(void) { showing = TRUE; } 45virtual void showCard(void) { showing = TRUE; }
49virtual void hideCard(void) { showing = FALSE; } 46virtual void hideCard(void) { showing = FALSE; }
50virtual void redraw(void) { } 47virtual void redraw(void) { }
51*/ 48*/
52 49
53 50
diff --git a/noncore/games/solitaire/cardpile.cpp b/noncore/games/solitaire/cardpile.cpp
index aace2e2..1d572be 100644
--- a/noncore/games/solitaire/cardpile.cpp
+++ b/noncore/games/solitaire/cardpile.cpp
@@ -1,115 +1,113 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "cardpile.h" 21#include "cardpile.h"
22#include "card.h" 22#include "card.h"
23 23
24#include <qpe/config.h> 24#include <qpe/config.h>
25#include <qpoint.h>
26 25
27#include <qlist.h>
28 26
29 27
30CardPile::CardPile(int x, int y) : pileX(x), pileY(y), dealing(FALSE), PileResize(FALSE) { 28CardPile::CardPile(int x, int y) : pileX(x), pileY(y), dealing(FALSE), PileResize(FALSE) {
31 pileWidth = 0; 29 pileWidth = 0;
32 pileHeight = 0; 30 pileHeight = 0;
33 pileNextX = pileX; 31 pileNextX = pileX;
34 pileNextY = pileY; 32 pileNextY = pileY;
35 pileCenterX = x + pileWidth / 2; 33 pileCenterX = x + pileWidth / 2;
36 pileCenterY = y + pileHeight / 2; 34 pileCenterY = y + pileHeight / 2;
37 pileRadius = (pileWidth > pileHeight) ? pileWidth : pileHeight; 35 pileRadius = (pileWidth > pileHeight) ? pileWidth : pileHeight;
38 pileOffsetDown = 13; 36 pileOffsetDown = 13;
39} 37}
40 38
41 39
42int CardPile::distanceFromPile(int x, int y) { 40int CardPile::distanceFromPile(int x, int y) {
43 return (pileCenterX-x)*(pileCenterX-x)+(pileCenterY-y)*(pileCenterY-y); 41 return (pileCenterX-x)*(pileCenterX-x)+(pileCenterY-y)*(pileCenterY-y);
44} 42}
45 43
46 44
47int CardPile::distanceFromNextPos(int x, int y) { 45int CardPile::distanceFromNextPos(int x, int y) {
48 return (pileNextX-x)*(pileNextX-x)+(pileNextY-y)*(pileNextY-y); 46 return (pileNextX-x)*(pileNextX-x)+(pileNextY-y)*(pileNextY-y);
49} 47}
50 48
51 49
52Card *CardPile::cardInfront(Card *c) { 50Card *CardPile::cardInfront(Card *c) {
53 CardPile *p = c->getCardPile(); 51 CardPile *p = c->getCardPile();
54 if (p) { 52 if (p) {
55 p->at(p->find(c)); 53 p->at(p->find(c));
56 return p->next(); 54 return p->next();
57 } else { 55 } else {
58 return NULL; 56 return NULL;
59 } 57 }
60} 58}
61 59
62 60
63bool CardPile::kingOnTop() { 61bool CardPile::kingOnTop() {
64 Card *top = cardOnTop(); 62 Card *top = cardOnTop();
65 return top && top->getValue() == king; 63 return top && top->getValue() == king;
66} 64}
67 65
68 66
69bool CardPile::addCardToTop(Card *c) { 67bool CardPile::addCardToTop(Card *c) {
70 if (dealing || isAllowedOnTop(c)) { 68 if (dealing || isAllowedOnTop(c)) {
71 append((const Card *)c); 69 append((const Card *)c);
72 cardAddedToTop(c); 70 cardAddedToTop(c);
73 return TRUE; 71 return TRUE;
74 } 72 }
75 return FALSE; 73 return FALSE;
76} 74}
77 75
78 76
79bool CardPile::addCardToBottom(Card *c) { 77bool CardPile::addCardToBottom(Card *c) {
80 if (dealing || isAllowedOnBottom(c)) { 78 if (dealing || isAllowedOnBottom(c)) {
81 prepend((const Card *)c); 79 prepend((const Card *)c);
82 cardAddedToBottom(c); 80 cardAddedToBottom(c);
83 return TRUE; 81 return TRUE;
84 } 82 }
85 return FALSE; 83 return FALSE;
86} 84}
87 85
88 86
89bool CardPile::removeCard(Card *c) { 87bool CardPile::removeCard(Card *c) {
90 if (dealing || isAllowedToBeMoved(c)) { 88 if (dealing || isAllowedToBeMoved(c)) {
91 take(find(c)); 89 take(find(c));
92 cardRemoved(c); 90 cardRemoved(c);
93 return TRUE; 91 return TRUE;
94 } 92 }
95 return FALSE; 93 return FALSE;
96} 94}
97 95
98 96
99void CardPile::writeConfig( Config& cfg, QString name ) { 97void CardPile::writeConfig( Config& cfg, QString name ) {
100 int numberOfCards = 0; 98 int numberOfCards = 0;
101 cfg.setGroup( name ); 99 cfg.setGroup( name );
102 Card *card = cardOnBottom(); 100 Card *card = cardOnBottom();
103 while ( card ) { 101 while ( card ) {
104 QString cardStr; 102 QString cardStr;
105 cardStr.sprintf( "%i", numberOfCards ); 103 cardStr.sprintf( "%i", numberOfCards );
106 int val = (int)card->getValue()-1 + ((int)card->getSuit()-1)*13 + (int)card->getDeckNumber()*52; 104 int val = (int)card->getValue()-1 + ((int)card->getSuit()-1)*13 + (int)card->getDeckNumber()*52;
107 cfg.writeEntry( "Card" + cardStr, val ); 105 cfg.writeEntry( "Card" + cardStr, val );
108 cfg.writeEntry( "CardFacing" + cardStr, card->isFacing() ); 106 cfg.writeEntry( "CardFacing" + cardStr, card->isFacing() );
109 card = cardInfront( card ); 107 card = cardInfront( card );
110 numberOfCards++; 108 numberOfCards++;
111 } 109 }
112 cfg.writeEntry("NumberOfCards", numberOfCards); 110 cfg.writeEntry("NumberOfCards", numberOfCards);
113} 111}
114 112
115 113
diff --git a/noncore/games/solitaire/chicanecardgame.cpp b/noncore/games/solitaire/chicanecardgame.cpp
index 6729a94..6c607b9 100644
--- a/noncore/games/solitaire/chicanecardgame.cpp
+++ b/noncore/games/solitaire/chicanecardgame.cpp
@@ -1,177 +1,176 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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** created on base of patiencecardgame by cam (C.A.Mader) 2002 20** created on base of patiencecardgame by cam (C.A.Mader) 2002
21** Rules for this game: 21** Rules for this game:
22 **use 2 decks = 104 cards 22 **use 2 decks = 104 cards
23 **deal 8 rows with 3 hidden cards and one open card 23 **deal 8 rows with 3 hidden cards and one open card
24** append red to black and vice versa 24** append red to black and vice versa
25 **each card can be layed on a free place 25 **each card can be layed on a free place
26 **deal 8 cards at once 26 **deal 8 cards at once
27** 27**
28**********************************************************************/ 28**********************************************************************/
29#include <qgfx_qws.h>
30#include "chicanecardgame.h" 29#include "chicanecardgame.h"
31 30
32 31
33extern int highestZ; 32extern int highestZ;
34 33
35 34
36 ChicaneCardGame::ChicaneCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent, 2)// Use 2 Decks 35 ChicaneCardGame::ChicaneCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent, 2)// Use 2 Decks
37{ 36{
38 highestZ = 0; 37 highestZ = 0;
39 38
40 for (int i = 0; i < 8; i++) { 39 for (int i = 0; i < 8; i++) {
41 discardPiles[i] = new ChicaneDiscardPile( 27 + i * 26, 10, canvas() ); 40 discardPiles[i] = new ChicaneDiscardPile( 27 + i * 26, 10, canvas() );
42 addCardPile(discardPiles[i]); 41 addCardPile(discardPiles[i]);
43 } 42 }
44 for (int i = 0; i < 8; i++) { 43 for (int i = 0; i < 8; i++) {
45 workingPiles[i] = new ChicaneWorkingPile( 27 + i * 26, 50, canvas() ); 44 workingPiles[i] = new ChicaneWorkingPile( 27 + i * 26, 50, canvas() );
46 addCardPile(workingPiles[i]); 45 addCardPile(workingPiles[i]);
47 } 46 }
48 faceDownDealingPile = new ChicaneFaceDownDeck( 2, 10, canvas() ); 47 faceDownDealingPile = new ChicaneFaceDownDeck( 2, 10, canvas() );
49} 48}
50 49
51 50
52void ChicaneCardGame::deal(void) 51void ChicaneCardGame::deal(void)
53{ 52{
54 highestZ = 1; 53 highestZ = 1;
55 int t = 0; 54 int t = 0;
56 55
57 beginDealing(); 56 beginDealing();
58 57
59 for (int i = 0; i < 8; i++) { 58 for (int i = 0; i < 8; i++) {
60 for (int k = 0; k < 4; k++, t++) { 59 for (int k = 0; k < 4; k++, t++) {
61 Card *card = cards[t]; 60 Card *card = cards[t];
62 workingPiles[i]->addCardToTop(card); 61 workingPiles[i]->addCardToTop(card);
63 card->setCardPile( workingPiles[i] ); 62 card->setCardPile( workingPiles[i] );
64 card->setPos( 0, 0, highestZ ); 63 card->setPos( 0, 0, highestZ );
65 card->setFace(k==3); 64 card->setFace(k==3);
66 card->move( workingPiles[i]->getCardPos( card ) ); 65 card->move( workingPiles[i]->getCardPos( card ) );
67 card->showCard(); 66 card->showCard();
68 highestZ++; 67 highestZ++;
69 } 68 }
70 } 69 }
71 70
72 for ( ; t < getNumberOfCards(); t++) { 71 for ( ; t < getNumberOfCards(); t++) {
73 Card *card = cards[t]; 72 Card *card = cards[t];
74 faceDownDealingPile->addCardToTop(card); 73 faceDownDealingPile->addCardToTop(card);
75 card->setCardPile( faceDownDealingPile ); 74 card->setCardPile( faceDownDealingPile );
76 QPoint p = faceDownDealingPile->getCardPos( card ); 75 QPoint p = faceDownDealingPile->getCardPos( card );
77 card->setPos( p.x(), p.y(), highestZ ); 76 card->setPos( p.x(), p.y(), highestZ );
78 card->showCard(); 77 card->showCard();
79 highestZ++; 78 highestZ++;
80 } 79 }
81 80
82 endDealing(); 81 endDealing();
83} 82}
84 83
85 84
86void ChicaneCardGame::readConfig( Config& cfg ) 85void ChicaneCardGame::readConfig( Config& cfg )
87{ 86{
88 cfg.setGroup("GameState"); 87 cfg.setGroup("GameState");
89 88
90 // Create Cards, but don't shuffle or deal them yet 89 // Create Cards, but don't shuffle or deal them yet
91 createDeck(); 90 createDeck();
92 91
93 // Move the cards to their piles (deal them to their previous places) 92 // Move the cards to their piles (deal them to their previous places)
94 beginDealing(); 93 beginDealing();
95 94
96 highestZ = 1; 95 highestZ = 1;
97 96
98 for (int i = 0; i < 8; i++) { 97 for (int i = 0; i < 8; i++) {
99 QString pile; 98 QString pile;
100 pile.sprintf( "ChicaneDiscardPile%i", i ); 99 pile.sprintf( "ChicaneDiscardPile%i", i );
101 readPile( cfg, discardPiles[i], pile, highestZ ); 100 readPile( cfg, discardPiles[i], pile, highestZ );
102 } 101 }
103 102
104 for (int i = 0; i < 8; i++) { 103 for (int i = 0; i < 8; i++) {
105 QString pile; 104 QString pile;
106 pile.sprintf( "ChicaneWorkingPile%i", i ); 105 pile.sprintf( "ChicaneWorkingPile%i", i );
107 readPile( cfg, workingPiles[i], pile, highestZ ); 106 readPile( cfg, workingPiles[i], pile, highestZ );
108 } 107 }
109 108
110 readPile( cfg, faceDownDealingPile, "ChicaneFaceDownDealingPile", highestZ ); 109 readPile( cfg, faceDownDealingPile, "ChicaneFaceDownDealingPile", highestZ );
111 110
112 highestZ++; 111 highestZ++;
113 112
114 endDealing(); 113 endDealing();
115} 114}
116 115
117 116
118void ChicaneCardGame::writeConfig( Config& cfg ) 117void ChicaneCardGame::writeConfig( Config& cfg )
119{ 118{
120 cfg.setGroup("GameState"); 119 cfg.setGroup("GameState");
121 for ( int i = 0; i < 8; i++ ) { 120 for ( int i = 0; i < 8; i++ ) {
122 QString pile; 121 QString pile;
123 pile.sprintf( "ChicaneDiscardPile%i", i ); 122 pile.sprintf( "ChicaneDiscardPile%i", i );
124 discardPiles[i]->writeConfig( cfg, pile ); 123 discardPiles[i]->writeConfig( cfg, pile );
125 } 124 }
126 for ( int i = 0; i < 8; i++ ) { 125 for ( int i = 0; i < 8; i++ ) {
127 QString pile; 126 QString pile;
128 pile.sprintf( "ChicaneWorkingPile%i", i ); 127 pile.sprintf( "ChicaneWorkingPile%i", i );
129 workingPiles[i]->writeConfig( cfg, pile ); 128 workingPiles[i]->writeConfig( cfg, pile );
130 } 129 }
131 faceDownDealingPile->writeConfig( cfg, "ChicaneFaceDownDealingPile" ); 130 faceDownDealingPile->writeConfig( cfg, "ChicaneFaceDownDealingPile" );
132} 131}
133 132
134 133
135bool ChicaneCardGame::mousePressCard( Card *card, QPoint p ) 134bool ChicaneCardGame::mousePressCard( Card *card, QPoint p )
136{ 135{
137 Q_UNUSED(p); 136 Q_UNUSED(p);
138 137
139 CanvasCard *item = (CanvasCard *)card; 138 CanvasCard *item = (CanvasCard *)card;
140 if (item->isFacing() != TRUE) { 139 if (item->isFacing() != TRUE) {
141 // From facedown stack 140 // From facedown stack
142 if ((item->x() == 2) && ((int)item->y() == 10)) { // Deal a row of 8 cards 141 if ((item->x() == 2) && ((int)item->y() == 10)) { // Deal a row of 8 cards
143 // Move 8 cards, one to each workingPile 142 // Move 8 cards, one to each workingPile
144 beginDealing(); 143 beginDealing();
145 for (int i=0; i<8 && faceDownDealingPile->cardOnTop(); i++) { 144 for (int i=0; i<8 && faceDownDealingPile->cardOnTop(); i++) {
146 CanvasCard *card = (CanvasCard *)faceDownDealingPile->cardOnTop(); 145 CanvasCard *card = (CanvasCard *)faceDownDealingPile->cardOnTop();
147 card->setZ(highestZ); 146 card->setZ(highestZ);
148 highestZ++; 147 highestZ++;
149 faceDownDealingPile->removeCard(card); 148 faceDownDealingPile->removeCard(card);
150 workingPiles[i]->addCardToTop(card); 149 workingPiles[i]->addCardToTop(card);
151 card->setCardPile( workingPiles[i] ); 150 card->setCardPile( workingPiles[i] );
152 card->setFace(FALSE); 151 card->setFace(FALSE);
153 QPoint p = workingPiles[i]->getCardPos(card); 152 QPoint p = workingPiles[i]->getCardPos(card);
154 card->flipTo( p.x(), p.y() ); 153 card->flipTo( p.x(), p.y() );
155 } 154 }
156 endDealing(); 155 endDealing();
157 } 156 }
158 moving = NULL; 157 moving = NULL;
159 moved = FALSE; 158 moved = FALSE;
160 159
161 return TRUE; 160 return TRUE;
162 } else if ( !card->getCardPile()->isAllowedToBeMoved(card) ) {// Don't allow unclean columns to be moved 161 } else if ( !card->getCardPile()->isAllowedToBeMoved(card) ) {// Don't allow unclean columns to be moved
163 moving = NULL; 162 moving = NULL;
164 return TRUE; 163 return TRUE;
165 } 164 }
166 165
167 return FALSE; 166 return FALSE;
168} 167}
169 168
170 169
171 170
172void ChicaneCardGame::mousePress(QPoint p) 171void ChicaneCardGame::mousePress(QPoint p)
173{ 172{
174 Q_UNUSED(p); 173 Q_UNUSED(p);
175} 174}
176 175
177 176
diff --git a/noncore/games/solitaire/freecellcardgame.cpp b/noncore/games/solitaire/freecellcardgame.cpp
index aeb32fc..d474f4e 100644
--- a/noncore/games/solitaire/freecellcardgame.cpp
+++ b/noncore/games/solitaire/freecellcardgame.cpp
@@ -1,212 +1,211 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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#include <qgfx_qws.h>
21#include "freecellcardgame.h" 20#include "freecellcardgame.h"
22 21
23 22
24extern int highestZ; 23extern int highestZ;
25int numberOfFreeCells = 4; 24int numberOfFreeCells = 4;
26 25
27 26
28FreecellCardGame::FreecellCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent) 27FreecellCardGame::FreecellCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent)
29{ 28{
30 numberOfFreeCells = 4; 29 numberOfFreeCells = 4;
31 highestZ = 0; 30 highestZ = 0;
32 31
33 int spaceBetweenPiles = ( qt_screen->deviceWidth() < 200 ) ? 21 : 28; 32 int spaceBetweenPiles = ( qt_screen->deviceWidth() < 200 ) ? 21 : 28;
34 int xOrigin = ( qt_screen->deviceWidth() < 200 ) ? 0 : 5; 33 int xOrigin = ( qt_screen->deviceWidth() < 200 ) ? 0 : 5;
35 int spacing = ( qt_screen->deviceWidth() < 200 ) ? 0 : 0; 34 int spacing = ( qt_screen->deviceWidth() < 200 ) ? 0 : 0;
36 35
37 for (int i = 0; i < 4; i++) { 36 for (int i = 0; i < 4; i++) {
38 freecellPiles[i] = new FreecellFreecellPile( xOrigin + i * spaceBetweenPiles, 10, canvas() ); 37 freecellPiles[i] = new FreecellFreecellPile( xOrigin + i * spaceBetweenPiles, 10, canvas() );
39 addCardPile(freecellPiles[i]); 38 addCardPile(freecellPiles[i]);
40 } 39 }
41 for (int i = 0; i < 4; i++) { 40 for (int i = 0; i < 4; i++) {
42 discardPiles[i] = new FreecellDiscardPile( xOrigin + spacing + 6 + (i + 4) * spaceBetweenPiles, 10, canvas() ); 41 discardPiles[i] = new FreecellDiscardPile( xOrigin + spacing + 6 + (i + 4) * spaceBetweenPiles, 10, canvas() );
43 addCardPile(discardPiles[i]); 42 addCardPile(discardPiles[i]);
44 } 43 }
45 for (int i = 0; i < 8; i++) { 44 for (int i = 0; i < 8; i++) {
46 workingPiles[i] = new FreecellWorkingPile( xOrigin + spacing + 2 + i * spaceBetweenPiles, 50, canvas() ); 45 workingPiles[i] = new FreecellWorkingPile( xOrigin + spacing + 2 + i * spaceBetweenPiles, 50, canvas() );
47 addCardPile(workingPiles[i]); 46 addCardPile(workingPiles[i]);
48 } 47 }
49} 48}
50 49
51 50
52void FreecellCardGame::deal(void) 51void FreecellCardGame::deal(void)
53{ 52{
54 highestZ = 1; 53 highestZ = 1;
55 54
56 beginDealing(); 55 beginDealing();
57 56
58 for (int i = 0; i < 52; i++) { 57 for (int i = 0; i < 52; i++) {
59 Card *card = cards[i]; 58 Card *card = cards[i];
60 card->setFace( TRUE ); 59 card->setFace( TRUE );
61 card->setPos( 0, 0, highestZ ); 60 card->setPos( 0, 0, highestZ );
62 card->setCardPile( workingPiles[i%8] ); 61 card->setCardPile( workingPiles[i%8] );
63 workingPiles[i%8]->addCardToTop( card ); 62 workingPiles[i%8]->addCardToTop( card );
64 card->move( workingPiles[i%8]->getCardPos( card ) ); 63 card->move( workingPiles[i%8]->getCardPos( card ) );
65 card->showCard(); 64 card->showCard();
66 highestZ++; 65 highestZ++;
67 } 66 }
68 67
69 endDealing(); 68 endDealing();
70} 69}
71 70
72 // checks if smaller card with different color, that could be put on top on the 71 // checks if smaller card with different color, that could be put on top on the
73 // card, is present in working or freecell pile 72 // card, is present in working or freecell pile
74bool FreecellCardGame::checkNeeded(Card *card) 73bool FreecellCardGame::checkNeeded(Card *card)
75{ 74{
76 if (card->getValue() > 2){ 75 if (card->getValue() > 2){
77 int i; 76 int i;
78 Card *c; 77 Card *c;
79 for (i=0;i<4;i++){ 78 for (i=0;i<4;i++){
80 c = freecellPiles[i]->cardOnBottom(); 79 c = freecellPiles[i]->cardOnBottom();
81 if (c != NULL){ 80 if (c != NULL){
82 if (card->isRed()!= c->isRed() && card->getValue()== c->getValue()+1){ 81 if (card->isRed()!= c->isRed() && card->getValue()== c->getValue()+1){
83 return (false); 82 return (false);
84 } 83 }
85 } 84 }
86 } 85 }
87 for (i=0;i<8;i++){ 86 for (i=0;i<8;i++){
88 c=workingPiles[i]->cardOnBottom(); 87 c=workingPiles[i]->cardOnBottom();
89 while (c!=NULL){ 88 while (c!=NULL){
90 if (card->isRed() != c->isRed()&& card->getValue() == c->getValue()+1) { 89 if (card->isRed() != c->isRed()&& card->getValue() == c->getValue()+1) {
91 return (false); 90 return (false);
92 } 91 }
93 c=workingPiles[i]->cardInfront(c); 92 c=workingPiles[i]->cardInfront(c);
94 } 93 }
95 } 94 }
96 } 95 }
97 return(true); 96 return(true);
98} 97}
99 98
100// added to move cards, on which no card can be moved, to discard pile 99// added to move cards, on which no card can be moved, to discard pile
101void FreecellCardGame::checkUnusable() 100void FreecellCardGame::checkUnusable()
102{ 101{
103 int i,j; 102 int i,j;
104 //printf("void FreecellCardGame::checkUnusable()\n"); 103 //printf("void FreecellCardGame::checkUnusable()\n");
105 Card *top_one; 104 Card *top_one;
106 for (i=0;i < 8;i++) 105 for (i=0;i < 8;i++)
107 { 106 {
108 top_one = workingPiles[i]->cardOnTop(); 107 top_one = workingPiles[i]->cardOnTop();
109 if (top_one != NULL) 108 if (top_one != NULL)
110 { 109 {
111 j = 0; 110 j = 0;
112 while ((j < 4)) 111 while ((j < 4))
113 { 112 {
114 if (discardPiles[j]->isAllowedOnTop(top_one)){ 113 if (discardPiles[j]->isAllowedOnTop(top_one)){
115 if (checkNeeded(top_one)){ 114 if (checkNeeded(top_one)){
116 top_one->setCardPile(discardPiles[j]); 115 top_one->setCardPile(discardPiles[j]);
117 workingPiles[i]->removeCard(top_one); 116 workingPiles[i]->removeCard(top_one);
118 // printf("k %d f work%d to disk%d on %d\n ",top_one->getValue(),i+1,j+1,highestZ); 117 // printf("k %d f work%d to disk%d on %d\n ",top_one->getValue(),i+1,j+1,highestZ);
119 discardPiles[j]->addCardToTop(top_one); 118 discardPiles[j]->addCardToTop(top_one);
120 top_one->setPos(discardPiles[j]->getX(),discardPiles[j]->getY(),highestZ); 119 top_one->setPos(discardPiles[j]->getX(),discardPiles[j]->getY(),highestZ);
121 highestZ++; 120 highestZ++;
122 j = 4; 121 j = 4;
123 checkUnusable(); 122 checkUnusable();
124 } 123 }
125 } 124 }
126 j++; 125 j++;
127 } 126 }
128 } 127 }
129 } 128 }
130 for (i=0;i<4;i++){ 129 for (i=0;i<4;i++){
131 top_one = freecellPiles[i]->cardOnTop(); 130 top_one = freecellPiles[i]->cardOnTop();
132 if (top_one != NULL) 131 if (top_one != NULL)
133 { 132 {
134 j = 0; 133 j = 0;
135 while ((j < 4)) 134 while ((j < 4))
136 { 135 {
137 if (discardPiles[j]->isAllowedOnTop(top_one)){ 136 if (discardPiles[j]->isAllowedOnTop(top_one)){
138 if (checkNeeded(top_one)){ 137 if (checkNeeded(top_one)){
139 top_one->setCardPile(discardPiles[j]); 138 top_one->setCardPile(discardPiles[j]);
140 freecellPiles[i]->removeCard(top_one); 139 freecellPiles[i]->removeCard(top_one);
141 // printf("k %d f work%d to disk%d on %d\n ",top_one->getValue(),i+1,j+1,highestZ); 140 // printf("k %d f work%d to disk%d on %d\n ",top_one->getValue(),i+1,j+1,highestZ);
142 discardPiles[j]->addCardToTop(top_one); 141 discardPiles[j]->addCardToTop(top_one);
143 top_one->setPos(discardPiles[j]->getX(),discardPiles[j]->getY(),highestZ); 142 top_one->setPos(discardPiles[j]->getX(),discardPiles[j]->getY(),highestZ);
144 highestZ++; 143 highestZ++;
145 j = 4; 144 j = 4;
146 checkUnusable(); 145 checkUnusable();
147 } 146 }
148 } 147 }
149 j++; 148 j++;
150 } 149 }
151 } 150 }
152 } 151 }
153} 152}
154 153
155 154
156bool FreecellCardGame::mousePressCard( Card *c, QPoint p ) 155bool FreecellCardGame::mousePressCard( Card *c, QPoint p )
157{ 156{
158 Q_UNUSED(p); 157 Q_UNUSED(p);
159 158
160 if ( !c->getCardPile()->isAllowedToBeMoved(c) ) { 159 if ( !c->getCardPile()->isAllowedToBeMoved(c) ) {
161 moving = NULL; 160 moving = NULL;
162 return TRUE; 161 return TRUE;
163 } 162 }
164 163
165 return FALSE; 164 return FALSE;
166} 165}
167 166
168 167
169void FreecellCardGame::readConfig( Config& cfg ) 168void FreecellCardGame::readConfig( Config& cfg )
170{ 169{
171 cfg.setGroup("GameState"); 170 cfg.setGroup("GameState");
172 171
173 // Create Cards, but don't shuffle or deal them yet 172 // Create Cards, but don't shuffle or deal them yet
174 createDeck(); 173 createDeck();
175 174
176 // Move the cards to their piles (deal them to their previous places) 175 // Move the cards to their piles (deal them to their previous places)
177 beginDealing(); 176 beginDealing();
178 177
179 highestZ = 1; 178 highestZ = 1;
180 179
181 for (int k = 0; k < 4; k++) { 180 for (int k = 0; k < 4; k++) {
182 QString pile; 181 QString pile;
183 pile.sprintf( "FreeCellPile%i", k ); 182 pile.sprintf( "FreeCellPile%i", k );
184 readPile( cfg, freecellPiles[k], pile, highestZ ); 183 readPile( cfg, freecellPiles[k], pile, highestZ );
185 } 184 }
186 185
187 for (int k = 0; k < 4; k++) { 186 for (int k = 0; k < 4; k++) {
188 QString pile; 187 QString pile;
189 pile.sprintf( "DiscardPile%i", k ); 188 pile.sprintf( "DiscardPile%i", k );
190 readPile( cfg, discardPiles[k], pile, highestZ ); 189 readPile( cfg, discardPiles[k], pile, highestZ );
191 } 190 }
192 191
193 for (int k = 0; k < 8; k++) { 192 for (int k = 0; k < 8; k++) {
194 QString pile; 193 QString pile;
195 pile.sprintf( "WorkingPile%i", k ); 194 pile.sprintf( "WorkingPile%i", k );
196 readPile( cfg, workingPiles[k], pile, highestZ ); 195 readPile( cfg, workingPiles[k], pile, highestZ );
197 } 196 }
198 197
199 highestZ++; 198 highestZ++;
200 199
201 endDealing(); 200 endDealing();
202} 201}
203 202
204 203
205void FreecellCardGame::writeConfig( Config& cfg ) 204void FreecellCardGame::writeConfig( Config& cfg )
206{ 205{
207 cfg.setGroup("GameState"); 206 cfg.setGroup("GameState");
208 for ( int i = 0; i < 4; i++ ) { 207 for ( int i = 0; i < 4; i++ ) {
209 QString pile; 208 QString pile;
210 pile.sprintf( "FreeCellPile%i", i ); 209 pile.sprintf( "FreeCellPile%i", i );
211 freecellPiles[i]->writeConfig( cfg, pile ); 210 freecellPiles[i]->writeConfig( cfg, pile );
212 } 211 }
diff --git a/noncore/games/solitaire/harpcardgame.cpp b/noncore/games/solitaire/harpcardgame.cpp
index 0711622..d13d73b 100644
--- a/noncore/games/solitaire/harpcardgame.cpp
+++ b/noncore/games/solitaire/harpcardgame.cpp
@@ -1,179 +1,178 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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** created on base of patiencecardgame by cam (C.A.Mader) 2002 20** created on base of patiencecardgame by cam (C.A.Mader) 2002
21** Rules for this game: 21** Rules for this game:
22** use 2 decks = 104 cards 22** use 2 decks = 104 cards
23** deal 8 rows with one open card in the first place 23** deal 8 rows with one open card in the first place
24** one hidden and one open in the second place and so on 24** one hidden and one open in the second place and so on
25** append red to black and vice versa 25** append red to black and vice versa
26** each card can be layed on a free place 26** each card can be layed on a free place
27** deal 8 cards at once 27** deal 8 cards at once
28** 28**
29** 29**
30**********************************************************************/ 30**********************************************************************/
31#include <qgfx_qws.h>
32#include "harpcardgame.h" 31#include "harpcardgame.h"
33 32
34 33
35extern int highestZ; 34extern int highestZ;
36 35
37 36
38 HarpCardGame::HarpCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent, 2)// Use 2 Decks 37 HarpCardGame::HarpCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent, 2)// Use 2 Decks
39{ 38{
40 highestZ = 0; 39 highestZ = 0;
41 40
42 for (int i = 0; i < 8; i++) { 41 for (int i = 0; i < 8; i++) {
43 discardPiles[i] = new HarpDiscardPile( 27 + i * 26, 10, canvas() ); 42 discardPiles[i] = new HarpDiscardPile( 27 + i * 26, 10, canvas() );
44 addCardPile(discardPiles[i]); 43 addCardPile(discardPiles[i]);
45 } 44 }
46 for (int i = 0; i < 8; i++) { 45 for (int i = 0; i < 8; i++) {
47 workingPiles[i] = new HarpWorkingPile( 27 + i * 26, 50, canvas() ); 46 workingPiles[i] = new HarpWorkingPile( 27 + i * 26, 50, canvas() );
48 addCardPile(workingPiles[i]); 47 addCardPile(workingPiles[i]);
49 } 48 }
50 faceDownDealingPile = new HarpFaceDownDeck( 2, 10, canvas() ); 49 faceDownDealingPile = new HarpFaceDownDeck( 2, 10, canvas() );
51} 50}
52 51
53 52
54void HarpCardGame::deal(void) 53void HarpCardGame::deal(void)
55{ 54{
56 highestZ = 1; 55 highestZ = 1;
57 int t = 0; 56 int t = 0;
58 57
59 beginDealing(); 58 beginDealing();
60 59
61 for (int i = 0; i < 8; i++) { 60 for (int i = 0; i < 8; i++) {
62 for (int k = 0; k < i+1; k++, t++) { 61 for (int k = 0; k < i+1; k++, t++) {
63 Card *card = cards[t]; 62 Card *card = cards[t];
64 workingPiles[i]->addCardToTop(card); 63 workingPiles[i]->addCardToTop(card);
65 card->setCardPile( workingPiles[i] ); 64 card->setCardPile( workingPiles[i] );
66 card->setPos( 0, 0, highestZ ); 65 card->setPos( 0, 0, highestZ );
67 card->setFace(k==i); 66 card->setFace(k==i);
68 card->move( workingPiles[i]->getCardPos( card ) ); 67 card->move( workingPiles[i]->getCardPos( card ) );
69 card->showCard(); 68 card->showCard();
70 highestZ++; 69 highestZ++;
71 } 70 }
72 } 71 }
73 72
74 for ( ; t < getNumberOfCards(); t++) { 73 for ( ; t < getNumberOfCards(); t++) {
75 Card *card = cards[t]; 74 Card *card = cards[t];
76 faceDownDealingPile->addCardToTop(card); 75 faceDownDealingPile->addCardToTop(card);
77 card->setCardPile( faceDownDealingPile ); 76 card->setCardPile( faceDownDealingPile );
78 QPoint p = faceDownDealingPile->getCardPos( card ); 77 QPoint p = faceDownDealingPile->getCardPos( card );
79 card->setPos( p.x(), p.y(), highestZ ); 78 card->setPos( p.x(), p.y(), highestZ );
80 card->showCard(); 79 card->showCard();
81 highestZ++; 80 highestZ++;
82 } 81 }
83 82
84 endDealing(); 83 endDealing();
85} 84}
86 85
87 86
88void HarpCardGame::readConfig( Config& cfg ) 87void HarpCardGame::readConfig( Config& cfg )
89{ 88{
90 cfg.setGroup("GameState"); 89 cfg.setGroup("GameState");
91 90
92 // Create Cards, but don't shuffle or deal them yet 91 // Create Cards, but don't shuffle or deal them yet
93 createDeck(); 92 createDeck();
94 93
95 // Move the cards to their piles (deal them to their previous places) 94 // Move the cards to their piles (deal them to their previous places)
96 beginDealing(); 95 beginDealing();
97 96
98 highestZ = 1; 97 highestZ = 1;
99 98
100 for (int i = 0; i < 8; i++) { 99 for (int i = 0; i < 8; i++) {
101 QString pile; 100 QString pile;
102 pile.sprintf( "HarpDiscardPile%i", i ); 101 pile.sprintf( "HarpDiscardPile%i", i );
103 readPile( cfg, discardPiles[i], pile, highestZ ); 102 readPile( cfg, discardPiles[i], pile, highestZ );
104 } 103 }
105 104
106 for (int i = 0; i < 8; i++) { 105 for (int i = 0; i < 8; i++) {
107 QString pile; 106 QString pile;
108 pile.sprintf( "HarpWorkingPile%i", i ); 107 pile.sprintf( "HarpWorkingPile%i", i );
109 readPile( cfg, workingPiles[i], pile, highestZ ); 108 readPile( cfg, workingPiles[i], pile, highestZ );
110 } 109 }
111 110
112 readPile( cfg, faceDownDealingPile, "HarpFaceDownDealingPile", highestZ ); 111 readPile( cfg, faceDownDealingPile, "HarpFaceDownDealingPile", highestZ );
113 112
114 highestZ++; 113 highestZ++;
115 114
116 endDealing(); 115 endDealing();
117} 116}
118 117
119 118
120void HarpCardGame::writeConfig( Config& cfg ) 119void HarpCardGame::writeConfig( Config& cfg )
121{ 120{
122 cfg.setGroup("GameState"); 121 cfg.setGroup("GameState");
123 for ( int i = 0; i < 8; i++ ) { 122 for ( int i = 0; i < 8; i++ ) {
124 QString pile; 123 QString pile;
125 pile.sprintf( "HarpDiscardPile%i", i ); 124 pile.sprintf( "HarpDiscardPile%i", i );
126 discardPiles[i]->writeConfig( cfg, pile ); 125 discardPiles[i]->writeConfig( cfg, pile );
127 } 126 }
128 for ( int i = 0; i < 8; i++ ) { 127 for ( int i = 0; i < 8; i++ ) {
129 QString pile; 128 QString pile;
130 pile.sprintf( "HarpWorkingPile%i", i ); 129 pile.sprintf( "HarpWorkingPile%i", i );
131 workingPiles[i]->writeConfig( cfg, pile ); 130 workingPiles[i]->writeConfig( cfg, pile );
132 } 131 }
133 faceDownDealingPile->writeConfig( cfg, "HarpFaceDownDealingPile" ); 132 faceDownDealingPile->writeConfig( cfg, "HarpFaceDownDealingPile" );
134} 133}
135 134
136 135
137bool HarpCardGame::mousePressCard( Card *card, QPoint p ) 136bool HarpCardGame::mousePressCard( Card *card, QPoint p )
138{ 137{
139 Q_UNUSED(p); 138 Q_UNUSED(p);
140 139
141 CanvasCard *item = (CanvasCard *)card; 140 CanvasCard *item = (CanvasCard *)card;
142 if (item->isFacing() != TRUE) { 141 if (item->isFacing() != TRUE) {
143 // From facedown stack 142 // From facedown stack
144 if ((item->x() == 2) && ((int)item->y() == 10)) { // Deal a row of 8 cards 143 if ((item->x() == 2) && ((int)item->y() == 10)) { // Deal a row of 8 cards
145 // Move 8 cards, one to each workingPile 144 // Move 8 cards, one to each workingPile
146 beginDealing(); 145 beginDealing();
147 for (int i=0; i<8 && faceDownDealingPile->cardOnTop(); i++) { 146 for (int i=0; i<8 && faceDownDealingPile->cardOnTop(); i++) {
148 CanvasCard *card = (CanvasCard *)faceDownDealingPile->cardOnTop(); 147 CanvasCard *card = (CanvasCard *)faceDownDealingPile->cardOnTop();
149 card->setZ(highestZ); 148 card->setZ(highestZ);
150 highestZ++; 149 highestZ++;
151 faceDownDealingPile->removeCard(card); 150 faceDownDealingPile->removeCard(card);
152 workingPiles[i]->addCardToTop(card); 151 workingPiles[i]->addCardToTop(card);
153 card->setCardPile( workingPiles[i] ); 152 card->setCardPile( workingPiles[i] );
154 card->setFace(FALSE); 153 card->setFace(FALSE);
155 QPoint p = workingPiles[i]->getCardPos(card); 154 QPoint p = workingPiles[i]->getCardPos(card);
156 card->flipTo( p.x(), p.y() ); 155 card->flipTo( p.x(), p.y() );
157 } 156 }
158 endDealing(); 157 endDealing();
159 } 158 }
160 moving = NULL; 159 moving = NULL;
161 moved = FALSE; 160 moved = FALSE;
162 161
163 return TRUE; 162 return TRUE;
164 } else if ( !card->getCardPile()->isAllowedToBeMoved(card) ) {// Don't allow unclean columns to be moved 163 } else if ( !card->getCardPile()->isAllowedToBeMoved(card) ) {// Don't allow unclean columns to be moved
165 moving = NULL; 164 moving = NULL;
166 return TRUE; 165 return TRUE;
167 } 166 }
168 167
169 return FALSE; 168 return FALSE;
170} 169}
171 170
172 171
173 172
174void HarpCardGame::mousePress(QPoint p) 173void HarpCardGame::mousePress(QPoint p)
175{ 174{
176 Q_UNUSED(p); 175 Q_UNUSED(p);
177} 176}
178 177
179 178
diff --git a/noncore/games/solitaire/main.cpp b/noncore/games/solitaire/main.cpp
index bd3cf8b..9301171 100644
--- a/noncore/games/solitaire/main.cpp
+++ b/noncore/games/solitaire/main.cpp
@@ -1,26 +1,25 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "canvascardwindow.h" 21#include "canvascardwindow.h"
22 22
23#include <qpe/qpeapplication.h>
24#include <opie/oapplicationfactory.h> 23#include <opie/oapplicationfactory.h>
25 24
26OPIE_EXPORT_APP( OApplicationFactory<CanvasCardWindow> ) \ No newline at end of file 25OPIE_EXPORT_APP( OApplicationFactory<CanvasCardWindow> ) \ No newline at end of file
diff --git a/noncore/games/solitaire/patiencecardgame.cpp b/noncore/games/solitaire/patiencecardgame.cpp
index 96a599c..756577a 100644
--- a/noncore/games/solitaire/patiencecardgame.cpp
+++ b/noncore/games/solitaire/patiencecardgame.cpp
@@ -1,212 +1,211 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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#include <qgfx_qws.h>
21#include "patiencecardgame.h" 20#include "patiencecardgame.h"
22 21
23 22
24int highestZ = 0; 23int highestZ = 0;
25 24
26 25
27PatienceCardGame::PatienceCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent) 26PatienceCardGame::PatienceCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent)
28{ 27{
29 numberOfTimesThroughDeck = 0; 28 numberOfTimesThroughDeck = 0;
30 highestZ = 0; 29 highestZ = 0;
31 30
32 if ( qt_screen->deviceWidth() < 200 ) 31 if ( qt_screen->deviceWidth() < 200 )
33 { 32 {
34 circleCross = new CanvasCircleOrCross( 7, 16, canvas() ); 33 circleCross = new CanvasCircleOrCross( 7, 16, canvas() );
35 rectangle = new CanvasRoundRect( 30, 10, canvas() ); 34 rectangle = new CanvasRoundRect( 30, 10, canvas() );
36 35
37 for (int i = 0; i < 4; i++) 36 for (int i = 0; i < 4; i++)
38 { 37 {
39 discardPiles[i] = new PatienceDiscardPile( 78 + i * 23, 10, canvas() ); 38 discardPiles[i] = new PatienceDiscardPile( 78 + i * 23, 10, canvas() );
40 addCardPile(discardPiles[i]); 39 addCardPile(discardPiles[i]);
41 } 40 }
42 for (int i = 0; i < 7; i++) 41 for (int i = 0; i < 7; i++)
43 { 42 {
44 workingPiles[i] = new PatienceWorkingPile( 5 + i * 23, 50, canvas() ); 43 workingPiles[i] = new PatienceWorkingPile( 5 + i * 23, 50, canvas() );
45 addCardPile(workingPiles[i]); 44 addCardPile(workingPiles[i]);
46 } 45 }
47 faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() ); 46 faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() );
48 faceUpDealingPile = new PatienceFaceUpDeck( 30, 10, canvas() ); 47 faceUpDealingPile = new PatienceFaceUpDeck( 30, 10, canvas() );
49 } 48 }
50 else 49 else
51 { 50 {
52 circleCross = new CanvasCircleOrCross( 7, 18, canvas() ); 51 circleCross = new CanvasCircleOrCross( 7, 18, canvas() );
53 rectangle = new CanvasRoundRect( 35, 10, canvas() ); 52 rectangle = new CanvasRoundRect( 35, 10, canvas() );
54 53
55 for (int i = 0; i < 4; i++) 54 for (int i = 0; i < 4; i++)
56 { 55 {
57 discardPiles[i] = new PatienceDiscardPile( 110 + i * 30, 10, canvas() ); 56 discardPiles[i] = new PatienceDiscardPile( 110 + i * 30, 10, canvas() );
58 addCardPile(discardPiles[i]); 57 addCardPile(discardPiles[i]);
59 } 58 }
60 for (int i = 0; i < 7; i++) 59 for (int i = 0; i < 7; i++)
61 { 60 {
62 workingPiles[i] = new PatienceWorkingPile( 10 + i * 30, 50, canvas() ); 61 workingPiles[i] = new PatienceWorkingPile( 10 + i * 30, 50, canvas() );
63 addCardPile(workingPiles[i]); 62 addCardPile(workingPiles[i]);
64 } 63 }
65 faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() ); 64 faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() );
66 faceUpDealingPile = new PatienceFaceUpDeck( 35, 10, canvas() ); 65 faceUpDealingPile = new PatienceFaceUpDeck( 35, 10, canvas() );
67 } 66 }
68} 67}
69 68
70 69
71PatienceCardGame::~PatienceCardGame() 70PatienceCardGame::~PatienceCardGame()
72{ 71{
73 delete circleCross; 72 delete circleCross;
74 delete rectangle; 73 delete rectangle;
75 delete faceDownDealingPile; 74 delete faceDownDealingPile;
76 delete faceUpDealingPile; 75 delete faceUpDealingPile;
77} 76}
78 77
79 78
80void PatienceCardGame::deal(void) 79void PatienceCardGame::deal(void)
81{ 80{
82 highestZ = 1; 81 highestZ = 1;
83 int t = 0; 82 int t = 0;
84 83
85 beginDealing(); 84 beginDealing();
86 85
87 for (int i = 0; i < 7; i++) 86 for (int i = 0; i < 7; i++)
88 { 87 {
89 cards[t]->setFace(TRUE); 88 cards[t]->setFace(TRUE);
90 for (int k = i; k < 7; k++, t++) 89 for (int k = i; k < 7; k++, t++)
91 { 90 {
92 Card *card = cards[t]; 91 Card *card = cards[t];
93 workingPiles[k]->addCardToTop(card); 92 workingPiles[k]->addCardToTop(card);
94 card->setCardPile( workingPiles[k] ); 93 card->setCardPile( workingPiles[k] );
95 QPoint p = workingPiles[k]->getCardPos( card ); 94 QPoint p = workingPiles[k]->getCardPos( card );
96 card->setPos( p.x(), p.y(), highestZ ); 95 card->setPos( p.x(), p.y(), highestZ );
97 card->showCard(); 96 card->showCard();
98 highestZ++; 97 highestZ++;
99 } 98 }
100 } 99 }
101 100
102 for ( ; t < 52; t++) 101 for ( ; t < 52; t++)
103 { 102 {
104 Card *card = cards[t]; 103 Card *card = cards[t];
105 faceDownDealingPile->addCardToTop(card); 104 faceDownDealingPile->addCardToTop(card);
106 card->setCardPile( faceDownDealingPile ); 105 card->setCardPile( faceDownDealingPile );
107 QPoint p = faceDownDealingPile->getCardPos( card ); 106 QPoint p = faceDownDealingPile->getCardPos( card );
108 card->setPos( p.x(), p.y(), highestZ ); 107 card->setPos( p.x(), p.y(), highestZ );
109 card->showCard(); 108 card->showCard();
110 highestZ++; 109 highestZ++;
111 } 110 }
112 111
113 endDealing(); 112 endDealing();
114} 113}
115 114
116 115
117void PatienceCardGame::readConfig( Config& cfg ) 116void PatienceCardGame::readConfig( Config& cfg )
118{ 117{
119 cfg.setGroup("GameState"); 118 cfg.setGroup("GameState");
120 119
121 // Do we have a config file to read in? 120 // Do we have a config file to read in?
122 if ( !cfg.hasKey("numberOfTimesThroughDeck") ) 121 if ( !cfg.hasKey("numberOfTimesThroughDeck") )
123 { 122 {
124 // if not, create a new game 123 // if not, create a new game
125 newGame(); 124 newGame();
126 return; 125 return;
127 } 126 }
128 // We have a config file, lets read it in and use it 127 // We have a config file, lets read it in and use it
129 128
130 // Create Cards, but don't shuffle or deal them yet 129 // Create Cards, but don't shuffle or deal them yet
131 createDeck(); 130 createDeck();
132 131
133 // How many times through the deck have we been 132 // How many times through the deck have we been
134 numberOfTimesThroughDeck = cfg.readNumEntry("numberOfTimesThroughDeck"); 133 numberOfTimesThroughDeck = cfg.readNumEntry("numberOfTimesThroughDeck");
135 134
136 // restore state to the circle/cross under the dealing pile 135 // restore state to the circle/cross under the dealing pile
137 if ( canTurnOverDeck() ) 136 if ( canTurnOverDeck() )
138 circleCross->setCircle(); 137 circleCross->setCircle();
139 else 138 else
140 circleCross->setCross(); 139 circleCross->setCross();
141 140
142 // Move the cards to their piles (deal them to their previous places) 141 // Move the cards to their piles (deal them to their previous places)
143 beginDealing(); 142 beginDealing();
144 143
145 highestZ = 1; 144 highestZ = 1;
146 145
147 for (int k = 0; k < 7; k++) 146 for (int k = 0; k < 7; k++)
148 { 147 {
149 QString pile; 148 QString pile;
150 pile.sprintf( "WorkingPile%i", k ); 149 pile.sprintf( "WorkingPile%i", k );
151 readPile( cfg, workingPiles[k], pile, highestZ ); 150 readPile( cfg, workingPiles[k], pile, highestZ );
152 } 151 }
153 152
154 for (int k = 0; k < 4; k++) 153 for (int k = 0; k < 4; k++)
155 { 154 {
156 QString pile; 155 QString pile;
157 pile.sprintf( "DiscardPile%i", k ); 156 pile.sprintf( "DiscardPile%i", k );
158 readPile( cfg, discardPiles[k], pile, highestZ ); 157 readPile( cfg, discardPiles[k], pile, highestZ );
159 } 158 }
160 159
161 readPile( cfg, faceDownDealingPile, "FaceDownDealingPile", highestZ ); 160 readPile( cfg, faceDownDealingPile, "FaceDownDealingPile", highestZ );
162 readPile( cfg, faceUpDealingPile, "FaceUpDealingPile", highestZ ); 161 readPile( cfg, faceUpDealingPile, "FaceUpDealingPile", highestZ );
163 162
164 highestZ++; 163 highestZ++;
165 164
166 endDealing(); 165 endDealing();
167} 166}
168 167
169 168
170void PatienceCardGame::writeConfig( Config& cfg ) 169void PatienceCardGame::writeConfig( Config& cfg )
171{ 170{
172 cfg.setGroup("GameState"); 171 cfg.setGroup("GameState");
173 cfg.writeEntry("numberOfTimesThroughDeck", numberOfTimesThroughDeck); 172 cfg.writeEntry("numberOfTimesThroughDeck", numberOfTimesThroughDeck);
174 173
175 for ( int i = 0; i < 7; i++ ) 174 for ( int i = 0; i < 7; i++ )
176 { 175 {
177 QString pile; 176 QString pile;
178 pile.sprintf( "WorkingPile%i", i ); 177 pile.sprintf( "WorkingPile%i", i );
179 workingPiles[i]->writeConfig( cfg, pile ); 178 workingPiles[i]->writeConfig( cfg, pile );
180 } 179 }
181 for ( int i = 0; i < 4; i++ ) 180 for ( int i = 0; i < 4; i++ )
182 { 181 {
183 QString pile; 182 QString pile;
184 pile.sprintf( "DiscardPile%i", i ); 183 pile.sprintf( "DiscardPile%i", i );
185 discardPiles[i]->writeConfig( cfg, pile ); 184 discardPiles[i]->writeConfig( cfg, pile );
186 } 185 }
187 faceDownDealingPile->writeConfig( cfg, "FaceDownDealingPile" ); 186 faceDownDealingPile->writeConfig( cfg, "FaceDownDealingPile" );
188 faceUpDealingPile->writeConfig( cfg, "FaceUpDealingPile" ); 187 faceUpDealingPile->writeConfig( cfg, "FaceUpDealingPile" );
189} 188}
190 189
191 190
192bool PatienceCardGame::mousePressCard( Card *card, QPoint p ) 191bool PatienceCardGame::mousePressCard( Card *card, QPoint p )
193{ 192{
194 Q_UNUSED(p); 193 Q_UNUSED(p);
195 194
196 CanvasCard *item = (CanvasCard *)card; 195 CanvasCard *item = (CanvasCard *)card;
197 if (item->isFacing() != TRUE) 196 if (item->isFacing() != TRUE)
198 { 197 {
199 // From facedown stack 198 // From facedown stack
200 if ((item->x() == 5) && ((int)item->y() == 10)) 199 if ((item->x() == 5) && ((int)item->y() == 10))
201 { 200 {
202 item->setZ(highestZ); 201 item->setZ(highestZ);
203 highestZ++; 202 highestZ++;
204 203
205 // Added Code 204 // Added Code
206 faceDownDealingPile->removeCard(item); 205 faceDownDealingPile->removeCard(item);
207 faceUpDealingPile->addCardToTop(item); 206 faceUpDealingPile->addCardToTop(item);
208 item->setCardPile( faceUpDealingPile ); 207 item->setCardPile( faceUpDealingPile );
209 208
210 if ( qt_screen->deviceWidth() < 200 ) 209 if ( qt_screen->deviceWidth() < 200 )
211 item->flipTo( 30, (int)item->y() ); 210 item->flipTo( 30, (int)item->y() );
212 else 211 else
diff --git a/noncore/games/solitaire/teeclubcardgame.cpp b/noncore/games/solitaire/teeclubcardgame.cpp
index 0941e0d..b1af757 100644
--- a/noncore/games/solitaire/teeclubcardgame.cpp
+++ b/noncore/games/solitaire/teeclubcardgame.cpp
@@ -1,202 +1,201 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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** created on base of patiencecardgame by cam (C.A.Mader) 2002 20** created on base of patiencecardgame by cam (C.A.Mader) 2002
21** Rules for this game: 21** Rules for this game:
22** use 2 decks = 104 cards 22** use 2 decks = 104 cards
23** deal 9 rows with 5 open cards each 23** deal 9 rows with 5 open cards each
24** append one card to each other card which is one step higher 24** append one card to each other card which is one step higher
25** move only columns of cards which are equal in suit 25** move only columns of cards which are equal in suit
26** each card can be layed on a free place 26** each card can be layed on a free place
27** deal 1 card at once on the first pile 27** deal 1 card at once on the first pile
28** 28**
29** 29**
30**********************************************************************/ 30**********************************************************************/
31#include <qgfx_qws.h>
32#include "teeclubcardgame.h" 31#include "teeclubcardgame.h"
33 32
34 33
35extern int highestZ; 34extern int highestZ;
36 35
37 36
38 TeeclubCardGame::TeeclubCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent, 2)// Use 2 Decks 37 TeeclubCardGame::TeeclubCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent, 2)// Use 2 Decks
39{ 38{
40 highestZ = 0; 39 highestZ = 0;
41 40
42 for (int i = 0; i < 8; i++) { 41 for (int i = 0; i < 8; i++) {
43 discardPiles[i] = new TeeclubDiscardPile( 27 + i * 26, 10, canvas() ); 42 discardPiles[i] = new TeeclubDiscardPile( 27 + i * 26, 10, canvas() );
44 addCardPile(discardPiles[i]); 43 addCardPile(discardPiles[i]);
45 } 44 }
46 for (int i = 0; i < 9; i++) { 45 for (int i = 0; i < 9; i++) {
47 workingPiles[i] = new TeeclubWorkingPile( 2 + i * 26, 50, canvas() ); 46 workingPiles[i] = new TeeclubWorkingPile( 2 + i * 26, 50, canvas() );
48 addCardPile(workingPiles[i]); 47 addCardPile(workingPiles[i]);
49 } 48 }
50 faceDownDealingPile = new TeeclubFaceDownDeck( 2, 10, canvas() ); 49 faceDownDealingPile = new TeeclubFaceDownDeck( 2, 10, canvas() );
51} 50}
52 51
53 52
54void TeeclubCardGame::deal(void) 53void TeeclubCardGame::deal(void)
55{ 54{
56 highestZ = 1; 55 highestZ = 1;
57 int t = 0; 56 int t = 0;
58 57
59 beginDealing(); 58 beginDealing();
60 59
61 for (int i = 0; i < 9; i++) { 60 for (int i = 0; i < 9; i++) {
62 workingPiles[i]->setOffsetDown(13); 61 workingPiles[i]->setOffsetDown(13);
63 workingPiles[i]->beginPileResize(); 62 workingPiles[i]->beginPileResize();
64 for (int k = 0; k < 5; k++, t++) { 63 for (int k = 0; k < 5; k++, t++) {
65 Card *card = cards[t]; 64 Card *card = cards[t];
66 workingPiles[i]->addCardToTop(card); 65 workingPiles[i]->addCardToTop(card);
67 card->setCardPile( workingPiles[i] ); 66 card->setCardPile( workingPiles[i] );
68 card->setPos( 0, 0, highestZ ); 67 card->setPos( 0, 0, highestZ );
69 card->setFace(TRUE); 68 card->setFace(TRUE);
70 card->move( workingPiles[i]->getCardPos( card ) ); 69 card->move( workingPiles[i]->getCardPos( card ) );
71 card->showCard(); 70 card->showCard();
72 highestZ++; 71 highestZ++;
73 } 72 }
74 } 73 }
75 74
76 for ( ; t < getNumberOfCards(); t++) { 75 for ( ; t < getNumberOfCards(); t++) {
77 Card *card = cards[t]; 76 Card *card = cards[t];
78 faceDownDealingPile->addCardToTop(card); 77 faceDownDealingPile->addCardToTop(card);
79 card->setCardPile( faceDownDealingPile ); 78 card->setCardPile( faceDownDealingPile );
80 QPoint p = faceDownDealingPile->getCardPos( card ); 79 QPoint p = faceDownDealingPile->getCardPos( card );
81 card->setPos( p.x(), p.y(), highestZ ); 80 card->setPos( p.x(), p.y(), highestZ );
82 card->showCard(); 81 card->showCard();
83 highestZ++; 82 highestZ++;
84 } 83 }
85 84
86 endDealing(); 85 endDealing();
87} 86}
88 87
89 88
90void TeeclubCardGame::resizePiles() 89void TeeclubCardGame::resizePiles()
91{ 90{
92 beginDealing(); 91 beginDealing();
93 for (int i = 0; i < 9; i++) { 92 for (int i = 0; i < 9; i++) {
94 while ((workingPiles[i]->getCardPos(NULL).y() > 230) && (workingPiles[i]->getOffsetDown()>1)) { 93 while ((workingPiles[i]->getCardPos(NULL).y() > 230) && (workingPiles[i]->getOffsetDown()>1)) {
95 // resize the pile 94 // resize the pile
96 workingPiles[i]->setOffsetDown(workingPiles[i]->getOffsetDown()-1); 95 workingPiles[i]->setOffsetDown(workingPiles[i]->getOffsetDown()-1);
97 Card *card = workingPiles[i]->cardOnBottom(); 96 Card *card = workingPiles[i]->cardOnBottom();
98 int p=0; 97 int p=0;
99 while (card != NULL) { 98 while (card != NULL) {
100 card->setPos( 0, 0, p++ ); 99 card->setPos( 0, 0, p++ );
101 card->move( workingPiles[i]->getCardPos( card ) ); 100 card->move( workingPiles[i]->getCardPos( card ) );
102 card = workingPiles[i]->cardInfront(card); 101 card = workingPiles[i]->cardInfront(card);
103 } 102 }
104 } 103 }
105 } 104 }
106 endDealing(); 105 endDealing();
107} 106}
108 107
109 108
110void TeeclubCardGame::readConfig( Config& cfg ) 109void TeeclubCardGame::readConfig( Config& cfg )
111{ 110{
112 cfg.setGroup("GameState"); 111 cfg.setGroup("GameState");
113 112
114 // Create Cards, but don't shuffle or deal them yet 113 // Create Cards, but don't shuffle or deal them yet
115 createDeck(); 114 createDeck();
116 115
117 // Move the cards to their piles (deal them to their previous places) 116 // Move the cards to their piles (deal them to their previous places)
118 beginDealing(); 117 beginDealing();
119 118
120 highestZ = 1; 119 highestZ = 1;
121 120
122 for (int i = 0; i < 8; i++) { 121 for (int i = 0; i < 8; i++) {
123 QString pile; 122 QString pile;
124 pile.sprintf( "TeeclubDiscardPile%i", i ); 123 pile.sprintf( "TeeclubDiscardPile%i", i );
125 readPile( cfg, discardPiles[i], pile, highestZ ); 124 readPile( cfg, discardPiles[i], pile, highestZ );
126 } 125 }
127 126
128 for (int i = 0; i < 9; i++) { 127 for (int i = 0; i < 9; i++) {
129 workingPiles[i]->endPileResize(); 128 workingPiles[i]->endPileResize();
130 QString pile; 129 QString pile;
131 pile.sprintf( "TeeclubWorkingPile%i", i ); 130 pile.sprintf( "TeeclubWorkingPile%i", i );
132 readPile( cfg, workingPiles[i], pile, highestZ ); 131 readPile( cfg, workingPiles[i], pile, highestZ );
133 workingPiles[i]->beginPileResize(); 132 workingPiles[i]->beginPileResize();
134 } 133 }
135 134
136 readPile( cfg, faceDownDealingPile, "TeeclubFaceDownDealingPile", highestZ ); 135 readPile( cfg, faceDownDealingPile, "TeeclubFaceDownDealingPile", highestZ );
137 136
138 highestZ++; 137 highestZ++;
139 138
140 endDealing(); 139 endDealing();
141 resizePiles(); 140 resizePiles();
142} 141}
143 142
144 143
145void TeeclubCardGame::writeConfig( Config& cfg ) 144void TeeclubCardGame::writeConfig( Config& cfg )
146{ 145{
147 cfg.setGroup("GameState"); 146 cfg.setGroup("GameState");
148 for ( int i = 0; i < 8; i++ ) { 147 for ( int i = 0; i < 8; i++ ) {
149 QString pile; 148 QString pile;
150 pile.sprintf( "TeeclubDiscardPile%i", i ); 149 pile.sprintf( "TeeclubDiscardPile%i", i );
151 discardPiles[i]->writeConfig( cfg, pile ); 150 discardPiles[i]->writeConfig( cfg, pile );
152 } 151 }
153 for ( int i = 0; i < 9; i++ ) { 152 for ( int i = 0; i < 9; i++ ) {
154 QString pile; 153 QString pile;
155 pile.sprintf( "TeeclubWorkingPile%i", i ); 154 pile.sprintf( "TeeclubWorkingPile%i", i );
156 workingPiles[i]->writeConfig( cfg, pile ); 155 workingPiles[i]->writeConfig( cfg, pile );
157 } 156 }
158 faceDownDealingPile->writeConfig( cfg, "TeeclubFaceDownDealingPile" ); 157 faceDownDealingPile->writeConfig( cfg, "TeeclubFaceDownDealingPile" );
159} 158}
160 159
161 160
162bool TeeclubCardGame::mousePressCard( Card *card, QPoint p ) 161bool TeeclubCardGame::mousePressCard( Card *card, QPoint p )
163{ 162{
164 Q_UNUSED(p); 163 Q_UNUSED(p);
165 164
166 CanvasCard *item = (CanvasCard *)card; 165 CanvasCard *item = (CanvasCard *)card;
167 if (item->isFacing() != TRUE) { 166 if (item->isFacing() != TRUE) {
168 // From facedown stack 167 // From facedown stack
169 if ((item->x() == 2) && ((int)item->y() == 10)) { // Deal 1 card 168 if ((item->x() == 2) && ((int)item->y() == 10)) { // Deal 1 card
170 // Move 8 cards, one to each workingPile 169 // Move 8 cards, one to each workingPile
171 beginDealing(); 170 beginDealing();
172 CanvasCard *card = (CanvasCard *)faceDownDealingPile->cardOnTop(); 171 CanvasCard *card = (CanvasCard *)faceDownDealingPile->cardOnTop();
173 card->setZ(highestZ); 172 card->setZ(highestZ);
174 highestZ++; 173 highestZ++;
175 faceDownDealingPile->removeCard(card); 174 faceDownDealingPile->removeCard(card);
176 workingPiles[0]->addCardToTop(card); 175 workingPiles[0]->addCardToTop(card);
177 card->setCardPile( workingPiles[0] ); 176 card->setCardPile( workingPiles[0] );
178 card->setFace(FALSE); 177 card->setFace(FALSE);
179 QPoint p = workingPiles[0]->getCardPos(card); 178 QPoint p = workingPiles[0]->getCardPos(card);
180 card->flipTo( p.x(), p.y() ); 179 card->flipTo( p.x(), p.y() );
181 endDealing(); 180 endDealing();
182 } 181 }
183 moving = NULL; 182 moving = NULL;
184 moved = FALSE; 183 moved = FALSE;
185 184
186 return TRUE; 185 return TRUE;
187 } else if ( !card->getCardPile()->isAllowedToBeMoved(card) ) {// Don't allow unclean columns to be moved 186 } else if ( !card->getCardPile()->isAllowedToBeMoved(card) ) {// Don't allow unclean columns to be moved
188 moving = NULL; 187 moving = NULL;
189 return TRUE; 188 return TRUE;
190 } 189 }
191 190
192 return FALSE; 191 return FALSE;
193} 192}
194 193
195 194
196 195
197void TeeclubCardGame::mousePress(QPoint p) 196void TeeclubCardGame::mousePress(QPoint p)
198{ 197{
199 Q_UNUSED(p); 198 Q_UNUSED(p);
200} 199}
201 200
202 201
diff --git a/noncore/games/tetrix/main.cpp b/noncore/games/tetrix/main.cpp
index fcf4b33..bf1242f 100644
--- a/noncore/games/tetrix/main.cpp
+++ b/noncore/games/tetrix/main.cpp
@@ -1,28 +1,27 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "qtetrix.h" 21#include "qtetrix.h"
22 22
23#include <qpe/qpeapplication.h>
24 23
25#include <opie/oapplicationfactory.h> 24#include <opie/oapplicationfactory.h>
26 25
27OPIE_EXPORT_APP( OApplicationFactory<QTetrix> ) 26OPIE_EXPORT_APP( OApplicationFactory<QTetrix> )
28 27
diff --git a/noncore/games/tetrix/ohighscoredlg.cpp b/noncore/games/tetrix/ohighscoredlg.cpp
index 7581f51..8d8079e 100644
--- a/noncore/games/tetrix/ohighscoredlg.cpp
+++ b/noncore/games/tetrix/ohighscoredlg.cpp
@@ -1,200 +1,199 @@
1/*************************************************************************** 1/***************************************************************************
2 begin : January 2003 2 begin : January 2003
3 copyright : ( C ) 2003 by Carsten Niehaus 3 copyright : ( C ) 2003 by Carsten Niehaus
4 email : cniehaus@handhelds.org 4 email : cniehaus@handhelds.org
5 **************************************************************************/ 5 **************************************************************************/
6 6
7/*************************************************************************** 7/***************************************************************************
8 * * 8 * *
9 * This program is free software; you can redistribute it and/or modify * 9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by * 10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or * 11 * the Free Software Foundation; either version 2 of the License, or *
12 * ( at your option ) any later version. * 12 * ( at your option ) any later version. *
13 * * 13 * *
14 **************************************************************************/ 14 **************************************************************************/
15 15
16#include <qdialog.h> 16#include <qdialog.h>
17#include <qpe/config.h>
18#include <qlayout.h> 17#include <qlayout.h>
19#include <qpe/config.h>
20#include <qpe/qpeapplication.h> 18#include <qpe/qpeapplication.h>
19#include <qpe/config.h>
21 20
22#include <qstring.h> 21#include <qstring.h>
23#include <qhbox.h> 22#include <qhbox.h>
24#include <qvbox.h> 23#include <qvbox.h>
25#include <qlabel.h> 24#include <qlabel.h>
26#include <qlistview.h> 25#include <qlistview.h>
27#include <qlineedit.h> 26#include <qlineedit.h>
28 27
29#include "ohighscoredlg.h" 28#include "ohighscoredlg.h"
30 29
31OHighscore::OHighscore( int score , int playerLevel ) 30OHighscore::OHighscore( int score , int playerLevel )
32{ 31{
33 pLevel = playerLevel; 32 pLevel = playerLevel;
34 getList(); 33 getList();
35 checkIfItIsANewhighscore( score ); 34 checkIfItIsANewhighscore( score );
36} 35}
37 36
38OHighscore::~OHighscore() 37OHighscore::~OHighscore()
39{ 38{
40 std::list<t_playerData*>::iterator deleteIterator = playerData.begin(); 39 std::list<t_playerData*>::iterator deleteIterator = playerData.begin();
41 for ( ; deleteIterator != playerData.end() ; deleteIterator++ ) 40 for ( ; deleteIterator != playerData.end() ; deleteIterator++ )
42 { 41 {
43 delete ( *deleteIterator ); 42 delete ( *deleteIterator );
44 } 43 }
45} 44}
46 45
47void OHighscore::getList() 46void OHighscore::getList()
48{ 47{
49 Config cfg ( "tetrix" ); 48 Config cfg ( "tetrix" );
50 cfg.setGroup( QString::number( 1 ) ); 49 cfg.setGroup( QString::number( 1 ) );
51 lowest = cfg.readNumEntry( "Points" ); 50 lowest = cfg.readNumEntry( "Points" );
52 playerData.clear(); 51 playerData.clear();
53 52
54 int rest = 1;//for the filling up later 53 int rest = 1;//for the filling up later
55 54
56 for ( int i = 1 ; i < 11 ; i++ ) 55 for ( int i = 1 ; i < 11 ; i++ )
57 { 56 {
58 if ( cfg.hasGroup( QString::number( i ) ) ) 57 if ( cfg.hasGroup( QString::number( i ) ) )
59 { 58 {
60 cfg.setGroup( QString::number( i ) ); 59 cfg.setGroup( QString::number( i ) );
61 int temp = cfg.readNumEntry( "Points" ); 60 int temp = cfg.readNumEntry( "Points" );
62 61
63 t_playerData *pPlayerData = new t_playerData; 62 t_playerData *pPlayerData = new t_playerData;
64 pPlayerData->sName = cfg.readEntry( "Name" ); 63 pPlayerData->sName = cfg.readEntry( "Name" );
65 pPlayerData->points = temp; 64 pPlayerData->points = temp;
66 pPlayerData->level = cfg.readNumEntry( "Level" ); 65 pPlayerData->level = cfg.readNumEntry( "Level" );
67 66
68 playerData.push_back( pPlayerData ); 67 playerData.push_back( pPlayerData );
69 68
70 if ( (temp < lowest) ) lowest = temp; 69 if ( (temp < lowest) ) lowest = temp;
71 rest++; 70 rest++;
72 } 71 }
73 } 72 }
74 73
75 //now I fill up the rest of the list 74 //now I fill up the rest of the list
76 if ( rest < 11 ) //only go in this loop if there are less than 75 if ( rest < 11 ) //only go in this loop if there are less than
77 //10 highscoreentries 76 //10 highscoreentries
78 { 77 {
79 lowest = 0; 78 lowest = 0;
80 for ( ; rest < 11 ; rest++ ) 79 for ( ; rest < 11 ; rest++ )
81 { 80 {
82 t_playerData *pPlayerData = new t_playerData; 81 t_playerData *pPlayerData = new t_playerData;
83 pPlayerData->sName = tr( "empty"); 82 pPlayerData->sName = tr( "empty");
84 pPlayerData->points = 0; 83 pPlayerData->points = 0;
85 pPlayerData->level = 0; 84 pPlayerData->level = 0;
86 85
87 playerData.push_back( pPlayerData ); 86 playerData.push_back( pPlayerData );
88 } 87 }
89 } 88 }
90 89
91} 90}
92 91
93void OHighscore::checkIfItIsANewhighscore( int points) 92void OHighscore::checkIfItIsANewhighscore( int points)
94{ 93{
95 if ( points > lowest ) 94 if ( points > lowest )
96 isNewhighscore = true; 95 isNewhighscore = true;
97 else 96 else
98 isNewhighscore = false; 97 isNewhighscore = false;
99} 98}
100 99
101void OHighscore::insertData( QString name , int punkte , int playerLevel ) 100void OHighscore::insertData( QString name , int punkte , int playerLevel )
102{ 101{
103 Config cfg ( "tetrix" ); 102 Config cfg ( "tetrix" );
104 int entryNumber = 1; 103 int entryNumber = 1;
105 std::list<t_playerData*>::iterator insertIterator = playerData.begin(); 104 std::list<t_playerData*>::iterator insertIterator = playerData.begin();
106 while ( insertIterator != playerData.end() ) 105 while ( insertIterator != playerData.end() )
107 { 106 {
108 if ( punkte > ( *insertIterator )->points ) 107 if ( punkte > ( *insertIterator )->points )
109 { 108 {
110 t_playerData* temp = new t_playerData; 109 t_playerData* temp = new t_playerData;
111 temp->sName = name; 110 temp->sName = name;
112 temp->points = punkte; 111 temp->points = punkte;
113 temp->level = playerLevel; 112 temp->level = playerLevel;
114 playerData.insert( insertIterator , temp ); 113 playerData.insert( insertIterator , temp );
115 114
116 //now we have to delete the last entry 115 //now we have to delete the last entry
117 insertIterator = playerData.end(); 116 insertIterator = playerData.end();
118 insertIterator--; 117 insertIterator--;
119 //X delete *insertIterator; //memleak? 118 //X delete *insertIterator; //memleak?
120 playerData.erase( insertIterator ); 119 playerData.erase( insertIterator );
121 120
122 ///////////////////////////////////////// 121 /////////////////////////////////////////
123 //this block just rewrites the highscore 122 //this block just rewrites the highscore
124 insertIterator = playerData.begin(); 123 insertIterator = playerData.begin();
125 while ( insertIterator != playerData.end() ) 124 while ( insertIterator != playerData.end() )
126 { 125 {
127 cfg.setGroup( QString::number( entryNumber ) ); 126 cfg.setGroup( QString::number( entryNumber ) );
128 cfg.writeEntry( "Name" , ( *insertIterator )->sName ); 127 cfg.writeEntry( "Name" , ( *insertIterator )->sName );
129 cfg.writeEntry( "Points" , ( *insertIterator )->points ); 128 cfg.writeEntry( "Points" , ( *insertIterator )->points );
130 cfg.writeEntry( "Level" , ( *insertIterator )->level ); 129 cfg.writeEntry( "Level" , ( *insertIterator )->level );
131 entryNumber++; 130 entryNumber++;
132 insertIterator++; 131 insertIterator++;
133 } 132 }
134 //////////////////////////////////////// 133 ////////////////////////////////////////
135 134
136 return; 135 return;
137 } 136 }
138 insertIterator++; 137 insertIterator++;
139 } 138 }
140} 139}
141 140
142QString OHighscore::getName() 141QString OHighscore::getName()
143{ 142{
144 QString name; 143 QString name;
145 QDialog *d = new QDialog ( this, 0, true ); 144 QDialog *d = new QDialog ( this, 0, true );
146 d->setCaption( tr( "Enter your name!" )); 145 d->setCaption( tr( "Enter your name!" ));
147 QLineEdit *ed = new QLineEdit ( d ); 146 QLineEdit *ed = new QLineEdit ( d );
148 ( new QVBoxLayout ( d, 3, 3 ))->addWidget ( ed ); 147 ( new QVBoxLayout ( d, 3, 3 ))->addWidget ( ed );
149 ed->setFocus ( ); 148 ed->setFocus ( );
150 149
151 if ( d->exec() == QDialog::Accepted ) { 150 if ( d->exec() == QDialog::Accepted ) {
152 name = ed->text(); 151 name = ed->text();
153 } 152 }
154 //delete d; 153 //delete d;
155 return name; 154 return name;
156} 155}
157 156
158OHighscoreDialog::OHighscoreDialog(OHighscore *highscore, QWidget *parent, const char *name, bool modal) : QDialog(parent, name, modal) 157OHighscoreDialog::OHighscoreDialog(OHighscore *highscore, QWidget *parent, const char *name, bool modal) : QDialog(parent, name, modal)
159{ 158{
160 hs_ = highscore; 159 hs_ = highscore;
161 setCaption( tr( "Highscores" ) ); 160 setCaption( tr( "Highscores" ) );
162 vbox_layout = new QVBoxLayout( this, 4 , 4 ); 161 vbox_layout = new QVBoxLayout( this, 4 , 4 );
163 list = new QListView( this ); 162 list = new QListView( this );
164 list->setSorting( -1 ); 163 list->setSorting( -1 );
165 list->addColumn( tr( "#" )); 164 list->addColumn( tr( "#" ));
166 list->addColumn( tr( "Name" )); 165 list->addColumn( tr( "Name" ));
167 list->addColumn( tr( "Points" )); 166 list->addColumn( tr( "Points" ));
168 list->addColumn( tr( "Level" )); 167 list->addColumn( tr( "Level" ));
169 168
170 createHighscoreListView(); 169 createHighscoreListView();
171 170
172 vbox_layout->addWidget( list ); 171 vbox_layout->addWidget( list );
173 QPEApplication::showDialog( this ); 172 QPEApplication::showDialog( this );
174} 173}
175 174
176void OHighscoreDialog::createHighscoreListView() 175void OHighscoreDialog::createHighscoreListView()
177{ 176{
178 int pos = 10; 177 int pos = 10;
179 int points_ = 0; 178 int points_ = 0;
180 int level_ = 0; 179 int level_ = 0;
181 180
182 std::list<t_playerData*>::reverse_iterator iListe = hs_->playerData.rbegin(); 181 std::list<t_playerData*>::reverse_iterator iListe = hs_->playerData.rbegin();
183 182
184 for ( ; iListe != hs_->playerData.rend() ; ++iListe ) 183 for ( ; iListe != hs_->playerData.rend() ; ++iListe )
185 { 184 {
186 QListViewItem *item = new QListViewItem( list ); 185 QListViewItem *item = new QListViewItem( list );
187 item->setText( 0 , QString::number( pos ) ); //number 186 item->setText( 0 , QString::number( pos ) ); //number
188 item->setText( 1 , ( *iListe )->sName ); //name 187 item->setText( 1 , ( *iListe )->sName ); //name
189 if ( ( *iListe )->points == -1 ) 188 if ( ( *iListe )->points == -1 )
190 points_ = 0; 189 points_ = 0;
191 else points_ = ( *iListe )->points; 190 else points_ = ( *iListe )->points;
192 if ( ( *iListe )->level == -1 ) 191 if ( ( *iListe )->level == -1 )
193 level_ = 0; 192 level_ = 0;
194 else level_ = ( *iListe )->level; 193 else level_ = ( *iListe )->level;
195 item->setText( 2 , QString::number( points_ ) ); //points 194 item->setText( 2 , QString::number( points_ ) ); //points
196 item->setText( 3 , QString::number( level_ ) ); //level 195 item->setText( 3 , QString::number( level_ ) ); //level
197 pos--; 196 pos--;
198 } 197 }
199} 198}
200 199
diff --git a/noncore/games/tetrix/qtetrix.cpp b/noncore/games/tetrix/qtetrix.cpp
index 6d29c3f..20cf1a7 100644
--- a/noncore/games/tetrix/qtetrix.cpp
+++ b/noncore/games/tetrix/qtetrix.cpp
@@ -1,177 +1,174 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 21
22#include "qtetrix.h" 22#include "qtetrix.h"
23 23
24#include <qpe/resource.h> 24#include <qpe/resource.h>
25#include <qpe/config.h>
26 25
27#include <qapplication.h>
28#include <qlabel.h> 26#include <qlabel.h>
29#include <qdatetime.h> 27#include <qdatetime.h>
30#include <qlayout.h> 28#include <qlayout.h>
31#include <qstring.h>
32 29
33#include "ohighscoredlg.h" 30#include "ohighscoredlg.h"
34 31
35 32
36void drawTetrixButton( QPainter *p, int x, int y, int w, int h, 33void drawTetrixButton( QPainter *p, int x, int y, int w, int h,
37 const QColor *color ) 34 const QColor *color )
38{ 35{
39 QColor fc; 36 QColor fc;
40 if ( color ) { 37 if ( color ) {
41 QPointArray a; 38 QPointArray a;
42 a.setPoints( 3, x,y+h-1, x,y, x+w-1,y ); 39 a.setPoints( 3, x,y+h-1, x,y, x+w-1,y );
43 p->setPen( color->light() ); 40 p->setPen( color->light() );
44 p->drawPolyline( a ); 41 p->drawPolyline( a );
45 a.setPoints( 3, x+1,y+h-1, x+w-1,y+h-1, x+w-1,y+1 ); 42 a.setPoints( 3, x+1,y+h-1, x+w-1,y+h-1, x+w-1,y+1 );
46 p->setPen( color->dark() ); 43 p->setPen( color->dark() );
47 p->drawPolyline( a ); 44 p->drawPolyline( a );
48 x++; 45 x++;
49 y++; 46 y++;
50 w -= 2; 47 w -= 2;
51 h -= 2; 48 h -= 2;
52 fc = *color; 49 fc = *color;
53 } 50 }
54 else 51 else
55 fc = p->backgroundColor(); 52 fc = p->backgroundColor();
56 p->fillRect( x, y, w, h, fc ); 53 p->fillRect( x, y, w, h, fc );
57} 54}
58 55
59 56
60ShowNextPiece::ShowNextPiece( QWidget *parent, const char *name ) 57ShowNextPiece::ShowNextPiece( QWidget *parent, const char *name )
61 : QFrame( parent, name ) 58 : QFrame( parent, name )
62{ 59{
63 setFrameStyle( QFrame::Panel | QFrame::Sunken ); 60 setFrameStyle( QFrame::Panel | QFrame::Sunken );
64 xOffset = -1; // -1 until first resizeEvent. 61 xOffset = -1; // -1 until first resizeEvent.
65} 62}
66 63
67void ShowNextPiece::resizeEvent( QResizeEvent *e ) 64void ShowNextPiece::resizeEvent( QResizeEvent *e )
68{ 65{
69 QSize sz = e->size(); 66 QSize sz = e->size();
70 blockWidth = (sz.width() - 3)/5; 67 blockWidth = (sz.width() - 3)/5;
71 blockHeight = (sz.height() - 3)/6; 68 blockHeight = (sz.height() - 3)/6;
72 xOffset = (sz.width() - 3)/5; 69 xOffset = (sz.width() - 3)/5;
73 yOffset = (sz.height() - 3)/6; 70 yOffset = (sz.height() - 3)/6;
74} 71}
75 72
76 73
77void ShowNextPiece::paintEvent( QPaintEvent * ) 74void ShowNextPiece::paintEvent( QPaintEvent * )
78{ 75{
79 QPainter p( this ); 76 QPainter p( this );
80 drawFrame( &p ); 77 drawFrame( &p );
81 p.end(); // explicit end() so any slots can paint too 78 p.end(); // explicit end() so any slots can paint too
82 emit update(); 79 emit update();
83} 80}
84 81
85 82
86void ShowNextPiece::drawNextSquare(int x, int y,QColor *color) 83void ShowNextPiece::drawNextSquare(int x, int y,QColor *color)
87{ 84{
88 if (xOffset == -1) // Before first resizeEvent? 85 if (xOffset == -1) // Before first resizeEvent?
89 return; 86 return;
90 87
91 QPainter paint; 88 QPainter paint;
92 paint.begin(this); 89 paint.begin(this);
93 drawTetrixButton( &paint, xOffset+x*blockWidth, yOffset+y*blockHeight, 90 drawTetrixButton( &paint, xOffset+x*blockWidth, yOffset+y*blockHeight,
94 blockWidth, blockHeight, color ); 91 blockWidth, blockHeight, color );
95 paint.end(); 92 paint.end();
96} 93}
97 94
98 95
99QTetrix::QTetrix( QWidget *parent, const char *name, WFlags f ) 96QTetrix::QTetrix( QWidget *parent, const char *name, WFlags f )
100 : QMainWindow( parent, name, f ) 97 : QMainWindow( parent, name, f )
101{ 98{
102 setIcon( Resource::loadPixmap( "tetrix_icon" ) ); 99 setIcon( Resource::loadPixmap( "tetrix_icon" ) );
103 setCaption( tr("Tetrix" ) ); 100 setCaption( tr("Tetrix" ) );
104 101
105 QTime t = QTime::currentTime(); 102 QTime t = QTime::currentTime();
106 TetrixPiece::setRandomSeed( (((double)t.hour())+t.minute()+t.second())/ 103 TetrixPiece::setRandomSeed( (((double)t.hour())+t.minute()+t.second())/
107 (24+60+60) ); 104 (24+60+60) );
108 105
109 QWidget *gameArea = new QWidget( this ); 106 QWidget *gameArea = new QWidget( this );
110 setCentralWidget( gameArea ); 107 setCentralWidget( gameArea );
111 108
112 QGridLayout *gl = new QGridLayout( gameArea, 5, 3, 8 ); 109 QGridLayout *gl = new QGridLayout( gameArea, 5, 3, 8 );
113 110
114 QLabel *l; 111 QLabel *l;
115 l = new QLabel( tr("Next"), gameArea ); 112 l = new QLabel( tr("Next"), gameArea );
116 gl->addWidget( l, 0, 0 ); 113 gl->addWidget( l, 0, 0 );
117 showNext = new ShowNextPiece(gameArea); 114 showNext = new ShowNextPiece(gameArea);
118 showNext->setBackgroundColor(QColor(0,0,0)); 115 showNext->setBackgroundColor(QColor(0,0,0));
119 gl->addWidget( showNext, 0, 1 ); 116 gl->addWidget( showNext, 0, 1 );
120 117
121 l = new QLabel( tr("Score"), gameArea ); 118 l = new QLabel( tr("Score"), gameArea );
122 gl->addWidget( l, 1, 0 ); 119 gl->addWidget( l, 1, 0 );
123 showScore = new QLabel(gameArea); 120 showScore = new QLabel(gameArea);
124 gl->addWidget( showScore, 1, 1 ); 121 gl->addWidget( showScore, 1, 1 );
125 l = new QLabel( tr("Level"), gameArea ); 122 l = new QLabel( tr("Level"), gameArea );
126 gl->addWidget( l, 2, 0 ); 123 gl->addWidget( l, 2, 0 );
127 showLevel = new QLabel(gameArea); 124 showLevel = new QLabel(gameArea);
128 gl->addWidget( showLevel, 2, 1 ); 125 gl->addWidget( showLevel, 2, 1 );
129 l = new QLabel( tr("Removed"), gameArea ); 126 l = new QLabel( tr("Removed"), gameArea );
130 gl->addWidget( l, 3, 0 ); 127 gl->addWidget( l, 3, 0 );
131 showLines = new QLabel(gameArea); 128 showLines = new QLabel(gameArea);
132 gl->addWidget( showLines, 3, 1 ); 129 gl->addWidget( showLines, 3, 1 );
133 130
134 board = new QTetrixBoard(gameArea); 131 board = new QTetrixBoard(gameArea);
135 board->setBackgroundColor(QColor(0,0,0)); 132 board->setBackgroundColor(QColor(0,0,0));
136 board->setFixedWidth( 124 ); 133 board->setFixedWidth( 124 );
137 gl->addMultiCellWidget( board, 0, 4, 2, 2 ); 134 gl->addMultiCellWidget( board, 0, 4, 2, 2 );
138 gl->addColSpacing( 2, 100 ); 135 gl->addColSpacing( 2, 100 );
139 gl->addColSpacing( 1, 35 ); 136 gl->addColSpacing( 1, 35 );
140 gl->addRowSpacing( 0, 35 ); 137 gl->addRowSpacing( 0, 35 );
141 138
142 QPushButton *pb = new QPushButton( tr("Start"), gameArea ); 139 QPushButton *pb = new QPushButton( tr("Start"), gameArea );
143 pb->setFocusPolicy( NoFocus ); 140 pb->setFocusPolicy( NoFocus );
144 connect( pb, SIGNAL( clicked() ), board, SLOT( start() ) ); 141 connect( pb, SIGNAL( clicked() ), board, SLOT( start() ) );
145 gl->addMultiCellWidget( pb, 4, 4, 0, 1 ); 142 gl->addMultiCellWidget( pb, 4, 4, 0, 1 );
146 143
147 connect( board, SIGNAL(gameOverSignal()), SLOT(gameOver()) ); 144 connect( board, SIGNAL(gameOverSignal()), SLOT(gameOver()) );
148 connect( board, SIGNAL(drawNextSquareSignal(int,int,QColor*)), showNext, 145 connect( board, SIGNAL(drawNextSquareSignal(int,int,QColor*)), showNext,
149 SLOT(drawNextSquare(int,int,QColor*)) ); 146 SLOT(drawNextSquare(int,int,QColor*)) );
150 connect( showNext, SIGNAL(update()), board, SLOT(updateNext()) ); 147 connect( showNext, SIGNAL(update()), board, SLOT(updateNext()) );
151 connect( board, SIGNAL(updateScoreSignal(int)), showScore, 148 connect( board, SIGNAL(updateScoreSignal(int)), showScore,
152 SLOT(setNum(int)) ); 149 SLOT(setNum(int)) );
153 connect( board, SIGNAL(updateLevelSignal(int)), showLevel, 150 connect( board, SIGNAL(updateLevelSignal(int)), showLevel,
154 SLOT(setNum(int))); 151 SLOT(setNum(int)));
155 connect( board, SIGNAL(updateRemovedSignal(int)), showLines, 152 connect( board, SIGNAL(updateRemovedSignal(int)), showLines,
156 SLOT(setNum(int))); 153 SLOT(setNum(int)));
157 154
158 showScore->setNum( 0 ); 155 showScore->setNum( 0 );
159 showLevel->setNum( 0 ); 156 showLevel->setNum( 0 );
160 showLines->setNum( 0 ); 157 showLines->setNum( 0 );
161 board->revealNextPiece(TRUE); 158 board->revealNextPiece(TRUE);
162 board->setFocusPolicy( StrongFocus ); 159 board->setFocusPolicy( StrongFocus );
163} 160}
164 161
165void QTetrix::gameOver() 162void QTetrix::gameOver()
166{ 163{
167 OHighscore *hs = new OHighscore( showScore->text().toInt() , showLevel->text().toInt() ); 164 OHighscore *hs = new OHighscore( showScore->text().toInt() , showLevel->text().toInt() );
168 if ( hs->isNewhighscore ) 165 if ( hs->isNewhighscore )
169 hs->insertData( hs->getName(), showScore->text().toInt() , showLevel->text().toInt() ); 166 hs->insertData( hs->getName(), showScore->text().toInt() , showLevel->text().toInt() );
170 OHighscoreDialog hscdlg( hs, this, "OHighscoreDialog", true ); 167 OHighscoreDialog hscdlg( hs, this, "OHighscoreDialog", true );
171 hscdlg.exec(); 168 hscdlg.exec();
172} 169}
173 170
174void QTetrix::quit() 171void QTetrix::quit()
175{ 172{
176 close(); 173 close();
177} 174}
diff --git a/noncore/games/tetrix/qtetrixb.cpp b/noncore/games/tetrix/qtetrixb.cpp
index 521f171..3c179df 100644
--- a/noncore/games/tetrix/qtetrixb.cpp
+++ b/noncore/games/tetrix/qtetrixb.cpp
@@ -1,218 +1,216 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 21
22#include "qtetrixb.h" 22#include "qtetrixb.h"
23#include "qtetrix.h" 23#include "qtetrix.h"
24#include <qtimer.h> 24#include <qtimer.h>
25#include <qkeycode.h>
26#include <qpainter.h>
27 25
28const int waitAfterLineTime = 500; 26const int waitAfterLineTime = 500;
29 27
30QTetrixBoard::QTetrixBoard( QWidget *p, const char *name ) 28QTetrixBoard::QTetrixBoard( QWidget *p, const char *name )
31 : QFrame( p, name ) 29 : QFrame( p, name )
32{ 30{
33 setFrameStyle( QFrame::Panel | QFrame::Sunken ); 31 setFrameStyle( QFrame::Panel | QFrame::Sunken );
34 paint = 0; 32 paint = 0;
35 timer = new QTimer(this); 33 timer = new QTimer(this);
36 connect( timer, SIGNAL(timeout()), SLOT(timeout()) ); 34 connect( timer, SIGNAL(timeout()), SLOT(timeout()) );
37 35
38 colors[0].setRgb(200,100,100); 36 colors[0].setRgb(200,100,100);
39 colors[1].setRgb(100,200,100); 37 colors[1].setRgb(100,200,100);
40 colors[2].setRgb(100,100,200); 38 colors[2].setRgb(100,100,200);
41 colors[3].setRgb(200,200,100); 39 colors[3].setRgb(200,200,100);
42 colors[4].setRgb(200,100,200); 40 colors[4].setRgb(200,100,200);
43 colors[5].setRgb(100,200,200); 41 colors[5].setRgb(100,200,200);
44 colors[6].setRgb(218,170, 0); 42 colors[6].setRgb(218,170, 0);
45 43
46 xOffset = -1; // -1 until a resizeEvent is received. 44 xOffset = -1; // -1 until a resizeEvent is received.
47 blockWidth = 20; 45 blockWidth = 20;
48 yOffset = 30; 46 yOffset = 30;
49 blockHeight = 20; 47 blockHeight = 20;
50 noGame = TRUE; 48 noGame = TRUE;
51 isPaused = FALSE; 49 isPaused = FALSE;
52 waitingAfterLine = FALSE; 50 waitingAfterLine = FALSE;
53 updateTimeoutTime(); // Sets timeoutTime 51 updateTimeoutTime(); // Sets timeoutTime
54} 52}
55 53
56void QTetrixBoard::startGame(int gameType,int fillRandomLines) 54void QTetrixBoard::startGame(int gameType,int fillRandomLines)
57{ 55{
58 if ( isPaused ) 56 if ( isPaused )
59 return; // ignore if game is paused 57 return; // ignore if game is paused
60 noGame = FALSE; 58 noGame = FALSE;
61 GenericTetrix::startGame( gameType, fillRandomLines ); 59 GenericTetrix::startGame( gameType, fillRandomLines );
62 // Note that the timer is started by updateLevel! 60 // Note that the timer is started by updateLevel!
63} 61}
64 62
65 63
66void QTetrixBoard::pause() 64void QTetrixBoard::pause()
67{ 65{
68 if ( noGame ) // game not active 66 if ( noGame ) // game not active
69 return; 67 return;
70 isPaused = !isPaused; 68 isPaused = !isPaused;
71 if ( isPaused ) { 69 if ( isPaused ) {
72 timer->stop(); 70 timer->stop();
73 hideBoard(); 71 hideBoard();
74 } 72 }
75 else 73 else
76 timer->start(timeoutTime); 74 timer->start(timeoutTime);
77 update(); 75 update();
78} 76}
79 77
80 78
81void QTetrixBoard::drawSquare(int x,int y,int value) 79void QTetrixBoard::drawSquare(int x,int y,int value)
82{ 80{
83 if (xOffset == -1) // Before first resizeEvent? 81 if (xOffset == -1) // Before first resizeEvent?
84 return; 82 return;
85 83
86 const int X = xOffset + x*blockWidth; 84 const int X = xOffset + x*blockWidth;
87 const int Y = yOffset + (y - 1)*blockHeight; 85 const int Y = yOffset + (y - 1)*blockHeight;
88 86
89 bool localPainter = paint == 0; 87 bool localPainter = paint == 0;
90 QPainter *p; 88 QPainter *p;
91 if ( localPainter ) 89 if ( localPainter )
92 p = new QPainter( this ); 90 p = new QPainter( this );
93 else 91 else
94 p = paint; 92 p = paint;
95 drawTetrixButton( p, X, Y, blockWidth, blockHeight, 93 drawTetrixButton( p, X, Y, blockWidth, blockHeight,
96 value == 0 ? 0 : &colors[value-1] ); 94 value == 0 ? 0 : &colors[value-1] );
97 /* 95 /*
98 if ( value != 0 ) { 96 if ( value != 0 ) {
99 QColor tc, bc; 97 QColor tc, bc;
100 tc = colors[value-1].light(); 98 tc = colors[value-1].light();
101 bc = colors[value-1].dark(); 99 bc = colors[value-1].dark();
102 p->drawShadePanel( X, Y, blockWidth, blockHeight, 100 p->drawShadePanel( X, Y, blockWidth, blockHeight,
103 tc, bc, 1, colors[value-1], TRUE ); 101 tc, bc, 1, colors[value-1], TRUE );
104 } 102 }
105 else 103 else
106 p->fillRect( X, Y, blockWidth, blockHeight, backgroundColor() ); 104 p->fillRect( X, Y, blockWidth, blockHeight, backgroundColor() );
107 */ 105 */
108 if ( localPainter ) 106 if ( localPainter )
109 delete p; 107 delete p;
110} 108}
111 109
112void QTetrixBoard::drawNextSquare( int x, int y, int value ) 110void QTetrixBoard::drawNextSquare( int x, int y, int value )
113{ 111{
114 if ( value == 0 ) 112 if ( value == 0 )
115 emit drawNextSquareSignal (x, y, 0 ); 113 emit drawNextSquareSignal (x, y, 0 );
116 else 114 else
117 emit drawNextSquareSignal( x, y, &colors[value-1] ); 115 emit drawNextSquareSignal( x, y, &colors[value-1] );
118} 116}
119 117
120void QTetrixBoard::updateRemoved( int noOfLines ) 118void QTetrixBoard::updateRemoved( int noOfLines )
121{ 119{
122 if ( noOfLines > 0 ) { 120 if ( noOfLines > 0 ) {
123 timer->stop(); 121 timer->stop();
124 timer->start( waitAfterLineTime ); 122 timer->start( waitAfterLineTime );
125 waitingAfterLine = TRUE; 123 waitingAfterLine = TRUE;
126 } 124 }
127 emit updateRemovedSignal( noOfLines ); 125 emit updateRemovedSignal( noOfLines );
128} 126}
129 127
130void QTetrixBoard::updateScore( int newScore ) 128void QTetrixBoard::updateScore( int newScore )
131{ 129{
132 emit updateScoreSignal( newScore ); 130 emit updateScoreSignal( newScore );
133} 131}
134 132
135void QTetrixBoard::updateLevel( int newLevel ) 133void QTetrixBoard::updateLevel( int newLevel )
136{ 134{
137 timer->stop(); 135 timer->stop();
138 updateTimeoutTime(); 136 updateTimeoutTime();
139 timer->start( timeoutTime ); 137 timer->start( timeoutTime );
140 emit updateLevelSignal( newLevel ); 138 emit updateLevelSignal( newLevel );
141} 139}
142 140
143void QTetrixBoard::pieceDropped(int) 141void QTetrixBoard::pieceDropped(int)
144{ 142{
145 if ( waitingAfterLine ) // give player a break if a line has been removed 143 if ( waitingAfterLine ) // give player a break if a line has been removed
146 return; 144 return;
147 newPiece(); 145 newPiece();
148} 146}
149 147
150void QTetrixBoard::gameOver() 148void QTetrixBoard::gameOver()
151{ 149{
152 timer->stop(); 150 timer->stop();
153 noGame = TRUE; 151 noGame = TRUE;
154 emit gameOverSignal(); 152 emit gameOverSignal();
155} 153}
156 154
157void QTetrixBoard::timeout() 155void QTetrixBoard::timeout()
158{ 156{
159 if ( waitingAfterLine ) { 157 if ( waitingAfterLine ) {
160 timer->stop(); 158 timer->stop();
161 waitingAfterLine = FALSE; 159 waitingAfterLine = FALSE;
162 newPiece(); 160 newPiece();
163 timer->start( timeoutTime ); 161 timer->start( timeoutTime );
164 } else { 162 } else {
165 oneLineDown(); 163 oneLineDown();
166 } 164 }
167} 165}
168 166
169void QTetrixBoard::drawContents( QPainter *p ) 167void QTetrixBoard::drawContents( QPainter *p )
170{ 168{
171 const char *text = "Press \"Pause\""; 169 const char *text = "Press \"Pause\"";
172 QRect r = contentsRect(); 170 QRect r = contentsRect();
173 paint = p; // set widget painter 171 paint = p; // set widget painter
174 if ( isPaused ) { 172 if ( isPaused ) {
175 p->drawText( r, AlignCenter | AlignVCenter, text ); 173 p->drawText( r, AlignCenter | AlignVCenter, text );
176 return; 174 return;
177 } 175 }
178 int x1,y1,x2,y2; 176 int x1,y1,x2,y2;
179 x1 = (r.left() - xOffset) / blockWidth; 177 x1 = (r.left() - xOffset) / blockWidth;
180 if (x1 < 0) 178 if (x1 < 0)
181 x1 = 0; 179 x1 = 0;
182 if (x1 >= boardWidth()) 180 if (x1 >= boardWidth())
183 x1 = boardWidth() - 1; 181 x1 = boardWidth() - 1;
184 182
185 x2 = (r.right() - xOffset) / blockWidth; 183 x2 = (r.right() - xOffset) / blockWidth;
186 if (x2 < 0) 184 if (x2 < 0)
187 x2 = 0; 185 x2 = 0;
188 if (x2 >= boardWidth()) 186 if (x2 >= boardWidth())
189 x2 = boardWidth() - 1; 187 x2 = boardWidth() - 1;
190 188
191 y1 = (r.top() - yOffset) / blockHeight; 189 y1 = (r.top() - yOffset) / blockHeight;
192 if (y1 < 0) 190 if (y1 < 0)
193 y1 = 0; 191 y1 = 0;
194 if (y1 >= boardHeight()) 192 if (y1 >= boardHeight())
195 y1 = boardHeight() - 1; 193 y1 = boardHeight() - 1;
196 194
197 y2 = (r.bottom() - yOffset) / blockHeight; 195 y2 = (r.bottom() - yOffset) / blockHeight;
198 if (y2 < 0) 196 if (y2 < 0)
199 y2 = 0; 197 y2 = 0;
200 if (y2 >= boardHeight()) 198 if (y2 >= boardHeight())
201 y2 = boardHeight() - 1; 199 y2 = boardHeight() - 1;
202 200
203 updateBoard( x1, y1, x2, y2, TRUE ); 201 updateBoard( x1, y1, x2, y2, TRUE );
204 paint = 0; // reset widget painter 202 paint = 0; // reset widget painter
205 return; 203 return;
206} 204}
207 205
208void QTetrixBoard::resizeEvent(QResizeEvent *e) 206void QTetrixBoard::resizeEvent(QResizeEvent *e)
209{ 207{
210 QSize sz = e->size(); 208 QSize sz = e->size();
211 blockWidth = (sz.width() - 2)/10; 209 blockWidth = (sz.width() - 2)/10;
212 blockHeight = (sz.height() - 2)/22; 210 blockHeight = (sz.height() - 2)/22;
213 xOffset = 1; 211 xOffset = 1;
214 //yOffset = 1; 212 //yOffset = 1;
215 yOffset = (sz.height() - 2) - (blockHeight *22); 213 yOffset = (sz.height() - 2) - (blockHeight *22);
216} 214}
217 215
218void QTetrixBoard::keyPressEvent( QKeyEvent *e ) 216void QTetrixBoard::keyPressEvent( QKeyEvent *e )
diff --git a/noncore/games/tictac/main.cpp b/noncore/games/tictac/main.cpp
index cfff683..9aafe4c 100644
--- a/noncore/games/tictac/main.cpp
+++ b/noncore/games/tictac/main.cpp
@@ -1,13 +1,12 @@
1/**************************************************************************** 1/****************************************************************************
2** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. 2** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of an example program for Qt. This example 4** This file is part of an example program for Qt. This example
5** program may be used, distributed and modified without limitation. 5** program may be used, distributed and modified without limitation.
6** 6**
7*****************************************************************************/ 7*****************************************************************************/
8 8
9#include <qpe/qpeapplication.h>
10#include <opie/oapplicationfactory.h> 9#include <opie/oapplicationfactory.h>
11#include "tictac.h" 10#include "tictac.h"
12 11
13OPIE_EXPORT_APP( OApplicationFactory<TicTacToe> ) 12OPIE_EXPORT_APP( OApplicationFactory<TicTacToe> )
diff --git a/noncore/games/tictac/tictac.cpp b/noncore/games/tictac/tictac.cpp
index 9de3b58..12ce35f 100644
--- a/noncore/games/tictac/tictac.cpp
+++ b/noncore/games/tictac/tictac.cpp
@@ -1,213 +1,209 @@
1/**************************************************************************** 1/****************************************************************************
2 ** tictac.cpp,v 1.3.8.1 2003/08/29 06:50:40 harlekin Exp 2 ** tictac.cpp,v 1.3.8.1 2003/08/29 06:50:40 harlekin Exp
3 ** 3 **
4 ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. 4 ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5 ** 5 **
6 ** This file is part of an example program for Qt. This example 6 ** This file is part of an example program for Qt. This example
7 ** program may be used, distributed and modified without limitation. 7 ** program may be used, distributed and modified without limitation.
8 ** 8 **
9 *****************************************************************************/ 9 *****************************************************************************/
10 10
11#include "tictac.h" 11#include "tictac.h"
12#include <qpe/qpeapplication.h> 12#include <qpe/qpeapplication.h>
13#include <qpainter.h>
14#include <qdrawutil.h> 13#include <qdrawutil.h>
15#include <qcombobox.h> 14#include <qcombobox.h>
16#include <qcheckbox.h>
17#include <qlabel.h> 15#include <qlabel.h>
18#include <qlayout.h> 16#include <qlayout.h>
19#include <stdlib.h> // rand() function 17#include <stdlib.h> // rand() function
20#include <qdatetime.h> // seed for rand()
21#include <qstringlist.h> //needed for proper internationalization
22 18
23 19
24//*************************************************************************** 20//***************************************************************************
25//* TicTacButton member functions 21//* TicTacButton member functions
26//*************************************************************************** 22//***************************************************************************
27 23
28// -------------------------------------------------------------------------- 24// --------------------------------------------------------------------------
29// Creates a TicTacButton 25// Creates a TicTacButton
30// 26//
31 27
32TicTacButton::TicTacButton( QWidget *parent ) : QPushButton( parent ) 28TicTacButton::TicTacButton( QWidget *parent ) : QPushButton( parent )
33{ 29{
34 t = Blank; // initial type 30 t = Blank; // initial type
35} 31}
36 32
37// -------------------------------------------------------------------------- 33// --------------------------------------------------------------------------
38// Paints TicTacButton 34// Paints TicTacButton
39// 35//
40 36
41void TicTacButton::drawButtonLabel( QPainter *p ) 37void TicTacButton::drawButtonLabel( QPainter *p )
42{ 38{
43 QRect r = rect(); 39 QRect r = rect();
44 p->setPen( QPen( white,2 ) ); // set fat pen 40 p->setPen( QPen( white,2 ) ); // set fat pen
45 if ( t == Circle ) { 41 if ( t == Circle ) {
46 p->drawEllipse( r.left()+4, r.top()+4, r.width()-8, r.height()-8 ); 42 p->drawEllipse( r.left()+4, r.top()+4, r.width()-8, r.height()-8 );
47 } else if ( t == Cross ) { // draw cross 43 } else if ( t == Cross ) { // draw cross
48 p->drawLine( r.topLeft() +QPoint(4,4), r.bottomRight()-QPoint(4,4)); 44 p->drawLine( r.topLeft() +QPoint(4,4), r.bottomRight()-QPoint(4,4));
49 p->drawLine( r.bottomLeft()+QPoint(4,-4),r.topRight() -QPoint(4,-4)); 45 p->drawLine( r.bottomLeft()+QPoint(4,-4),r.topRight() -QPoint(4,-4));
50 } 46 }
51} 47}
52 48
53 49
54//*************************************************************************** 50//***************************************************************************
55//* TicTacGameBoard member functions 51//* TicTacGameBoard member functions
56//*************************************************************************** 52//***************************************************************************
57 53
58// -------------------------------------------------------------------------- 54// --------------------------------------------------------------------------
59// Creates a game board with N x N buttons and connects the "clicked()" 55// Creates a game board with N x N buttons and connects the "clicked()"
60// signal of all buttons to the "buttonClicked()" slot. 56// signal of all buttons to the "buttonClicked()" slot.
61// 57//
62 58
63TicTacGameBoard::TicTacGameBoard( int n, QWidget *parent, const char *name ) 59TicTacGameBoard::TicTacGameBoard( int n, QWidget *parent, const char *name )
64 : QWidget( parent, name ) 60 : QWidget( parent, name )
65{ 61{
66 QPEApplication::showWidget( this ); 62 QPEApplication::showWidget( this );
67 st = Init; // initial state 63 st = Init; // initial state
68 nBoard = n; 64 nBoard = n;
69 n *= n; // make square 65 n *= n; // make square
70 comp_starts = FALSE; // human starts 66 comp_starts = FALSE; // human starts
71 buttons = new TicTacButtons(n); // create real buttons 67 buttons = new TicTacButtons(n); // create real buttons
72 btArray = new TicTacArray(n); // create button model 68 btArray = new TicTacArray(n); // create button model
73 QGridLayout * grid = new QGridLayout( this, 3, 3, 4 ); 69 QGridLayout * grid = new QGridLayout( this, 3, 3, 4 );
74 QPalette p( blue ); 70 QPalette p( blue );
75 for ( int i=0; i<n; i++ ) { // create and connect buttons 71 for ( int i=0; i<n; i++ ) { // create and connect buttons
76 TicTacButton *ttb = new TicTacButton( this ); 72 TicTacButton *ttb = new TicTacButton( this );
77 ttb->setPalette( p ); 73 ttb->setPalette( p );
78 ttb->setEnabled( FALSE ); 74 ttb->setEnabled( FALSE );
79 connect( ttb, SIGNAL(clicked()), SLOT(buttonClicked()) ); 75 connect( ttb, SIGNAL(clicked()), SLOT(buttonClicked()) );
80 grid->addWidget( ttb, i%3, i/3 ); 76 grid->addWidget( ttb, i%3, i/3 );
81 buttons->insert( i, ttb ); 77 buttons->insert( i, ttb );
82 btArray->at(i) = TicTacButton::Blank; // initial button type 78 btArray->at(i) = TicTacButton::Blank; // initial button type
83 } 79 }
84 QTime t = QTime::currentTime(); // set random seed 80 QTime t = QTime::currentTime(); // set random seed
85 srand( t.hour()*12+t.minute()*60+t.second()*60 ); 81 srand( t.hour()*12+t.minute()*60+t.second()*60 );
86} 82}
87 83
88TicTacGameBoard::~TicTacGameBoard() 84TicTacGameBoard::~TicTacGameBoard()
89{ 85{
90 delete buttons; 86 delete buttons;
91 delete btArray; 87 delete btArray;
92} 88}
93 89
94 90
95// -------------------------------------------------------------------------- 91// --------------------------------------------------------------------------
96// TicTacGameBoard::computerStarts( bool v ) 92// TicTacGameBoard::computerStarts( bool v )
97// 93//
98// Computer starts if v=TRUE. The human starts by default. 94// Computer starts if v=TRUE. The human starts by default.
99// 95//
100 96
101void TicTacGameBoard::computerStarts( bool v ) 97void TicTacGameBoard::computerStarts( bool v )
102{ 98{
103 comp_starts = v; 99 comp_starts = v;
104} 100}
105 101
106 102
107// -------------------------------------------------------------------------- 103// --------------------------------------------------------------------------
108// TicTacGameBoard::newGame() 104// TicTacGameBoard::newGame()
109// 105//
110// Clears the game board and prepares for a new game 106// Clears the game board and prepares for a new game
111// 107//
112 108
113void TicTacGameBoard::newGame() 109void TicTacGameBoard::newGame()
114{ 110{
115 st = HumansTurn; 111 st = HumansTurn;
116 for ( int i=0; i<nBoard*nBoard; i++ ) 112 for ( int i=0; i<nBoard*nBoard; i++ )
117 btArray->at(i) = TicTacButton::Blank; 113 btArray->at(i) = TicTacButton::Blank;
118 if ( comp_starts ) 114 if ( comp_starts )
119 computerMove(); 115 computerMove();
120 else 116 else
121 updateButtons(); 117 updateButtons();
122} 118}
123 119
124 120
125// -------------------------------------------------------------------------- 121// --------------------------------------------------------------------------
126// TicTacGameBoard::buttonClicked() - SLOT 122// TicTacGameBoard::buttonClicked() - SLOT
127// 123//
128// This slot is activated when a TicTacButton emits the signal "clicked()", 124// This slot is activated when a TicTacButton emits the signal "clicked()",
129// i.e. the user has clicked on a TicTacButton. 125// i.e. the user has clicked on a TicTacButton.
130// 126//
131 127
132void TicTacGameBoard::buttonClicked() 128void TicTacGameBoard::buttonClicked()
133{ 129{
134 if ( st != HumansTurn ) // not ready 130 if ( st != HumansTurn ) // not ready
135 return; 131 return;
136 int i = buttons->findRef( (TicTacButton*)sender() ); 132 int i = buttons->findRef( (TicTacButton*)sender() );
137 TicTacButton *b = buttons->at(i); // get piece that was pressed 133 TicTacButton *b = buttons->at(i); // get piece that was pressed
138 if ( b->type() == TicTacButton::Blank ) { // empty piece? 134 if ( b->type() == TicTacButton::Blank ) { // empty piece?
139 btArray->at(i) = TicTacButton::Circle; 135 btArray->at(i) = TicTacButton::Circle;
140 updateButtons(); 136 updateButtons();
141 if ( checkBoard( btArray ) == 0 ) // not a winning move? 137 if ( checkBoard( btArray ) == 0 ) // not a winning move?
142 computerMove(); 138 computerMove();
143 int s = checkBoard( btArray ); 139 int s = checkBoard( btArray );
144 if ( s ) { // any winners yet? 140 if ( s ) { // any winners yet?
145 st = s == TicTacButton::Circle ? HumanWon : ComputerWon; 141 st = s == TicTacButton::Circle ? HumanWon : ComputerWon;
146 emit finished(); 142 emit finished();
147 } 143 }
148 } 144 }
149} 145}
150 146
151 147
152// -------------------------------------------------------------------------- 148// --------------------------------------------------------------------------
153// TicTacGameBoard::updateButtons() 149// TicTacGameBoard::updateButtons()
154// 150//
155// Updates all buttons that have changed state 151// Updates all buttons that have changed state
156// 152//
157 153
158void TicTacGameBoard::updateButtons() 154void TicTacGameBoard::updateButtons()
159{ 155{
160 for ( int i=0; i<nBoard*nBoard; i++ ) { 156 for ( int i=0; i<nBoard*nBoard; i++ ) {
161 if ( buttons->at(i)->type() != btArray->at(i) ) 157 if ( buttons->at(i)->type() != btArray->at(i) )
162 buttons->at(i)->setType( (TicTacButton::Type)btArray->at(i) ); 158 buttons->at(i)->setType( (TicTacButton::Type)btArray->at(i) );
163 buttons->at(i)->setEnabled( buttons->at(i)->type() == 159 buttons->at(i)->setEnabled( buttons->at(i)->type() ==
164 TicTacButton::Blank ); 160 TicTacButton::Blank );
165 } 161 }
166} 162}
167 163
168 164
169// -------------------------------------------------------------------------- 165// --------------------------------------------------------------------------
170// TicTacGameBoard::checkBoard() 166// TicTacGameBoard::checkBoard()
171// 167//
172// Checks if one of the players won the game, works for any board size. 168// Checks if one of the players won the game, works for any board size.
173// 169//
174// Returns: 170// Returns:
175// - TicTacButton::Cross if the player with X buttons won 171// - TicTacButton::Cross if the player with X buttons won
176// - TicTacButton::Circle if the player with O buttons won 172// - TicTacButton::Circle if the player with O buttons won
177// - Zero (0) if there is no winner yet 173// - Zero (0) if there is no winner yet
178// 174//
179 175
180int TicTacGameBoard::checkBoard( TicTacArray *a ) 176int TicTacGameBoard::checkBoard( TicTacArray *a )
181{ 177{
182 int t = 0; 178 int t = 0;
183 int row, col; 179 int row, col;
184 bool won = FALSE; 180 bool won = FALSE;
185 for ( row=0; row<nBoard && !won; row++ ) { // check horizontal 181 for ( row=0; row<nBoard && !won; row++ ) { // check horizontal
186 t = a->at(row*nBoard); 182 t = a->at(row*nBoard);
187 if ( t == TicTacButton::Blank ) 183 if ( t == TicTacButton::Blank )
188 continue; 184 continue;
189 col = 1; 185 col = 1;
190 while ( col<nBoard && a->at(row*nBoard+col) == t ) 186 while ( col<nBoard && a->at(row*nBoard+col) == t )
191 col++; 187 col++;
192 if ( col == nBoard ) 188 if ( col == nBoard )
193 won = TRUE; 189 won = TRUE;
194 } 190 }
195 for ( col=0; col<nBoard && !won; col++ ) { // check vertical 191 for ( col=0; col<nBoard && !won; col++ ) { // check vertical
196 t = a->at(col); 192 t = a->at(col);
197 if ( t == TicTacButton::Blank ) 193 if ( t == TicTacButton::Blank )
198 continue; 194 continue;
199 row = 1; 195 row = 1;
200 while ( row<nBoard && a->at(row*nBoard+col) == t ) 196 while ( row<nBoard && a->at(row*nBoard+col) == t )
201 row++; 197 row++;
202 if ( row == nBoard ) 198 if ( row == nBoard )
203 won = TRUE; 199 won = TRUE;
204 } 200 }
205 if ( !won ) { // check diagonal top left 201 if ( !won ) { // check diagonal top left
206 t = a->at(0); // to bottom right 202 t = a->at(0); // to bottom right
207 if ( t != TicTacButton::Blank ) { 203 if ( t != TicTacButton::Blank ) {
208 int i = 1; 204 int i = 1;
209 while ( i<nBoard && a->at(i*nBoard+i) == t ) 205 while ( i<nBoard && a->at(i*nBoard+i) == t )
210 i++; 206 i++;
211 if ( i == nBoard ) 207 if ( i == nBoard )
212 won = TRUE; 208 won = TRUE;
213 } 209 }
diff --git a/noncore/games/wordgame/main.cpp b/noncore/games/wordgame/main.cpp
index f32acff..eb3e2f2 100644
--- a/noncore/games/wordgame/main.cpp
+++ b/noncore/games/wordgame/main.cpp
@@ -1,28 +1,27 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 "wordgame.h" 21#include "wordgame.h"
22 22
23#include <qpe/qpeapplication.h>
24#include <opie/oapplicationfactory.h> 23#include <opie/oapplicationfactory.h>
25 24
26 25
27OPIE_EXPORT_APP( OApplicationFactory<WordGame> ) 26OPIE_EXPORT_APP( OApplicationFactory<WordGame> )
28 27
diff --git a/noncore/games/wordgame/wordgame.cpp b/noncore/games/wordgame/wordgame.cpp
index c01551d..43a54f8 100644
--- a/noncore/games/wordgame/wordgame.cpp
+++ b/noncore/games/wordgame/wordgame.cpp
@@ -1,241 +1,232 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
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 21
22#include "wordgame.h" 22#include "wordgame.h"
23 23
24#include <qpe/applnk.h>
25#include <qpe/global.h> 24#include <qpe/global.h>
26#include <qpe/filemanager.h>
27#include <qpe/resource.h> 25#include <qpe/resource.h>
28#include <qpe/config.h> 26#include <qpe/config.h>
29 27
30#include <qapplication.h> 28#include <qapplication.h>
31#include <qmessagebox.h> 29#include <qmessagebox.h>
32#include <qcombobox.h> 30#include <qcombobox.h>
33#include <qdatetime.h>
34#include <qfileinfo.h>
35#include <qfile.h>
36#include <qdir.h> 31#include <qdir.h>
37#include <qiconset.h>
38#include <qlabel.h>
39#include <qlineedit.h> 32#include <qlineedit.h>
40#include <qpushbutton.h> 33#include <qpushbutton.h>
41#include <qtextstream.h> 34#include <qtextstream.h>
42#include <qtimer.h> 35#include <qtimer.h>
43#include <qpe/qpetoolbar.h> 36#include <qpe/qpetoolbar.h>
44#include <qtoolbutton.h> 37#include <qtoolbutton.h>
45#include <qvbox.h> 38#include <qvbox.h>
46#include <qwidgetstack.h> 39#include <qwidgetstack.h>
47#include <qpainter.h>
48#include <qlayout.h> 40#include <qlayout.h>
49#include <qregexp.h>
50 41
51#include <stdlib.h> 42#include <stdlib.h>
52#include <unistd.h> 43#include <unistd.h>
53#include <pwd.h> 44#include <pwd.h>
54#include <sys/types.h> 45#include <sys/types.h>
55 46
56enum RuleEffects { 47enum RuleEffects {
57 Multiplier=15, 48 Multiplier=15,
58 MultiplyAll=64, 49 MultiplyAll=64,
59 Start=128 50 Start=128
60}; 51};
61 52
62static int tile_smallw = 16; 53static int tile_smallw = 16;
63static int tile_smallh = 16; 54static int tile_smallh = 16;
64static int tile_bigw = 22; 55static int tile_bigw = 22;
65static int tile_bigh = 22; 56static int tile_bigh = 22;
66static int tile_stweak = -2; 57static int tile_stweak = -2;
67static int tile_btweak = -1; 58static int tile_btweak = -1;
68 59
69static const int rack_tiles=7; 60static const int rack_tiles=7;
70 61
71const char* sampleWGR= 62const char* sampleWGR=
72 "wordgame_shapes\n" 63 "wordgame_shapes\n"
73 "15 15\n" 64 "15 15\n"
74 "400001040100004\n" 65 "400001040100004\n"
75 "030000000000030\n" 66 "030000000000030\n"
76 "002002000200200\n" 67 "002002000200200\n"
77 "000300020003000\n" 68 "000300020003000\n"
78 "000020000020000\n" 69 "000020000020000\n"
79 "102001000100201\n" 70 "102001000100201\n"
80 "000000202000000\n" 71 "000000202000000\n"
81 "400200050002004\n" 72 "400200050002004\n"
82 "000000202000000\n" 73 "000000202000000\n"
83 "102001000100201\n" 74 "102001000100201\n"
84 "000020000020000\n" 75 "000020000020000\n"
85 "000300020003000\n" 76 "000300020003000\n"
86 "002002000200200\n" 77 "002002000200200\n"
87 "030000000000030\n" 78 "030000000000030\n"
88 "400001040100004\n" 79 "400001040100004\n"
89 "1 2 3 66 67 194 100 0\n" 80 "1 2 3 66 67 194 100 0\n"
90 "1 j 8\n" 81 "1 j 8\n"
91 "1 q 7\n" 82 "1 q 7\n"
92 "1 x 6\n" 83 "1 x 6\n"
93 "1 z 6\n" 84 "1 z 6\n"
94 "1 w 4\n" 85 "1 w 4\n"
95 "1 k 4\n" 86 "1 k 4\n"
96 "1 v 3\n" 87 "1 v 3\n"
97 "1 f 3\n" 88 "1 f 3\n"
98 "2 y 3\n" 89 "2 y 3\n"
99 "2 h 2\n" 90 "2 h 2\n"
100 "2 b 2\n" 91 "2 b 2\n"
101 "2 m 2\n" 92 "2 m 2\n"
102 "3 p 2\n" 93 "3 p 2\n"
103 "3 g 2\n" 94 "3 g 2\n"
104 "3 u 2\n" 95 "3 u 2\n"
105 "4 d 2\n" 96 "4 d 2\n"
106 "4 c 2\n" 97 "4 c 2\n"
107 "5 l 1\n" 98 "5 l 1\n"
108 "5 o 1\n" 99 "5 o 1\n"
109 "7 t 1\n" 100 "7 t 1\n"
110 "7 n 1\n" 101 "7 n 1\n"
111 "7 a 1\n" 102 "7 a 1\n"
112 "7 r 1\n" 103 "7 r 1\n"
113 "8 s 1\n" 104 "8 s 1\n"
114 "8 i 1\n" 105 "8 i 1\n"
115 "11 e 1\n" 106 "11 e 1\n"
116 "0\n"; 107 "0\n";
117 108
118WordGame::WordGame( QWidget* parent, const char* name, WFlags fl ) : 109WordGame::WordGame( QWidget* parent, const char* name, WFlags fl ) :
119 QMainWindow(parent, name, fl) 110 QMainWindow(parent, name, fl)
120{ 111{
121 if ( qApp->desktop()->width() < 240 ) { 112 if ( qApp->desktop()->width() < 240 ) {
122 tile_smallw = 10; 113 tile_smallw = 10;
123 tile_smallh = 10; 114 tile_smallh = 10;
124 tile_bigw = 16; 115 tile_bigw = 16;
125 tile_bigh = 16; 116 tile_bigh = 16;
126 tile_stweak = 0; 117 tile_stweak = 0;
127 tile_btweak = 0; 118 tile_btweak = 0;
128 } 119 }
129 120
130 setIcon( Resource::loadPixmap( "wordgame/WordGame.png" ) ); 121 setIcon( Resource::loadPixmap( "wordgame/WordGame.png" ) );
131 setCaption( tr("Word Game") ); 122 setCaption( tr("Word Game") );
132 123
133 setToolBarsMovable( FALSE ); 124 setToolBarsMovable( FALSE );
134 vbox = new QVBox(this); 125 vbox = new QVBox(this);
135 126
136 setCentralWidget(vbox); 127 setCentralWidget(vbox);
137 toolbar = new QToolBar(this); 128 toolbar = new QToolBar(this);
138 addToolBar(toolbar, Bottom); 129 addToolBar(toolbar, Bottom);
139 reset = new QToolButton(Resource::loadPixmap("back"), tr("Back"), "", this, SLOT(resetTurn()), toolbar); 130 reset = new QToolButton(Resource::loadPixmap("back"), tr("Back"), "", this, SLOT(resetTurn()), toolbar);
140 done = new QToolButton(Resource::loadPixmap("done"), tr("Done"), "", this, SLOT(endTurn()), toolbar); 131 done = new QToolButton(Resource::loadPixmap("done"), tr("Done"), "", this, SLOT(endTurn()), toolbar);
141 scoreinfo = new ScoreInfo(toolbar); 132 scoreinfo = new ScoreInfo(toolbar);
142 scoreinfo->setFont(QFont("Helvetica",10)); 133 scoreinfo->setFont(QFont("Helvetica",10));
143 new QToolButton(Resource::loadPixmap("finish"), tr("Close"), "", this, SLOT(endGame()), toolbar); 134 new QToolButton(Resource::loadPixmap("finish"), tr("Close"), "", this, SLOT(endGame()), toolbar);
144 toolbar->setStretchableWidget(scoreinfo); 135 toolbar->setStretchableWidget(scoreinfo);
145 136
146 cpu = 0; 137 cpu = 0;
147 board = 0; 138 board = 0;
148 bag = 0; 139 bag = 0;
149 racks = 0; 140 racks = 0;
150 141
151 aiheart = new QTimer(this); 142 aiheart = new QTimer(this);
152 connect(aiheart, SIGNAL(timeout()), this, SLOT(think())); 143 connect(aiheart, SIGNAL(timeout()), this, SLOT(think()));
153 144
154 readConfig(); 145 readConfig();
155} 146}
156 147
157WordGame::~WordGame() 148WordGame::~WordGame()
158{ 149{
159 writeConfig(); 150 writeConfig();
160} 151}
161 152
162void WordGame::writeConfig() 153void WordGame::writeConfig()
163{ 154{
164 Config cfg("WordGame"); 155 Config cfg("WordGame");
165 cfg.setGroup("Game"); 156 cfg.setGroup("Game");
166 cfg.writeEntry("NameList",namelist,';'); 157 cfg.writeEntry("NameList",namelist,';');
167 cfg.writeEntry("CurrentPlayer",gameover ? 0 : player+1); 158 cfg.writeEntry("CurrentPlayer",gameover ? 0 : player+1);
168 if ( !gameover ) { 159 if ( !gameover ) {
169 cfg.writeEntry("Rules",rules); 160 cfg.writeEntry("Rules",rules);
170 bag->writeConfig(cfg); 161 bag->writeConfig(cfg);
171 board->writeConfig(cfg); 162 board->writeConfig(cfg);
172 scoreinfo->writeConfig(cfg); 163 scoreinfo->writeConfig(cfg);
173 } 164 }
174 for (int p=0; p<nplayers; p++) { 165 for (int p=0; p<nplayers; p++) {
175 cfg.setGroup("Player"+QString::number(p+1)); 166 cfg.setGroup("Player"+QString::number(p+1));
176 if ( gameover ) cfg.clearGroup(); else rack(p)->writeConfig(cfg); 167 if ( gameover ) cfg.clearGroup(); else rack(p)->writeConfig(cfg);
177 } 168 }
178} 169}
179 170
180void WordGame::readConfig() 171void WordGame::readConfig()
181{ 172{
182 Config cfg("WordGame"); 173 Config cfg("WordGame");
183 cfg.setGroup("Game"); 174 cfg.setGroup("Game");
184 int currentplayer = cfg.readNumEntry("CurrentPlayer",0); 175 int currentplayer = cfg.readNumEntry("CurrentPlayer",0);
185 QStringList pnames = cfg.readListEntry("NameList",';'); 176 QStringList pnames = cfg.readListEntry("NameList",';');
186 if ( currentplayer ) { 177 if ( currentplayer ) {
187 gameover = FALSE; 178 gameover = FALSE;
188 rules = cfg.readEntry("Rules"); 179 rules = cfg.readEntry("Rules");
189 if ( rules.find("x-wordgamerules") >= 0 ) { 180 if ( rules.find("x-wordgamerules") >= 0 ) {
190 // rules files moved 181 // rules files moved
191 rules = "Sample.rules"; 182 rules = "Sample.rules";
192 } 183 }
193 if ( loadRules(rules) ) { 184 if ( loadRules(rules) ) {
194 startGame(pnames); 185 startGame(pnames);
195 bag->readConfig(cfg); 186 bag->readConfig(cfg);
196 board->readConfig(cfg); 187 board->readConfig(cfg);
197 scoreinfo->readConfig(cfg); 188 scoreinfo->readConfig(cfg);
198 for (int p=0; p<nplayers; p++) { 189 for (int p=0; p<nplayers; p++) {
199 cfg.setGroup("Player"+QString::number(p+1)); 190 cfg.setGroup("Player"+QString::number(p+1));
200 rack(p)->readConfig(cfg); 191 rack(p)->readConfig(cfg);
201 } 192 }
202 player=currentplayer-1; 193 player=currentplayer-1;
203 readyRack(player); 194 readyRack(player);
204 return; 195 return;
205 } 196 }
206 } 197 }
207 // fall-back 198 // fall-back
208 openGameSelector(pnames); 199 openGameSelector(pnames);
209} 200}
210 201
211void WordGame::openGameSelector(const QStringList& initnames) 202void WordGame::openGameSelector(const QStringList& initnames)
212{ 203{
213 toolbar->hide(); 204 toolbar->hide();
214 gameover = FALSE; 205 gameover = FALSE;
215 206
216 delete board; 207 delete board;
217 board = 0; 208 board = 0;
218 delete racks; 209 delete racks;
219 racks = 0; 210 racks = 0;
220 211
221 delete cpu; 212 delete cpu;
222 cpu = 0; 213 cpu = 0;
223 214
224 newgame = new NewGame(vbox); 215 newgame = new NewGame(vbox);
225 216
226 //Rules rules(this); 217 //Rules rules(this);
227 //connect(game.editrules, SIGNAL(clicked()), &rules, SLOT(editRules())); 218 //connect(game.editrules, SIGNAL(clicked()), &rules, SLOT(editRules()));
228 //connect(&rules, SIGNAL(rulesChanged()), &game, SLOT(updateRuleSets())); 219 //connect(&rules, SIGNAL(rulesChanged()), &game, SLOT(updateRuleSets()));
229 struct passwd* n = getpwuid(getuid()); 220 struct passwd* n = getpwuid(getuid());
230 QString playername = n ? n->pw_name : ""; 221 QString playername = n ? n->pw_name : "";
231 if ( playername.isEmpty() ) { 222 if ( playername.isEmpty() ) {
232 playername = "Player"; 223 playername = "Player";
233 } 224 }
234 newgame->player0->changeItem(playername,0); 225 newgame->player0->changeItem(playername,0);
235 newgame->player1->setCurrentItem(1); 226 newgame->player1->setCurrentItem(1);
236 newgame->updateRuleSets(); 227 newgame->updateRuleSets();
237 newgame->show(); 228 newgame->show();
238 229
239 connect(newgame->buttonOk, SIGNAL(clicked()), this, SLOT(startGame())); 230 connect(newgame->buttonOk, SIGNAL(clicked()), this, SLOT(startGame()));
240} 231}
241 232
diff --git a/noncore/games/zlines/ballpainter.cpp b/noncore/games/zlines/ballpainter.cpp
index c2b34e1..622ec29 100644
--- a/noncore/games/zlines/ballpainter.cpp
+++ b/noncore/games/zlines/ballpainter.cpp
@@ -1,135 +1,132 @@
1/*************************************************************************** 1/***************************************************************************
2 ballpainter.cpp - description 2 ballpainter.cpp - description
3 ------------------- 3 -------------------
4 begin : Fri May 19 2000 4 begin : Fri May 19 2000
5 copyright : (C) 2000 by Roman Merzlyakov 5 copyright : (C) 2000 by Roman Merzlyakov
6 email : roman@sbrf.barrt.ru 6 email : roman@sbrf.barrt.ru
7 copyright : (C) 2000 by Roman Razilov 7 copyright : (C) 2000 by Roman Razilov
8 email : Roman.Razilov@gmx.de 8 email : Roman.Razilov@gmx.de
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19 19
20#include <qpe/resource.h> 20#include <qpe/resource.h>
21 21
22#include <qapplication.h>
23#include "ballpainter.h" 22#include "ballpainter.h"
24//#include "shotcounter.h" 23//#include "shotcounter.h"
25#include <qpainter.h> 24#include <qpainter.h>
26#include "linesboard.h"
27//#include <qcolor.h> 25//#include <qcolor.h>
28#include <qjpegio.h>
29 26
30 27
31#define PIXSIZE 21 28#define PIXSIZE 21
32 29
33int colorLinesArr[NCOLORS] = 30int colorLinesArr[NCOLORS] =
34{0x0000ff, 0x00ff00, 0xff0000, 0x00ffff, 0xff00ff, 0xffff00, 0x005080}; 31{0x0000ff, 0x00ff00, 0xff0000, 0x00ffff, 0xff00ff, 0xffff00, 0x005080};
35// 0x00bbggrr 32// 0x00bbggrr
36// red , green , blue , yellow , violet , cyan , brown 33// red , green , blue , yellow , violet , cyan , brown
37 34
38 35
39 36
40BallPainter::BallPainter() 37BallPainter::BallPainter()
41 : QObject() 38 : QObject()
42{ 39{
43 createPixmap(); 40 createPixmap();
44} 41}
45 42
46BallPainter::~BallPainter() 43BallPainter::~BallPainter()
47{ 44{
48} 45}
49 46
50QPixmap* BallPainter::pixmap( enum Pixmaps pix ) 47QPixmap* BallPainter::pixmap( enum Pixmaps pix )
51{ 48{
52 QString name; 49 QString name;
53 switch(pix) { 50 switch(pix) {
54 case Field: 51 case Field:
55 name = QString::fromLatin1("zlines/field"); 52 name = QString::fromLatin1("zlines/field");
56 break; 53 break;
57 case Balls: 54 case Balls:
58 name = QString::fromLatin1("zlines/balls"); 55 name = QString::fromLatin1("zlines/balls");
59 break; 56 break;
60 case Fire: 57 case Fire:
61 name = QString::fromLatin1("zlines/fire"); 58 name = QString::fromLatin1("zlines/fire");
62 break; 59 break;
63 } 60 }
64 61
65 return new QPixmap(Resource::loadPixmap(name) ); 62 return new QPixmap(Resource::loadPixmap(name) );
66} 63}
67 64
68void BallPainter::createPixmap() 65void BallPainter::createPixmap()
69{ 66{
70 // warning( kapp->kde_datadir() +"/klines/data/balls.bmp"); 67 // warning( kapp->kde_datadir() +"/klines/data/balls.bmp");
71 backgroundPix = pixmap(Field); 68 backgroundPix = pixmap(Field);
72 QPixmap *balls = pixmap(Balls); 69 QPixmap *balls = pixmap(Balls);
73 QPixmap *fire = pixmap(Fire); 70 QPixmap *fire = pixmap(Fire);
74 if (balls->isNull() ||backgroundPix->isNull() || fire->isNull() ) 71 if (balls->isNull() ||backgroundPix->isNull() || fire->isNull() )
75 fatal("Cannot open data files.\nHave you correctly installed klines?"); 72 fatal("Cannot open data files.\nHave you correctly installed klines?");
76 73
77 warning("Pixsize %i", PIXSIZE); 74 warning("Pixsize %i", PIXSIZE);
78 for(int c=0; c<NCOLORS; c++) 75 for(int c=0; c<NCOLORS; c++)
79 { 76 {
80 for(int t=0; t<PIXTIME + FIREBALLS + BOOMBALLS + 1 ; t++) 77 for(int t=0; t<PIXTIME + FIREBALLS + BOOMBALLS + 1 ; t++)
81 { 78 {
82 imgCash[c][t] = new QPixmap(CELLSIZE, CELLSIZE); 79 imgCash[c][t] = new QPixmap(CELLSIZE, CELLSIZE);
83 QPainter p(imgCash[c][t]); 80 QPainter p(imgCash[c][t]);
84 p.drawPixmap(0,0,(*backgroundPix),0,0,CELLSIZE,CELLSIZE); 81 p.drawPixmap(0,0,(*backgroundPix),0,0,CELLSIZE,CELLSIZE);
85 p.drawPixmap(1,1,(*balls),t*PIXSIZE,c*PIXSIZE,PIXSIZE,PIXSIZE); 82 p.drawPixmap(1,1,(*balls),t*PIXSIZE,c*PIXSIZE,PIXSIZE,PIXSIZE);
86 } 83 }
87 for(int t=0; t < FIREPIX ; t++) 84 for(int t=0; t < FIREPIX ; t++)
88 { 85 {
89 firePix[t] = new QPixmap(CELLSIZE, CELLSIZE); 86 firePix[t] = new QPixmap(CELLSIZE, CELLSIZE);
90 QPainter p(firePix[t]); 87 QPainter p(firePix[t]);
91 p.drawPixmap(0,0,(*backgroundPix),0,0,CELLSIZE,CELLSIZE); 88 p.drawPixmap(0,0,(*backgroundPix),0,0,CELLSIZE,CELLSIZE);
92 p.drawPixmap(1,1,(*fire),t*PIXSIZE,0,PIXSIZE,PIXSIZE); 89 p.drawPixmap(1,1,(*fire),t*PIXSIZE,0,PIXSIZE,PIXSIZE);
93 } 90 }
94 } 91 }
95 delete balls; 92 delete balls;
96 delete fire; 93 delete fire;
97} 94}
98 95
99 96
100QPixmap* BallPainter::GetBall(int color, int animstep, int panim) 97QPixmap* BallPainter::GetBall(int color, int animstep, int panim)
101{ 98{
102 // return backgroundPix; 99 // return backgroundPix;
103 100
104 if( (color<0) || (color>=NCOLORS) || (animstep<0) || color == NOBALL ) 101 if( (color<0) || (color>=NCOLORS) || (animstep<0) || color == NOBALL )
105 { 102 {
106 // warning("BallPainter::Background"); 103 // warning("BallPainter::Background");
107 return backgroundPix; 104 return backgroundPix;
108 } 105 }
109 if ( panim == ANIM_JUMP ) 106 if ( panim == ANIM_JUMP )
110 { 107 {
111 if ( ( animstep < 0 ) || ( animstep >= PIXTIME ) ) 108 if ( ( animstep < 0 ) || ( animstep >= PIXTIME ) )
112 return backgroundPix; 109 return backgroundPix;
113 else 110 else
114 return imgCash[color][animstep]; 111 return imgCash[color][animstep];
115 } 112 }
116 else if ( panim == ANIM_BURN ) 113 else if ( panim == ANIM_BURN )
117 { 114 {
118 if ( animstep < FIREBALLS ) 115 if ( animstep < FIREBALLS )
119 return imgCash[color][animstep + PIXTIME + BOOMBALLS + 1]; 116 return imgCash[color][animstep + PIXTIME + BOOMBALLS + 1];
120 else if ( animstep < FIREBALLS + FIREPIX ) 117 else if ( animstep < FIREBALLS + FIREPIX )
121 return firePix[animstep - FIREBALLS]; 118 return firePix[animstep - FIREBALLS];
122 } 119 }
123 else if ( panim == ANIM_BORN ) 120 else if ( panim == ANIM_BORN )
124 { 121 {
125 if ( animstep < BOOMBALLS ) 122 if ( animstep < BOOMBALLS )
126 return imgCash[color][animstep + PIXTIME]; 123 return imgCash[color][animstep + PIXTIME];
127 else 124 else
128 return imgCash[color][NORMALBALL]; 125 return imgCash[color][NORMALBALL];
129 } 126 }
130 // rest is not imlemented yet 127 // rest is not imlemented yet
131 return imgCash[color][NORMALBALL]; 128 return imgCash[color][NORMALBALL];
132 129
133} 130}
134 131
135 132
diff --git a/noncore/games/zlines/field.cpp b/noncore/games/zlines/field.cpp
index 2a87739..0adf4ac 100644
--- a/noncore/games/zlines/field.cpp
+++ b/noncore/games/zlines/field.cpp
@@ -1,132 +1,131 @@
1/*************************************************************************** 1/***************************************************************************
2 field.cpp - description 2 field.cpp - description
3 ------------------- 3 -------------------
4begin : Fri May 19 2000 4begin : Fri May 19 2000
5copyright : (C) 2000 by Roman Merzlyakov 5copyright : (C) 2000 by Roman Merzlyakov
6email : roman@sbrf.barrt.ru 6email : roman@sbrf.barrt.ru
7copyright : (C) 2000 by Roman Razilov 7copyright : (C) 2000 by Roman Razilov
8email : Roman.Razilov@gmx.de 8email : Roman.Razilov@gmx.de
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19#include <stdlib.h> 19#include <stdlib.h>
20#include "cfg.h"
21#include "field.h" 20#include "field.h"
22 21
23Field::Field(QWidget* parent, const char* name) 22Field::Field(QWidget* parent, const char* name)
24 : QWidget( parent, name ) 23 : QWidget( parent, name )
25{ 24{
26 clearField(); 25 clearField();
27} 26}
28 27
29Field::~Field() 28Field::~Field()
30{ 29{
31} 30}
32 31
33void Field::clearField() 32void Field::clearField()
34{ 33{
35 for(int y=0; y<NUMCELLSH; y++) 34 for(int y=0; y<NUMCELLSH; y++)
36 for(int x=0; x<NUMCELLSW; x++) 35 for(int x=0; x<NUMCELLSW; x++)
37 field[y][x].clear(); 36 field[y][x].clear();
38} 37}
39void Field::clearAnim() 38void Field::clearAnim()
40{ 39{
41 for(int y=0; y<NUMCELLSH; y++) 40 for(int y=0; y<NUMCELLSH; y++)
42 for(int x=0; x<NUMCELLSW; x++) 41 for(int x=0; x<NUMCELLSW; x++)
43 field[y][x].setAnim( ANIM_NO ); 42 field[y][x].setAnim( ANIM_NO );
44} 43}
45int Field::deleteAnimatedBalls() 44int Field::deleteAnimatedBalls()
46{ 45{
47 int deleted = 0; 46 int deleted = 0;
48 for(int y=0; y<NUMCELLSH; y++) 47 for(int y=0; y<NUMCELLSH; y++)
49 for(int x=0; x<NUMCELLSW; x++) 48 for(int x=0; x<NUMCELLSW; x++)
50 { 49 {
51 if ( field[y][x].getAnim() != ANIM_NO ) 50 if ( field[y][x].getAnim() != ANIM_NO )
52 { 51 {
53 deleted++; 52 deleted++;
54 field[y][x].clear(); 53 field[y][x].clear();
55 } 54 }
56 } 55 }
57 return deleted; 56 return deleted;
58} 57}
59 58
60bool Field::checkBounds(int x, int y) 59bool Field::checkBounds(int x, int y)
61{ 60{
62 return (x>=0) && (x<NUMCELLSW) && (y>=0) && (y<NUMCELLSH); 61 return (x>=0) && (x<NUMCELLSW) && (y>=0) && (y<NUMCELLSH);
63} 62}
64 63
65void Field::putBall(int x, int y, int color) 64void Field::putBall(int x, int y, int color)
66{ 65{
67 if( checkBounds(x,y) ) 66 if( checkBounds(x,y) )
68 field[y][x].setColor(color); 67 field[y][x].setColor(color);
69} 68}
70/* 69/*
71 void Field::putBall(int x, int y, char color) 70 void Field::putBall(int x, int y, char color)
72 { 71 {
73 if( checkBounds(x,y) ){ 72 if( checkBounds(x,y) ){
74 field[y][x].setColor(color); 73 field[y][x].setColor(color);
75 erase5Balls(); 74 erase5Balls();
76 repaint(FALSE); 75 repaint(FALSE);
77 } 76 }
78 }*/ 77 }*/
79void Field::moveBall(int xa, int ya, int xb, int yb) 78void Field::moveBall(int xa, int ya, int xb, int yb)
80{ 79{
81 if( checkBounds(xa,ya) && checkBounds(xb,yb) && 80 if( checkBounds(xa,ya) && checkBounds(xb,yb) &&
82 field[yb][xb].isFree() && ( xa != xb || ya != yb) ) { 81 field[yb][xb].isFree() && ( xa != xb || ya != yb) ) {
83 field[yb][xb].moveBall(field[ya][xa]); 82 field[yb][xb].moveBall(field[ya][xa]);
84 } 83 }
85} 84}
86 85
87int Field::getBall(int x, int y) 86int Field::getBall(int x, int y)
88{ 87{
89 if( checkBounds(x,y) ) 88 if( checkBounds(x,y) )
90 return field[y][x].getColor(); 89 return field[y][x].getColor();
91 else 90 else
92 return NOBALL; 91 return NOBALL;
93} 92}
94int Field::getAnim(int x, int y) 93int Field::getAnim(int x, int y)
95{ 94{
96 if( checkBounds(x,y) ) 95 if( checkBounds(x,y) )
97 return field[y][x].getAnim(); 96 return field[y][x].getAnim();
98 else 97 else
99 return NOBALL; 98 return NOBALL;
100} 99}
101void Field::setAnim(int x, int y, int anim) 100void Field::setAnim(int x, int y, int anim)
102{ 101{
103 if( checkBounds(x,y) ) 102 if( checkBounds(x,y) )
104 field[y][x].setAnim( anim ); 103 field[y][x].setAnim( anim );
105} 104}
106 105
107void Field::removeBall(int x, int y ) 106void Field::removeBall(int x, int y )
108{ 107{
109 if( checkBounds(x,y) ) field[y][x].clear(); 108 if( checkBounds(x,y) ) field[y][x].clear();
110} 109}
111 110
112int Field::freeSpace() 111int Field::freeSpace()
113{ 112{
114 int s = 0; 113 int s = 0;
115 for(int y=0; y<NUMCELLSH; y++) 114 for(int y=0; y<NUMCELLSH; y++)
116 for(int x=0; x<NUMCELLSW; x++) 115 for(int x=0; x<NUMCELLSW; x++)
117 if(field[y][x].isFree()) s++; 116 if(field[y][x].isFree()) s++;
118 return s; 117 return s;
119} 118}
120void Field::saveUndo() 119void Field::saveUndo()
121{ 120{
122 void clearAnim(); 121 void clearAnim();
123 for(int y=0; y<NUMCELLSH; y++) 122 for(int y=0; y<NUMCELLSH; y++)
124 for(int x=0; x<NUMCELLSW; x++) 123 for(int x=0; x<NUMCELLSW; x++)
125 field_undo[y][x] = field[y][x]; 124 field_undo[y][x] = field[y][x];
126} 125}
127void Field::restoreUndo() 126void Field::restoreUndo()
128{ 127{
129 for(int y=0; y<NUMCELLSH; y++) 128 for(int y=0; y<NUMCELLSH; y++)
130 for(int x=0; x<NUMCELLSW; x++) 129 for(int x=0; x<NUMCELLSW; x++)
131 field[y][x] = field_undo[y][x]; 130 field[y][x] = field_undo[y][x];
132} 131}
diff --git a/noncore/games/zlines/klines.cpp b/noncore/games/zlines/klines.cpp
index 02ff0db..76c94e2 100644
--- a/noncore/games/zlines/klines.cpp
+++ b/noncore/games/zlines/klines.cpp
@@ -1,214 +1,205 @@
1/*************************************************************************** 1/***************************************************************************
2 klines.cpp - description 2 klines.cpp - description
3 ------------------- 3 -------------------
4 begin : Fri May 19 2000 4 begin : Fri May 19 2000
5 copyright : (C) 2000 by Roman Merzlyakov 5 copyright : (C) 2000 by Roman Merzlyakov
6 email : roman@sbrf.barrt.ru 6 email : roman@sbrf.barrt.ru
7 copyright : (C) 2000 by Roman Razilov 7 copyright : (C) 2000 by Roman Razilov
8 email : Roman.Razilov@gmx.de 8 email : Roman.Razilov@gmx.de
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19/* changes 19/* changes
2021.05.2000 Roman Razilov Menu game/Next 2021.05.2000 Roman Razilov Menu game/Next
21*/ 21*/
22// 22//
23// The implementation of the KLines widget 23// The implementation of the KLines widget
24// 24//
25 25
26#include <qkeycode.h>
27#include <qlabel.h>
28#include <qpushbutton.h>
29#include <qtooltip.h>
30#include <qstring.h>
31#include <stdlib.h> 26#include <stdlib.h>
32#include <unistd.h> 27#include <unistd.h>
33#include <time.h> 28#include <time.h>
34 29
35#include <qapplication.h> 30#include <qapplication.h>
36#include <qmenubar.h>
37#include <qpopupmenu.h>
38 31
39 32
40#include "cfg.h"
41#include <qstatusbar.h>
42#include "klines.h" 33#include "klines.h"
43 34
44 35
45/* 36/*
46 Creates the KLines widget and sets saved options (if any). 37 Creates the KLines widget and sets saved options (if any).
47 */ 38 */
48 39
49KLines::KLines(QWidget *par, const char* n, WFlags fl) : QMainWindow(par,n,fl) 40KLines::KLines(QWidget *par, const char* n, WFlags fl) : QMainWindow(par,n,fl)
50{ 41{
51 time_t t; 42 time_t t;
52 time(&t); 43 time(&t);
53 srand((unsigned int)t + getpid()); 44 srand((unsigned int)t + getpid());
54 45
55 setCaption(QString("ZLines")); 46 setCaption(QString("ZLines"));
56 47
57 mwidget = new MainWidget(this); 48 mwidget = new MainWidget(this);
58 setCentralWidget( mwidget ); 49 setCentralWidget( mwidget );
59 50
60 lsb = mwidget->GetLsb(); 51 lsb = mwidget->GetLsb();
61 lPrompt = mwidget->GetPrompt(); 52 lPrompt = mwidget->GetPrompt();
62 53
63 menu = menuBar(); 54 menu = menuBar();
64 game = new QPopupMenu; 55 game = new QPopupMenu;
65 edit = new QPopupMenu; 56 edit = new QPopupMenu;
66 57
67 game->insertItem(tr("&New game"), this, SLOT(stopGame()), CTRL+Key_N ); 58 game->insertItem(tr("&New game"), this, SLOT(stopGame()), CTRL+Key_N );
68 game->insertSeparator(); 59 game->insertSeparator();
69 game->insertItem(tr("Ne&xt"), this, SLOT(makeTurn()), Key_N ); 60 game->insertItem(tr("Ne&xt"), this, SLOT(makeTurn()), Key_N );
70 game->insertSeparator(); 61 game->insertSeparator();
71 idMenuPrompt = game->insertItem( tr("&Show next"), this, SLOT(switchPrompt()), CTRL+Key_P ); 62 idMenuPrompt = game->insertItem( tr("&Show next"), this, SLOT(switchPrompt()), CTRL+Key_P );
72 game->setCheckable(true); 63 game->setCheckable(true);
73 game->setItemChecked(idMenuPrompt, lPrompt->getState()); 64 game->setItemChecked(idMenuPrompt, lPrompt->getState());
74 game->insertSeparator(); 65 game->insertSeparator();
75 game->insertItem(tr("&Quit"), qApp, SLOT(quit()), CTRL+Key_Q ); 66 game->insertItem(tr("&Quit"), qApp, SLOT(quit()), CTRL+Key_Q );
76 67
77 idMenuUndo = edit->insertItem(tr("Und&o"), this, SLOT(undo()), CTRL+Key_Z ); 68 idMenuUndo = edit->insertItem(tr("Und&o"), this, SLOT(undo()), CTRL+Key_Z );
78 69
79 menu->insertItem( tr("&Game"), game ); 70 menu->insertItem( tr("&Game"), game );
80 menu->insertItem( tr("&Edit"), edit ); 71 menu->insertItem( tr("&Edit"), edit );
81 72
82 menu->show(); 73 menu->show();
83 74
84 score = 0; 75 score = 0;
85 prev_score = 0; 76 prev_score = 0;
86 77
87 mwidget->setMessage(tr("Points: 0")); 78 mwidget->setMessage(tr("Points: 0"));
88 79
89 startGame(); 80 startGame();
90} 81}
91 82
92/* 83/*
93 Saves the options and destroys the KLines widget. 84 Saves the options and destroys the KLines widget.
94 */ 85 */
95 86
96KLines::~KLines() 87KLines::~KLines()
97{ 88{
98} 89}
99 90
100/* 91/*
101 Resize event of the KLines widget. 92 Resize event of the KLines widget.
102 */ 93 */
103 94
104void KLines::resizeEvent( QResizeEvent *e ) 95void KLines::resizeEvent( QResizeEvent *e )
105{ 96{
106 QMainWindow::resizeEvent(e); 97 QMainWindow::resizeEvent(e);
107} 98}
108 99
109void KLines::setMinSize() 100void KLines::setMinSize()
110{ 101{
111 // setMinimumSize( gr->wHint(), gr->hHint() + menu->height() + stat->height() + 102 // setMinimumSize( gr->wHint(), gr->hHint() + menu->height() + stat->height() +
112 // tool->height() ); 103 // tool->height() );
113} 104}
114 105
115void KLines::startGame() 106void KLines::startGame()
116{ 107{
117 score = 0; 108 score = 0;
118 prev_score = 0; 109 prev_score = 0;
119 bUndo=TRUE; 110 bUndo=TRUE;
120 111
121 lsb->clearField(); 112 lsb->clearField();
122 generateRandomBalls(); 113 generateRandomBalls();
123 placeBalls(); 114 placeBalls();
124 generateRandomBalls(); 115 generateRandomBalls();
125 edit->setItemEnabled(idMenuUndo, FALSE ); 116 edit->setItemEnabled(idMenuUndo, FALSE );
126 updateStat(); 117 updateStat();
127} 118}
128void KLines::stopGame() 119void KLines::stopGame()
129{ 120{
130 debug("Klines::stopGame"); 121 debug("Klines::stopGame");
131 endGame(); 122 endGame();
132} 123}
133 124
134void KLines::searchBallsLine() 125void KLines::searchBallsLine()
135{ 126{
136} 127}
137 128
138void KLines::generateRandomBalls() 129void KLines::generateRandomBalls()
139{ 130{
140 131
141 for( int i = 0 ; i < BALLSDROP ; i++ ) 132 for( int i = 0 ; i < BALLSDROP ; i++ )
142 { 133 {
143 nextBalls_undo[i] = nextBalls[i]; 134 nextBalls_undo[i] = nextBalls[i];
144 nextBalls[i] = bUndo ? 135 nextBalls[i] = bUndo ?
145 rand() % NCOLORS: 136 rand() % NCOLORS:
146 nextBalls_redo[i]; 137 nextBalls_redo[i];
147 } 138 }
148 lPrompt->SetBalls(nextBalls); 139 lPrompt->SetBalls(nextBalls);
149} 140}
150 141
151void KLines::placeBalls() 142void KLines::placeBalls()
152{ 143{
153 lsb->placeBalls(nextBalls); 144 lsb->placeBalls(nextBalls);
154 debug("exit from placeBalls"); 145 debug("exit from placeBalls");
155} 146}
156 147
157void KLines::undo() 148void KLines::undo()
158{ 149{
159 debug("Undo"); 150 debug("Undo");
160 if (!bUndo) 151 if (!bUndo)
161 return; 152 return;
162 for( int i = 0 ; i < BALLSDROP ; i++ ) 153 for( int i = 0 ; i < BALLSDROP ; i++ )
163 { 154 {
164 nextBalls_redo[i] = nextBalls[i]; 155 nextBalls_redo[i] = nextBalls[i];
165 nextBalls[i] = nextBalls_undo[i]; 156 nextBalls[i] = nextBalls_undo[i];
166 } 157 }
167 lPrompt->SetBalls(nextBalls); 158 lPrompt->SetBalls(nextBalls);
168 lsb->undo(); 159 lsb->undo();
169 switchUndo(FALSE); 160 switchUndo(FALSE);
170} 161}
171 162
172void KLines::makeTurn() 163void KLines::makeTurn()
173{ 164{
174 placeBalls(); 165 placeBalls();
175 generateRandomBalls(); 166 generateRandomBalls();
176 switchUndo(TRUE); 167 switchUndo(TRUE);
177} 168}
178 169
179void KLines::addScore(int ballsErased) 170void KLines::addScore(int ballsErased)
180{ if(ballsErased >= 5){ 171{ if(ballsErased >= 5){
181 score += 2*ballsErased*ballsErased - 20*ballsErased + 60 ; 172 score += 2*ballsErased*ballsErased - 20*ballsErased + 60 ;
182 if( !lPrompt->getState() ) score+= 1; 173 if( !lPrompt->getState() ) score+= 1;
183 updateStat(); 174 updateStat();
184 }; 175 };
185} 176}
186 177
187void KLines::updateStat() 178void KLines::updateStat()
188{ 179{
189 mwidget->setMessage(tr(" Score: %1 ").arg(score)); 180 mwidget->setMessage(tr(" Score: %1 ").arg(score));
190} 181}
191 182
192void KLines::endGame() 183void KLines::endGame()
193{ 184{
194 startGame(); 185 startGame();
195} 186}
196 187
197void KLines::switchPrompt() 188void KLines::switchPrompt()
198{ 189{
199 lPrompt->setPrompt(!lPrompt->getState()); 190 lPrompt->setPrompt(!lPrompt->getState());
200 game->setItemChecked(idMenuPrompt, lPrompt->getState()); 191 game->setItemChecked(idMenuPrompt, lPrompt->getState());
201} 192}
202 193
203void KLines::switchUndo(bool bu) 194void KLines::switchUndo(bool bu)
204{ 195{
205 bUndo = bu; 196 bUndo = bu;
206 edit->setItemEnabled(idMenuUndo, bUndo ); 197 edit->setItemEnabled(idMenuUndo, bUndo );
207} 198}
208 199
209void KLines::help() 200void KLines::help()
210{ 201{
211 // KApplication::getKApplication()->invokeHTMLHelp("", ""); 202 // KApplication::getKApplication()->invokeHTMLHelp("", "");
212} 203}
213 204
214 205
diff --git a/noncore/games/zlines/linesboard.cpp b/noncore/games/zlines/linesboard.cpp
index 0965b2c..1e59aeb 100644
--- a/noncore/games/zlines/linesboard.cpp
+++ b/noncore/games/zlines/linesboard.cpp
@@ -1,214 +1,211 @@
1/*************************************************************************** 1/***************************************************************************
2 linesboard.cpp - description 2 linesboard.cpp - description
3 ------------------- 3 -------------------
4 begin : Fri May 19 2000 4 begin : Fri May 19 2000
5 copyright : (C) 2000 by Roman Merzlyakov 5 copyright : (C) 2000 by Roman Merzlyakov
6 email : roman@sbrf.barrt.ru 6 email : roman@sbrf.barrt.ru
7 copyright : (C) 2000 by Roman Razilov 7 copyright : (C) 2000 by Roman Razilov
8 email : Roman.Razilov@gmx.de 8 email : Roman.Razilov@gmx.de
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19#include <qpainter.h> 19#include <qpainter.h>
20#include <qpixmap.h>
21#include <qcolor.h>
22#include <qkeycode.h>
23#include <stdlib.h> 20#include <stdlib.h>
24 21
25#include "linesboard.h" 22#include "linesboard.h"
26 23
27/* 24/*
28 Constructs a LinesBoard widget. 25 Constructs a LinesBoard widget.
29*/ 26*/
30 27
31LinesBoard::LinesBoard( BallPainter * abPainter, QWidget* parent, const char* name ) 28LinesBoard::LinesBoard( BallPainter * abPainter, QWidget* parent, const char* name )
32 : Field( parent, name ) 29 : Field( parent, name )
33{ 30{
34 anim = ANIM_NO; 31 anim = ANIM_NO;
35// waypos = 0; 32// waypos = 0;
36// waylen = 0; 33// waylen = 0;
37// jumpingRow = -1; 34// jumpingRow = -1;
38// jumpingCol = -1; 35// jumpingCol = -1;
39 painting = 0; 36 painting = 0;
40 way = new Waypoints[NUMCELLSW*NUMCELLSH]; 37 way = new Waypoints[NUMCELLSW*NUMCELLSH];
41 38
42 bPainter = abPainter; 39 bPainter = abPainter;
43 40
44 setFocusPolicy( NoFocus ); 41 setFocusPolicy( NoFocus );
45 setBackgroundColor( gray ); 42 setBackgroundColor( gray );
46 43
47 setMouseTracking( FALSE ); 44 setMouseTracking( FALSE );
48 setFixedSize(wHint(), hHint()); 45 setFixedSize(wHint(), hHint());
49 46
50 timer = new QTimer(this); 47 timer = new QTimer(this);
51 connect( timer, SIGNAL(timeout()), SLOT(timerSlot()) ); 48 connect( timer, SIGNAL(timeout()), SLOT(timerSlot()) );
52 timer->start( TIMERCLOCK, FALSE ); 49 timer->start( TIMERCLOCK, FALSE );
53 50
54} 51}
55 52
56/* 53/*
57 Destructor: deallocates memory for contents 54 Destructor: deallocates memory for contents
58*/ 55*/
59 56
60LinesBoard::~LinesBoard() 57LinesBoard::~LinesBoard()
61{ 58{
62 // debug("stop"); 59 // debug("stop");
63 timer->stop(); 60 timer->stop();
64 delete timer; 61 delete timer;
65 delete []way; 62 delete []way;
66} 63}
67 64
68 65
69void LinesBoard::placeBalls(int pnextBalls[BALLSDROP]) 66void LinesBoard::placeBalls(int pnextBalls[BALLSDROP])
70{ 67{
71 debug("LinesBoard::placeBalls( )"); 68 debug("LinesBoard::placeBalls( )");
72 for(int i=0; i < BALLSDROP; i++){ 69 for(int i=0; i < BALLSDROP; i++){
73 nextBalls[i] = pnextBalls[i]; 70 nextBalls[i] = pnextBalls[i];
74 } 71 }
75 nextBallToPlace = 0; 72 nextBallToPlace = 0;
76 placeBall(); 73 placeBall();
77 debug("LinesBoard::placeBalls End "); 74 debug("LinesBoard::placeBalls End ");
78} 75}
79void LinesBoard::placeBall( ) 76void LinesBoard::placeBall( )
80{ 77{
81 int color = nextBalls[nextBallToPlace]; 78 int color = nextBalls[nextBallToPlace];
82 debug("LinesBoard::placeBall( ) color=%i, nextBallToPlace = %i", color, nextBallToPlace); 79 debug("LinesBoard::placeBall( ) color=%i, nextBallToPlace = %i", color, nextBallToPlace);
83 char* xx = (char*)malloc( sizeof(char)*NUMCELLSW*NUMCELLSH ); 80 char* xx = (char*)malloc( sizeof(char)*NUMCELLSW*NUMCELLSH );
84 char* yy = (char*)malloc( sizeof(char)*NUMCELLSW*NUMCELLSH ); 81 char* yy = (char*)malloc( sizeof(char)*NUMCELLSW*NUMCELLSH );
85// int nb=3; 82// int nb=3;
86// if( freeSpace() < 3) nb = freeSpace(); 83// if( freeSpace() < 3) nb = freeSpace();
87 int empty=0; 84 int empty=0;
88 for(int y=0; y<NUMCELLSH; y++) 85 for(int y=0; y<NUMCELLSH; y++)
89 for(int x=0; x<NUMCELLSW; x++) 86 for(int x=0; x<NUMCELLSW; x++)
90 if( getBall(x,y) == NOBALL ) 87 if( getBall(x,y) == NOBALL )
91 { 88 {
92 xx[empty] = x; 89 xx[empty] = x;
93 yy[empty] = y; 90 yy[empty] = y;
94 empty++; 91 empty++;
95 }; 92 };
96// debug("empty = %i",empty); 93// debug("empty = %i",empty);
97 if ( empty > 0) 94 if ( empty > 0)
98 { 95 {
99 int pos = rand()%empty; 96 int pos = rand()%empty;
100 putBall( xx[pos], yy[pos], color ); 97 putBall( xx[pos], yy[pos], color );
101 clearAnim(); 98 clearAnim();
102 setAnim( xx[pos], yy[pos], ANIM_BORN ); 99 setAnim( xx[pos], yy[pos], ANIM_BORN );
103 nextBallToPlace++; 100 nextBallToPlace++;
104 AnimStart(ANIM_BORN); 101 AnimStart(ANIM_BORN);
105 free(xx); 102 free(xx);
106 free(yy); 103 free(yy);
107 } 104 }
108 else 105 else
109 { 106 {
110 free(xx); 107 free(xx);
111 free(yy); 108 free(yy);
112 emit endGame(); 109 emit endGame();
113 } 110 }
114 debug("LinesBoard::placeBall END"); 111 debug("LinesBoard::placeBall END");
115} 112}
116 113
117 114
118/*id LinesBoard::doAfterBalls() { 115/*id LinesBoard::doAfterBalls() {
119 erase5Balls(); 116 erase5Balls();
120 repaint(FALSE); 117 repaint(FALSE);
121} 118}
122*/ 119*/
123/* 120/*
124 Sets the size of the table 121 Sets the size of the table
125*/ 122*/
126 123
127int LinesBoard::width() { return CELLSIZE * NUMCELLSW; } 124int LinesBoard::width() { return CELLSIZE * NUMCELLSW; }
128int LinesBoard::height() { return CELLSIZE * NUMCELLSH; } 125int LinesBoard::height() { return CELLSIZE * NUMCELLSH; }
129int LinesBoard::wHint() { return width(); } 126int LinesBoard::wHint() { return width(); }
130int LinesBoard::hHint() { return height(); } 127int LinesBoard::hHint() { return height(); }
131 128
132 129
133 130
134void LinesBoard::paintEvent( QPaintEvent* ) 131void LinesBoard::paintEvent( QPaintEvent* )
135{ 132{
136// debug("LinesBoard::paintEvent "); 133// debug("LinesBoard::paintEvent ");
137 QPixmap pixmap(width(), height()); 134 QPixmap pixmap(width(), height());
138 QPainter paint(&pixmap, this); 135 QPainter paint(&pixmap, this);
139 136
140 for( int y=0; y < NUMCELLSH; y++ ){ 137 for( int y=0; y < NUMCELLSH; y++ ){
141 for( int x=0; x < NUMCELLSW; x++ ){ 138 for( int x=0; x < NUMCELLSW; x++ ){
142 if( getBall(x,y) == NOBALL ) 139 if( getBall(x,y) == NOBALL )
143 { 140 {
144// debug("draw empty %i %i", x, y ); 141// debug("draw empty %i %i", x, y );
145 paint.drawPixmap(x*CELLSIZE, y*CELLSIZE, *(bPainter->GetBackgroundPix()) ); 142 paint.drawPixmap(x*CELLSIZE, y*CELLSIZE, *(bPainter->GetBackgroundPix()) );
146 } 143 }
147 else 144 else
148 { 145 {
149// debug("draw empty %i %i %c", x, y, getBall(x,y) ); 146// debug("draw empty %i %i %c", x, y, getBall(x,y) );
150 paint.drawPixmap(x*CELLSIZE, y*CELLSIZE, 147 paint.drawPixmap(x*CELLSIZE, y*CELLSIZE,
151 *(bPainter->GetBall(getBall(x,y),animstep,getAnim(x,y)))); 148 *(bPainter->GetBall(getBall(x,y),animstep,getAnim(x,y))));
152 } 149 }
153 } 150 }
154 } 151 }
155 152
156 bitBlt(this, 0,0, &pixmap, 0,0, width(), height(), CopyROP); 153 bitBlt(this, 0,0, &pixmap, 0,0, width(), height(), CopyROP);
157} 154}
158 155
159/* 156/*
160 Handles mouse press events for the LinesBoard widget. 157 Handles mouse press events for the LinesBoard widget.
161*/ 158*/
162void LinesBoard::mousePressEvent( QMouseEvent* e ) 159void LinesBoard::mousePressEvent( QMouseEvent* e )
163{ 160{
164 debug("LinesBoard::mousePressEvent START"); 161 debug("LinesBoard::mousePressEvent START");
165 int curRow = e->y() / CELLSIZE; 162 int curRow = e->y() / CELLSIZE;
166 int curCol = e->x() / CELLSIZE; 163 int curCol = e->x() / CELLSIZE;
167 //debug 164 //debug
168 debug("Mouse pressed: curRow=%i, curCol=%i", curRow, curCol); 165 debug("Mouse pressed: curRow=%i, curCol=%i", curRow, curCol);
169 166
170 //check range 167 //check range
171 if (!checkBounds( curCol, curRow ) ) 168 if (!checkBounds( curCol, curRow ) )
172 return; 169 return;
173// if( running || anim != ANIM_NO ) return; 170// if( running || anim != ANIM_NO ) return;
174 if(anim != ANIM_JUMP && anim != ANIM_NO) return; 171 if(anim != ANIM_JUMP && anim != ANIM_NO) return;
175 if ( anim == ANIM_JUMP ) 172 if ( anim == ANIM_JUMP )
176 { 173 {
177 if ( getBall(curCol,curRow) == NOBALL ) 174 if ( getBall(curCol,curRow) == NOBALL )
178 { 175 {
179 if(existPath(jumpingCol, jumpingRow, curCol, curRow)) 176 if(existPath(jumpingCol, jumpingRow, curCol, curRow))
180 { 177 {
181 saveUndo(); 178 saveUndo();
182 AnimStart(ANIM_RUN); 179 AnimStart(ANIM_RUN);
183 } 180 }
184 } 181 }
185 else 182 else
186 AnimJump(curCol,curRow); 183 AnimJump(curCol,curRow);
187 } 184 }
188 else 185 else
189 AnimJump(curCol,curRow); 186 AnimJump(curCol,curRow);
190 debug("LinesBoard::mousePressEvent END"); 187 debug("LinesBoard::mousePressEvent END");
191} 188}
192void LinesBoard::AnimJump(int x, int y ) { 189void LinesBoard::AnimJump(int x, int y ) {
193 debug("LinesBoard::AnimJump( %i,%i)", x,y ); 190 debug("LinesBoard::AnimJump( %i,%i)", x,y );
194 if ( getBall(x,y) != NOBALL ) 191 if ( getBall(x,y) != NOBALL )
195 if (!( anim == ANIM_JUMP && jumpingCol == x && jumpingRow == y )) 192 if (!( anim == ANIM_JUMP && jumpingCol == x && jumpingRow == y ))
196 if ( AnimEnd() ) 193 if ( AnimEnd() )
197 { 194 {
198 clearAnim(); 195 clearAnim();
199 setAnim(x,y,ANIM_JUMP); 196 setAnim(x,y,ANIM_JUMP);
200 jumpingCol = x; 197 jumpingCol = x;
201 jumpingRow = y; 198 jumpingRow = y;
202 AnimStart(ANIM_JUMP); 199 AnimStart(ANIM_JUMP);
203 } 200 }
204 debug("LinesBoard::AnimJump END"); 201 debug("LinesBoard::AnimJump END");
205} 202}
206void LinesBoard::AnimStart(int panim) { 203void LinesBoard::AnimStart(int panim) {
207 debug("LinesBoard::AnimStart( %i )", panim); 204 debug("LinesBoard::AnimStart( %i )", panim);
208 if (anim != ANIM_NO) 205 if (anim != ANIM_NO)
209 AnimEnd(); 206 AnimEnd();
210 animstep = 0; 207 animstep = 0;
211 animdelaystart = 1; 208 animdelaystart = 1;
212 switch(panim) { 209 switch(panim) {
213 case ANIM_NO: 210 case ANIM_NO:
214 break; 211 break;
diff --git a/noncore/games/zlines/main.cpp b/noncore/games/zlines/main.cpp
index ff41f95..238e7d3 100644
--- a/noncore/games/zlines/main.cpp
+++ b/noncore/games/zlines/main.cpp
@@ -1,30 +1,29 @@
1/*************************************************************************** 1/***************************************************************************
2 main.cpp - description 2 main.cpp - description
3 ------------------- 3 -------------------
4 begin : Fri May 19 2000 4 begin : Fri May 19 2000
5 copyright : (C) 2000 by Roman Merzlyakov 5 copyright : (C) 2000 by Roman Merzlyakov
6 email : roman@sbrf.barrt.ru 6 email : roman@sbrf.barrt.ru
7 copyright : (C) 2000 by Roman Razilov 7 copyright : (C) 2000 by Roman Razilov
8 email : Roman.Razilov@gmx.de 8 email : Roman.Razilov@gmx.de
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19 /* 19 /*
20 * Roman Razilov 2000-05-19 debug dummmy 20 * Roman Razilov 2000-05-19 debug dummmy
21 * Roman Razilov 2000-05-21 qimgio 21 * Roman Razilov 2000-05-21 qimgio
22*/ 22*/
23 23
24#include <qglobal.h>
25 24
26 25
27#include <opie/oapplicationfactory.h> 26#include <opie/oapplicationfactory.h>
28#include "klines.h" 27#include "klines.h"
29 28
30OPIE_EXPORT_APP( OApplicationFactory<KLines> ) 29OPIE_EXPORT_APP( OApplicationFactory<KLines> )
diff --git a/noncore/games/zlines/mwidget.cpp b/noncore/games/zlines/mwidget.cpp
index 6641fa2..211d3d3 100644
--- a/noncore/games/zlines/mwidget.cpp
+++ b/noncore/games/zlines/mwidget.cpp
@@ -1,84 +1,83 @@
1/*************************************************************************** 1/***************************************************************************
2 mwidget.cpp - description 2 mwidget.cpp - description
3 ------------------- 3 -------------------
4begin : Fri May 19 2000 4begin : Fri May 19 2000
5copyright : (C) 2000 by Roman Merzlyakov 5copyright : (C) 2000 by Roman Merzlyakov
6email : roman@sbrf.barrt.ru 6email : roman@sbrf.barrt.ru
7copyright : (C) 2000 by Roman Razilov 7copyright : (C) 2000 by Roman Razilov
8email : Roman.Razilov@gmx.de 8email : Roman.Razilov@gmx.de
9 ***************************************************************************/ 9 ***************************************************************************/
10 10
11/*************************************************************************** 11/***************************************************************************
12 * * 12 * *
13 * This program is free software; you can redistribute it and/or modify * 13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by * 14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or * 15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. * 16 * (at your option) any later version. *
17 * * 17 * *
18 ***************************************************************************/ 18 ***************************************************************************/
19#include "mwidget.h" 19#include "mwidget.h"
20#include <qlayout.h> 20#include <qlayout.h>
21#include "ballpainter.h"
22#include <qhbox.h> 21#include <qhbox.h>
23#include <qlabel.h> 22#include <qlabel.h>
24 23
25MainWidget::MainWidget( QWidget* parent, const char* name ) 24MainWidget::MainWidget( QWidget* parent, const char* name )
26 : QFrame( parent, name ) 25 : QFrame( parent, name )
27{ 26{
28 BallPainter *bPainter = new BallPainter(); 27 BallPainter *bPainter = new BallPainter();
29 28
30 QGridLayout *Form1Layout = new QGridLayout( this ); 29 QGridLayout *Form1Layout = new QGridLayout( this );
31 Form1Layout->setSpacing( 4 ); 30 Form1Layout->setSpacing( 4 );
32 Form1Layout->setMargin( 4 ); 31 Form1Layout->setMargin( 4 );
33 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); 32 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
34 Form1Layout->addItem( spacer, 0, 0 ); 33 Form1Layout->addItem( spacer, 0, 0 );
35 34
36 lsb = new LinesBoard(bPainter, this); 35 lsb = new LinesBoard(bPainter, this);
37 36
38 Form1Layout->addWidget( lsb, 0, 1 ); 37 Form1Layout->addWidget( lsb, 0, 1 );
39 QSpacerItem* spacer_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); 38 QSpacerItem* spacer_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
40 Form1Layout->addItem( spacer_2, 0, 2 ); 39 Form1Layout->addItem( spacer_2, 0, 2 );
41 40
42 QHBox *bottom=new QHBox(this); 41 QHBox *bottom=new QHBox(this);
43 42
44 mPoints=new QLabel(bottom); 43 mPoints=new QLabel(bottom);
45 bottom->setStretchFactor(mPoints, 2); 44 bottom->setStretchFactor(mPoints, 2);
46 45
47 lPrompt = new LinesPrompt(bPainter, bottom); 46 lPrompt = new LinesPrompt(bPainter, bottom);
48 47
49 Form1Layout->addWidget( bottom, 1, 1 ); 48 Form1Layout->addWidget( bottom, 1, 1 );
50 QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); 49 QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
51 Form1Layout->addItem( spacer_3, 2, 1 ); 50 Form1Layout->addItem( spacer_3, 2, 1 );
52 51
53 52
54 connect(lsb, SIGNAL(endTurn()), parent, SLOT(makeTurn())); 53 connect(lsb, SIGNAL(endTurn()), parent, SLOT(makeTurn()));
55 connect(lsb, SIGNAL(eraseLine(int)), parent, SLOT(addScore(int))); 54 connect(lsb, SIGNAL(eraseLine(int)), parent, SLOT(addScore(int)));
56 connect(lsb, SIGNAL(endGame()), parent, SLOT(stopGame())); 55 connect(lsb, SIGNAL(endGame()), parent, SLOT(stopGame()));
57 56
58 connect(lPrompt, SIGNAL(PromptPressed()), parent, SLOT(switchPrompt())); 57 connect(lPrompt, SIGNAL(PromptPressed()), parent, SLOT(switchPrompt()));
59 58
60} 59}
61 60
62void MainWidget::setMessage(const QString &message) 61void MainWidget::setMessage(const QString &message)
63{ 62{
64 mPoints->setText(message); 63 mPoints->setText(message);
65} 64}
66 65
67 66
68/* 67/*
69Destructor: deallocates memory for contents 68Destructor: deallocates memory for contents
70 */ 69 */
71 70
72MainWidget::~MainWidget() 71MainWidget::~MainWidget()
73{ 72{
74} 73}
75 74
76LinesBoard * MainWidget::GetLsb() 75LinesBoard * MainWidget::GetLsb()
77{ 76{
78 return lsb; 77 return lsb;
79} 78}
80 79
81LinesPrompt * MainWidget::GetPrompt() 80LinesPrompt * MainWidget::GetPrompt()
82{ 81{
83 return lPrompt; 82 return lPrompt;
84} 83}
diff --git a/noncore/games/zsame/StoneWidget.cpp b/noncore/games/zsame/StoneWidget.cpp
index 49fa1a4..646fc9c 100644
--- a/noncore/games/zsame/StoneWidget.cpp
+++ b/noncore/games/zsame/StoneWidget.cpp
@@ -1,220 +1,215 @@
1/* 1/*
2 * ksame 0.4 - simple Game 2 * ksame 0.4 - simple Game
3 * Copyright (C) 1997,1998 Marcus Kreutzberger 3 * Copyright (C) 1997,1998 Marcus Kreutzberger
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or 7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version. 8 * (at your option) any later version.
9 * 9 *
10 * This program is distributed in the hope that it will be useful, 10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details. 13 * GNU General Public License for more details.
14 * 14 *
15 * You should have received a copy of the GNU General Public License 15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software 16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 * 18 *
19 */ 19 */
20 20
21#include <stdio.h> 21#include <stdio.h>
22#include <stdlib.h> 22#include <stdlib.h>
23 23
24#include <qpainter.h>
25#include <qpixmap.h>
26#include <qbitmap.h>
27#include <qimage.h>
28#include <qcursor.h>
29 24
30 25
31#include <qpe/resource.h> 26#include <qpe/resource.h>
32 27
33#include <time.h> 28#include <time.h>
34#include <assert.h> 29#include <assert.h>
35 30
36#include "StoneWidget.h" 31#include "StoneWidget.h"
37 32
38 33
39 34
40struct StoneSlice { 35struct StoneSlice {
41 QPixmap stone; 36 QPixmap stone;
42}; 37};
43 38
44 39
45StoneWidget::StoneWidget( QWidget *parent, int x, int y ) 40StoneWidget::StoneWidget( QWidget *parent, int x, int y )
46 : QWidget(parent,"StoneWidget"), stonefield(x,y) 41 : QWidget(parent,"StoneWidget"), stonefield(x,y)
47{ 42{
48// setBackgroundPixmap(QPixmap(locate("wallpaper", "Time-For-Lunch-2.jpg"))); 43// setBackgroundPixmap(QPixmap(locate("wallpaper", "Time-For-Lunch-2.jpg")));
49// QPixmap stonemap(locate("appdata", "stones.png")); 44// QPixmap stonemap(locate("appdata", "stones.png"));
50 45
51 QPixmap stonemap = Resource::loadPixmap("zsame/stones" ); 46 QPixmap stonemap = Resource::loadPixmap("zsame/stones" );
52 assert(!stonemap.isNull()); 47 assert(!stonemap.isNull());
53 48
54 slice=0; 49 slice=0;
55 maxslices=30; 50 maxslices=30;
56 maxcolors=4; 51 maxcolors=4;
57 52
58 sizex=x; 53 sizex=x;
59 sizey=y; 54 sizey=y;
60 55
61 stone_width=stonemap.width()/(maxslices+1); 56 stone_width=stonemap.width()/(maxslices+1);
62 stone_height=stonemap.height()/maxcolors; 57 stone_height=stonemap.height()/maxcolors;
63 58
64 map = new StoneSlice*[maxcolors]; 59 map = new StoneSlice*[maxcolors];
65 QBitmap mask; 60 QBitmap mask;
66 for (int c = 0; c < maxcolors; c++) { 61 for (int c = 0; c < maxcolors; c++) {
67 map[c] = new StoneSlice[maxslices]; 62 map[c] = new StoneSlice[maxslices];
68 63
69 for (int s = 0; s < maxslices; s++) { 64 for (int s = 0; s < maxslices; s++) {
70 map[c][s].stone.resize(stone_width, stone_height); 65 map[c][s].stone.resize(stone_width, stone_height);
71 assert(!map[c][s].stone.isNull()); 66 assert(!map[c][s].stone.isNull());
72 bitBlt(&map[c][s].stone, 0, 0, 67 bitBlt(&map[c][s].stone, 0, 0,
73 &stonemap, stone_width * s, 68 &stonemap, stone_width * s,
74 c*stone_height, 69 c*stone_height,
75 stone_width,stone_height,CopyROP,false); 70 stone_width,stone_height,CopyROP,false);
76 QImage im = map[c][s].stone.convertToImage(); 71 QImage im = map[c][s].stone.convertToImage();
77 mask = im.createHeuristicMask(); 72 mask = im.createHeuristicMask();
78 map[c][s].stone.setMask(mask); 73 map[c][s].stone.setMask(mask);
79 } 74 }
80 } 75 }
81 76
82 field_height=stone_height*sizey; 77 field_height=stone_height*sizey;
83 field_width=stone_width*sizex; 78 field_width=stone_width*sizex;
84 79
85 setMouseTracking(true); 80 setMouseTracking(true);
86 81
87 // QColor c(115,115,115); 82 // QColor c(115,115,115);
88 // setBackgroundColor(c); 83 // setBackgroundColor(c);
89 84
90 // emit s_sizechanged(); 85 // emit s_sizechanged();
91 startTimer( 100 ); 86 startTimer( 100 );
92 history.setAutoDelete(true); 87 history.setAutoDelete(true);
93} 88}
94 89
95StoneWidget::~StoneWidget() { 90StoneWidget::~StoneWidget() {
96 for (int c = 0; c < maxcolors; c++) { 91 for (int c = 0; c < maxcolors; c++) {
97 delete [] map[c]; 92 delete [] map[c];
98 } 93 }
99 delete [] map; 94 delete [] map;
100 95
101 setMouseTracking(false); 96 setMouseTracking(false);
102 killTimers(); 97 killTimers();
103} 98}
104 99
105unsigned int 100unsigned int
106StoneWidget::board() { 101StoneWidget::board() {
107 return stonefield.getBoard(); 102 return stonefield.getBoard();
108} 103}
109 104
110int 105int
111StoneWidget::score() { 106StoneWidget::score() {
112 return stonefield.getScore(); 107 return stonefield.getScore();
113} 108}
114 109
115int 110int
116StoneWidget::marked() { 111StoneWidget::marked() {
117 return stonefield.getMarked(); 112 return stonefield.getMarked();
118} 113}
119 114
120QSize 115QSize
121StoneWidget::size() { 116StoneWidget::size() {
122 return QSize(sizex,sizey); 117 return QSize(sizex,sizey);
123} 118}
124 119
125int 120int
126StoneWidget::colors() { 121StoneWidget::colors() {
127 return stonefield.getColors(); 122 return stonefield.getColors();
128} 123}
129 124
130QSize 125QSize
131StoneWidget::sizeHint () const { 126StoneWidget::sizeHint () const {
132 return QSize(field_width,field_height); 127 return QSize(field_width,field_height);
133} 128}
134 129
135void 130void
136StoneWidget::newGame(unsigned int board,int colors) { 131StoneWidget::newGame(unsigned int board,int colors) {
137 stonefield.newGame(board,colors); 132 stonefield.newGame(board,colors);
138 history.clear(); 133 history.clear();
139 modified= false; 134 modified= false;
140 emit s_newgame(); 135 emit s_newgame();
141 emit s_colors(stonefield.getColors()); 136 emit s_colors(stonefield.getColors());
142 emit s_board(stonefield.getBoard()); 137 emit s_board(stonefield.getBoard());
143} 138}
144 139
145void 140void
146StoneWidget::reset() { 141StoneWidget::reset() {
147 stonefield.reset(); 142 stonefield.reset();
148 history.clear(); 143 history.clear();
149 emit s_newgame(); 144 emit s_newgame();
150} 145}
151 146
152void 147void
153StoneWidget::unmark() { 148StoneWidget::unmark() {
154 stonefield.unmark(); 149 stonefield.unmark();
155 emit s_marked(0); 150 emit s_marked(0);
156} 151}
157 152
158bool StoneWidget::undoPossible() const { 153bool StoneWidget::undoPossible() const {
159 if (stonefield.isGameover()) return false; 154 if (stonefield.isGameover()) return false;
160 return stonefield.undoPossible(); 155 return stonefield.undoPossible();
161} 156}
162 157
163int 158int
164StoneWidget::undo(int count) { 159StoneWidget::undo(int count) {
165 if (stonefield.isGameover()) return 0; 160 if (stonefield.isGameover()) return 0;
166 161
167 int ret_val=stonefield.undo(count); 162 int ret_val=stonefield.undo(count);
168 163
169 QPoint p=mapFromGlobal(cursor().pos()); 164 QPoint p=mapFromGlobal(cursor().pos());
170 int x=p.x(); 165 int x=p.x();
171 int y=p.y(); 166 int y=p.y();
172 if (x<0||y<0||x>=field_width||y>=field_height) { 167 if (x<0||y<0||x>=field_width||y>=field_height) {
173 emit s_score(stonefield.getMarked()); 168 emit s_score(stonefield.getMarked());
174 return ret_val; 169 return ret_val;
175 } 170 }
176 171
177 int marked=stonefield.mark(x/stone_width,y/stone_height); 172 int marked=stonefield.mark(x/stone_width,y/stone_height);
178 emit s_marked(marked); 173 emit s_marked(marked);
179 slice=0; 174 slice=0;
180 emit s_score(stonefield.getScore()); 175 emit s_score(stonefield.getScore());
181 modified= (stonefield.getScore()>0); 176 modified= (stonefield.getScore()>0);
182 return ret_val; 177 return ret_val;
183} 178}
184 179
185bool StoneWidget::isGameover() { 180bool StoneWidget::isGameover() {
186 return stonefield.isGameover(); 181 return stonefield.isGameover();
187} 182}
188 183
189bool StoneWidget::hasBonus() { 184bool StoneWidget::hasBonus() {
190 return stonefield.gotBonus(); // don't ask me why the names differ... ;-| [hlm] 185 return stonefield.gotBonus(); // don't ask me why the names differ... ;-| [hlm]
191} 186}
192 187
193bool StoneWidget::isOriginalBoard() { 188bool StoneWidget::isOriginalBoard() {
194 return !modified; 189 return !modified;
195} 190}
196 191
197void StoneWidget::readProperties(Config *) { 192void StoneWidget::readProperties(Config *) {
198/* Q_ASSERT(conf); 193/* Q_ASSERT(conf);
199 194
200 history.clear(); 195 history.clear();
201 196
202 if (!conf->hasKey("Board")|| 197 if (!conf->hasKey("Board")||
203 !conf->hasKey("Colors")|| 198 !conf->hasKey("Colors")||
204 !conf->hasKey("Stones")) { 199 !conf->hasKey("Stones")) {
205 return; 200 return;
206 } 201 }
207 newGame(conf->readNumEntry("Board"),conf->readNumEntry("Colors")); 202 newGame(conf->readNumEntry("Board"),conf->readNumEntry("Colors"));
208 203
209 QStrList list; 204 QStrList list;
210 conf->readListEntry("Stones",list); 205 conf->readListEntry("Stones",list);
211 206
212 for (const char *item=list.first();item;item=list.next()) { 207 for (const char *item=list.first();item;item=list.next()) {
213 int x=-1,y=-1; 208 int x=-1,y=-1;
214 if (sscanf(item,"%02X%02X",&x,&y)!=2) break; 209 if (sscanf(item,"%02X%02X",&x,&y)!=2) break;
215 history.append(new QPoint(x,y)); 210 history.append(new QPoint(x,y));
216 stonefield.remove(x,y); 211 stonefield.remove(x,y);
217 } 212 }
218*/ 213*/
219} 214}
220 215
diff --git a/noncore/games/zsame/ZSameWidget.cpp b/noncore/games/zsame/ZSameWidget.cpp
index 5001b55..45a877f 100644
--- a/noncore/games/zsame/ZSameWidget.cpp
+++ b/noncore/games/zsame/ZSameWidget.cpp
@@ -1,235 +1,228 @@
1/* Yo Emacs, this is -*- C++ -*- */ 1/* Yo Emacs, this is -*- C++ -*- */
2/* 2/*
3 * ksame 0.4 - simple Game 3 * ksame 0.4 - simple Game
4 * Copyright (C) 1997,1998 Marcus Kreutzberger 4 * Copyright (C) 1997,1998 Marcus Kreutzberger
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or 8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version. 9 * (at your option) any later version.
10 * 10 *
11 * This program is distributed in the hope that it will be useful, 11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details. 14 * GNU General Public License for more details.
15 * 15 *
16 * You should have received a copy of the GNU General Public License 16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software 17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 * 19 *
20 */ 20 */
21 21
22#include <stdio.h> 22#include <stdio.h>
23 23
24#include <qwidget.h>
25#include <qpushbutton.h>
26#include <qpixmap.h>
27#include <qvbox.h>
28#include <qpopupmenu.h>
29#include <qtoolbar.h> 24#include <qtoolbar.h>
30#include <qmenubar.h> 25#include <qmenubar.h>
31 26
32#include <qapplication.h> 27#include <qapplication.h>
33#include <qaction.h> 28#include <qaction.h>
34#include <qmessagebox.h> 29#include <qmessagebox.h>
35 30
36#include <qpe/resource.h> 31#include <qpe/resource.h>
37#include <opie/oapplicationfactory.h> 32#include <opie/oapplicationfactory.h>
38#include <kapplication.h> 33#include <kapplication.h>
39 34
40 35
41#include "ZSameWidget.h" 36#include "ZSameWidget.h"
42#include "StoneWidget.h"
43#include "version.h"
44 37
45static int default_colors=3; 38static int default_colors=3;
46 39
47#define i18n tr 40#define i18n tr
48 41
49 42
50OPIE_EXPORT_APP( OApplicationFactory<ZSameWidget> ) 43OPIE_EXPORT_APP( OApplicationFactory<ZSameWidget> )
51 44
52 45
53 46
54ZSameWidget::ZSameWidget( QWidget* parent, const char* name, WFlags fl ) 47ZSameWidget::ZSameWidget( QWidget* parent, const char* name, WFlags fl )
55 : QMainWindow( parent, name, fl ) 48 : QMainWindow( parent, name, fl )
56{ 49{
57 setCaption(tr("ZSame")); 50 setCaption(tr("ZSame"));
58 51
59 setToolBarsMovable( false ); 52 setToolBarsMovable( false );
60 QToolBar* con = new QToolBar( this ); 53 QToolBar* con = new QToolBar( this );
61 con->setHorizontalStretchable( true ); 54 con->setHorizontalStretchable( true );
62 QMenuBar* mb = new QMenuBar( con ); 55 QMenuBar* mb = new QMenuBar( con );
63 QToolBar* tb = new QToolBar( this ); 56 QToolBar* tb = new QToolBar( this );
64 57
65 QPopupMenu* fileMenu = new QPopupMenu( this ); 58 QPopupMenu* fileMenu = new QPopupMenu( this );
66 59
67 QAction* a = new QAction(tr("New Game"), Resource::loadIconSet("new") , 60 QAction* a = new QAction(tr("New Game"), Resource::loadIconSet("new") ,
68 QString::null, 0, this, "new_icon"); 61 QString::null, 0, this, "new_icon");
69 a->addTo( fileMenu ); 62 a->addTo( fileMenu );
70 a->addTo( tb ); 63 a->addTo( tb );
71 connect(a, SIGNAL(activated()), this, SLOT(m_new())); 64 connect(a, SIGNAL(activated()), this, SLOT(m_new()));
72 65
73 a = new QAction(tr("Restart This Board"), Resource::loadIconSet("redo"), 66 a = new QAction(tr("Restart This Board"), Resource::loadIconSet("redo"),
74 QString::null, 0, this, "restart_board" ); 67 QString::null, 0, this, "restart_board" );
75 a->addTo( fileMenu ); 68 a->addTo( fileMenu );
76 connect( a, SIGNAL(activated()), this, SLOT(m_restart())); 69 connect( a, SIGNAL(activated()), this, SLOT(m_restart()));
77 restart = a; 70 restart = a;
78 71
79 a = new QAction( tr("Undo"), Resource::loadIconSet("undo"), 72 a = new QAction( tr("Undo"), Resource::loadIconSet("undo"),
80 QString::null, 0, this, "undo_action" ); 73 QString::null, 0, this, "undo_action" );
81 a->addTo( fileMenu ); 74 a->addTo( fileMenu );
82 a->addTo( tb ); 75 a->addTo( tb );
83 connect( a, SIGNAL(activated()), this, SLOT(m_undo())); 76 connect( a, SIGNAL(activated()), this, SLOT(m_undo()));
84 77
85 a = new QAction(tr("Quit"), Resource::loadIconSet("quit_icon"), 78 a = new QAction(tr("Quit"), Resource::loadIconSet("quit_icon"),
86 QString::null, 0, this, "quit_action"); 79 QString::null, 0, this, "quit_action");
87 a->addTo( fileMenu ); 80 a->addTo( fileMenu );
88 a->addTo( tb ); 81 a->addTo( tb );
89 connect(a, SIGNAL(activated()), this, SLOT(m_quit())); 82 connect(a, SIGNAL(activated()), this, SLOT(m_quit()));
90 83
91 mb->insertItem(tr("Game" ), fileMenu ); 84 mb->insertItem(tr("Game" ), fileMenu );
92 85
93 int foo[2]; 86 int foo[2];
94 desktop_widget(foo); 87 desktop_widget(foo);
95 stone = new StoneWidget(this,foo[0],foo[1]); 88 stone = new StoneWidget(this,foo[0],foo[1]);
96 89
97 connect( stone, SIGNAL(s_gameover()), this, SLOT(gameover())); 90 connect( stone, SIGNAL(s_gameover()), this, SLOT(gameover()));
98 91
99 connect( stone, SIGNAL(s_colors(int)), this, SLOT(setColors(int))); 92 connect( stone, SIGNAL(s_colors(int)), this, SLOT(setColors(int)));
100 connect( stone, SIGNAL(s_board(int)), this, SLOT(setBoard(int))); 93 connect( stone, SIGNAL(s_board(int)), this, SLOT(setBoard(int)));
101 connect( stone, SIGNAL(s_marked(int)), this, SLOT(setMarked(int))); 94 connect( stone, SIGNAL(s_marked(int)), this, SLOT(setMarked(int)));
102 connect( stone, SIGNAL(s_score(int)), this, SLOT(setScore(int))); 95 connect( stone, SIGNAL(s_score(int)), this, SLOT(setScore(int)));
103 connect( stone, SIGNAL(s_remove(int,int)), this, SLOT(stonesRemoved(int,int))); 96 connect( stone, SIGNAL(s_remove(int,int)), this, SLOT(stonesRemoved(int,int)));
104 97
105 connect(stone, SIGNAL(s_sizechanged()), this, SLOT(sizeChanged())); 98 connect(stone, SIGNAL(s_sizechanged()), this, SLOT(sizeChanged()));
106 99
107 sizeChanged(); 100 sizeChanged();
108 setCentralWidget(stone); 101 setCentralWidget(stone);
109 102
110 103
111 setScore(0); 104 setScore(0);
112} 105}
113 106
114ZSameWidget::~ZSameWidget() { 107ZSameWidget::~ZSameWidget() {
115 108
116} 109}
117 110
118void ZSameWidget::readProperties(Config *conf) { 111void ZSameWidget::readProperties(Config *conf) {
119/* 112/*
120 Q_ASSERT(conf); 113 Q_ASSERT(conf);
121 stone->readProperties(conf); 114 stone->readProperties(conf);
122*/ 115*/
123} 116}
124 117
125void ZSameWidget::saveProperties(Config *conf) { 118void ZSameWidget::saveProperties(Config *conf) {
126/* 119/*
127 Q_ASSERT(conf); 120 Q_ASSERT(conf);
128 stone->saveProperties(conf); 121 stone->saveProperties(conf);
129 conf->sync(); 122 conf->sync();
130*/ 123*/
131} 124}
132 125
133void ZSameWidget::sizeChanged() { 126void ZSameWidget::sizeChanged() {
134 //stone->setFixedSize(stone->sizeHint()); 127 //stone->setFixedSize(stone->sizeHint());
135} 128}
136 129
137void ZSameWidget::newGame(unsigned int board,int colors) { 130void ZSameWidget::newGame(unsigned int board,int colors) {
138 while (board>=1000000) board-=1000000; 131 while (board>=1000000) board-=1000000;
139 // kdDebug() << "newgame board " << board << " colors " << colors << endl; 132 // kdDebug() << "newgame board " << board << " colors " << colors << endl;
140 stone->newGame(board,colors); 133 stone->newGame(board,colors);
141 setScore(0); 134 setScore(0);
142} 135}
143 136
144bool ZSameWidget::confirmAbort() { 137bool ZSameWidget::confirmAbort() {
145 return stone->isGameover() || 138 return stone->isGameover() ||
146 stone->isOriginalBoard() || 139 stone->isOriginalBoard() ||
147 (QMessageBox::warning(this, i18n("Resign"), i18n("<qt>Do you want to resign?</qt>"), 140 (QMessageBox::warning(this, i18n("Resign"), i18n("<qt>Do you want to resign?</qt>"),
148 QMessageBox::Yes, 141 QMessageBox::Yes,
149 QMessageBox::No|QMessageBox::Default|QMessageBox::Escape, 0) == QMessageBox::Yes ); 142 QMessageBox::No|QMessageBox::Default|QMessageBox::Escape, 0) == QMessageBox::Yes );
150} 143}
151 144
152void ZSameWidget::m_new() { 145void ZSameWidget::m_new() {
153 if (confirmAbort()) 146 if (confirmAbort())
154 newGame(_random(),default_colors); 147 newGame(_random(),default_colors);
155 148
156} 149}
157 150
158void ZSameWidget::m_restart() { 151void ZSameWidget::m_restart() {
159 if (confirmAbort()) 152 if (confirmAbort())
160 newGame(stone->board(),default_colors); 153 newGame(stone->board(),default_colors);
161} 154}
162 155
163void ZSameWidget::m_load() { 156void ZSameWidget::m_load() {
164// kdDebug() << "menu load not supported" << endl; 157// kdDebug() << "menu load not supported" << endl;
165} 158}
166 159
167void ZSameWidget::m_save() { 160void ZSameWidget::m_save() {
168// kdDebug() << "menu save not supported" << endl; 161// kdDebug() << "menu save not supported" << endl;
169} 162}
170 163
171void ZSameWidget::m_undo() { 164void ZSameWidget::m_undo() {
172 //Q_ASSERT(stone); 165 //Q_ASSERT(stone);
173 stone->undo(); 166 stone->undo();
174} 167}
175 168
176 169
177void ZSameWidget::m_showhs() { 170void ZSameWidget::m_showhs() {
178/* Q_ASSERT(stone); 171/* Q_ASSERT(stone);
179 stone->unmark(); 172 stone->unmark();
180 KScoreDialog d(KScoreDialog::Name | KScoreDialog::Score, this); 173 KScoreDialog d(KScoreDialog::Name | KScoreDialog::Score, this);
181 d.addField(Board, i18n("Board"), "Board"); 174 d.addField(Board, i18n("Board"), "Board");
182 d.exec(); 175 d.exec();
183*/ 176*/
184} 177}
185 178
186void ZSameWidget::m_quit() { 179void ZSameWidget::m_quit() {
187// Q_ASSERT(stone); 180// Q_ASSERT(stone);
188 stone->unmark(); 181 stone->unmark();
189 qApp->quit(); 182 qApp->quit();
190// delete this; 183// delete this;
191} 184}
192 185
193void ZSameWidget::m_tglboard() { 186void ZSameWidget::m_tglboard() {
194 //kdDebug() << "toggled" << endl; 187 //kdDebug() << "toggled" << endl;
195} 188}
196 189
197 190
198void ZSameWidget::setColors(int colors) { 191void ZSameWidget::setColors(int colors) {
199 //status->changeItem(i18n("%1 Colors").arg(colors),1); 192 //status->changeItem(i18n("%1 Colors").arg(colors),1);
200} 193}
201 194
202void ZSameWidget::setBoard(int board) { 195void ZSameWidget::setBoard(int board) {
203 //status->changeItem(i18n("Board: %1").arg(board, 6), 2); 196 //status->changeItem(i18n("Board: %1").arg(board, 6), 2);
204} 197}
205 198
206void ZSameWidget::setMarked(int m) { 199void ZSameWidget::setMarked(int m) {
207// status->changeItem(i18n("Marked: %1").arg(m, 6),3); 200// status->changeItem(i18n("Marked: %1").arg(m, 6),3);
208} 201}
209 202
210void ZSameWidget::stonesRemoved(int,int) { 203void ZSameWidget::stonesRemoved(int,int) {
211 //KNotifyClient::event("stones removed", 204 //KNotifyClient::event("stones removed",
212 // i18n("%1 stones removed.").arg(stone->marked())); 205 // i18n("%1 stones removed.").arg(stone->marked()));
213} 206}
214 207
215void ZSameWidget::setScore(int score) { 208void ZSameWidget::setScore(int score) {
216// status->changeItem(i18n("Score: %1").arg(score, 6),4); 209// status->changeItem(i18n("Score: %1").arg(score, 6),4);
217// undo->setEnabled(stone->undoPossible()); 210// undo->setEnabled(stone->undoPossible());
218// restart->setEnabled(!stone->isOriginalBoard()); 211// restart->setEnabled(!stone->isOriginalBoard());
219} 212}
220 213
221void ZSameWidget::gameover() { 214void ZSameWidget::gameover() {
222// kdDebug() << "GameOver" << endl; 215// kdDebug() << "GameOver" << endl;
223 if (stone->hasBonus()) { 216 if (stone->hasBonus()) {
224 QMessageBox::information(this,i18n("Game won"), 217 QMessageBox::information(this,i18n("Game won"),
225 i18n("<qt>You even removed the last stone, great job! " 218 i18n("<qt>You even removed the last stone, great job! "
226 "This gave you a score of %1 in total.</qt>").arg(stone->score())); 219 "This gave you a score of %1 in total.</qt>").arg(stone->score()));
227 } else { 220 } else {
228 QMessageBox::information(this,i18n("Game over"), 221 QMessageBox::information(this,i18n("Game over"),
229 i18n("<qt>There are no more removeable stones. " 222 i18n("<qt>There are no more removeable stones. "
230 "You got a score of %1 in total.</qt>").arg(stone->score())); 223 "You got a score of %1 in total.</qt>").arg(stone->score()));
231 } 224 }
232 stone->unmark(); 225 stone->unmark();
233} 226}
234 227
235void ZSameWidget::desktop_widget(int *f)const{ 228void ZSameWidget::desktop_widget(int *f)const{