changeset 8:f60cb9a39d7a

*** empty log message ***
author gongo
date Sat, 04 Nov 2006 08:28:46 +0000
parents f7a5aeed1292
children 2fdac80d03ae
files game.h schedule.c
diffstat 2 files changed, 18 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/game.h	Sat Nov 04 08:15:16 2006 +0000
+++ b/game.h	Sat Nov 04 08:28:46 2006 +0000
@@ -18,12 +18,12 @@
 
 typedef struct game {
     GAME_STATE state;
+    void (*exec)();
     CarPtr jiki;
     int course_id;   // $B%3!<%9(BID
     int car_id;      // $B<+5!(BID
     int camera_type; // $B%+%a%i$N%?%$%W(B
     int select;      // $BA*BrMQJQ?t!)$$$i$J$$$+(B
-    int demo_flg;    // (demo_flg == 0) ? $BDL>o%b!<%I(B : $B%G%b%b!<%I(B
     int play_id;
     int rap;
 } Game, *GamePtr;
--- a/schedule.c	Sat Nov 04 08:15:16 2006 +0000
+++ b/schedule.c	Sat Nov 04 08:28:46 2006 +0000
@@ -116,6 +116,9 @@
     game_env_init();
     graphic_init();
     camera_init();
+
+    game.state = GAME_SELECT_CAR;
+    game.exec = sche_game_opening;
 }
 
 void
@@ -131,6 +134,7 @@
 
     if (pad.st == 1) {
 	game.state = GAME_SELECT_CAR;
+	game.exec = sche_game_select_car;
     }
 
     /*
@@ -169,6 +173,7 @@
     }
     if (pad.circle == 1) {
 	game.state = GAME_SELECT_COURSE;
+	game.exec = sche_game_select_course;
     }
 }
 
@@ -191,6 +196,7 @@
     }
     if (pad.circle == 1) {
 	game.state = GAME_READY;
+	game.exec = sche_game_ready;
     }
 }
 
@@ -211,9 +217,11 @@
 
     if (pad.st > 0) {
 	game.state = GAME_MAIN_INIT;
+	game.exec = sche_game_main_init;
     }
     if (pad.cross > 0) {
 	game.state = GAME_SELECT_CAR;
+	game.exec = sche_game_select_car;
     }
 }
 
@@ -224,6 +232,7 @@
 	play_init();
     RUNNIG=0;
     game.state = GAME_MAIN;
+    game.exec = sche_game_main;
 }
 
 void
@@ -264,6 +273,7 @@
 	wait_init();
 	ranking = 1;
 	game.state = GAME_GOAL;
+	game.exec = sche_game_main_goal;
     }
 
     gFont_SetStringInt((int)(100.0*game.jiki->speed), 380, 350);
@@ -285,6 +295,7 @@
     }
     if (pad.st == 1) {
 	game.state = GAME_PAUSE;
+	game.exec = sche_game_main_pause;
     }
 }
 
@@ -307,12 +318,15 @@
     if (pad.circle == 1) {
 	if (game.select == 0) {
 	    game.state = GAME_MAIN;
+	    game.exec = sche_game_main;
 	} else {
 	    game.state = GAME_FINISH;
+	    game.exec = sche_game_main_finish;
 	}
     }
     if (pad.st == 1) {
 	game.state = GAME_MAIN;
+	game.exec = sche_game_main;
     }
     if (pad.up == 1 || pad.down == 1) {
 	game.select = !game.select;
@@ -346,6 +360,7 @@
     camera_update(game.jiki->body->transfer);
     if (pad.st == 1) {
 	game.state = GAME_FINISH;
+	game.exec = sche_game_main_finish;
     }
 }
 
@@ -362,6 +377,7 @@
     }
     if (pad.st == 1) {
 	game.state = GAME_OPENING;
+	game.exec = sche_game_opening;
     }
 }
 
@@ -369,41 +385,7 @@
 void
 schedule()
 {
-    switch (game.state) {
-    case GAME_INIT:
-	sche_game_init();
-	break;
-    case GAME_OPENING:
-	sche_game_opening();
-	break;
-    case GAME_SELECT_CAR:
-	sche_game_select_car();
-	break;
-    case GAME_SELECT_COURSE:
-	sche_game_select_course();
-	break;
-    case GAME_READY:
-	sche_game_ready();
-	break;
-    case GAME_MAIN_INIT:
-	sche_game_main_init();
-	break;
-    case GAME_MAIN:
-	sche_game_main();
-	break;
-    case GAME_PAUSE:
-	sche_game_main_pause();
-	break;
-    case GAME_GOAL:
-	sche_game_main_goal();
-	break;
-    case GAME_FINISH:
-	sche_game_main_finish();
-	break;
-    default:
-	game.state = GAME_OPENING;
-	break;
-    }
+    game.exec();
     
     wait_sync();
     swap_dbuff();