//extern void flash_write_time_volitage(u8 addr_index,uint16_t volitage,u8 year_H,u8 year_L,u8 month_H,u8 month_L,u8 day_H,u8 day_L,u8 hh_H,u8 hh_L,u8 mm_H,u8 mm_L,u8 ss_H,u8 ss_L ) ; void operating_12864_system (void) //按键操作和界面切换 { u16 u16_WaitForOscSource,startv=0; if(rcc_flag==0) { if(k1==key_ok) { k1=key_none; rcc_flag=1; DebugMenu(1); } if(k1==key_cancel) { k1=key_none; flag_i=1; voltage=0; Alarm_flag_1=0; BUZZER_off; Fault_led_off; Relay_off; // buzzer_tick_flag=1; } } if(rcc_flag==1) { // Delay_ms(1000); // flag_system=1; if(flag_debug==0) { flag_debug=1; } switch (k1) { case key_down: k1=key_none; flag_debug++; if(flag_debug>4) { flag_debug=1; } DebugMenu(flag_debug); // Delay_ms(20); break; case key_up: k1=key_none; flag_debug--; if(flag_debug==0) { flag_debug=4; } DebugMenu(flag_debug); // Delay_ms(20); break; case key_cancel: rcc_flag=0; flag_debug=1; // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: k1=key_none; if(flag_debug==1) { rcc_flag=21; flag_debug=1; SecondSet(flag_debug); } if(flag_debug==2) { rcc_flag=22; flag_debug=1; SecondSystemDebug(flag_debug); } if(flag_debug==3) { rcc_flag=23; fault_num=flash_num<0?0:flash_num; // if(flash_num<0) // { // fault_num=0; // } // else{ // fault_num=flash_num; // } flash_read_time_volitage(start_addr+fault_num*14); Second_Fault_record(frecord.voltage,fault_num+1,frecord.year_H,frecord.year_L,frecord.month_H,frecord.month_L,frecord.day_H,frecord.day_L,frecord.hh_H,frecord.hh_L,frecord.mm_H,frecord.mm_L,frecord.ss_H,frecord.ss_L); // flash_read_time_volitage(start_addr+14*fault_num); // Second_Fault_record(frecord.voltage,fault_num+1,frecord.year_H,frecord.year_L,frecord.month_H,frecord.month_L,frecord.day_H,frecord.day_L,frecord.hh_H,frecord.hh_L,frecord.mm_H,frecord.mm_L,frecord.ss_H,frecord.ss_L); } if(flag_debug==4) { rcc_flag=24; Second_clear_fault_records(); } break; } } if(rcc_flag==21) { //flag_debug=1; switch (k1) { case key_down: k1=key_none; flag_debug++; if(flag_debug>2) { flag_debug=1; } SecondSet(flag_debug); // Delay_ms(20); break; case key_up: k1=key_none; flag_debug--; if(flag_debug==0) { flag_debug=2; } SecondSet(flag_debug); // Delay_ms(20); break; case key_cancel: flag_debug=0; rcc_flag=1; DebugMenu(1); // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: k1=key_none; if(flag_debug==1) { rcc_flag=31; ThirdSystemSetting(1); } if(flag_debug==2) { flag_debug=1; rcc_flag=32; ThirdBaudRateSetting(flag_debug,Device_Add,Band_Rate,Data_bits,Stop_bits); } break; } } if(rcc_flag==22) { //flag_debug=1; switch (k1) { case key_down: k1=key_none; flag_debug++; if(flag_debug>4) { flag_debug=1; } SecondSystemDebug(flag_debug); // Delay_ms(20); break; case key_up: k1=key_none; flag_debug--; if(flag_debug==0) { flag_debug=4; } SecondSystemDebug(flag_debug); // Delay_ms(20); break; case key_cancel: flag_debug=1; rcc_flag=1; // Delay_ms(20); k1=key_none; DebugMenu(1); //DebugMenu(flag_debug); break; case key_ok: k1=key_none; if(flag_debug==1) { flag_debug=1; rcc_flag=33; ThirdChange(); } if(flag_debug==2) { flag_debug=1; rcc_flag=34; ThirdCorrect(); } if(flag_debug==3) { flag_debug=1; rcc_flag=35; ThirdCheck(); } if(flag_debug==4) { flag_debug=1; rcc_flag=36; ThirdReguration(1,1,1,1); } break; } } if(rcc_flag==23) { //flag_debug=1; switch (k1) { case key_down: fault_num++; if(fault_num>=50) { fault_num=0; } flash_read_time_volitage(start_addr+14*fault_num); Second_Fault_record(frecord.voltage,fault_num+1,frecord.year_H,frecord.year_L,frecord.month_H,frecord.month_L,frecord.day_H,frecord.day_L,frecord.hh_H,frecord.hh_L,frecord.mm_H,frecord.mm_L,frecord.ss_H,frecord.ss_L); // fault_num=flash_num; k1=key_none; break; case key_up: fault_num--; if(fault_num<0) { fault_num=49; } flash_read_time_volitage(start_addr+14*fault_num); Second_Fault_record(frecord.voltage,fault_num+1,frecord.year_H,frecord.year_L,frecord.month_H,frecord.month_L,frecord.day_H,frecord.day_L,frecord.hh_H,frecord.hh_L,frecord.mm_H,frecord.mm_L,frecord.ss_H,frecord.ss_L); // fault_num=flash_num; k1=key_none; break; case key_cancel: rcc_flag=1; // Delay_ms(20); flag_debug=1; k1=key_none; DebugMenu(1); //DebugMenu(flag_debug); break; case key_ok: k1=key_none; // rcc_flag=2; break; } } if(rcc_flag==24) { //flag_debug=1; switch (k1) { case key_cancel: rcc_flag=1; flag_debug=1; // Delay_ms(20); k1=key_none; DebugMenu(1); //DebugMenu(flag_debug); break; case key_ok: k1=key_none; // fi++; rcc_flag=2; //flash_cache[300]=0; // for(fi=0;fi<255;fi++) // { // flash_cache[fi]=0; // } // Delay_ms(100); // flash_write_time_volitage(0,0,0,0,0,0,0,0,0,0,0,0,0,0 ) ; // Delay_ms(500); // flash_write(0xffff,flash_num_addr); break; } } if(rcc_flag==31) { //flag_debug=1; switch (k1) { case key_down: k1=key_none; flag_debug++; if(flag_debug>2) { flag_debug=1; } ThirdSystemSetting(flag_debug); // Delay_ms(20); break; case key_up: k1=key_none; flag_debug--; if(flag_debug==0) { flag_debug=2; } ThirdSystemSetting(flag_debug); // Delay_ms(20); break; case key_cancel: flag_debug=1; rcc_flag=21; SecondSet(1); // Delay_ms(20); k1=key_none; timer.sec=ss_H*10+ss_L; timer.min=mm_H*10+mm_L; timer.hour=hh_H*10+hh_L; timer.w_date=day_H*10+day_L; timer.w_month=month_H*10+month_L; timer.w_year=(year_H*10+year_L)+2000; RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); /* Allow access to BKP Domain */ PWR_BackupAccessCmd(ENABLE); /* Reset Backup Domain */ BKP_DeInit(); /* Enable LSE */ RCC_LSEConfig(RCC_LSE_ON); for(u16_WaitForOscSource=0;u16_WaitForOscSource<5000;u16_WaitForOscSource++) { } /* Wait till LSE is ready */ while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); /* Select LSE as RTC Clock Source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); /* Enable RTC Clock */ RCC_RTCCLKCmd(ENABLE); /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Enable the RTC Second */ RTC_ITConfig(RTC_IT_SEC, ENABLE); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Set RTC prescaler: set RTC period to 1sec */ RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); BKP_WriteBackupRegister(BKP_DR1, 0x5A5A); RTC_Set(timer.w_year,timer.w_month,timer.w_date,timer.hour,timer.min,timer.sec); break; case key_ok: k1=key_none; if(flag_debug==1) { flag_debug=1; rcc_flag=41; FourStart(start_v); } if(flag_debug==2) { flag_debug=1; rcc_flag=42; FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); } break; } } if(rcc_flag==32) { //flag_debug=1; switch (k1) { case key_down: k1=key_none; flag_debug++; if(flag_debug>4) { flag_debug=1; } ThirdBaudRateSetting(flag_debug,Device_Add,Band_Rate,Data_bits,Stop_bits); // Delay_ms(20); break; case key_up: k1=key_none; flag_debug--; if(flag_debug==0) { flag_debug=4; } ThirdBaudRateSetting(flag_debug,Device_Add,Band_Rate,Data_bits,Stop_bits); // Delay_ms(20); break; case key_cancel: flag_debug=1; rcc_flag=21; SecondSet(1); // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: k1=key_none; if(flag_debug==1) { // flag_debug=1; rcc_flag=43; } else if(flag_debug==2) { // flag_debug=1; rcc_flag=44; } else if(flag_debug==3) { // flag_debug=1; rcc_flag=45; } else if(flag_debug==4) { // flag_debug=1; rcc_flag=46; } break; } } if(rcc_flag==33) { //flag_debug=1; switch (k1) { case key_cancel: flag_debug=1; rcc_flag=22; SecondSystemDebug(1); // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: break; } } if(rcc_flag==34) { //flag_debug=1; switch (k1) { case key_down: break; case key_up: // Delay_ms(20); break; case key_cancel: flag_debug=1; rcc_flag=22; SecondSystemDebug(1); // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: break; } } if(rcc_flag==35) { //flag_debug=1; switch (k1) { case key_down: break; case key_up: // Delay_ms(20); break; case key_cancel: flag_debug=1; rcc_flag=22; SecondSystemDebug(1); // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: break; } } if(rcc_flag==36) { //flag_debug=1; switch (k1) { case key_down: k1=key_none; flag_debug++; if(flag_debug>3) { flag_debug=1; } ThirdReguration(flag_debug,flag_Led,flag_Relay,flag_Buzzer); break; case key_up: k1=key_none; flag_debug--; if(flag_debug==0) { flag_debug=3; } ThirdReguration(flag_debug,flag_Led,flag_Relay,flag_Buzzer); break; case key_cancel: flag_debug=1; rcc_flag=22; SecondSystemDebug(1); // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: k1=key_none; if(flag_debug==1) { ++flag_Led; if(flag_Led<1) { flag_Led=2; } else if(flag_Led>2) { flag_Led=1; } ThirdReguration(1,flag_Led,flag_Relay,flag_Buzzer); } if(flag_debug==2) { ++flag_Relay; if(flag_Relay<1) { flag_Relay=2; } else if(flag_Relay>2) { flag_Relay=1; } ThirdReguration(2,flag_Led,flag_Relay,flag_Buzzer); } if(flag_debug==3) { ++flag_Buzzer; if(flag_Buzzer<1) { flag_Buzzer=2; } else if(flag_Buzzer>2) { flag_Buzzer=1; } ThirdReguration(3,flag_Led,flag_Relay,flag_Buzzer); } break; } } if(rcc_flag==41) { //flag_debug=1; switch (k1) { case key_down: if(start_v<=0) { start_v=0; } start_v-=5; FourStart(start_v); // Delay_ms(20); k1=key_none; break; case key_up: start_v+=5; FourStart(start_v); // Delay_ms(20); k1=key_none; break; case key_cancel: startv=start_v; flag_debug=1; rcc_flag=31; ThirdSystemSetting(1); k1=key_none; // flash_write_start_v(start_v); flash_write(startv,start_v_addr); break; case key_ok: break; } } if(rcc_flag==42) { //flag_debug=1; switch (k1) { case key_down: break; case key_up: break; case key_cancel: flag_debug=1; rcc_flag=31; ThirdSystemSetting(1); // Delay_ms(20); k1=key_none; //DebugMenu(flag_debug); break; case key_ok: ++flagTime; if(flagTime > 12) { flagTime = 1; } k1=key_none; break; } } /*设置时间*/ if(flagTime==1) { switch (k1) { case key_down: --ss_L; if(ss_L<0) { ss_L = 9; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++ss_L; if(ss_L>9) { ss_L = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==2) { switch (k1) { case key_down: --ss_H; if(ss_H<0) { ss_H = 6; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++ss_H; if(ss_H>6) { ss_H = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==3) { switch (k1) { case key_down: --mm_L; if(mm_L<0) { mm_L = 9; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++mm_L; if(mm_L>9) { mm_L = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==4) { switch (k1) { case key_down: --mm_H; if(mm_H<0) { mm_H = 6; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++mm_H; if(mm_H>6) { mm_H = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==5) { switch (k1) { case key_down: --hh_L; if(hh_L<0) { hh_L = 9; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++hh_L; if(hh_L>9) { hh_L = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==6) { switch (k1) { case key_down: --hh_H; if(hh_H<0) { hh_H = 2; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++hh_H; if(hh_H>2) { hh_H = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==7) { switch (k1) { case key_down: --day_L; if(day_L<0) { day_L = 9; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++day_L; if(day_L>9) { day_L = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==8) { switch (k1) { case key_down: --day_H; if(day_H<0) { day_H = 3; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++day_H; if(day_H>3) { day_H = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==9) { switch (k1) { case key_down: --month_L; if(month_L<0) { month_L = 9; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++month_L; if(month_L>9) { month_L = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==10) { switch (k1) { case key_down: --month_H; if(month_H<0) { month_H = 1; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++month_H; if(month_H>1) { month_H = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==11) { switch (k1) { case key_down: --year_L; if(year_L<0) { year_L = 9; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++year_L; if(year_L>9) { year_L = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } else if(flagTime==12) { switch (k1) { case key_down: --year_H; if(year_H<0) { year_H = 9; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; case key_up: ++year_H; if(year_H>9) { year_H = 0; } FourTime(year_H, year_L, month_H, month_L, day_H, day_L, hh_H, hh_L, mm_H, mm_L, ss_H, ss_L); k1=key_none; break; } } if(rcc_flag==43) //设置装置号 { switch (k1) { case key_down: --Device_Add; if(Device_Add<1) { Device_Add = 255; } ThirdBaudRateSetting(1,Device_Add,Band_Rate,Data_bits,Stop_bits); k1=key_none; break; case key_up: ++Device_Add; if(Device_Add>255) { Device_Add = 1; } ThirdBaudRateSetting(1,Device_Add,Band_Rate,Data_bits,Stop_bits); k1=key_none; break; case key_cancel: //设置装置后返回 flag_debug=1; rcc_flag=21; SecondSet(1); // flash_write_device_b(Device_Add); flash_write(Device_Add,device_id_addr); k1=key_none; break; } } if(rcc_flag==44) //设置波特率 { switch (k1) { case key_down: k1=key_none; --flag_debug; if(flag_debug<1) { flag_debug = 4; } switch(flag_debug) { case 1: Band_Rate=4800; break; case 2: Band_Rate=9600; break; case 3: Band_Rate=19200; break; case 4: Band_Rate=115200; break; } ThirdBaudRateSetting(2,Device_Add,Band_Rate,Data_bits,Stop_bits); break; case key_up: k1=key_none; k1=key_none; ++flag_debug; if(flag_debug>4) { flag_debug = 0; } switch(flag_debug) { case 1: Band_Rate=4800; break; case 2: Band_Rate=9600; break; case 3: Band_Rate=19200; break; case 4: Band_Rate=115200; break; } ThirdBaudRateSetting(2,Device_Add,Band_Rate,Data_bits,Stop_bits); break; case key_cancel: //设置装置后返回 flag_debug=1; rcc_flag=21; SecondSet(1); k1=key_none; uart_init(Band_Rate); RS485_Init(Band_Rate); //波特率设置 485 // flash_write_Band_Rate(Band_Rate); flash_write(Band_Rate,Band_Rate_addr); break; } } if(rcc_flag==45) //设置数据位 { switch (k1) { case key_down: --Data_bits; if(Data_bits<5) { Data_bits = 8; } ThirdBaudRateSetting(3,Device_Add,Band_Rate,Data_bits,Stop_bits); k1=key_none; break; case key_up: ++Data_bits; if(Data_bits>9) { Data_bits = 5; } ThirdBaudRateSetting(3,Device_Add,Band_Rate,Data_bits,Stop_bits); k1=key_none; break; case key_cancel: //设置停止位 flag_debug=1; rcc_flag=21; SecondSet(1); // flash_write_device_b(Device_Add); // flash_write_databits(Data_bits); flash_write(Data_bits,databits_addr); k1=key_none; break; } } if(rcc_flag==46) //设置停止位 { switch (k1) { case key_down: --Stop_bits; if(Stop_bits<1) { Stop_bits = 9; } ThirdBaudRateSetting(4,Device_Add,Band_Rate,Data_bits,Stop_bits); k1=key_none; break; case key_up: ++Stop_bits; if(Stop_bits>10) { Stop_bits = 1; } ThirdBaudRateSetting(4,Device_Add,Band_Rate,Data_bits,Stop_bits); k1=key_none; break; case key_cancel: //设置停止位 flag_debug=1; rcc_flag=21; SecondSet(1); // flash_write_stopbits(Stop_bits); flash_write(Stop_bits,stopbits_addr); k1=key_none; break; } } }
void CGameGunHound::Loop() { //----------------------------------------- //ハウンドメイン //----------------------------------------- if( m_bResetOK ) { if( m_bResetPlease ) { m_bResetPlease = gxFalse; m_sEndSeq = -1; ChangeGameSeq( enMainSeqGameEnd ); } else if( CDashBoard::GetInstance()->IsMenuBar() ) { m_bPauseFlag = gxTrue; } else { m_bPauseFlag = gxFalse; } } switch( m_GameSeq ){ case enMainSeqInit: //----------------------------------------- //ゲーム初期化 //----------------------------------------- m_bBriefingRoot = gxTrue; m_bResetOK = gxFalse; viiDbg::log("ハウンドシーケンス:enMainSeqInit"); //SaveDataInit(); //GameConfigLoad(); m_bPauseFlag = gxFalse; ChangeGameSeq( enMainSeqStart ); break; case enMainSeqStart: //----------------------------------------- //スコア初期化 //----------------------------------------- m_bResetOK = gxFalse; viiDbg::log("ハウンドシーケンス:enMainSeqStart"); #ifdef _VII_DEBUG_ CDashBoard::GetInstance()->SetMenuDisable(gxFalse); CDashBoard::GetInstance()->SetLogo(gxFalse); CDashBoard::GetInstance()->SetWallPaper(gxFalse); ChangeGameSeq( enMainSeqRestart ); #else // ChangeGameSeq( enMainSeqGameOpeningDemo ); CDashBoard::GetInstance()->SetMenuDisable(gxFalse); CDashBoard::GetInstance()->SetLogo(gxFalse); CDashBoard::GetInstance()->SetWallPaper(gxFalse); ChangeGameSeq( enMainSeqGameTitle ); #endif break; case enMainSeqGameTitle: //----------------------------------------- //タイトルのシーケンス //----------------------------------------- UploadTexture(); m_bResetOK = gxFalse; ChangeGameSeq( enMainSeqRestart ); break; case enMainSeqRestart: //----------------------------------------- //リスタートのポイント //----------------------------------------- m_bResetOK = gxFalse; ResetClass(); #ifdef GX_DEBUG ChangeGameSeq( enMainSeqDebugMenu ); #else ChangeGameSeq( enMainSeqGameMainMenu ); #endif break; case enMainSeqGameMainMenu: //----------------------------------------- //メインメニューのシーケンス //----------------------------------------- m_bResetOK = gxTrue; CDashBoard::GetInstance()->SetMenuDisable(gxTrue); switch( MainMenu() ){ case enMenuSeqBack: case enMenuSeqNext: g_StGameInfo.Reset(); if( m_sMainMenuSelected == CMainMenu::enMainMenuOpening ) { //オープニングへ ChangeGameSeq( enMainSeqGameOpeningDemo ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuDebug ) { //デバッグモードへ g_StGameInfo.m_sGameMode = StGameInfo::enGameModeNormal; ChangeGameSeq( enMainSeqDebugMenu ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuEnding ) { //エンディング CDashBoard::GetInstance()->SetIcon( enIconNone ); ChangeGameSeq( enMainSeqGameEndingDemo ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuStart ) { //ゲームスタートへ CDashBoard::GetInstance()->SetIcon( enIconNone ); g_StGameInfo.m_sGameMode = StGameInfo::enGameModeNormal; g_StGameInfo.m_bMessage = gxTrue; ChangeGameSeq( enMainSeqGameBriefing ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuTutorial ) { //チュートリアルスタートへ g_StGameInfo.m_bMusic = gxTrue; g_StGameInfo.m_bMessage = gxTrue; g_StGameInfo.m_bReplay = gxFalse; CDashBoard::GetInstance()->SetIcon( enIconNone ); g_StGameInfo.m_sGameMode = StGameInfo::enGameModeNormal; g_StGameInfo.PlayStage = enScenarioTutorial; StageSet(); g_StGameInfo.PlayArea = m_sSelectedStage; ChangeGameSeq( enMainSeqGameInit ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuMission ) { //ゲームスタートへ CDashBoard::GetInstance()->SetIcon( enIconNone ); g_StGameInfo.m_sGameMode = StGameInfo::enGameModeMission; g_StGameInfo.PlayStage = m_sSelectedStage;//enScenarioTutorial; g_StGameInfo.PlayArea = 0; StageSet(); ChangeGameSeq( enMainSeqGameInit ); } else if( m_sMainMenuSelected == CMainMenu::enMainMenuExit ) { //ゲーム終了 ExitGame(); } break; default: break; } break; case enMainSeqGameOpeningDemo: //----------------------------------------- //オープニングのシーケンス //----------------------------------------- m_bResetOK = gxFalse; if( AdvertiseDemo() ) { ChangeGameSeq( enMainSeqGameTitle ); } break; case enMainSeqDebugMenu: //----------------------------------------- //デバッグメニュー //----------------------------------------- m_bResetOK = gxTrue; switch( DebugMenu() ) { case enMenuSeqBack: ChangeGameSeq( enMainSeqGameMainMenu ); break; case enMenuSeqNext: // g_StGameInfo.Reset(); g_StGameInfo.m_bMessage = gxTrue; g_StGameInfo.m_bMusic = gxTrue; g_StGameInfo.m_bReplay = gxFalse; ChangeGameSeq( enMainSeqGameInit ); break; } break; case enMainSeqGameBriefing: g_StGameInfo.ContinueArea = 0; CCockpit::GetInstance()->SetHidden(); CDashBoard::GetInstance()->SetMenuDisable(gxFalse); m_bResetOK = gxTrue; if( m_pSetUp == NULL ) { //セットアップ画面を作る m_pSetUp = new CSetUp( -1 );//g_StGameInfo.PlayStage ); } if( BriefingMain() ) { //ステージ決定 StageSet(); m_bBriefingRoot = gxTrue; ChangeGameSeq( enMainSeqGameSetUp ); } CockpitControl(); break; case enMainSeqGameSetUp: CCockpit::GetInstance()->SetHidden(); m_bResetOK = gxTrue; if( m_pSetUp->IsEnd() ) { ChangeGameSeq( enMainSeqGameBefore ); } CockpitControl(); break; case enMainSeqGameBefore: //----------------------------------------- //ゲーム初期化 //----------------------------------------- CCockpit::GetInstance()->ReNew(); CCockpit::GetInstance()->SetHidden(); CockpitControl(); m_bResetOK = gxTrue; if( !m_pSetUp->IsWait() ) { //CCockpit::GetInstance()->Reset(); viiMus::StopBGM( enSoundBgm1 ); ChangeGameSeq( enMainSeqGameInit ); } break; case enMainSeqGameInit: //----------------------------------------- //ゲーム初期化 //----------------------------------------- CCockpit::GetInstance()->Destroy(); CCockpit::GetInstance()->SetHidden(); m_bResetOK = gxFalse; if( pGame ) delete pGame; pGame = new CGameManager(); GameInit(); pGame->init(); CockpitControl(); viiMus::Destroy(); ChangeGameSeq( enMainSeqGameMain ); break; case enMainSeqGameMain: //----------------------------------------- //ゲームメイン //----------------------------------------- CDashBoard::GetInstance()->SetMenuDisable(gxFalse); m_bResetOK = gxTrue; if( m_pSetUp ) { m_bResetOK = gxFalse; m_pSetUp->Draw(); if( m_pSetUp->GoDestroy() ) { //---------------------------------------------- //セットアップ終了 //---------------------------------------------- CCockpit::GetInstance()->Reset(); delete m_pSetUp; m_pSetUp = NULL; } } if( !m_bGameStart && pGame->IsGameStart() ) { m_bGameStart = gxTrue; } GameMain(); if( pGame->IsStageClear() ) { m_sEndSeq = pGame->GetNextSeq(); //m_sEndSeq = 1; //次へ ChangeGameSeq( enMainSeqGameEnd ); } else if( CCockpit::GetInstance()->IsGameOver() ) { m_sEndSeq = enClearSeqContinue; ChangeGameSeq( enMainSeqGameEnd ); } break; case enMainSeqGameEnd: //----------------------------------------- //ゲーム終了 //----------------------------------------- m_bResetOK = gxFalse; GameEnd(); if( pGame ) { delete pGame; pGame = NULL; } if( !m_bBriefingRoot ) { m_sEndSeq = 0; } CCockpit::GetInstance()->ReNew(); if( m_sMainMenuSelected == CMainMenu::enMainMenuMission || m_sMainMenuSelected == CMainMenu::enMainMenuTutorial) { //--------------------------------------- //ストーリーモード以外の時 //--------------------------------------- //スコアを加算する g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); //ミッションモードだった ChangeGameSeq( enMainSeqGameMainMenu ); //チュートリアルモードだった ChangeGameSeq( enMainSeqGameMainMenu ); } else if( m_sEndSeq == enClearSeqStageClear ) { #ifdef _TRIAL_VERSION_ //タイトルに戻る g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); ChangeGameSeq( enMainSeqRestart ); #else //ステージクリアだった g_StGameInfo.SetStageClear( g_StGameInfo.PlayStage ); switch( g_StGameInfo.PlayStage ){ case enScenarioJungle: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission2 ); break; case enScenarioRiver: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission3 ); break; case enScenarioMountain: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission4 ); break; case enScenarioBase: g_CHoundSaveData.SetHiddenOpen( enHiddenItemMission5 ); break; } ChangeGameSeq( enMainSeqGameBriefing ); #endif } else if( m_sEndSeq == enClearSeqContinue ) { //ステージ失敗だった(コンティニュールート) ChangeGameSeq( enMainSeqGameContinue ); } else if( m_sEndSeq == enClearSeqGameOver ) { //ゲームオーバーだった ChangeGameSeq( enMainSeqGameContinue ); } else if( m_sEndSeq == enClearSeqEnding ) { //エンディングだった g_StGameInfo.SetStageClear( g_StGameInfo.PlayStage ); g_CHoundSaveData.UpdateHighScore( MISSION_ALLOVER_BONUS ); Uint32 uScore = 0; //ゲームスコアを加算 m_stEndingBonus.uAllScore = g_StGameInfo.m_uAllScore; //オールオーバーボーナスをコンティニュー回数で割る m_stEndingBonus.uContinueBonus = MISSION_ALLOVER_BONUS/(g_StGameInfo.m_sContinueCnt+1); m_stEndingBonus.uContinueBonus = m_stEndingBonus.uContinueBonus/10; m_stEndingBonus.uContinueBonus = m_stEndingBonus.uContinueBonus*10; //Trueエンディングの場合場合ボーナス m_stEndingBonus.uTrueEndBonus = 0; if( g_StGameInfo.m_bTrueEnd ) { m_stEndingBonus.uTrueEndBonus = ENDING_TRUEVERSION_BONUS; g_CHoundSaveData.SetHiddenOpen( enHiddenItemViewEnding ); } //ノーコンティニューだった場合2倍ボーナス if( g_StGameInfo.m_sContinueCnt == 0 ) { m_stEndingBonus.uNoContinueBonus = m_stEndingBonus.uAllScore + m_stEndingBonus.uContinueBonus + m_stEndingBonus.uTrueEndBonus; } uScore = m_stEndingBonus.uAllScore; uScore += m_stEndingBonus.uContinueBonus; uScore += m_stEndingBonus.uTrueEndBonus; uScore += m_stEndingBonus.uNoContinueBonus; m_stEndingBonus.uTotalScore = uScore; //スコアを加算する g_CHoundSaveData.UpdateHighScore( uScore ); ChangeGameSeq( enMainSeqGameEndingDemo ); } else { //リセットだった /* if( m_bGameStart && m_sMainMenuSelected == CMainMenu::enMainMenuStart ) { m_sResetCount = 120; ChangeGameSeq( enMainSeqResetInGame ); } else { ChangeGameSeq( enMainSeqRestart ); } */ ChangeGameSeq( enMainSeqRestart ); } break; case enMainSeqGameContinue: //----------------------------------------- //コンティニュー //----------------------------------------- m_bResetOK = gxTrue; m_bGameStart = gxFalse; switch( ContinueScreen() ){ case enMenuSeqNext: { //タイトルに戻る g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); ChangeGameSeq( enMainSeqRestart ); } break; case enMenuSeqBack: { //コンティニューする // Sint32 sMem = g_StGameInfo.PlayArea; // StageSet(); //スコアをリセットする /* g_StGameInfo.m_uAllScore = (g_StGameInfo.m_uAllScore/2); g_StGameInfo.m_uAllScore -= g_StGameInfo.m_uAllScore%10;; */ //スコア更新 g_CHoundSaveData.UpdateHighScore( g_StGameInfo.m_uAllScore ); g_StGameInfo.m_uAllScore = 0;//(g_StGameInfo.m_uAllScore/2); g_StGameInfo.m_uStageScore = g_StGameInfo.m_uAllScore; if( g_StGameInfo.m_sContinueCnt < 99 ) g_StGameInfo.m_sContinueCnt ++; g_StGameInfo.ContinueArea = g_StGameInfo.PlayArea; ChangeGameSeq( enMainSeqGameInit ); } break; default: break; } break; case enMainSeqGameEndingDemo: //----------------------------------------- //ゲーム終了 //----------------------------------------- m_bResetOK = gxTrue; m_bGameStart = gxFalse; CCockpit::GetInstance()->SetHidden(); CDashBoard::GetInstance()->SetMenuDisable(gxFalse); if( EndingDemo() ) { ChangeGameSeq( enMainSeqRestart ); } break; case enMainSeqResetInGame: if( m_sResetCount > 0 ) { m_sResetCount --; } else { g_StGameInfo.m_uAllScore = 0; g_StGameInfo.m_uStageScore = 0; g_StGameInfo.ContinueArea = g_StGameInfo.PlayArea; CCockpit::GetInstance()->ReNew(); ChangeGameSeq( enMainSeqGameInit ); } break; default: break; } viiMus::GetInstance()->Action(); CFadeManager::GetInstance()->action(); }