コード例 #1
0
ファイル: HighScores.cpp プロジェクト: AlexKordic/libRocket
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);
	}
}
コード例 #2
0
ファイル: HighScores.cpp プロジェクト: Clever-Boy/qfusion
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);
					}
				}
			}
		}
	}
}
コード例 #3
0
ファイル: farmine.cpp プロジェクト: Maximus5/evil-programmers
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);
    }
  }
}