Exemple #1
0
void gameboard::LoadLevel() {
	std::ifstream levelfile("levels.txt");
	level++;
	char levelfinder;
	while (1){
		levelfile >> levelfinder;
		if (levelfinder == ':') {
			levelfile >> levelfinder;
			if (levelfinder == level) break;
		}
	}
void loadlevel(string file, brick bricks[] ,int level)
{
  ifstream levelfile(file.data());
  if(!levelfile.is_open())
  {
    cout << " Could not open " << file << endl;
    var.quit=1;
    return;
  }
  string line;
  int levelread=0,brick=0,ch=0;
  var.numlevels=0;
  var.scrollInfo.drop = 0;


  while(!levelfile.eof())
  {
    getline(levelfile,line);
    //Har vi fundet start?
    if(levelread == 0)
    {
      //Nej, er det nu?
      if(line.substr(0,11) == "** Start **")
      {
        levelread++;
      }
    } else if(levelread == 1)
    {
      //Do the level stop now?
      if(line.substr(0,10) == "** Stop **")
      {
        levelread=0;
        var.numlevels++;
        brick=0;
      } else { //Reading data from level

        if(var.numlevels == level)
        {
          if(line[0] == '>')
          {
            if(line.substr(0,6) == "> down")
            {
              var.scrollInfo.dropspeed = atol( line.substr(7,line.length()).data() );
              var.scrollInfo.drop = 1;
            }
          } else {
            while(line[ch] != 0)
            {
              bricks[brick].powerup = line[ch];
              bricks[brick].type = line[ch+1];

              if(bricks[brick].type == 'D')
              {
                char rgb[3][5];

                sprintf(rgb[0], "0x%c%c", line[ch+2], line[ch+3]);
                sprintf(rgb[1], "0x%c%c", line[ch+4], line[ch+5]);
                sprintf(rgb[2], "0x%c%c", line[ch+6], line[ch+7]);

                bricks[brick].tex.prop.glTexColorInfo[0] = 0.003921569*strtol(rgb[0], NULL, 16);
                bricks[brick].tex.prop.glTexColorInfo[1] = 0.003921569*strtol(rgb[1], NULL, 16);
                bricks[brick].tex.prop.glTexColorInfo[2] = 0.003921569*strtol(rgb[2], NULL, 16);

                bricks[brick].tex.prop.glParColorInfo[0] = 0.003921569*strtol(rgb[0], NULL, 16);
                bricks[brick].tex.prop.glParColorInfo[1] = 0.003921569*strtol(rgb[1], NULL, 16);
                bricks[brick].tex.prop.glParColorInfo[2] = 0.003921569*strtol(rgb[2], NULL, 16);

                bricks[brick].tex.prop.glTexColorInfo[3] = 1.0;
                ch +=6;
              }
              //cout << "Level: " << levelnum  << " brick: " << brick << " Powerup: " << line[ch] << " Type: " << line[ch+1]<<"\n";

              brick++;
              ch +=2;
            }
            ch=0;
          } //Not a command
        } //denne level settes op
      }
    }
  }
   cout << "Read " << var.numlevels << " levels from '"<< file <<"'"  << endl;
  levelfile.close();
}