История изменений
Исправление XMs, (текущая версия) :
Гораздо лучше. Отсюда выносишь рисование драмов в отдельную функцию:
void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
glPushMatrix();
glRotatef(180,0,0,1);
for(int__ i=0;i<countdrums;i++)
{
glPushMatrix();
glRotatef(rotate_[i],1,0,0);
for(int__ j=0;j<counttextureondrums;j++)
{
glBindTexture(GL_TEXTURE_2D,GetTexture(drum[i][j]-4));
EnableTexture(i,j);
}
glPopMatrix();
}
glPopMatrix();
}
void__ Scene::Show(int__ countdrums,float__*rotate_,int__ counttextureondrums,int__**drum,int__ credits,int__ win,int__ totalbet,const char__*line,int__ bet,bool__*lines,int__**ms,bool__*buttons)
{
ShowDrums(countdrums, rotate_, counttextureondrums, drum);
ShowBoth();
ShowButtons(buttons);
ShowReservedWords(credits,win,totalbet,line,bet);
ShowLine(bet,lines,ms);
}
Потом выносишь рисование отдельного драма в функцию:
void__ Scene::ShowSingleDrum(float__ rotate, int__ counttextureondrums, int__ *drum, const int__ row)
{
glPushMatrix();
glRotatef(rotate, 1, 0, 0);
for(int__ i = 0; i < counttextureondrums; i++)
{
glBindTexture(GL_TEXTURE_2D, GetTexture(drum[i] - 4));
EnableTexture(row, i);
}
glPopMatrix();
}
void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
glPushMatrix();
glRotatef(180, 0, 0, 1);
for(int__ i = 0; i < countdrums; i++)
ShowSingleDrum(rotate[i], counttextureondrums, drum[i], i);
glPopMatrix();
}
void__ Scene::Show(
int__ countdrums,
float__*rotate_,
int__ counttextureondrums,
int__**drum,
int__ credits,
int__ win,
int__ totalbet,
const char__*line,
int__ bet,
bool__*lines,
int__**ms,
bool__*buttons)
{
ShowDrums(countdrums, rotate_, counttextureondrums, drum);
ShowBoth();
ShowButtons(buttons);
ShowReservedWords(credits, win, totalbet, line, bet);
ShowLine(bet, lines, ms);
}
Затем начинаешь приводить в порядок типы и имена переменных:
void__ Scene::ShowSingleDrum(
float__ angle,
int__ drumsTextureCount,
int__ drums[RSIZE],
const int__ row)
{
glPushMatrix();
glRotatef(angle, 1, 0, 0);
for (int__ i = 0; i < drumsTextureCount; i++)
{
glBindTexture(GL_TEXTURE_2D, GetTexture(drums[i] - 4));
EnableTexture(row, i);
}
glPopMatrix();
}
void__ Scene::ShowDrums(
int__ drumCount,
float__ rotation[ROTSIZE],
int__ drumsTextureCount,
int__ drums[CSIZE][RSIZE])
{
glPushMatrix();
glRotatef(180, 0, 0, 1);
for (int__ i = 0; i < drumCount; i++)
ShowSingleDrum(rotation[i], drumsTextureCount, drums[i], i);
glPopMatrix();
}
void__ Scene::Show(
int__ drumCount,
float__ rotation[ROTSIZE],
int__ drumsTextureCount,
int__ drums[CSIZE][RSIZE],
int__ credits,
int__ win,
int__ totalbet,
const char__ *line,
int__ bet,
bool__ *lines,
int__ **ms,
bool__ *buttons)
{
ShowDrums(drumCount, rotation, drumsTextureCount, drums);
ShowBoth();
ShowButtons(buttons);
ShowReservedWords(credits, win, totalbet, line, bet);
ShowLine(bet, lines, ms);
}
Ну а теперь уже можно убирать магические числа, группировать аргументы: вынести описание текстур в отдельный класс, завести структуру/класс с описанием барабана и перенести туда всю кухню, связанную с его состоянием, ну и прочее по мелочи. Этим предлагаю заняться самостоятельно. В идеале у тебя функция ShowDrums() должна принимать один аргумент — список объектов «барабан», либо, если это член класса, вообще ничего
Исходная версия XMs, :
Гораздо лучше. Отсюда выносишь рисование драмов в отдельную функцию:
void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
glPushMatrix();
glRotatef(180,0,0,1);
for(int__ i=0;i<countdrums;i++)
{
glPushMatrix();
glRotatef(rotate_[i],1,0,0);
for(int__ j=0;j<counttextureondrums;j++)
{
glBindTexture(GL_TEXTURE_2D,GetTexture(drum[i][j]-4));
EnableTexture(i,j);
}
glPopMatrix();
}
glPopMatrix();
}
void__ Scene::Show(int__ countdrums,float__*rotate_,int__ counttextureondrums,int__**drum,int__ credits,int__ win,int__ totalbet,const char__*line,int__ bet,bool__*lines,int__**ms,bool__*buttons)
{
ShowDrums(countdrums, rotate_, counttextureondrums, drum);
ShowBoth();
ShowButtons(buttons);
ShowReservedWords(credits,win,totalbet,line,bet);
ShowLine(bet,lines,ms);
}
Потом выносишь рисование отдельного драма в функцию:
void__ Scene::ShowSingleDrum(float__ rotate, int__ counttextureondrums, int__ *drum, const int__ row)
{
glPushMatrix();
glRotatef(rotate, 1, 0, 0);
for(int__ i = 0; i < counttextureondrums; i++)
{
glBindTexture(GL_TEXTURE_2D, GetTexture(drum[i] - 4));
EnableTexture(row, i);
}
glPopMatrix();
}
void__ Scene::ShowDrums(int__ countdrums, float__*rotate_, int__ counttextureondrums, int__**drum)
{
glPushMatrix();
glRotatef(180, 0, 0, 1);
for(int__ i = 0; i < countdrums; i++)
ShowSingleDrum(rotate[i], counttextureondrums, drum[i], i);
glPopMatrix();
}
void__ Scene::Show(
int__ countdrums,
float__*rotate_,
int__ counttextureondrums,
int__**drum,
int__ credits,
int__ win,
int__ totalbet,
const char__*line,
int__ bet,
bool__*lines,
int__**ms,
bool__*buttons)
{
ShowDrums(countdrums, rotate_, counttextureondrums, drum);
ShowBoth();
ShowButtons(buttons);
ShowReservedWords(credits, win, totalbet, line, bet);
ShowLine(bet, lines, ms);
}
Затем начинаешь приводить в порядок типы и имена переменных:
void__ Scene::ShowSingleDrum(
float__ angle,
int__ drumsTextureCount,
int__ drums[RSIZE],
const int__ row)
{
glPushMatrix();
glRotatef(angle, 1, 0, 0);
for (int__ i = 0; i < drumsTextureCount; i++)
{
glBindTexture(GL_TEXTURE_2D, GetTexture(drums[i] - 4));
EnableTexture(row, i);
}
glPopMatrix();
}
void__ Scene::ShowDrums(
int__ drumCount,
float__ rotation[ROTSIZE],
int__ drumsTextureCount,
int__ drums[CSIZE][RSIZE])
{
glPushMatrix();
glRotatef(180, 0, 0, 1);
for (int__ i = 0; i < drumCount; i++)
ShowSingleDrum(rotation[i], drumsTextureCount, drums[i], i);
glPopMatrix();
}
void__ Scene::Show(
int__ drumCount,
float__ rotation[ROTSIZE],
int__ drumsTextureCount,
int__ drums[CSIZE][RSIZE],
int__ credits,
int__ win,
int__ totalbet,
const char__ *line,
int__ bet,
bool__ *lines,
int__ **ms,
bool__ *buttons)
{
ShowDrums(drumCount, rotation, drumsTextureCount, drums);
ShowBoth();
ShowButtons(buttons);
ShowReservedWords(credits, win, totalbet, line, bet);
ShowLine(bet, lines, ms);
}
Ну а теперь уже можно убирать магические числа, группировать аргументы: вынести описание текстур в отдельный класс, завести структуру/класс с описанием барабана и перенести туда всю кухню, связанную с его состоянием, ну и прочее по мелочи. Этим предлагаю заняться самостоятельно