示例#1
0
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);
}
示例#2
0
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();
	}
}