summaryrefslogtreecommitdiff
authorandyq <andyq>2002-12-11 17:58:53 (UTC)
committer andyq <andyq>2002-12-11 17:58:53 (UTC)
commitf4865ac8e114baedd13c95160631e4574da9dc84 (patch) (side-by-side diff)
treeecc74f212ffde8b9733ad6a7dd9e2360717917ef
parent676f39d78772b19d11471db55ece82262278f942 (diff)
downloadopie-f4865ac8e114baedd13c95160631e4574da9dc84.zip
opie-f4865ac8e114baedd13c95160631e4574da9dc84.tar.gz
opie-f4865ac8e114baedd13c95160631e4574da9dc84.tar.bz2
Added check for no replay file on loading and fixed bugs where you could screw up the replay by pressing stuff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/sfcave/sfcave.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/noncore/games/sfcave/sfcave.cpp b/noncore/games/sfcave/sfcave.cpp
index 93f5f82..d551afe 100644
--- a/noncore/games/sfcave/sfcave.cpp
+++ b/noncore/games/sfcave/sfcave.cpp
@@ -817,25 +817,25 @@ void SFCave :: keyPressEvent( QKeyEvent *e )
case Qt::Key_Enter:
dealWithMenuSelection();
break;
}
}
else
{
switch( e->key() )
{
case Qt::Key_Up:
case Qt::Key_F9:
case Qt::Key_Space:
- if ( !press )
+ if ( !replay && !press )
{
press = true;
replayList.append( new int( nrFrames ) );
}
break;
case Qt::Key_M:
case Qt::Key_Return:
case Qt::Key_Enter:
if ( state == STATE_CRASHED )
state = STATE_MENU;
break;
@@ -853,50 +853,52 @@ void SFCave :: keyPressEvent( QKeyEvent *e )
void SFCave :: keyReleaseEvent( QKeyEvent *e )
{
if ( state == STATE_MENU )
{
}
else
{
switch( e->key() )
{
case Qt::Key_F9:
case Qt::Key_Space:
case Qt::Key_Up:
- if ( press )
+ if ( !replay && press )
{
press = false;
replayList.append( new int( nrFrames ) );
}
break;
case Qt::Key_R:
if ( state == STATE_CRASHED )
{
state = STATE_REPLAY;
}
break;
case Qt::Key_Down:
if ( state == STATE_CRASHED )
state = STATE_NEWGAME;
break;
case Qt::Key_S:
- saveReplay();
+ if ( state == STATE_CRASHED )
+ saveReplay();
break;
case Qt::Key_L:
- loadReplay();
+ if ( state == STATE_CRASHED )
+ loadReplay();
break;
default:
e->ignore();
break;
}
}
}
void SFCave :: displayMenu()
{
offscreen->fill( Qt::black );
@@ -1056,24 +1058,29 @@ void SFCave :: saveReplay()
fwrite( (const char *)val, 1, val.length(), out );
fclose( out );
printf( "Replay saved to %s\n", (const char *)replayFile );
}
void SFCave :: loadReplay()
{
FILE *in = fopen( (const char *)replayFile, "r" );
+ if ( in == 0 )
+ {
+ printf( "Couldn't load replay file!\n" );
+ return;
+ }
// Read size of next line
char line[10+1];
fgets( line, 10, in );
int length = -1;
sscanf( line, "%d", &length );
char *data = new char[length+1];
fread( data, 1, length, in );
QString sep = " ";
QStringList list = QStringList::split( sep, QString( data ) );
@@ -1084,13 +1091,15 @@ void SFCave :: loadReplay()
++it;
replayList.clear();
for ( ; it != list.end(); ++it )
{
int v = (*it).toInt();
replayList.append( new int( v ) );
}
delete data;
fclose( in );
+
+ printf( "Replay loaded from %s\n", (const char *)replayFile );
} \ No newline at end of file