summaryrefslogtreecommitdiff
authorandyq <andyq>2002-12-20 22:57:16 (UTC)
committer andyq <andyq>2002-12-20 22:57:16 (UTC)
commit12a964a2f8837ee981284f3ee902baae0c7b1f77 (patch) (unidiff)
treec89f1e29e40f8aa1d0b1f2940b7227ce6c75bf01
parent48efd0d81aad0c3d0a64baabbc46fde593eb086c (diff)
downloadopie-12a964a2f8837ee981284f3ee902baae0c7b1f77.zip
opie-12a964a2f8837ee981284f3ee902baae0c7b1f77.tar.gz
opie-12a964a2f8837ee981284f3ee902baae0c7b1f77.tar.bz2
Fixed small bugette with cursor keys
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/sfcave/sfcave.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/noncore/games/sfcave/sfcave.cpp b/noncore/games/sfcave/sfcave.cpp
index 5633a8f..c1e4532 100644
--- a/noncore/games/sfcave/sfcave.cpp
+++ b/noncore/games/sfcave/sfcave.cpp
@@ -166,144 +166,141 @@ SFCave :: SFCave( int spd, QWidget *w, char *name )
166 Config cfg( "sfcave" ); 166 Config cfg( "sfcave" );
167 cfg.setGroup( "settings" ); 167 cfg.setGroup( "settings" );
168 QString key = "highScore_"; 168 QString key = "highScore_";
169 169
170 for ( int i = 0 ; i < 3 ; ++i ) 170 for ( int i = 0 ; i < 3 ; ++i )
171 { 171 {
172 for ( int j = 0 ; j < 3 ; ++j ) 172 for ( int j = 0 ; j < 3 ; ++j )
173 highestScore[i][j] = cfg.readNumEntry( key + gameTypes[i] + "_" + dificultyOption[j], 0 ); 173 highestScore[i][j] = cfg.readNumEntry( key + gameTypes[i] + "_" + dificultyOption[j], 0 );
174 } 174 }
175 175
176 currentGameType = cfg.readNumEntry( "gameType", 0 ); 176 currentGameType = cfg.readNumEntry( "gameType", 0 );
177 currentGameDifficulty = cfg.readNumEntry( "difficulty", 0 ); 177 currentGameDifficulty = cfg.readNumEntry( "difficulty", 0 );
178#endif 178#endif
179 speed = spd; // Change to 2 for PC 179 speed = spd; // Change to 2 for PC
180 press = false; 180 press = false;
181 181
182 offscreen = new QPixmap( sWidth, sHeight ); 182 offscreen = new QPixmap( sWidth, sHeight );
183 offscreen->fill( Qt::black ); 183 offscreen->fill( Qt::black );
184 184
185// setUp(); 185// setUp();
186 crashLineLength = -1; 186 crashLineLength = -1;
187 state = STATE_MENU; 187 state = STATE_MENU;
188 prevState = STATE_MENU; 188 prevState = STATE_MENU;
189 189
190 gameTimer = new QTimer( this, "game timer" ); 190 gameTimer = new QTimer( this, "game timer" );
191 connect( gameTimer, SIGNAL( timeout() ), 191 connect( gameTimer, SIGNAL( timeout() ),
192 this, SLOT( run() ) ); 192 this, SLOT( run() ) );
193} 193}
194 194
195SFCave :: ~SFCave() 195SFCave :: ~SFCave()
196{ 196{
197} 197}
198 198
199void SFCave :: start() 199void SFCave :: start()
200{ 200{
201 gameTimer->start( 10 ); 201 gameTimer->start( 10 );
202 202
203} 203}
204 204
205void SFCave :: setSeed( int seed ) 205void SFCave :: setSeed( int seed )
206{ 206{
207 if ( seed == -1 ) 207 if ( seed == -1 )
208 currentSeed = ((unsigned long) time((time_t *) NULL)); 208 currentSeed = ((unsigned long) time((time_t *) NULL));
209 else 209 else
210 currentSeed = seed; 210 currentSeed = seed;
211 PutSeed( currentSeed ); 211 PutSeed( currentSeed );
212} 212}
213 213
214int SFCave :: nextInt( int range ) 214int SFCave :: nextInt( int range )
215{ 215{
216 int val = (int)(Random( ) * range); 216 int val = (int)(Random( ) * range);
217 217
218 return val; 218 return val;
219 219
220} 220}
221 221
222void SFCave :: setUp() 222void SFCave :: setUp()
223{ 223{
224 score = 0; 224 score = 0;
225 offset = 0; 225 offset = 0;
226 nrFrames = 0; 226 nrFrames = 0;
227 dir = 1; 227 dir = 1;
228 thrust = 0; 228 thrust = 0;
229 229
230 int dist[] = { 100, 60, 40 };
231 if ( CURRENT_GAME_TYPE == SFCAVE_GAME ) 230 if ( CURRENT_GAME_TYPE == SFCAVE_GAME )
232 { 231 {
233 thrustUp = UpThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];; 232 thrustUp = UpThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];;
234 noThrust = DownThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];; 233 noThrust = DownThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];;
235 maxUpThrust = MaxUpThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];; 234 maxUpThrust = MaxUpThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];;
236 maxDownThrust = MaxDownThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];; 235 maxDownThrust = MaxDownThrustVals[SFCAVE_GAME_TYPE][currentGameDifficulty];;
237 236
238 if ( currentCameDifficulty == DIFICULTY_EASY ) 237 if ( currentGameDifficulty == DIFICULTY_EASY )
239 gateDistance = 100; 238 gateDistance = 100;
240 else if ( currentCameDifficulty == DIFICULTY_EASY ) 239 else if ( currentGameDifficulty == DIFICULTY_EASY )
241 gateDistance = 60; 240 gateDistance = 60;
242 else 241 else
243 gateDistance = 40; 242 gateDistance = 40;
244
245 printf( "GD = %d\n", gateDistance );
246 } 243 }
247 else if ( CURRENT_GAME_TYPE == GATES_GAME ) 244 else if ( CURRENT_GAME_TYPE == GATES_GAME )
248 { 245 {
249 thrustUp = UpThrustVals[GATES_GAME_TYPE][currentGameDifficulty];; 246 thrustUp = UpThrustVals[GATES_GAME_TYPE][currentGameDifficulty];;
250 noThrust = DownThrustVals[GATES_GAME_TYPE][currentGameDifficulty];; 247 noThrust = DownThrustVals[GATES_GAME_TYPE][currentGameDifficulty];;
251 maxUpThrust = MaxUpThrustVals[GATES_GAME_TYPE][currentGameDifficulty];; 248 maxUpThrust = MaxUpThrustVals[GATES_GAME_TYPE][currentGameDifficulty];;
252 maxDownThrust = MaxDownThrustVals[GATES_GAME_TYPE][currentGameDifficulty];; 249 maxDownThrust = MaxDownThrustVals[GATES_GAME_TYPE][currentGameDifficulty];;
253 gateDistance = 75; 250 gateDistance = 75;
254 nextGate = nextInt( 50 ) + gateDistance; 251 nextGate = nextInt( 50 ) + gateDistance;
255 } 252 }
256 else 253 else
257 { 254 {
258 thrustUp = UpThrustVals[FLY_GAME_TYPE][currentGameDifficulty]; 255 thrustUp = UpThrustVals[FLY_GAME_TYPE][currentGameDifficulty];
259 noThrust = DownThrustVals[FLY_GAME_TYPE][currentGameDifficulty]; 256 noThrust = DownThrustVals[FLY_GAME_TYPE][currentGameDifficulty];
260 maxUpThrust = MaxUpThrustVals[FLY_GAME_TYPE][currentGameDifficulty]; 257 maxUpThrust = MaxUpThrustVals[FLY_GAME_TYPE][currentGameDifficulty];
261 maxDownThrust = MaxDownThrustVals[FLY_GAME_TYPE][currentGameDifficulty]; 258 maxDownThrust = MaxDownThrustVals[FLY_GAME_TYPE][currentGameDifficulty];
262 } 259 }
263 260
264 crashLineLength = 0; 261 crashLineLength = 0;
265 lastGateBottomY = 0; 262 lastGateBottomY = 0;
266 263
267 user.setRect( 50, sWidth/2, 4, 4 ); 264 user.setRect( 50, sWidth/2, 4, 4 );
268 265
269 blockWidth = 20; 266 blockWidth = 20;
270 blockHeight = 70; 267 blockHeight = 70;
271 gapHeight = initialGateGaps[currentGameDifficulty]; 268 gapHeight = initialGateGaps[currentGameDifficulty];
272 269
273 for ( int i = 0 ; i < TRAILSIZE ; ++i ) 270 for ( int i = 0 ; i < TRAILSIZE ; ++i )
274 { 271 {
275 trail[i].setX( -1 ); 272 trail[i].setX( -1 );
276 trail[i].setY( 0 ); 273 trail[i].setY( 0 );
277 } 274 }
278 275
279 if ( CURRENT_GAME_TYPE != FLY_GAME ) 276 if ( CURRENT_GAME_TYPE != FLY_GAME )
280 { 277 {
281 maxHeight = 50; 278 maxHeight = 50;
282 279
283 mapTop[0] = (int)(nextInt(50)) + 5; 280 mapTop[0] = (int)(nextInt(50)) + 5;
284 mapBottom[0] = (int)(nextInt(50)) + 5; 281 mapBottom[0] = (int)(nextInt(50)) + 5;
285 for ( int i = 1 ; i < MAPSIZE ; ++i ) 282 for ( int i = 1 ; i < MAPSIZE ; ++i )
286 setPoint( i ); 283 setPoint( i );
287 } 284 }
288 else 285 else
289 { 286 {
290 maxHeight = 100; 287 maxHeight = 100;
291 288
292 for ( int i = 0 ; i < MAPSIZE ; ++i ) 289 for ( int i = 0 ; i < MAPSIZE ; ++i )
293 mapBottom[i] = sHeight - 10; 290 mapBottom[i] = sHeight - 10;
294 } 291 }
295 for ( int i = 0 ; i < BLOCKSIZE ; ++i ) 292 for ( int i = 0 ; i < BLOCKSIZE ; ++i )
296 blocks[i].setY( -1 ); 293 blocks[i].setY( -1 );
297 294
298} 295}
299 296
300void SFCave :: run() 297void SFCave :: run()
301{ 298{
302 switch ( state ) 299 switch ( state )
303 { 300 {
304 case STATE_MENU: 301 case STATE_MENU:
305 displayMenu(); 302 displayMenu();
306 break; 303 break;
307 case STATE_NEWGAME: 304 case STATE_NEWGAME:
308 setSeed( -1 ); 305 setSeed( -1 );
309 setUp(); 306 setUp();
@@ -730,174 +727,174 @@ void SFCave :: draw()
730 p.end(); 727 p.end();
731 bitBlt( this, 0, 0, offscreen, 0, 0, sWidth, sHeight, Qt::CopyROP, true ); 728 bitBlt( this, 0, 0, offscreen, 0, 0, sWidth, sHeight, Qt::CopyROP, true );
732 //printf( "endpaint\n" ); 729 //printf( "endpaint\n" );
733} 730}
734 731
735void SFCave :: handleKeys() 732void SFCave :: handleKeys()
736{ 733{
737 // Find enpty trail and move others 734 // Find enpty trail and move others
738 bool done = false; 735 bool done = false;
739 for ( int i = 0 ; i < TRAILSIZE ; ++i ) 736 for ( int i = 0 ; i < TRAILSIZE ; ++i )
740 { 737 {
741 if ( trail[i].x() < 0 ) 738 if ( trail[i].x() < 0 )
742 { 739 {
743 if ( !done ) 740 if ( !done )
744 { 741 {
745 trail[i].setX( user.x() - 5 ); 742 trail[i].setX( user.x() - 5 );
746 trail[i].setY( user.y() ); 743 trail[i].setY( user.y() );
747 done = true; 744 done = true;
748 } 745 }
749 } 746 }
750 else 747 else
751 { 748 {
752 trail[i].setX( trail[i].x() - (2) ); 749 trail[i].setX( trail[i].x() - (2) );
753 } 750 }
754 } 751 }
755 752
756 if ( speed <= 3 ) 753 if ( speed <= 3 )
757 { 754 {
758 if ( press ) 755 if ( press )
759 thrust -= thrustUp; 756 thrust -= thrustUp;
760 else 757 else
761 thrust += noThrust; 758 thrust += noThrust;
762 759
763 if ( thrust > maxDownThrust ) 760 if ( thrust > maxDownThrust )
764 thrust = maxDownThrust; 761 thrust = maxDownThrust;
765 else if ( thrust < maxUpThrust ) 762 else if ( thrust < maxUpThrust )
766 thrust = maxUpThrust; 763 thrust = maxUpThrust;
767 } 764 }
768 else 765 else
769 { 766 {
770 if ( press ) 767 if ( press )
771 thrust -= 0.5; 768 thrust -= 0.5;
772 else 769 else
773 thrust += 0.8; 770 thrust += 0.8;
774 771
775 if ( thrust > 5.0 ) 772 if ( thrust > 5.0 )
776 thrust = 5.0; 773 thrust = 5.0;
777 else if ( thrust < -3.5 ) 774 else if ( thrust < -3.5 )
778 thrust = -3.5; 775 thrust = -3.5;
779 } 776 }
780 user.moveBy( 0, (int)thrust ); 777 user.moveBy( 0, (int)thrust );
781} 778}
782 779
783void SFCave :: keyPressEvent( QKeyEvent *e ) 780void SFCave :: keyPressEvent( QKeyEvent *e )
784{ 781{
785 if ( state == STATE_MENU ) 782 if ( state == STATE_MENU )
786 handleMenuKeys( e ); 783 handleMenuKeys( e );
787 else 784 else
788 { 785 {
789 switch( e->key() ) 786 switch( e->key() )
790 { 787 {
791 case Qt::Key_Up: 788 case Qt::Key_Up:
792 case Qt::Key_F9: 789 case Qt::Key_F9:
793 case Qt::Key_Space: 790 case Qt::Key_Space:
794 if ( !replay && !press ) 791 if ( state == STATE_RUNNING && !replay && !press )
795 { 792 {
796 press = true; 793 press = true;
797 replayList.append( new int( nrFrames ) ); 794 replayList.append( new int( nrFrames ) );
798 } 795 }
796 else if ( state == STATE_CRASHED && e->key() == Key_Up )
797 state = STATE_NEWGAME;
799 break; 798 break;
800 case Qt::Key_M: 799 case Qt::Key_M:
801 case Qt::Key_Return: 800 case Qt::Key_Return:
802 case Qt::Key_Enter: 801 case Qt::Key_Enter:
803 if ( state == STATE_CRASHED ) 802 if ( state == STATE_CRASHED )
804 { 803 {
805 state = STATE_MENU; 804 state = STATE_MENU;
806 currentMenuNr = 0; 805 currentMenuNr = 0;
807 currentMenuOption[currentMenuNr] = 0; 806 currentMenuOption[currentMenuNr] = 0;
808 } 807 }
809 break; 808 break;
810 809
811 case Qt::Key_Z: 810 case Qt::Key_Z:
812 showScoreZones = !showScoreZones; 811 showScoreZones = !showScoreZones;
813 break; 812 break;
814 813
815 default: 814 default:
816 e->ignore(); 815 e->ignore();
817 break; 816 break;
818 } 817 }
819 } 818 }
820} 819}
821 820
822void SFCave :: keyReleaseEvent( QKeyEvent *e ) 821void SFCave :: keyReleaseEvent( QKeyEvent *e )
823{ 822{
824 if ( state == STATE_MENU ) 823 if ( state == STATE_MENU )
825 { 824 {
826 } 825 }
827 else 826 else
828 { 827 {
829 switch( e->key() ) 828 switch( e->key() )
830 { 829 {
831 case Qt::Key_F9: 830 case Qt::Key_F9:
832 case Qt::Key_Space: 831 case Qt::Key_Space:
833 case Qt::Key_Up: 832 case Qt::Key_Up:
834 if ( !replay && press ) 833 press = false;
835 { 834 if ( state == STATE_RUNNING && !replay && press )
836 press = false;
837
838 replayList.append( new int( nrFrames ) ); 835 replayList.append( new int( nrFrames ) );
839 } 836
840 break; 837 break;
841 838
842 case Qt::Key_R: 839 case Qt::Key_R:
843 if ( state == STATE_CRASHED ) 840 if ( state == STATE_CRASHED )
844 { 841 {
845 state = STATE_REPLAY; 842 state = STATE_REPLAY;
846 } 843 }
847 break; 844 break;
848 845
849 case Qt::Key_Down: 846 case Qt::Key_Down:
850 if ( state == STATE_CRASHED ) 847 if ( state == STATE_CRASHED )
851 state = STATE_NEWGAME; 848 state = STATE_NEWGAME;
852 break; 849 break;
853 850
854 case Qt::Key_S: 851 case Qt::Key_S:
855 if ( state == STATE_CRASHED ) 852 if ( state == STATE_CRASHED )
856 saveReplay(); 853 saveReplay();
857 break; 854 break;
858 855
859 case Qt::Key_L: 856 case Qt::Key_L:
860 if ( state == STATE_CRASHED ) 857 if ( state == STATE_CRASHED )
861 loadReplay(); 858 loadReplay();
862 break; 859 break;
863 default: 860 default:
864 e->ignore(); 861 e->ignore();
865 break; 862 break;
866 } 863 }
867 } 864 }
868 865
869} 866}
870 867
871 868
872void SFCave :: saveScore() 869void SFCave :: saveScore()
873{ 870{
874#ifdef QWS 871#ifdef QWS
875 Config cfg( "sfcave" ); 872 Config cfg( "sfcave" );
876 cfg.setGroup( "settings" ); 873 cfg.setGroup( "settings" );
877 QString key = "highScore_"; 874 QString key = "highScore_";
878 875
879 cfg.writeEntry( key + gameTypes[currentGameType] + "_" + dificultyOption[currentGameDifficulty], highestScore[currentGameType][currentGameDifficulty] ); 876 cfg.writeEntry( key + gameTypes[currentGameType] + "_" + dificultyOption[currentGameDifficulty], highestScore[currentGameType][currentGameDifficulty] );
880 key += CURRENT_GAME_TYPE; 877 key += CURRENT_GAME_TYPE;
881 cfg.writeEntry( key, highestScore[currentGameType] ); 878 cfg.writeEntry( key, highestScore[currentGameType] );
882#endif 879#endif
883} 880}
884 881
885void SFCave :: saveReplay() 882void SFCave :: saveReplay()
886{ 883{
887 FILE *out; 884 FILE *out;
888 out = fopen( (const char *)replayFile, "w" ); 885 out = fopen( (const char *)replayFile, "w" );
889 if ( !out ) 886 if ( !out )
890 { 887 {
891 printf( "Couldn't write to /home/root/sfcave.replay\n" ); 888 printf( "Couldn't write to /home/root/sfcave.replay\n" );
892 return; 889 return;
893 } 890 }
894 891
895 // Build up string of values 892 // Build up string of values
896 // Format is:: <landscape seed> <game type> <difficulty> <framenr> <framenr>....... 893 // Format is:: <landscape seed> <game type> <difficulty> <framenr> <framenr>.......
897 QString val; 894 QString val;
898 val.sprintf( "%d %d %d ", currentSeed, currentGameType, currentGameDifficulty ); 895 val.sprintf( "%d %d %d ", currentSeed, currentGameType, currentGameDifficulty );
899 896
900 QListIterator<int> it( replayList ); 897 QListIterator<int> it( replayList );
901 while( it.current() ) 898 while( it.current() )
902 { 899 {
903 QString tmp; 900 QString tmp;