diff --git a/client/lobby/SelectionTab.cpp b/client/lobby/SelectionTab.cpp index e0cc108a0..f2522258e 100644 --- a/client/lobby/SelectionTab.cpp +++ b/client/lobby/SelectionTab.cpp @@ -807,7 +807,7 @@ SelectionTab::CMapInfoTooltipBox::CMapInfoTooltipBox(std::string text, ResourceI : CWindowObject(BORDERED | RCLICK_POPUP) { drawPlayerElements = tabType == ESelectionScreen::newGame; - renderImage = tabType == ESelectionScreen::newGame; + renderImage = tabType == ESelectionScreen::newGame && settings["lobby"]["mapPreview"].Bool(); OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE; @@ -815,13 +815,16 @@ SelectionTab::CMapInfoTooltipBox::CMapInfoTooltipBox(std::string text, ResourceI if(renderImage) mapLayerImages = createMinimaps(ResourceID(resource.getName(), EResType::MAP), IMAGE_SIZE); - pos = Rect(0, 0, 2*BORDER + IMAGE_SIZE, 2000); + pos = Rect(0, 0, 2 * BORDER + IMAGE_SIZE, 2000); if(renderImage && mapLayerImages.size() > 1) pos.w += IMAGE_SIZE + BORDER; - label = std::make_shared(text, Rect(BORDER, BORDER, pos.w-2*BORDER, 350), 0, FONT_MEDIUM, ETextAlignment::CENTER, Colors::WHITE); - if(!label->slider) - label->resize(label->label->textSize); + auto drawLabel = [&]() { + label = std::make_shared(text, Rect(BORDER, BORDER, pos.w - 2 * BORDER, 350), 0, FONT_MEDIUM, ETextAlignment::CENTER, Colors::WHITE); + if(!label->slider) + label->resize(label->label->textSize); + }; + drawLabel(); pos.h = BORDER + label->label->textSize.y + BORDER; if(renderImage) @@ -829,16 +832,13 @@ SelectionTab::CMapInfoTooltipBox::CMapInfoTooltipBox(std::string text, ResourceI backgroundTexture = std::make_shared("DIBOXBCK", pos); updateShadow(); - // TODO: hacky redraw - label = std::make_shared(text, Rect(BORDER, BORDER, pos.w-2*BORDER, 350), 0, FONT_MEDIUM, ETextAlignment::CENTER, Colors::WHITE); - if(!label->slider) - label->resize(label->label->textSize); + drawLabel(); if(renderImage) { - image1 = std::make_shared(mapLayerImages[0], Point(BORDER, label->label->textSize.y + 2*BORDER)); + image1 = std::make_shared(mapLayerImages[0], Point(BORDER, label->label->textSize.y + 2 * BORDER)); if(mapLayerImages.size()>1) - image2 = std::make_shared(mapLayerImages[1], Point(BORDER + IMAGE_SIZE + BORDER, label->label->textSize.y + 2*BORDER)); + image2 = std::make_shared(mapLayerImages[1], Point(BORDER + IMAGE_SIZE + BORDER, label->label->textSize.y + 2 * BORDER)); } center(GH.getCursorPosition()); //center on mouse diff --git a/config/schemas/settings.json b/config/schemas/settings.json index 20699af25..eb2ca4d0d 100644 --- a/config/schemas/settings.json +++ b/config/schemas/settings.json @@ -3,7 +3,7 @@ { "type" : "object", "$schema" : "http://json-schema.org/draft-04/schema", - "required" : [ "general", "video", "adventure", "battle", "input", "server", "logging", "launcher", "gameTweaks" ], + "required" : [ "general", "video", "adventure", "battle", "input", "server", "logging", "launcher", "lobby", "gameTweaks" ], "definitions" : { "logLevelEnum" : { "type" : "string", @@ -526,6 +526,18 @@ } } }, + "lobby" : { + "type" : "object", + "additionalProperties" : false, + "default" : {}, + "required" : [ "mapPreview" ], + "properties" : { + "mapPreview" : { + "type" : "boolean", + "default" : true + } + } + }, "gameTweaks" : { "type" : "object", "default" : {},