void HighScores::LoadScores() { // Open and read the high score file. FILE* scores_file = fopen("scores.txt", "rt"); if (scores_file) { char buffer[1024]; while (fgets(buffer, 1024, scores_file)) { Rocket::Core::StringList score_parts; Rocket::Core::StringUtilities::ExpandString(score_parts, Rocket::Core::String(buffer), '\t'); if (score_parts.size() == 4) { Rocket::Core::Colourb colour; int wave; int score; if (Rocket::Core::TypeConverter< Rocket::Core::String , Rocket::Core::Colourb >::Convert(score_parts[1], colour) && Rocket::Core::TypeConverter< Rocket::Core::String, int >::Convert(score_parts[2], wave) && Rocket::Core::TypeConverter< Rocket::Core::String, int >::Convert(score_parts[3], score)) { SubmitScore(score_parts[0], colour, wave, score); } } } fclose(scores_file); } }
void HighScores::LoadScores() { // Open and read the high score file. Rocket::Core::FileInterface* file_interface = Rocket::Core::GetFileInterface(); Rocket::Core::FileHandle scores_file = file_interface->Open("high_score.txt"); if (scores_file) { file_interface->Seek(scores_file, 0, SEEK_END); size_t scores_length = file_interface->Tell(scores_file); file_interface->Seek(scores_file, 0, SEEK_SET); if (scores_length > 0) { char* buffer = new char[scores_length + 1]; file_interface->Read(buffer, scores_length, scores_file); file_interface->Close(scores_file); buffer[scores_length] = 0; Rocket::Core::StringList score_lines; Rocket::Core::StringUtilities::ExpandString(score_lines, buffer, '\n'); delete[] buffer; for (size_t i = 0; i < score_lines.size(); i++) { Rocket::Core::StringList score_parts; Rocket::Core::StringUtilities::ExpandString(score_parts, score_lines[i], '\t'); if (score_parts.size() == 4 + NUM_ALIEN_TYPES) { Rocket::Core::Colourb colour; int wave; int score; int alien_kills[NUM_ALIEN_TYPES]; if (Rocket::Core::TypeConverter< Rocket::Core::String , Rocket::Core::Colourb >::Convert(score_parts[1], colour) && Rocket::Core::TypeConverter< Rocket::Core::String, int >::Convert(score_parts[2], wave) && Rocket::Core::TypeConverter< Rocket::Core::String, int >::Convert(score_parts[3], score)) { for (int j = 0; j < NUM_ALIEN_TYPES; j++) { if (!Rocket::Core::TypeConverter< Rocket::Core::String, int >::Convert(score_parts[4 + j], alien_kills[j])) { break; } } SubmitScore(score_parts[0], colour, wave, score, alien_kills); } } } } } }
static void CheckStop(HANDLE hDlg,BoardParams *DlgParams,int row,int col) { if(DlgParams->finished!=FINISH_NO) return; FarDialogItem DialogItem; Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,DlgParams->width*col+row,&DialogItem); if(GET_DATA_1(DialogItem)==STATE_OPEN&&GET_DATA_0(DialogItem)==9) { Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mLose))); DlgParams->finished=FINISH_LOSE; DlgParams->end_time=GetTickCount(); Beep((long)Opt.LoseFreq,100); Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,NULL); } else { FarDialogItem DialogItem; bool won=true; for(int i=0;i<DlgParams->height;i++) { for(int j=0;j<DlgParams->width;j++) { int k=i*DlgParams->width+j; Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,k,&DialogItem); if(GET_DATA_1(DialogItem)==STATE_CLOSE&&GET_DATA_0(DialogItem)<9) //FIXME { won=false; break; } else if(GET_DATA_1(DialogItem)==STATE_MARKED&&GET_DATA_0(DialogItem)<9) { won=false; break; } else if(GET_DATA_1(DialogItem)==STATE_OPEN&&GET_DATA_0(DialogItem)==9) { won=false; break; } } if(!won) break; } if(won) { Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mWon))); DlgParams->finished=FINISH_WON; DlgParams->end_time=GetTickCount(); DlgParams->curr_mines=DlgParams->mines; Beep((long)Opt.WonFreq,100); int color; for(int i=0;i<DlgParams->height;i++) for(int j=0;j<DlgParams->width;j++) { int k=i*DlgParams->width+j; Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,k,&DialogItem); if(GET_DATA_1(DialogItem)==STATE_CLOSE) { SET_DATA_1(DialogItem,STATE_MARKED); DialogItem.VBuf[1].Char=GetChar(GET_DATA_0(DialogItem),GET_DATA_1(DialogItem),&color); int bgcolor=GetBG(i,j,GET_DATA_1(DialogItem)); DialogItem.VBuf[0].Attributes.ForegroundColor=DialogItem.VBuf[1].Attributes.ForegroundColor=DialogItem.VBuf[2].Attributes.ForegroundColor=color; DialogItem.VBuf[0].Attributes.BackgroundColor=DialogItem.VBuf[1].Attributes.BackgroundColor=DialogItem.VBuf[2].Attributes.BackgroundColor=bgcolor; Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,k,&DialogItem); } } Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0); SubmitScore(DlgParams); } } }