- 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; lastCheckedCRCTechtreeValue = -1;
lastCheckedCRCMapValue = -1; lastCheckedCRCMapValue = -1;
mapPreviewTexture=NULL;
currentFactionLogo = ""; currentFactionLogo = "";
factionTexture=NULL; factionTexture=NULL;
lastMissingMap=""; lastMissingMap="";
@ -477,6 +478,8 @@ MenuStateConnectedGame::~MenuStateConnectedGame() {
ftpClientThread = NULL; ftpClientThread = NULL;
} }
} }
cleanupMapPreviewTexture();
} }
void MenuStateConnectedGame::mouseClick(int x, int y, MouseButton mouseButton){ 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(60+575+80,365,200,225,factionTexture,1);
renderer.renderTextureQuad(800,600,200,150,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); renderer.renderButton(&buttonDisconnect);
@ -951,9 +958,11 @@ void MenuStateConnectedGame::render() {
int mouseY = mainMenu->getMouseY(); int mouseY = mainMenu->getMouseY();
int mouse2dAnim = mainMenu->getMouse2dAnim(); int mouse2dAnim = mainMenu->getMouse2dAnim();
renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim); if(mapPreviewTexture == NULL) {
bool renderAll = (listBoxFogOfWar.getSelectedItemIndex() == 2); renderer.renderMouse2d(mouseX, mouseY, mouse2dAnim);
renderer.renderMapPreview(&mapPreview, renderAll, 10, 350); bool renderAll = (listBoxFogOfWar.getSelectedItemIndex() == 2);
renderer.renderMapPreview(&mapPreview, renderAll, 10, 350, &mapPreviewTexture);
}
} }
renderer.renderChatManager(&chatManager); renderer.renderChatManager(&chatManager);
renderer.renderConsole(&console,showFullConsole,true); 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 // Not painting properly so this is on hold
if(loadMapPreview == true) { if(loadMapPreview == true) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); 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; mapLoaded = true;
} }
else { else {
cleanupMapPreviewTexture();
mapInfo->desc = ITEM_MISSING; mapInfo->desc = ITEM_MISSING;
NetworkManager &networkManager= NetworkManager::getInstance(); NetworkManager &networkManager= NetworkManager::getInstance();
@ -2180,6 +2193,23 @@ int32 MenuStateConnectedGame::getNetworkPlayerStatus() {
return result; 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, void MenuStateConnectedGame::FTPClient_CallbackEvent(string itemName,
FTP_Client_CallbackType type, pair<FTP_Client_ResultType,string> result, void *userdata) { 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__); 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; GraphicLabel labelDataSynchInfo;
MapInfo mapInfo; MapInfo mapInfo;
Texture2D *mapPreviewTexture;
bool needToSetChangedGameSettings; bool needToSetChangedGameSettings;
time_t lastSetChangedGameSettings; time_t lastSetChangedGameSettings;
@ -200,6 +201,7 @@ private:
FTP_Client_CallbackType type, pair<FTP_Client_ResultType,string> result,void *userdata); FTP_Client_CallbackType type, pair<FTP_Client_ResultType,string> result,void *userdata);
int32 getNetworkPlayerStatus(); int32 getNetworkPlayerStatus();
void cleanupMapPreviewTexture();
}; };
}}//end namespace }}//end namespace

View File

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

View File

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

View File

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