- render battle end screen to texture buffer on first render so it takes less fps to render after the 1st frame
This commit is contained in:
parent
722261e212
commit
f0c636d2ff
|
@ -1387,6 +1387,25 @@ Vec2i computeCenteredPos(const string &text, Font3D *font, int x, int y) {
|
|||
return textPos;
|
||||
}
|
||||
|
||||
void Renderer::renderTextBoundingBox3D(const string &text, Font3D *font, float alpha, int x, int y, int w, int h, bool centered) {
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_CURRENT_BIT);
|
||||
glEnable(GL_BLEND);
|
||||
glColor4fv(Vec4f(1.f, 1.f, 1.f, alpha).ptr());
|
||||
|
||||
Vec2f pos= Vec2f(x, y);
|
||||
//Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||
if(centered == true) {
|
||||
getCentered3DPos(text, font, pos, w, h);
|
||||
}
|
||||
|
||||
textRenderer3D->begin(font);
|
||||
textRenderer3D->render(text, pos.x, pos.y);
|
||||
textRenderer3D->end();
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glPopAttrib();
|
||||
}
|
||||
|
||||
void Renderer::renderText3D(const string &text, Font3D *font, float alpha, int x, int y, bool centered) {
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_CURRENT_BIT);
|
||||
glEnable(GL_BLEND);
|
||||
|
@ -1624,16 +1643,17 @@ void Renderer::renderLabel(GraphicLabel *label,const Vec4f *color) {
|
|||
int w= label->getW();
|
||||
//if(label->getInstanceName() == "modDescrLabel") printf("~~~ lines.size() [%u] i = %d lines[i] [%s] y = %d\n",lines.size(),i,lines[i].c_str(),y);
|
||||
|
||||
if(label->getCentered()){
|
||||
if(label->getCentered()) {
|
||||
textPos= Vec2i(x+w/2, y+h/2);
|
||||
}
|
||||
else{
|
||||
else {
|
||||
textPos= Vec2i(x, y+h/4);
|
||||
}
|
||||
|
||||
if(color != NULL) {
|
||||
if(renderText3DEnabled == true) {
|
||||
renderText3D(lines[i], label->getFont3D(), (*color), textPos.x, textPos.y, label->getCentered());
|
||||
//renderText3D(lines[i], label->getFont3D(), (*color), textPos.x, textPos.y, label->getCentered());
|
||||
renderTextBoundingBox3D(lines[i], label->getFont3D(), (*color), x, y, w, h, label->getCentered());
|
||||
}
|
||||
else {
|
||||
renderText(lines[i], label->getFont(), (*color), textPos.x, textPos.y, label->getCentered());
|
||||
|
@ -1641,7 +1661,8 @@ void Renderer::renderLabel(GraphicLabel *label,const Vec4f *color) {
|
|||
}
|
||||
else {
|
||||
if(renderText3DEnabled == true) {
|
||||
renderText3D(lines[i], label->getFont3D(), GraphicComponent::getFade(), textPos.x, textPos.y, label->getCentered());
|
||||
//renderText3D(lines[i], label->getFont3D(), GraphicComponent::getFade(), textPos.x, textPos.y, label->getCentered());
|
||||
renderTextBoundingBox3D(lines[i], label->getFont3D(), GraphicComponent::getFade(), x, y, w, h, label->getCentered());
|
||||
}
|
||||
else {
|
||||
renderText(lines[i], label->getFont(), GraphicComponent::getFade(), textPos.x, textPos.y, label->getCentered());
|
||||
|
@ -1841,9 +1862,11 @@ void Renderer::renderCheckBox(const GraphicCheckBox *box) {
|
|||
|
||||
//lighting
|
||||
float anim= GraphicComponent::getAnim();
|
||||
if(anim>0.5f) anim= 1.f-anim;
|
||||
if(anim > 0.5f) {
|
||||
anim = 1.f - anim;
|
||||
}
|
||||
|
||||
if(box->getLighted() && box->getEditable()){
|
||||
if(box->getLighted() && box->getEditable()) {
|
||||
const int lightSize= 0;
|
||||
const Vec4f color1= Vec4f(color.x, color.y, color.z, 0.1f+anim*0.5f);
|
||||
const Vec4f color2= Vec4f(color.x, color.y, color.z, 0.3f+anim);
|
||||
|
@ -5489,6 +5512,49 @@ VisibleQuadContainerCache & Renderer::getQuadCache( bool updateOnDirtyFrame,
|
|||
return quadCache;
|
||||
}
|
||||
|
||||
void Renderer::beginRenderToTexture(Texture2D **renderToTexture) {
|
||||
static bool supportFBOs = Texture2DGl().supports_FBO_RBO();
|
||||
|
||||
if(supportFBOs == true && renderToTexture != NULL) {
|
||||
Config &config= Config::getInstance();
|
||||
Texture2D::Filter textureFilter = strToTextureFilter(config.getString("Filter"));
|
||||
int maxAnisotropy = config.getInt("FilterMaxAnisotropy");
|
||||
|
||||
const Metrics &metrics = Metrics::getInstance();
|
||||
|
||||
*renderToTexture = GraphicsInterface::getInstance().getFactory()->newTexture2D();
|
||||
Texture2DGl *texture = static_cast<Texture2DGl *>(*renderToTexture);
|
||||
texture->setMipmap(false);
|
||||
Pixmap2D *pixmapScreenShot = texture->getPixmap();
|
||||
pixmapScreenShot->init(metrics.getScreenW(), metrics.getScreenH(), 4);
|
||||
texture->setForceCompressionDisabled(true);
|
||||
texture->init(textureFilter,maxAnisotropy);
|
||||
texture->setup_FBO_RBO();
|
||||
|
||||
assertGl();
|
||||
|
||||
if(texture->checkFrameBufferStatus() == false) {
|
||||
//printf("******************** WARNING CANNOT Attach to FBO!\n");
|
||||
texture->end();
|
||||
delete texture;
|
||||
*renderToTexture=NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Renderer::endRenderToTexture(Texture2D **renderToTexture) {
|
||||
static bool supportFBOs = Texture2DGl().supports_FBO_RBO();
|
||||
|
||||
if(supportFBOs == true && renderToTexture != NULL) {
|
||||
Texture2DGl *texture = static_cast<Texture2DGl *>(*renderToTexture);
|
||||
if(texture != NULL) {
|
||||
texture->dettachFrameBufferFromTexture();
|
||||
}
|
||||
|
||||
assertGl();
|
||||
}
|
||||
}
|
||||
|
||||
void Renderer::renderMapPreview( const MapPreview *map, bool renderAll,
|
||||
int screenPosX, int screenPosY,
|
||||
Texture2D **renderToTexture) {
|
||||
|
|
|
@ -371,6 +371,10 @@ public:
|
|||
Vec2f getCentered3DPos(const string &text, Font3D *font, Vec2f &pos, int w, int h);
|
||||
void renderTextBoundingBox3D(const string &text, Font3D *font, const Vec4f &color, int x, int y, int w, int h, bool centered);
|
||||
void renderTextBoundingBox3D(const string &text, Font3D *font, const Vec3f &color, int x, int y, int w, int h, bool centered);
|
||||
void renderTextBoundingBox3D(const string &text, Font3D *font, float alpha, int x, int y, int w, int h, bool centered);
|
||||
|
||||
void beginRenderToTexture(Texture2D **renderToTexture);
|
||||
void endRenderToTexture(Texture2D **renderToTexture);
|
||||
|
||||
//components
|
||||
void renderLabel(GraphicLabel *label);
|
||||
|
|
|
@ -42,6 +42,7 @@ BattleEnd::BattleEnd(Program *program, const Stats *stats): ProgramState(program
|
|||
mouseX = 0;
|
||||
mouseY = 0;
|
||||
mouse2d = 0;
|
||||
renderToTexture = NULL;
|
||||
|
||||
const Metrics &metrics= Metrics::getInstance();
|
||||
Lang &lang= Lang::getInstance();
|
||||
|
@ -59,7 +60,14 @@ BattleEnd::BattleEnd(Program *program, const Stats *stats): ProgramState(program
|
|||
|
||||
BattleEnd::~BattleEnd() {
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
SoundRenderer::getInstance().playMusic(CoreData::getInstance().getMenuMusic());
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
delete renderToTexture;
|
||||
renderToTexture = NULL;
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
}
|
||||
|
||||
|
@ -70,291 +78,319 @@ void BattleEnd::update() {
|
|||
mouse2d= (mouse2d+1) % Renderer::maxMouse2dAnim;
|
||||
}
|
||||
|
||||
void BattleEnd::render(){
|
||||
void BattleEnd::render() {
|
||||
Renderer &renderer= Renderer::getInstance();
|
||||
|
||||
TextRenderer2D *textRenderer2D = renderer.getTextRenderer();
|
||||
TextRenderer3D *textRenderer3D = renderer.getTextRenderer3D();
|
||||
TextRenderer *textRenderer = NULL;
|
||||
if(renderToTexture != NULL) {
|
||||
//printf("Rendering from texture!\n");
|
||||
|
||||
if(Renderer::renderText3DEnabled == true) {
|
||||
textRenderer= textRenderer3D;
|
||||
renderer.clearBuffers();
|
||||
renderer.reset2d();
|
||||
renderer.renderBackground(renderToTexture);
|
||||
|
||||
renderer.renderButton(&buttonExit);
|
||||
|
||||
//exit message box
|
||||
if(mainMessageBox.getEnabled()){
|
||||
renderer.renderMessageBox(&mainMessageBox);
|
||||
}
|
||||
|
||||
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
else {
|
||||
textRenderer= textRenderer2D;
|
||||
}
|
||||
//printf("Rendering to texture!\n");
|
||||
|
||||
Lang &lang= Lang::getInstance();
|
||||
renderer.beginRenderToTexture(&renderToTexture);
|
||||
|
||||
renderer.clearBuffers();
|
||||
renderer.reset2d();
|
||||
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
||||
TextRenderer2D *textRenderer2D = renderer.getTextRenderer();
|
||||
TextRenderer3D *textRenderer3D = renderer.getTextRenderer3D();
|
||||
TextRenderer *textRenderer = NULL;
|
||||
|
||||
int winnerIndex = -1;
|
||||
int bestScore = -1;
|
||||
int mostKillsIndex = -1;
|
||||
int bestKills = -1;
|
||||
int mostEnemyKillsIndex = -1;
|
||||
int bestEnemyKills = -1;
|
||||
int leastDeathsIndex = -1;
|
||||
int leastDeaths = -1;
|
||||
int mostUnitsProducedIndex = -1;
|
||||
int bestUnitsProduced = -1;
|
||||
int mostResourcesHarvestedIndex = -1;
|
||||
int bestResourcesHarvested = -1;
|
||||
|
||||
for(int i=0; i<stats.getFactionCount(); ++i) {
|
||||
if(stats.getTeam(i) == GameConstants::maxPlayers -1 + fpt_Observer) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int team= stats.getTeam(i) + 1;
|
||||
int kills= stats.getKills(i);
|
||||
if(kills > bestKills) {
|
||||
bestKills = kills;
|
||||
mostKillsIndex = i;
|
||||
}
|
||||
|
||||
int enemykills= stats.getEnemyKills(i);
|
||||
if(enemykills > bestEnemyKills) {
|
||||
bestEnemyKills = enemykills;
|
||||
mostEnemyKillsIndex = i;
|
||||
}
|
||||
|
||||
int deaths= stats.getDeaths(i);
|
||||
if(deaths < leastDeaths || leastDeaths < 0) {
|
||||
leastDeaths = deaths;
|
||||
leastDeathsIndex = i;
|
||||
}
|
||||
|
||||
int unitsProduced= stats.getUnitsProduced(i);
|
||||
if(unitsProduced > bestUnitsProduced) {
|
||||
bestUnitsProduced = unitsProduced;
|
||||
mostUnitsProducedIndex = i;
|
||||
}
|
||||
|
||||
int resourcesHarvested = stats.getResourcesHarvested(i);
|
||||
if(resourcesHarvested > bestResourcesHarvested) {
|
||||
bestResourcesHarvested = resourcesHarvested;
|
||||
mostResourcesHarvestedIndex = i;
|
||||
}
|
||||
|
||||
int score= enemykills*100 + unitsProduced*50 + resourcesHarvested/10;
|
||||
|
||||
if(score > bestScore) {
|
||||
bestScore = score;
|
||||
winnerIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
bool disableStatsColorCoding = Config::getInstance().getBool("DisableBattleEndColorCoding","false");
|
||||
|
||||
if(Renderer::renderText3DEnabled == true) {
|
||||
textRenderer3D->begin(CoreData::getInstance().getMenuFontNormal3D());
|
||||
}
|
||||
else {
|
||||
textRenderer2D->begin(CoreData::getInstance().getMenuFontNormal());
|
||||
}
|
||||
|
||||
int lm= 20;
|
||||
int bm= 100;
|
||||
|
||||
for(int i = 0; i < stats.getFactionCount(); ++i) {
|
||||
if(stats.getTeam(i) == GameConstants::maxPlayers -1 + fpt_Observer) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int textX= lm+160+i*100;
|
||||
int team= stats.getTeam(i) + 1;
|
||||
int kills= stats.getKills(i);
|
||||
int enemykills= stats.getEnemyKills(i);
|
||||
int deaths= stats.getDeaths(i);
|
||||
int unitsProduced= stats.getUnitsProduced(i);
|
||||
int resourcesHarvested= stats.getResourcesHarvested(i);
|
||||
|
||||
int score= enemykills*100 + unitsProduced*50 + resourcesHarvested/10;
|
||||
string controlString;
|
||||
|
||||
if(stats.getPersonalityType(i) == fpt_Observer) {
|
||||
controlString= GameConstants::OBSERVER_SLOTNAME;
|
||||
if(Renderer::renderText3DEnabled == true) {
|
||||
textRenderer= textRenderer3D;
|
||||
}
|
||||
else {
|
||||
switch(stats.getControl(i)) {
|
||||
case ctCpuEasy:
|
||||
controlString= lang.get("CpuEasy");
|
||||
break;
|
||||
case ctCpu:
|
||||
controlString= lang.get("Cpu");
|
||||
break;
|
||||
case ctCpuUltra:
|
||||
controlString= lang.get("CpuUltra");
|
||||
break;
|
||||
case ctCpuMega:
|
||||
controlString= lang.get("CpuMega");
|
||||
break;
|
||||
case ctNetwork:
|
||||
controlString= lang.get("Network");
|
||||
break;
|
||||
case ctHuman:
|
||||
controlString= lang.get("Human");
|
||||
break;
|
||||
|
||||
case ctNetworkCpuEasy:
|
||||
controlString= lang.get("NetworkCpuEasy");
|
||||
break;
|
||||
case ctNetworkCpu:
|
||||
controlString= lang.get("NetworkCpu");
|
||||
break;
|
||||
case ctNetworkCpuUltra:
|
||||
controlString= lang.get("NetworkCpuUltra");
|
||||
break;
|
||||
case ctNetworkCpuMega:
|
||||
controlString= lang.get("NetworkCpuMega");
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(false);
|
||||
};
|
||||
textRenderer= textRenderer2D;
|
||||
}
|
||||
|
||||
Lang &lang= Lang::getInstance();
|
||||
|
||||
renderer.clearBuffers();
|
||||
renderer.reset2d();
|
||||
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
||||
|
||||
if(stats.getControl(i) != ctHuman && stats.getControl(i) != ctNetwork ) {
|
||||
controlString += " x " + floatToStr(stats.getResourceMultiplier(i),1);
|
||||
}
|
||||
int winnerIndex = -1;
|
||||
int bestScore = -1;
|
||||
int mostKillsIndex = -1;
|
||||
int bestKills = -1;
|
||||
int mostEnemyKillsIndex = -1;
|
||||
int bestEnemyKills = -1;
|
||||
int leastDeathsIndex = -1;
|
||||
int leastDeaths = -1;
|
||||
int mostUnitsProducedIndex = -1;
|
||||
int bestUnitsProduced = -1;
|
||||
int mostResourcesHarvestedIndex = -1;
|
||||
int bestResourcesHarvested = -1;
|
||||
|
||||
if(score == bestScore && stats.getVictory(i)) {
|
||||
if(CoreData::getInstance().getGameWinnerTexture() != NULL) {
|
||||
renderer.renderTextureQuad(textX, bm+380,-1,-1,CoreData::getInstance().getGameWinnerTexture(),0.7f);
|
||||
for(int i=0; i<stats.getFactionCount(); ++i) {
|
||||
if(stats.getTeam(i) == GameConstants::maxPlayers -1 + fpt_Observer) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int team= stats.getTeam(i) + 1;
|
||||
int kills= stats.getKills(i);
|
||||
if(kills > bestKills) {
|
||||
bestKills = kills;
|
||||
mostKillsIndex = i;
|
||||
}
|
||||
|
||||
int enemykills= stats.getEnemyKills(i);
|
||||
if(enemykills > bestEnemyKills) {
|
||||
bestEnemyKills = enemykills;
|
||||
mostEnemyKillsIndex = i;
|
||||
}
|
||||
|
||||
int deaths= stats.getDeaths(i);
|
||||
if(deaths < leastDeaths || leastDeaths < 0) {
|
||||
leastDeaths = deaths;
|
||||
leastDeathsIndex = i;
|
||||
}
|
||||
|
||||
int unitsProduced= stats.getUnitsProduced(i);
|
||||
if(unitsProduced > bestUnitsProduced) {
|
||||
bestUnitsProduced = unitsProduced;
|
||||
mostUnitsProducedIndex = i;
|
||||
}
|
||||
|
||||
int resourcesHarvested = stats.getResourcesHarvested(i);
|
||||
if(resourcesHarvested > bestResourcesHarvested) {
|
||||
bestResourcesHarvested = resourcesHarvested;
|
||||
mostResourcesHarvestedIndex = i;
|
||||
}
|
||||
|
||||
int score= enemykills*100 + unitsProduced*50 + resourcesHarvested/10;
|
||||
|
||||
if(score > bestScore) {
|
||||
bestScore = score;
|
||||
winnerIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
Vec3f color = stats.getPlayerColor(i);
|
||||
if(stats.getPlayerName(i) != "") {
|
||||
textRenderer->render(stats.getPlayerName(i).c_str(), textX, bm+400, false, &color);
|
||||
bool disableStatsColorCoding = Config::getInstance().getBool("DisableBattleEndColorCoding","false");
|
||||
|
||||
if(Renderer::renderText3DEnabled == true) {
|
||||
textRenderer3D->begin(CoreData::getInstance().getMenuFontNormal3D());
|
||||
}
|
||||
else {
|
||||
textRenderer->render((lang.get("Player") + " " + intToStr(i+1)).c_str(), textX, bm+400,false, &color);
|
||||
textRenderer2D->begin(CoreData::getInstance().getMenuFontNormal());
|
||||
}
|
||||
|
||||
Vec3f highliteColor = Vec3f(WHITE.x,WHITE.y,WHITE.z);
|
||||
if(disableStatsColorCoding == false) {
|
||||
highliteColor.x = 0.85;
|
||||
highliteColor.y = 0.8;
|
||||
highliteColor.z = 0.07;
|
||||
}
|
||||
int lm= 20;
|
||||
int bm= 100;
|
||||
|
||||
if(stats.getPersonalityType(i) == fpt_Observer) {
|
||||
textRenderer->render(lang.get("GameOver").c_str(), textX, bm+360);
|
||||
}
|
||||
else {
|
||||
if(stats.getVictory(i)) {
|
||||
textRenderer->render(stats.getVictory(i)? lang.get("Victory").c_str(): lang.get("Defeat").c_str(), textX, bm+360, false, &highliteColor);
|
||||
for(int i = 0; i < stats.getFactionCount(); ++i) {
|
||||
if(stats.getTeam(i) == GameConstants::maxPlayers -1 + fpt_Observer) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int textX= lm+160+i*100;
|
||||
int team= stats.getTeam(i) + 1;
|
||||
int kills= stats.getKills(i);
|
||||
int enemykills= stats.getEnemyKills(i);
|
||||
int deaths= stats.getDeaths(i);
|
||||
int unitsProduced= stats.getUnitsProduced(i);
|
||||
int resourcesHarvested= stats.getResourcesHarvested(i);
|
||||
|
||||
int score= enemykills*100 + unitsProduced*50 + resourcesHarvested/10;
|
||||
string controlString;
|
||||
|
||||
if(stats.getPersonalityType(i) == fpt_Observer) {
|
||||
controlString= GameConstants::OBSERVER_SLOTNAME;
|
||||
}
|
||||
else {
|
||||
textRenderer->render(stats.getVictory(i)? lang.get("Victory").c_str(): lang.get("Defeat").c_str(), textX, bm+360);
|
||||
switch(stats.getControl(i)) {
|
||||
case ctCpuEasy:
|
||||
controlString= lang.get("CpuEasy");
|
||||
break;
|
||||
case ctCpu:
|
||||
controlString= lang.get("Cpu");
|
||||
break;
|
||||
case ctCpuUltra:
|
||||
controlString= lang.get("CpuUltra");
|
||||
break;
|
||||
case ctCpuMega:
|
||||
controlString= lang.get("CpuMega");
|
||||
break;
|
||||
case ctNetwork:
|
||||
controlString= lang.get("Network");
|
||||
break;
|
||||
case ctHuman:
|
||||
controlString= lang.get("Human");
|
||||
break;
|
||||
|
||||
case ctNetworkCpuEasy:
|
||||
controlString= lang.get("NetworkCpuEasy");
|
||||
break;
|
||||
case ctNetworkCpu:
|
||||
controlString= lang.get("NetworkCpu");
|
||||
break;
|
||||
case ctNetworkCpuUltra:
|
||||
controlString= lang.get("NetworkCpuUltra");
|
||||
break;
|
||||
case ctNetworkCpuMega:
|
||||
controlString= lang.get("NetworkCpuMega");
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(false);
|
||||
};
|
||||
}
|
||||
|
||||
if(stats.getControl(i) != ctHuman && stats.getControl(i) != ctNetwork ) {
|
||||
controlString += " x " + floatToStr(stats.getResourceMultiplier(i),1);
|
||||
}
|
||||
|
||||
if(score == bestScore && stats.getVictory(i)) {
|
||||
if(CoreData::getInstance().getGameWinnerTexture() != NULL) {
|
||||
renderer.renderTextureQuad(textX, bm+380,-1,-1,CoreData::getInstance().getGameWinnerTexture(),0.7f);
|
||||
}
|
||||
}
|
||||
|
||||
Vec3f color = stats.getPlayerColor(i);
|
||||
if(stats.getPlayerName(i) != "") {
|
||||
textRenderer->render(stats.getPlayerName(i).c_str(), textX, bm+400, false, &color);
|
||||
}
|
||||
else {
|
||||
textRenderer->render((lang.get("Player") + " " + intToStr(i+1)).c_str(), textX, bm+400,false, &color);
|
||||
}
|
||||
|
||||
Vec3f highliteColor = Vec3f(WHITE.x,WHITE.y,WHITE.z);
|
||||
if(disableStatsColorCoding == false) {
|
||||
highliteColor.x = 0.85;
|
||||
highliteColor.y = 0.8;
|
||||
highliteColor.z = 0.07;
|
||||
}
|
||||
|
||||
if(stats.getPersonalityType(i) == fpt_Observer) {
|
||||
textRenderer->render(lang.get("GameOver").c_str(), textX, bm+360);
|
||||
}
|
||||
else {
|
||||
if(stats.getVictory(i)) {
|
||||
textRenderer->render(stats.getVictory(i)? lang.get("Victory").c_str(): lang.get("Defeat").c_str(), textX, bm+360, false, &highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(stats.getVictory(i)? lang.get("Victory").c_str(): lang.get("Defeat").c_str(), textX, bm+360);
|
||||
}
|
||||
}
|
||||
|
||||
textRenderer->render(controlString, textX, bm+320);
|
||||
textRenderer->render(stats.getFactionTypeName(i), textX, bm+280);
|
||||
textRenderer->render(intToStr(team).c_str(), textX, bm+240);
|
||||
|
||||
if(kills == bestKills) {
|
||||
textRenderer->render(intToStr(kills).c_str(), textX, bm+200, false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(kills).c_str(), textX, bm+200);
|
||||
}
|
||||
if(enemykills == bestEnemyKills) {
|
||||
textRenderer->render(intToStr(enemykills).c_str(), textX, bm+180, false , &highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(enemykills).c_str(), textX, bm+180);
|
||||
}
|
||||
if(deaths == leastDeaths) {
|
||||
textRenderer->render(intToStr(deaths).c_str(), textX, bm+160,false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(deaths).c_str(), textX, bm+160);
|
||||
}
|
||||
if(unitsProduced == bestUnitsProduced) {
|
||||
textRenderer->render(intToStr(unitsProduced).c_str(), textX, bm+120,false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(unitsProduced).c_str(), textX, bm+120);
|
||||
}
|
||||
if(resourcesHarvested == bestResourcesHarvested) {
|
||||
textRenderer->render(intToStr(resourcesHarvested).c_str(), textX, bm+80,false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(resourcesHarvested).c_str(), textX, bm+80);
|
||||
}
|
||||
if(score == bestScore) {
|
||||
textRenderer->render(intToStr(score).c_str(), textX, bm+20,false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(score).c_str(), textX, bm+20);
|
||||
}
|
||||
}
|
||||
|
||||
textRenderer->render(controlString, textX, bm+320);
|
||||
textRenderer->render(stats.getFactionTypeName(i), textX, bm+280);
|
||||
textRenderer->render(intToStr(team).c_str(), textX, bm+240);
|
||||
textRenderer->render(lang.get("Result"), lm, bm+360);
|
||||
textRenderer->render(lang.get("Control"), lm, bm+320);
|
||||
textRenderer->render(lang.get("Faction"), lm, bm+280);
|
||||
textRenderer->render(lang.get("Team"), lm, bm+240);
|
||||
textRenderer->render(lang.get("Kills"), lm, bm+200);
|
||||
textRenderer->render(lang.get("EnemyKills"), lm, bm+180);
|
||||
textRenderer->render(lang.get("Deaths"), lm, bm+160);
|
||||
textRenderer->render(lang.get("UnitsProduced"), lm, bm+120);
|
||||
textRenderer->render(lang.get("ResourcesHarvested"), lm, bm+80);
|
||||
textRenderer->render(lang.get("Score"), lm, bm+20);
|
||||
|
||||
if(kills == bestKills) {
|
||||
textRenderer->render(intToStr(kills).c_str(), textX, bm+200, false,&highliteColor);
|
||||
textRenderer->end();
|
||||
|
||||
if(Renderer::renderText3DEnabled == true) {
|
||||
textRenderer3D->begin(CoreData::getInstance().getMenuFontVeryBig3D());
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(kills).c_str(), textX, bm+200);
|
||||
textRenderer2D->begin(CoreData::getInstance().getMenuFontVeryBig());
|
||||
}
|
||||
if(enemykills == bestEnemyKills) {
|
||||
textRenderer->render(intToStr(enemykills).c_str(), textX, bm+180, false , &highliteColor);
|
||||
|
||||
string header = stats.getDescription() + " - ";
|
||||
|
||||
if(stats.getTeam(stats.getThisFactionIndex()) != GameConstants::maxPlayers -1 + fpt_Observer) {
|
||||
if(stats.getVictory(stats.getThisFactionIndex())){
|
||||
header += lang.get("Victory");
|
||||
}
|
||||
else{
|
||||
header += lang.get("Defeat");
|
||||
}
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(enemykills).c_str(), textX, bm+180);
|
||||
header += "Observer";
|
||||
}
|
||||
if(deaths == leastDeaths) {
|
||||
textRenderer->render(intToStr(deaths).c_str(), textX, bm+160,false,&highliteColor);
|
||||
textRenderer->render(header, lm+250, bm+550);
|
||||
|
||||
//GameConstants::updateFps
|
||||
//string header2 = lang.get("GameDuration") + " " + floatToStr(stats.getWorldTimeElapsed() / 24.0,2);
|
||||
|
||||
string header2 = lang.get("GameDuration") + ": " + intToStr(stats.getFramesToCalculatePlaytime()/GameConstants::updateFps/60);
|
||||
textRenderer->render(header2, lm+250, bm+530);
|
||||
|
||||
header2 = lang.get("GameMaxConcurrentUnitCount") + ": " + intToStr(stats.getMaxConcurrentUnitCount());
|
||||
textRenderer->render(header2, lm+250, bm+510);
|
||||
|
||||
header2 = lang.get("GameTotalEndGameConcurrentUnitCount") + ": " + intToStr(stats.getTotalEndGameConcurrentUnitCount());
|
||||
textRenderer->render(header2, lm+250, bm+490);
|
||||
|
||||
textRenderer->end();
|
||||
|
||||
renderer.renderButton(&buttonExit);
|
||||
|
||||
//exit message box
|
||||
if(mainMessageBox.getEnabled()){
|
||||
renderer.renderMessageBox(&mainMessageBox);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(deaths).c_str(), textX, bm+160);
|
||||
}
|
||||
if(unitsProduced == bestUnitsProduced) {
|
||||
textRenderer->render(intToStr(unitsProduced).c_str(), textX, bm+120,false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(unitsProduced).c_str(), textX, bm+120);
|
||||
}
|
||||
if(resourcesHarvested == bestResourcesHarvested) {
|
||||
textRenderer->render(intToStr(resourcesHarvested).c_str(), textX, bm+80,false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(resourcesHarvested).c_str(), textX, bm+80);
|
||||
}
|
||||
if(score == bestScore) {
|
||||
textRenderer->render(intToStr(score).c_str(), textX, bm+20,false,&highliteColor);
|
||||
}
|
||||
else {
|
||||
textRenderer->render(intToStr(score).c_str(), textX, bm+20);
|
||||
|
||||
if(renderToTexture == NULL) {
|
||||
renderer.renderMouse2d(mouseX, mouseY, mouse2d, 0.f);
|
||||
}
|
||||
|
||||
renderer.endRenderToTexture(&renderToTexture);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
|
||||
textRenderer->render(lang.get("Result"), lm, bm+360);
|
||||
textRenderer->render(lang.get("Control"), lm, bm+320);
|
||||
textRenderer->render(lang.get("Faction"), lm, bm+280);
|
||||
textRenderer->render(lang.get("Team"), lm, bm+240);
|
||||
textRenderer->render(lang.get("Kills"), lm, bm+200);
|
||||
textRenderer->render(lang.get("EnemyKills"), lm, bm+180);
|
||||
textRenderer->render(lang.get("Deaths"), lm, bm+160);
|
||||
textRenderer->render(lang.get("UnitsProduced"), lm, bm+120);
|
||||
textRenderer->render(lang.get("ResourcesHarvested"), lm, bm+80);
|
||||
textRenderer->render(lang.get("Score"), lm, bm+20);
|
||||
|
||||
textRenderer->end();
|
||||
|
||||
if(Renderer::renderText3DEnabled == true) {
|
||||
textRenderer3D->begin(CoreData::getInstance().getMenuFontVeryBig3D());
|
||||
}
|
||||
else {
|
||||
textRenderer2D->begin(CoreData::getInstance().getMenuFontVeryBig());
|
||||
}
|
||||
|
||||
string header = stats.getDescription() + " - ";
|
||||
|
||||
if(stats.getTeam(stats.getThisFactionIndex()) != GameConstants::maxPlayers -1 + fpt_Observer) {
|
||||
if(stats.getVictory(stats.getThisFactionIndex())){
|
||||
header += lang.get("Victory");
|
||||
}
|
||||
else{
|
||||
header += lang.get("Defeat");
|
||||
}
|
||||
}
|
||||
else {
|
||||
header += "Observer";
|
||||
}
|
||||
textRenderer->render(header, lm+250, bm+550);
|
||||
|
||||
//GameConstants::updateFps
|
||||
//string header2 = lang.get("GameDuration") + " " + floatToStr(stats.getWorldTimeElapsed() / 24.0,2);
|
||||
|
||||
string header2 = lang.get("GameDuration") + ": " + intToStr(stats.getFramesToCalculatePlaytime()/GameConstants::updateFps/60);
|
||||
textRenderer->render(header2, lm+250, bm+530);
|
||||
|
||||
header2 = lang.get("GameMaxConcurrentUnitCount") + ": " + intToStr(stats.getMaxConcurrentUnitCount());
|
||||
textRenderer->render(header2, lm+250, bm+510);
|
||||
|
||||
header2 = lang.get("GameTotalEndGameConcurrentUnitCount") + ": " + intToStr(stats.getTotalEndGameConcurrentUnitCount());
|
||||
textRenderer->render(header2, lm+250, bm+490);
|
||||
|
||||
textRenderer->end();
|
||||
|
||||
renderer.renderButton(&buttonExit);
|
||||
|
||||
//exit message box
|
||||
if(mainMessageBox.getEnabled()){
|
||||
renderer.renderMessageBox(&mainMessageBox);
|
||||
}
|
||||
|
||||
renderer.renderMouse2d(mouseX, mouseY, mouse2d, 0.f);
|
||||
|
||||
renderer.swapBuffers();
|
||||
}
|
||||
|
||||
void BattleEnd::keyDown(char key){
|
||||
|
|
|
@ -33,6 +33,7 @@ private:
|
|||
int mouseY;
|
||||
int mouse2d;
|
||||
GraphicMessageBox mainMessageBox;
|
||||
Texture2D *renderToTexture;
|
||||
|
||||
void showMessageBox(const string &text, const string &header, bool toggle);
|
||||
|
||||
|
|
Loading…
Reference in New Issue