+void CapsuleChangeMenu::RenderClasses(SDL_Surface *screen, const Vector<int> &offset) const {
+ Vector<int> cursor(offset);
+
+ int numClasses = 0;
+ for (int i = 0; i < parent->Game().state->NumCapsules(); ++i) {
+ if (numClasses < parent->Game().state->capsules[i].NumClasses()) {
+ numClasses = parent->Game().state->capsules[i].NumClasses();
+ }
+ }
+
+ parent->Res().capsuleSelectTopLeft->Draw(screen, cursor);
+ cursor.Y() += parent->Res().capsuleSelectTopLeft->Height();
+ Vector<int> target(
+ cursor.X() + parent->Res().capsuleSelectTopLeft->Width(),
+ cursor.Y() + numClasses * parent->Res().capsuleSelectLadder->Height());
+ parent->Res().capsuleSelectLeftRepeat->Draw(screen, cursor, target);
+ cursor.Y() = target.Y();
+ parent->Res().capsuleSelectBottomLeft->Draw(screen, cursor);
+ cursor.X() += parent->Res().capsuleSelectTopLeft->Width();
+
+ for (int i = 0; i < parent->Game().state->NumCapsules(); ++i) {
+ cursor.Y() = offset.Y();
+ parent->Res().capsuleSelectTopRepeat->Draw(screen, cursor);
+ cursor.Y() += parent->Res().capsuleSelectTopRepeat->Height();
+ for (int j = numClasses - 1; j >= 0; --j) {
+ parent->Res().capsuleSelectLadder->Draw(
+ screen, cursor,
+ j < parent->Game().state->capsules[i].MaxClass(), j);
+ if (i == parent->Game().state->capsule
+ && parent->Game().state->capsules[i].CurrentClass() == j) {
+ parent->Res().capsuleSelectCursor->Draw(screen, cursor);
+ }
+ cursor.Y() += parent->Res().capsuleSelectLadder->Height();
+ }
+ parent->Res().capsuleSelectBottomRepeat->Draw(screen, cursor);
+ if (parent->Game().state->capsules[i].AlignmentSprite()) {
+ parent->Game().state->capsules[i].AlignmentSprite()->Draw(screen, cursor);
+ }
+ cursor.X() += parent->Res().capsuleSelectLadder->Width();
+ }
+
+ cursor.Y() = offset.Y();
+ parent->Res().capsuleSelectTopRight->Draw(screen, cursor);
+ cursor.Y() += parent->Res().capsuleSelectTopRight->Height();
+ target = Vector<int>(
+ cursor.X() + parent->Res().capsuleSelectTopRight->Width(),
+ cursor.Y() + numClasses * parent->Res().capsuleSelectLadder->Height());
+ parent->Res().capsuleSelectRightRepeat->Draw(screen, cursor, target);
+ cursor.Y() = target.Y();
+ parent->Res().capsuleSelectBottomRight->Draw(screen, cursor);
+}
+