Mercurial > hg > old > magoroku_racing.bad
view schedule.c @ 19:8ab79a86aa73
*** empty log message ***
author | gongo |
---|---|
date | Sat, 04 Nov 2006 09:13:06 +0000 |
parents | 6910aeb52843 |
children | b1ba4dad7f6e |
line wrap: on
line source
/* * $Id$ */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "libps2.h" #include "ps2util.h" #include "col.h" #include "field.h" #include "car.h" #include "gSprite.h" #include "gFont.h" #include "game.h" #include "controler.h" #include "camera.h" #include "mytype.h" #include "light.h" #include "title_scene.h" #include "game_time.h" #define MAXCAR 3 // 選択可能機体 #define MAXFIELD 2 // 選択可能コース #define DEMO_NUM 2.0 // デモの数 #define MAXRAP 3 // ラップ数 #define SP_SEL_CAR 50 #define SP_SEL_COURSE 80 /* timer */ static int start_time,time_count; static int RUNNIG=0; char raptime[10]; extern int car_check(); /* --- controler.c --- */ extern SGO_PAD pad; /* --- car.c --- */ extern CarPtr car_init(); extern void car_accelerate(CarPtr, int); extern void car_swerve(CarPtr, int); extern void car_update(CarPtr); /* --- carNode.c */ extern void carNode_append(CarPtr); extern void carNode_draw(); extern void carNode_destroy(); /* --- field.c --- */ extern void field_init(); extern void field_update(CarPtr); extern void field_destroy(); /* --- mytype.c --- */ extern void wait_init(); extern Bool wait(double); extern void time_RaceStart(); extern double time_RaceTime(); /* --- demo.c --- */ extern void demo_openFp(int); extern void demo_closeFp(); /* --- linda.c --- */ extern void linda_jikiInfo_init(); static int ranking = 0; static LIGHT l; static int i=0; void set_sche(void *func) { game.exec = func; } static int get_random() { srand((unsigned)time(NULL)); return (int)(rand()*DEMO_NUM/(1.0+RAND_MAX)); } static void graphic_init() { gSprite_Init(); // グラフィック関連の初期化 gFont_Init(); // フォント関連の初期化 } static void play_init() { game.jiki = car_init(game.car_id); carNode_append(game.jiki); field_init(); } void sche_game_init(); static void sche_game_opening(); static void sche_game_select_car(); static void sche_game_select_course(); static void sche_game_ready(); static void sche_game_main_init(); static void sche_game_main(); static void sche_game_main_pause(); static void sche_game_main_goal(); static void sche_game_main_finish(); static void game_env_init() { game.car_id = 1; game.course_id = 1; game.camera_type = 0; game.select = 0; game.rap = 1; game.jiki = NULL; ranking = 0; wait_init(); linda_jikiInfo_init(); } void sche_game_init() { game_env_init(); graphic_init(); camera_init(); set_sche(sche_game_opening); } void sche_game_opening() { static int blink_count = 0; if (game.play_id==1){ if (blink_count < 35) { gFont_SetString("PUSH START !!", 170, 380); } blink_count = (blink_count > 70) ? 0 : blink_count+1; } if (pad.st == 1) { set_sche(sche_game_select_car); } /* if (game.play_id == 1) { if (title_scene() < 0){ } } else if (game.play_id == 2) { if (i==0){ title_init_call(); i=1; } } */ } void sche_game_select_car() { if (i==1){ title_finish_call(); i=2; } gSprite_PutSpriteEx(SP_SEL_CAR+game.car_id, 190, 200, 1.5, 1.5); gSprite_PutSprite(24, 460, 300); gSprite_PutSprite(25, 120, 300); gFont_SetString("SELECT CAR", 180, 50); if (pad.right == 1) { game.car_id = (game.car_id > MAXCAR-1) ? 1 : game.car_id + 1; } if (pad.left == 1) { game.car_id = (game.car_id < 2) ? MAXCAR : game.car_id - 1; } if (pad.circle == 1) { set_sche(sche_game_select_course); } } void sche_game_select_course() { gSprite_PutSpriteEx(SP_SEL_COURSE+game.course_id, 190, 200, 1.7, 1.8); gSprite_PutSprite(24, 460, 300); gSprite_PutSprite(25, 120, 300); gFont_SetString("SELECT COURSE", 150, 50); if (pad.right == 1) { game.course_id = (game.course_id > MAXFIELD-1) ? 1 : game.course_id + 1; } if (pad.left == 1) { game.course_id = (game.course_id < 2) ? MAXFIELD : game.course_id - 1; } if (pad.circle == 1) { set_sche(sche_game_ready); } } void sche_game_ready() { static int blink_count = 0; gSprite_PutSprite(27+game.play_id,265,10); gSprite_PutSpriteEx(SP_SEL_CAR+game.car_id, 50, 120, 1.5, 1.5); gSprite_PutSpriteEx(SP_SEL_COURSE+game.course_id, 340, 120, 1.7, 1.8); /* 点滅 */ if (blink_count < 35) { gFont_SetString("GAME START !!", 170, 380); } blink_count = (blink_count > 70) ? 0 : blink_count + 1; if (pad.st > 0) { set_sche(sche_game_main_init); } if (pad.cross > 0) { set_sche(sche_game_select_car); } } void sche_game_main_init() { if (!game.jiki) play_init(); RUNNIG=0; set_sche(sche_game_main); } void sche_game_main() { /** begin: dispaly RAP TIME **/ if(RUNNIG==0){ start_time = game_time_get_msec(); RUNNIG=1; } time_count = game_time_get_msec() - start_time; game_time_set_raptime(raptime,time_count); gFont_SetString("TIME",300,20); gFont_SetString(raptime,400,20); /** end: dispaly RAP TIME **/ light_init(&l); set_light(&l); car_update(game.jiki); field_update(game.jiki); camera_update(game.jiki->body->transfer); carNode_draw(); gFont_SetStringInt(game.rap, 50, 100); /* スピードメーター */ gSprite_DefSprite(23, 1, 1,(int)(106.0*(game.jiki->speed/game.jiki->speed_max)), 34); gSprite_PutSprite(23, 400, 400); /* km/h */ gSprite_PutSprite(26, 470, 350); /* Rap */ gSprite_PutSprite(27, 80, 100); if (game.rap > MAXRAP) { wait_init(); ranking = 1; set_sche(sche_game_main_goal); } gFont_SetStringInt((int)(100.0*game.jiki->speed), 380, 350); if ((pad.right > 0) && ((game.jiki->speed != 0) || (pad.circle > 0))) { car_swerve(game.jiki, 1); } if ((pad.left > 0) && ((game.jiki->speed != 0) || (pad.circle > 0))) { car_swerve(game.jiki, -1); } if (pad.circle > 0) { car_accelerate(game.jiki, 1); } if (pad.cross > 0) { car_accelerate(game.jiki, -1); } if (pad.r1 == 1) { game.camera_type = !game.camera_type; } if (pad.st == 1) { set_sche(sche_game_main_pause); } } void sche_game_main_pause() { field_update(game.jiki); carNode_draw(); if (game.play_id == 1) { /* 選択マーク */ gSprite_PutSprite(17, 100, 190+game.select*100); gFont_SetString("BACK TO GAME", 200, 200); gFont_SetString("GO TO TITLE", 200, 300); } else { gFont_SetString("Pause ...", 200, 200); } if (pad.circle == 1) { if (game.select == 0) { set_sche(sche_game_main); } else { set_sche(sche_game_main_finish); } } if (pad.st == 1) { set_sche(sche_game_main); } if (pad.up == 1 || pad.down == 1) { game.select = !game.select; } } void sche_game_main_goal() { /** dispaly TOTAL TIME **/ game_time_set_raptime(raptime,time_count); gFont_SetString("TOTAL TIME",150,20); gFont_SetString(raptime,400,20); gFont_SetString("GOAL !!", 220, 150); #ifdef LINDA if (ranking == 1) gFont_SetString("You WIN!!", 200, 250); else gFont_SetString("You Lose...", 200, 250); #endif car_update(game.jiki); field_update(game.jiki); carNode_draw(); camera_update(game.jiki->body->transfer); if (pad.st == 1) { set_sche(sche_game_main_finish); } } void sche_game_main_finish() { gFont_SetString("GAME OVER ...", 200, 200); if (game.jiki) { field_destroy(); carNode_destroy(); demo_closeFp(); game_env_init(); } if (pad.st == 1) { set_sche(sche_game_opening); } } void schedule() { game.exec(); wait_sync(); swap_dbuff(); sjoy_poll(); ps2util_sprite_Draw(); gSprite_Draw_Reset(); gFont_Draw_Reset(); }