summaryrefslogtreecommitdiff
path: root/apps/plugins/blackjack.c
diff options
context:
space:
mode:
authorTeruaki Kawashima <teru@rockbox.org>2009-09-06 14:14:22 +0000
committerTeruaki Kawashima <teru@rockbox.org>2009-09-06 14:14:22 +0000
commitd41e698ea00a1922434a75d6ba8f3eaa3485abd3 (patch)
treedc4daf5cbcadef800e1a19a810c1ce3f776e813e /apps/plugins/blackjack.c
parentc17037a80266e9e97643e8c34459f3ac81510be0 (diff)
downloadrockbox-d41e698ea00a1922434a75d6ba8f3eaa3485abd3.zip
rockbox-d41e698ea00a1922434a75d6ba8f3eaa3485abd3.tar.gz
rockbox-d41e698ea00a1922434a75d6ba8f3eaa3485abd3.tar.bz2
rockbox-d41e698ea00a1922434a75d6ba8f3eaa3485abd3.tar.xz
brickmania, blackjack, jewels, bubbles: Remove save file only if player resumed the game loaded from the file.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22639 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/blackjack.c')
-rw-r--r--apps/plugins/blackjack.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index e00b209..9ad19fc 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -36,8 +36,8 @@ PLUGIN_HEADER
/* final game return status */
enum {
BJ_LOSE,
+ BJ_QUIT_WITHOUT_SAVING,
BJ_QUIT,
- BJ_SAVE_AND_QUIT,
BJ_USB,
BJ_END,
};
@@ -514,7 +514,8 @@ typedef struct game_context {
bool asked_insurance;
} game_context;
-static bool resume;
+static bool resume = false;
+static bool resume_file = false;
static struct highscore highest[NUM_SCORES];
/*****************************************************************************
@@ -855,23 +856,19 @@ static bool blackjack_loadgame(struct game_context* bj) {
signed int fd;
bool loaded = false;
- resume = false;
/* open game file */
fd = rb->open(SAVE_FILE, O_RDONLY);
- if(fd < 0) return loaded;
+ if(fd < 0) return false;
/* read in saved game */
if(rb->read(fd, bj, sizeof(struct game_context))
== (long)sizeof(struct game_context))
{
- resume = true;
loaded = true;
}
rb->close(fd);
- /* delete saved file */
- rb->remove(SAVE_FILE);
return loaded;
}
@@ -1204,7 +1201,8 @@ static unsigned int blackjack_menu(struct game_context* bj) {
MENUITEM_STRINGLIST(menu, "BlackJack Menu", NULL,
"Resume Game", "Start New Game",
"High Scores", "Help",
- "Playback Control", "Quit", "Save and Quit");
+ "Playback Control",
+ "Quit without Saving", "Quit");
while(!breakout) {
switch(rb->do_menu(&menu, &selection, NULL, false)) {
@@ -1213,6 +1211,8 @@ static unsigned int blackjack_menu(struct game_context* bj) {
rb->splash(HZ*2, "Nothing to resume");
} else {
breakout = true;
+ if(resume_file)
+ rb->remove(SAVE_FILE);
}
break;
case 1:
@@ -1231,9 +1231,9 @@ static unsigned int blackjack_menu(struct game_context* bj) {
return BJ_USB;
break;
case 5:
- return BJ_QUIT;
+ return BJ_QUIT_WITHOUT_SAVING;
case 6:
- return BJ_SAVE_AND_QUIT;
+ return BJ_QUIT;
case MENU_ATTACHED_USB:
return BJ_USB;
@@ -1278,6 +1278,7 @@ static int blackjack(struct game_context* bj) {
* play *
********************/
+ resume_file = false;
/* check for resumed game */
if(resume) {
resume = false;
@@ -1508,7 +1509,8 @@ enum plugin_status plugin_start(const void* parameter)
/* load high scores */
highscore_load(HIGH_SCORE,highest,NUM_SCORES);
- blackjack_loadgame(&bj);
+ resume = blackjack_loadgame(&bj);
+ resume_file = resume;
rb->lcd_setfont(FONT_SYSFIXED);
@@ -1537,15 +1539,13 @@ enum plugin_status plugin_start(const void* parameter)
highscore_save(HIGH_SCORE,highest,NUM_SCORES);
return PLUGIN_USB_CONNECTED;
- case BJ_SAVE_AND_QUIT:
- if (resume) {
- rb->splash(HZ, "Saving game...");
- blackjack_savegame(&bj);
- }
- /* fall through */
-
case BJ_QUIT:
+ rb->splash(HZ/5, "Saving Game and Scores...");
+ blackjack_savegame(&bj);
highscore_save(HIGH_SCORE,highest,NUM_SCORES);
+ /* fall through */
+
+ case BJ_QUIT_WITHOUT_SAVING:
exit = true;
break;