//改变显示语言 void ChangeLanguage(int nLang) { int i; unsigned char Mode; ByteDataSave(VAL_MENU_LANG,(unsigned char)nLang); if(nLang == CHINESE) { MI_LENS = MI_C_LENS; for(i=0; i<MGS_NUM; i++) gMG[i].pTitle = (char *)gMGTitle[i]; gMG[0].FirstItem = (TMenu*)gMMain; gMG[1].FirstItem = (TMenu*)gM11; gMG[2].FirstItem = (TMenu*)gM12; gMG[3].FirstItem = (TMenu*)gM13; gMG[4].FirstItem = (TMenu*)gM21; } else { MI_LENS = MI_E_LENS; for(i=0; i<MGS_NUM_E; i++) gMG[i].pTitle = (char *)gMGTitle_E[i]; gMG[0].FirstItem = (TMenu*)gMMain_E; gMG[1].FirstItem = (TMenu*)gM11_E; gMG[2].FirstItem = (TMenu*)gM12_E; gMG[3].FirstItem = (TMenu*)gM13_E; gMG[4].FirstItem = (TMenu*)gM21_E; } //清空显示区域 clear_block(0,0,191,63); update_disp_data(0,0,191,63); ByteDataGet(VAL_DSCS_MODE,&Mode); ChangeMenu((int)Mode); //显示主菜单 }
void CheckCheat(UBYTE c ) { static int cheat_counter=0,current_cheat=-1; int i; if(current_cheat>=0) { if(cheats[current_cheat][cheat_counter]==c) { cheat_counter++; if(cheat_counter==strlen(cheats[current_cheat])) { if(!menusound[0]) menusound[0]=LoadSound(menu_soundname[0]); if(menusound[0]) PlayBackSound(menusound[0]); D(bug("Eseguo il cheat: %ld\n"/*-*/,current_cheat)); switch(current_cheat) { case 0: // Gioco l'arcade con l'hurricane force! if(current_menu==MENU_ARCADE_SELECTION) { *teamarray=ARCADE_TEAMS; controllo[ARCADE_TEAMS]=1; turno=0; competition=MENU_CHALLENGE; cb[0].ID=MENU_CHALLENGE; SetupMatches(); ChangeMenu(MENU_CHALLENGE); } break; // Mostra sempre la sequenza finale case 1: final=TRUE; break; case 2: framerate=35; break; case 3: framerate=15; break; case 4: nopari=TRUE; break; case 5: killer=TRUE; break; case 6: warp=TRUE; break; #ifdef CD_VERSION case 7: Outro(); break; #endif } } return; } else {
// 显示当前设置状态 // 中文: // 第一行:单元 xxx // 第二行:会讨模式 // 第三行:上限 xxx // 第四行:(签到/表决 xxx)摄像头 x // 英文: // // // 显示当前状态 // 参数 // nStateBit: bit0~4分别代表第一到第四个状态信息 // nStNum[]: 分别对应各个状态的当前量或对应下标 //void DisplayOneState(TMGrpData *pMGrp, int nSeq) //void DisplayOneState(TMGrpData *pMGrp, int nSeq ,int nLine,int nNum) void DisplayAllState(int nStateBit,int nStNum[]) { unsigned char caItem[16]; //中文时需要8个字符,英文时需要16 int Temp; //TMenu *pMenu;// yasirliang change in 20160603 // int nState; //unsigned char ucLine,ucMode;// yasirliang change in 20160603 unsigned char Len; int i; unsigned char MenuLang; ByteDataGet(VAL_MENU_LANG,&MenuLang); // pMenu = pMGrp->FirstItem+nSeq; // nState = pMGrp->ss.BitState & (1<<nSeq); // // switch(pMenu->Type) // { // case MT_YESNO: // if(gsnCurMGrp == 1) // { // ucLine = 0; // memcpy(caItem,pMenu->Text,strlen(pMenu->Text)); // } // else if(gsnCurMGrp == 4) // { // ucLine = 4; // memcpy(caItem,pMenu->Text,strlen(pMenu->Text)); // } // break; // case MT_ONOFF: // if(gsnCurMGrp == 1) // { // ucLine = 2; // memcpy(caItem,pMenu->Text,strlen(pMenu->Text)); // } // break; // default: // break; // } ChangeMenu(nStNum[0]); // 更新显示数据 if(MenuLang == CHINESE) { gstDispMem.ucX1 = 128; gstDispMem.ucX2 = 191; for(i=0;i<4;i++) { gstDispMem.ucY1 = i*8*2; gstDispMem.ucY2 = (i+1)*8*2-1; switch(nStateBit & (1<<i)) { case STD_MODE: Len=GetDiscussModeText(nStNum[0],caItem,MenuLang); send_hz16x16(gstDispMem.ucX1,i*2*8,caItem, Len/2, 0); update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; case STD_CAM: if(GetCmrTrack()) { disp_ico(gstDispMem.ucX1,i*2*8,16,16,ico_data[ICO_CMR],0); } else { disp_ico(gstDispMem.ucX1,i*2*8,16,16,ico_data[ICO_CMR_LOCK],0); } if(nStNum[1]>0) { Temp=IntToRightStr(caItem,nStNum[1],7); send_zf8x16(gstDispMem.ucX1+8*Temp+8,i*2*8,caItem+Temp+1, 7-Temp, 0); } update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; case STD_LIMIT: disp_ico(gstDispMem.ucX1,i*2*8,16,16,ico_data[ICO_SPKER_LIMIT],0); if((FIFO_MODE==nStNum[0])||(LIMIT_MODE==nStNum[0])) { if(nStNum[2]>0) { Temp=IntToRightStr(caItem,nStNum[2],7); send_zf8x16(gstDispMem.ucX1+8*Temp+8,i*2*8,caItem+Temp+1, 7-Temp, 0); } } else { disp_ico(gstDispMem.ucX1+6*8,i*2*8,16,16,ico_data[ICO_PROHIBIT],0); } update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; case STD_APPLY: disp_ico(gstDispMem.ucX1,i*2*8,16,16,ico_data[ICO_APPLY_LIMIT],0); if((APPLY_MODE==nStNum[0])||(LIMIT_MODE==nStNum[0])) { if(nStNum[3]>0) { Temp=IntToRightStr(caItem,nStNum[3],7); send_zf8x16(gstDispMem.ucX1+8*Temp+8,i*2*8,caItem+Temp+1, 7-Temp, 0); } } else { disp_ico(gstDispMem.ucX1+6*8,i*2*8,16,16,ico_data[ICO_PROHIBIT],0); } update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; } } } else //English { for(i=0;i<4;i++) { memset(caItem,' ',16); gstDispMem.ucX1 = (i%2)*96; gstDispMem.ucX2 = gstDispMem.ucX1+96-1; gstDispMem.ucY1 = (i/2)*10+44; gstDispMem.ucY2 =gstDispMem.ucY1+10-1; switch(nStateBit & (1<<i)) { case STD_MODE: Len=GetDiscussModeText(nStNum[0],caItem,MenuLang); send_zf6x10(gstDispMem.ucX1,gstDispMem.ucY1,(unsigned char *)caItem, Len, 0); update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; case STD_CAM: memcpy(caItem,"Curr Cam:",9); if(nStNum[1]>0) { Temp=IntToRightStr(caItem,nStNum[1],12); // send_zf6x10(gstDispMem.ucX1+8*Temp+8,i*2*8,caItem+Temp+1, 12-Temp, 0); } send_zf6x10(gstDispMem.ucX1,gstDispMem.ucY1,(unsigned char *)caItem, 16, 0); update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; case STD_LIMIT: if((FIFO_MODE==nStNum[0])||(LIMIT_MODE==nStNum[0])) { memcpy(caItem,"MaxSpeakers:",13); if(nStNum[2]>0) { Temp=IntToRightStr(caItem,nStNum[2],12); } send_zf6x10(gstDispMem.ucX1,gstDispMem.ucY1,(unsigned char *)caItem, 16, 0); } else { clear_block(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); } update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; case STD_APPLY: if((APPLY_MODE==nStNum[0])||(LIMIT_MODE==nStNum[0])) { memcpy(caItem,"MaxApplicants:",13); if(nStNum[3]>0) { Temp=IntToRightStr(caItem,nStNum[3],12); } send_zf6x10(gstDispMem.ucX1,gstDispMem.ucY1,(unsigned char *)caItem, 16, 0); } else { clear_block(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); } update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); break; } } } // update_disp_data(gstDispMem.ucX1,gstDispMem.ucY1,gstDispMem.ucX2,gstDispMem.ucY2); }
WORD StartMatch(BYTE team1,BYTE team2) { FILE *f; BOOL /*swapped=FALSE,*/ team_swap=FALSE,control_swap=FALSE,nightgame=FALSE,random_strict=FALSE; WORD risultato=-1,parent_menu; int t; parent_menu=current_menu; // Obtengo el timestamp y lo convierto a string struct timeval start_game; gettimeofday(&start_game, NULL); char timestamp_in_string [30]; sprintf (timestamp_in_string, "%lu", start_game.tv_sec); filename = concat(folder, teamlist[team1].name); filename = concat(filename, "-"); filename = concat(filename, teamlist[team2].name); // temporanea, solo x evitare l'apertura della squadra! if(network_game) controllo[team2]=-1; if(!training&&!network_game) { if(RangeRand(2)) { UBYTE temp; temp=team1; team1=team2; team2=temp; team_swap=TRUE; } if(controllo[team2]>=0 && controllo[team1]==controllo[team2]) { control_swap=TRUE; controllo[team2]--; if(controllo[team2]<0) controllo[team2]=1; } } else if(network_game && network_player->num) { UBYTE temp=team1; D(bug("Player got team 1, swapping teams\n")); team1=team2; team2=temp; team_swap=TRUE; } if( (daytime==0 && RangeRand(2)==0 ) || daytime==2 ) nightgame=TRUE; if(controllo[team1]>=0&&!arcade_teams) { SetTeamSettings(team1, TRUE); ChangeMenu(MENU_TEAM_SETTINGS); while(HandleMenuIDCMP()); } if(controllo[team2]>=0&&!training&&!arcade_teams) { SetTeamSettings(team2, TRUE); ChangeMenu(MENU_TEAM_SETTINGS); while(HandleMenuIDCMP()); } window_opened=FALSE; // write_config(TEMP_DIR "thismatch"/*-*/); if(arcade_teams) { extern BYTE arcade_team[]; arcade_team[0]=team1; arcade_team[1]=team2; } team_a=team1; team_b=team2; /* * Questo codice si occupa di inviare la squadra e ricevere * l'altra, notare la specularita' a seconda del controller * che si e' deciso di utilizzare. */ if(!network_game || network_player->num == 0) { if(network_game && !SendTeam(team1)) return -1; leftteam_dk=teamlist[team1]; } else if(network_game && !ReceiveTeam(&leftteam_dk)) return -1; if(!network_game || network_player->num == 1) { if(network_game && !SendTeam(team2)) return -1; rightteam_dk=teamlist[team2]; } else if(network_game && !ReceiveTeam(&rightteam_dk)) return -1; if(!training && !network_game) { if(!CheckMaglie(team1,team2)) rightteam_dk.jerseys[0]=rightteam_dk.jerseys[1]; } use_offside = FALSE; if(training) { rightteam_dk.jerseys[0]=rightteam_dk.jerseys[1]; } else if (offside) use_offside = TRUE; sprintf(shirt[0],"gfx/play%lc%lc%lc.obj"/*-*/, ( (nightgame||arcade) ? 'n' : 'e'), ( (field==8&&!arcade) ? 's' : 'r'), teamlist[team1].jerseys[0].type+'a'); sprintf(shirt[1],"gfx/play%lc%lc%lc.obj"/*-*/, ( (nightgame||arcade) ? 'n' : 'e'), ( (field==8&&!arcade) ? 's' : 'r'), (training ? teamlist[team2].jerseys[1].type : teamlist[team2].jerseys[0].type)+'a'); if(!field) t=RangeRand(6); else t=field-1; current_field= (arcade ? 0 : t); if(arcade) { if(!final&&!warp) { sprintf(fieldname,"gfx/arcade.gfx"/*-*/); sprintf(palette,"gfx/eat16arcade.col"/*-*/); } else { sprintf(fieldname,"gfx/a_final.gfx"/*-*/); sprintf(palette,"gfx/eat16arcade.col"/*-*/); } }