diff --git a/source/glest_game/menu/menu_state_mods.cpp b/source/glest_game/menu/menu_state_mods.cpp index 0982939ef..b5b76afc1 100644 --- a/source/glest_game/menu/menu_state_mods.cpp +++ b/source/glest_game/menu/menu_state_mods.cpp @@ -84,6 +84,8 @@ MenuStateMods::MenuStateMods(Program *program, MainMenu *mainMenu) : keyButtonsToRender = listBoxLength / keyButtonsLineHeight; labelWidth = 5; keyButtonsXBase = 0; + modMenuState = mmst_None; + oldMenuState = mmst_None; int installButtonYPos = scrollListsYPos-listBoxLength-20; @@ -121,6 +123,7 @@ MenuStateMods::MenuStateMods(Program *program, MainMenu *mainMenu) : keyTilesetScrollBarTitle1.setFont(CoreData::getInstance().getMenuFontBig()); keyTilesetScrollBarTitle1.setFont3D(CoreData::getInstance().getMenuFontBig3D()); + scenarioInfoXPos = 760; keyScenarioScrollBarTitle1.registerGraphicComponent(containerName,"keyScenarioScrollBarTitle1"); keyScenarioScrollBarTitle1.init(scenarioInfoXPos,scrollListsYPos + 25,labelWidth,20); @@ -143,6 +146,12 @@ MenuStateMods::MenuStateMods(Program *program, MainMenu *mainMenu) : modDescrLabel.setWordWrap(true); modDescrLabel.setText("description is empty"); + pleaseWaitLabel.registerGraphicComponent(containerName,"pleaseWaitLabel"); + pleaseWaitLabel.init(50,installButtonYPos-120,450,20); + pleaseWaitLabel.setText(""); + pleaseWaitLabel.setFont(CoreData::getInstance().getMenuFontBig()); + pleaseWaitLabel.setFont3D(CoreData::getInstance().getMenuFontBig3D()); + buttonReturn.registerGraphicComponent(containerName,"buttonReturn"); buttonReturn.init(800, returnLineY - 30, 125); buttonReturn.setText(lang.get("Return")); @@ -325,6 +334,10 @@ void MenuStateMods::reloadUI() { keyTilesetScrollBarTitle1.setFont(CoreData::getInstance().getMenuFontBig()); keyTilesetScrollBarTitle1.setFont3D(CoreData::getInstance().getMenuFontBig3D()); + pleaseWaitLabel.setText(""); + pleaseWaitLabel.setFont(CoreData::getInstance().getMenuFontBig()); + pleaseWaitLabel.setFont3D(CoreData::getInstance().getMenuFontBig3D()); + keyScenarioScrollBarTitle1.setText(lang.get("ScenarioTitle1")); keyScenarioScrollBarTitle1.setFont(CoreData::getInstance().getMenuFontBig()); keyScenarioScrollBarTitle1.setFont3D(CoreData::getInstance().getMenuFontBig3D()); @@ -387,6 +400,8 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) { std::string mapsMetaData = ""; std::string scenariosMetaData = ""; + modMenuState=mmst_Loading; + if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); if(config.getString("Masterserver","") != "") { @@ -472,6 +487,8 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) { tilesetListRemote.clear(); Tokenize(tilesetsMetaData,tilesetListRemote,"\n"); + modMenuState=mmst_CalculatingCRC; + getTilesetsLocalList(); for(unsigned int i=0; i < tilesetListRemote.size(); i++) { @@ -766,6 +783,8 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) { keyScenarioScrollBar.setVisibleSize(keyButtonsToRender); keyScenarioScrollBar.setVisibleStart(0); + modMenuState=mmst_None; + if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); if(modHttpServerThread != NULL) { @@ -2272,6 +2291,26 @@ void MenuStateMods::render() { if(mainMessageBox.getEnabled()) { renderer.renderMessageBox(&mainMessageBox); } + + if(modMenuState!=mmst_None) { + if(oldMenuState!=modMenuState) + { + Lang &lang= Lang::getInstance(); + if(modMenuState== mmst_Loading){ + pleaseWaitLabel.setText(lang.get("GettingModlistFromMasterserver")); + } + else if(modMenuState== mmst_CalculatingCRC){ + pleaseWaitLabel.setText(lang.get("PleaseWaitCalculatingCRC")); + } + oldMenuState=modMenuState; + } + float anim= GraphicComponent::getAnim(); + if(anim < 0.5f) { + anim = 1.f - anim; + } + Vec4f colorWithAlpha = Vec4f(ORANGE.x,ORANGE.y,ORANGE.z,anim); + renderer.renderLabel(&pleaseWaitLabel,&colorWithAlpha); + } } catch(const std::exception &ex) { char szBuf[1024]=""; diff --git a/source/glest_game/menu/menu_state_mods.h b/source/glest_game/menu/menu_state_mods.h index fec542fc9..c3a89ffdd 100644 --- a/source/glest_game/menu/menu_state_mods.h +++ b/source/glest_game/menu/menu_state_mods.h @@ -45,6 +45,12 @@ enum ModType { mt_Scenario }; +enum ModMenuState { + mmst_None, + mmst_Loading, + mmst_CalculatingCRC +}; + typedef vector UserButtons; typedef vector GraphicLabels; @@ -128,6 +134,10 @@ private: GraphicButton buttonConflict; GraphicButton buttonOnlyLocal; + GraphicLabel pleaseWaitLabel; + ModMenuState modMenuState; + ModMenuState oldMenuState; + int keyButtonsToRender; int keyButtonsYBase; int keyButtonsXBase;