Восстановление потерянных поверхностей
Прежде чем расставаться с программой Bumper, мы должны посмотреть, как происходит восстановление потерянных поверхностей. Как обычно, для этого служит функция RestoreSurfaces():
void BumperWin::RestoreSurfaces() { for (int i=0;i<nsprites;i++) sprite[i]->GetSurf()->Restore();
LoadSurface( *sprite[0], "diamond.bmp"); LoadSurface( *sprite[1], "diamond.bmp"); LoadSurface( *sprite[2], "triangle.bmp" ); LoadSurface( *sprite[3], "triangle.bmp" ); LoadSurface( *sprite[4], "rect.bmp" ); LoadSurface( *sprite[5], "rect.bmp" ); LoadSurface( *sprite[6], "oval.bmp" ); LoadSurface( *sprite[7], "oval.bmp" ); text->Restore(); LoadSurface( text, "text.bmp" ); } |
Сначала область памяти каждой поверхности восстанавливается функцией Restore() (если поверхность не была потеряна, вызов Restore() игнорируется). Затем функция LoadSurface() восстанавливает содержимое поверхности. Обратите внимание — здесь, как и в функции DrawScene(), используется оператор LPDIRECTDRAWSURFACE(), позволяющий передавать объекты Sprite вместо указателей на поверхности. Работа функции завершается восстановлением поверхности меню (text).