- client connected menu now uses same rendering as custom game menu for map preview (resulting in better fps there)

This commit is contained in:
Mark Vejvoda 2011-04-13 01:11:23 +00:00
parent 8c39a1b725
commit 05a61ec619
5 changed files with 41 additions and 5 deletions

View File

@ -73,6 +73,7 @@ MenuStateConnectedGame::MenuStateConnectedGame(Program *program, MainMenu *mainM
lastCheckedCRCTechtreeValue = -1;
lastCheckedCRCMapValue = -1;
mapPreviewTexture=NULL;
currentFactionLogo = "";
factionTexture=NULL;
lastMissingMap="";
@ -477,6 +478,8 @@ MenuStateConnectedGame::~MenuStateConnectedGame() {
ftpClientThread = NULL;
}
}
cleanupMapPreviewTexture();
}
void MenuStateConnectedGame::mouseClick(int x, int y, MouseButton mouseButton){
@ -796,6 +799,10 @@ void MenuStateConnectedGame::render() {
//renderer.renderTextureQuad(60+575+80,365,200,225,factionTexture,1);
renderer.renderTextureQuad(800,600,200,150,factionTexture,1);
}
if(mapPreviewTexture != NULL) {
renderer.renderTextureQuad(5,185,150,150,mapPreviewTexture,1.0f);
//printf("=================> Rendering map preview texture\n");
}
renderer.renderButton(&buttonDisconnect);
@ -951,9 +958,11 @@ void MenuStateConnectedGame::render() {
int mouseY = mainMenu->getMouseY();
int mouse2dAnim = mainMenu->getMouse2dAnim();
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
bool renderAll = (listBoxFogOfWar.getSelectedItemIndex() == 2);
renderer.renderMapPreview(&mapPreview, renderAll, 10, 350);
if(mapPreviewTexture == NULL) {
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
bool renderAll = (listBoxFogOfWar.getSelectedItemIndex() == 2);
renderer.renderMapPreview(&mapPreview, renderAll, 10, 350, &mapPreviewTexture);
}
}
renderer.renderChatManager(&chatManager);
renderer.renderConsole(&console,showFullConsole,true);
@ -2090,12 +2099,16 @@ bool MenuStateConnectedGame::loadMapInfo(string file, MapInfo *mapInfo, bool loa
// Not painting properly so this is on hold
if(loadMapPreview == true) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
mapPreview.loadFromFile(file.c_str());
if(mapPreview.getMapFileLoaded() != file) {
mapPreview.loadFromFile(file.c_str());
cleanupMapPreviewTexture();
}
}
mapLoaded = true;
}
else {
cleanupMapPreviewTexture();
mapInfo->desc = ITEM_MISSING;
NetworkManager &networkManager= NetworkManager::getInstance();
@ -2180,6 +2193,23 @@ int32 MenuStateConnectedGame::getNetworkPlayerStatus() {
return result;
}
void MenuStateConnectedGame::cleanupMapPreviewTexture() {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
//printf("CLEANUP map preview texture\n");
if(mapPreviewTexture != NULL) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
mapPreviewTexture->end();
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
delete mapPreviewTexture;
mapPreviewTexture = NULL;
}
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
}
void MenuStateConnectedGame::FTPClient_CallbackEvent(string itemName,
FTP_Client_CallbackType type, pair<FTP_Client_ResultType,string> result, void *userdata) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);

View File

@ -98,6 +98,7 @@ private:
GraphicLabel labelDataSynchInfo;
MapInfo mapInfo;
Texture2D *mapPreviewTexture;
bool needToSetChangedGameSettings;
time_t lastSetChangedGameSettings;
@ -200,6 +201,7 @@ private:
FTP_Client_CallbackType type, pair<FTP_Client_ResultType,string> result,void *userdata);
int32 getNetworkPlayerStatus();
void cleanupMapPreviewTexture();
};
}}//end namespace

View File

@ -1391,9 +1391,9 @@ void MenuStateCustomGame::render() {
int mouse2dAnim = mainMenu->getMouse2dAnim();
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
bool renderAll = (listBoxFogOfWar.getSelectedItemIndex() == 2);
if(mapPreviewTexture == NULL) {
bool renderAll = (listBoxFogOfWar.getSelectedItemIndex() == 2);
//printf("=================> Rendering map preview into a texture BEFORE (%p)\n", mapPreviewTexture);
renderer.renderMapPreview(&mapPreview, renderAll, 10, 350,&mapPreviewTexture);
//printf("=================> Rendering map preview into a texture AFTER (%p)\n", mapPreviewTexture);

View File

@ -124,6 +124,7 @@ private:
int refAlt;
bool fileLoaded;
string mapFileLoaded;
public:
MapPreview();
@ -186,6 +187,7 @@ public:
void applyNewHeight(float newHeight, int x, int y, int strenght);
bool hasFileLoaded() const {return fileLoaded;}
string getMapFileLoaded() const { return mapFileLoaded; }
};
}}// end namespace

View File

@ -28,6 +28,7 @@ namespace Shared { namespace Map {
// ================== PUBLIC =====================
MapPreview::MapPreview() {
mapFileLoaded = "";
fileLoaded = false;
heightFactor = DEFAULT_MAP_CELL_HEIGHT_FACTOR;
waterLevel = DEFAULT_MAP_WATER_DEPTH;
@ -741,6 +742,7 @@ void MapPreview::loadFromFile(const string &path) {
fclose(f1);
fileLoaded = true;
mapFileLoaded = path;
}
else {
throw runtime_error("error opening map file: " + path);