void MenuPowers::render() { if (!visible) return; SDL_Rect src; SDL_Rect dest; int offset_x = (VIEW_W - 320); int offset_y = (VIEW_H - 416)/2; // background src.x = 0; src.y = 0; dest.x = offset_x; dest.y = offset_y; src.w = dest.w = 320; src.h = dest.h = 416; SDL_BlitSurface(background, &src, screen, &dest); // text overlay // TODO: translate() font->render("Powers", offset_x+160, offset_y+8, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Physical", offset_x+64, offset_y+50, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Physical", offset_x+128, offset_y+50, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Mental", offset_x+192, offset_y+50, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Mental", offset_x+256, offset_y+50, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Offense", offset_x+64, offset_y+66, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Defense", offset_x+128, offset_y+66, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Offense", offset_x+192, offset_y+66, JUSTIFY_CENTER, screen, FONT_WHITE); font->render("Defense", offset_x+256, offset_y+66, JUSTIFY_CENTER, screen, FONT_WHITE); // stats stringstream ss; ss.str(""); ss << stats->physoff; font->render(ss.str(), offset_x+64, offset_y+34, JUSTIFY_CENTER, screen, FONT_WHITE); ss.str(""); ss << stats->physdef; font->render(ss.str(), offset_x+128, offset_y+34, JUSTIFY_CENTER, screen, FONT_WHITE); ss.str(""); ss << stats->mentoff; font->render(ss.str(), offset_x+192, offset_y+34, JUSTIFY_CENTER, screen, FONT_WHITE); ss.str(""); ss << stats->mentdef; font->render(ss.str(), offset_x+256, offset_y+34, JUSTIFY_CENTER, screen, FONT_WHITE); // highlighting displayBuild(stats->physoff, offset_x+48); displayBuild(stats->physdef, offset_x+112); displayBuild(stats->mentoff, offset_x+176); displayBuild(stats->mentdef, offset_x+240); }
void MenuPowers::renderPowers(int tab_num) { Rect disabled_src; disabled_src.x = disabled_src.y = 0; disabled_src.w = disabled_src.h = ICON_SIZE; for (unsigned i=0; i<power_cell.size(); i++) { bool power_in_vector = false; // Continue if slot is not filled with data if (power_cell[i].tab != tab_num) continue; if (!powerIsVisible(power_cell[i].id)) continue; if (std::find(stats->powers_list.begin(), stats->powers_list.end(), power_cell[i].id) != stats->powers_list.end()) power_in_vector = true; if (slots[i]) slots[i]->render(); // highlighting if (power_in_vector || requirementsMet(power_cell[i].id)) { displayBuild(power_cell[i].id); } else { if (overlay_disabled && slots[i]) { overlay_disabled->setClip(disabled_src); overlay_disabled->setDest(slots[i]->pos); render_device->render(overlay_disabled); } } if (slots[i]) slots[i]->renderSelection(); // upgrade buttons if (upgradeButtons[i]) upgradeButtons[i]->render(); } }