mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-24 08:32:34 +02:00
Merge pull request #4070 from IvanSavenko/sonar_fixes
[1.6] Fixes for new issues reported by Sonar Cloud
This commit is contained in:
commit
0d99adc15a
@ -603,7 +603,7 @@ void AIGateway::heroGotLevel(const CGHeroInstance * hero, PrimarySkill pskill, s
|
||||
|
||||
if(hPtr.validAndSet())
|
||||
{
|
||||
std::unique_lock<std::mutex> lockGuard(nullkiller->aiStateMutex);
|
||||
std::unique_lock lockGuard(nullkiller->aiStateMutex);
|
||||
|
||||
nullkiller->heroManager->update();
|
||||
|
||||
@ -683,7 +683,7 @@ void AIGateway::showBlockingDialog(const std::string & text, const std::vector<C
|
||||
sel = components.size();
|
||||
|
||||
{
|
||||
std::unique_lock<std::mutex> mxLock(nullkiller->aiStateMutex);
|
||||
std::unique_lock mxLock(nullkiller->aiStateMutex);
|
||||
|
||||
// TODO: Find better way to understand it is Chest of Treasures
|
||||
if(hero.validAndSet()
|
||||
@ -804,7 +804,7 @@ void AIGateway::makeTurn()
|
||||
auto day = cb->getDate(Date::DAY);
|
||||
logAi->info("Player %d (%s) starting turn, day %d", playerID, playerID.toString(), day);
|
||||
|
||||
boost::shared_lock<boost::shared_mutex> gsLock(CGameState::mutex);
|
||||
boost::shared_lock gsLock(CGameState::mutex);
|
||||
setThreadName("AIGateway::makeTurn");
|
||||
|
||||
if(nullkiller->isOpenMap())
|
||||
@ -864,7 +864,7 @@ void AIGateway::performObjectInteraction(const CGObjectInstance * obj, HeroPtr h
|
||||
{
|
||||
makePossibleUpgrades(h.get());
|
||||
|
||||
std::unique_lock<std::mutex> lockGuard(nullkiller->aiStateMutex);
|
||||
std::unique_lock lockGuard(nullkiller->aiStateMutex);
|
||||
|
||||
if(!h->visitedTown->garrisonHero || !nullkiller->isHeroLocked(h->visitedTown->garrisonHero))
|
||||
moveCreaturesToHero(h->visitedTown);
|
||||
@ -1529,7 +1529,7 @@ void AIGateway::requestActionASAP(std::function<void()> whatToDo)
|
||||
{
|
||||
setThreadName("AIGateway::requestActionASAP::whatToDo");
|
||||
SET_GLOBAL_STATE(this);
|
||||
boost::shared_lock<boost::shared_mutex> gsLock(CGameState::mutex);
|
||||
boost::shared_lock gsLock(CGameState::mutex);
|
||||
whatToDo();
|
||||
});
|
||||
|
||||
|
@ -216,7 +216,7 @@ void Nullkiller::decompose(Goals::TGoalVec & result, Goals::TSubgoal behavior, i
|
||||
|
||||
void Nullkiller::resetAiState()
|
||||
{
|
||||
std::unique_lock<std::mutex> lockGuard(aiStateMutex);
|
||||
std::unique_lock lockGuard(aiStateMutex);
|
||||
|
||||
lockedResources = TResources();
|
||||
scanDepth = ScanDepth::MAIN_FULL;
|
||||
@ -236,7 +236,7 @@ void Nullkiller::updateAiState(int pass, bool fast)
|
||||
{
|
||||
boost::this_thread::interruption_point();
|
||||
|
||||
std::unique_lock<std::mutex> lockGuard(aiStateMutex);
|
||||
std::unique_lock lockGuard(aiStateMutex);
|
||||
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
|
||||
|
@ -217,7 +217,7 @@ ExchangeResult HeroExchangeMap::tryExchangeNoLock(const ChainActor * other)
|
||||
ExchangeResult result;
|
||||
|
||||
{
|
||||
boost::shared_lock<boost::shared_mutex> lock(sync, boost::try_to_lock);
|
||||
boost::shared_lock lock(sync, boost::try_to_lock);
|
||||
|
||||
if(!lock.owns_lock())
|
||||
{
|
||||
@ -237,7 +237,7 @@ ExchangeResult HeroExchangeMap::tryExchangeNoLock(const ChainActor * other)
|
||||
}
|
||||
|
||||
{
|
||||
boost::unique_lock<boost::shared_mutex> uniqueLock(sync, boost::try_to_lock);
|
||||
boost::unique_lock uniqueLock(sync, boost::try_to_lock);
|
||||
|
||||
if(!uniqueLock.owns_lock())
|
||||
{
|
||||
|
@ -773,7 +773,7 @@ void VCAI::makeTurn()
|
||||
auto day = cb->getDate(Date::DAY);
|
||||
logAi->info("Player %d (%s) starting turn, day %d", playerID, playerID.toString(), day);
|
||||
|
||||
boost::shared_lock<boost::shared_mutex> gsLock(CGameState::mutex);
|
||||
boost::shared_lock gsLock(CGameState::mutex);
|
||||
setThreadName("VCAI::makeTurn");
|
||||
|
||||
switch(cb->getDate(Date::DAY_OF_WEEK))
|
||||
@ -2479,7 +2479,7 @@ void VCAI::requestActionASAP(std::function<void()> whatToDo)
|
||||
{
|
||||
setThreadName("VCAI::requestActionASAP::whatToDo");
|
||||
SET_GLOBAL_STATE(this);
|
||||
boost::shared_lock<boost::shared_mutex> gsLock(CGameState::mutex);
|
||||
boost::shared_lock gsLock(CGameState::mutex);
|
||||
whatToDo();
|
||||
});
|
||||
|
||||
|
@ -1481,7 +1481,7 @@ void CPlayerInterface::playerBlocked(int reason, bool start)
|
||||
void CPlayerInterface::update()
|
||||
{
|
||||
// Make sure that gamestate won't change when GUI objects may obtain its parts on event processing or drawing request
|
||||
boost::shared_lock<boost::shared_mutex> gsLock(CGameState::mutex);
|
||||
boost::shared_lock gsLock(CGameState::mutex);
|
||||
|
||||
// While mutexes were locked away we may be have stopped being the active interface
|
||||
if (LOCPLINT != this)
|
||||
|
@ -173,7 +173,7 @@ void CServerHandler::threadRunNetwork()
|
||||
try {
|
||||
networkHandler->run();
|
||||
}
|
||||
catch (const TerminationRequestedException & e)
|
||||
catch (const TerminationRequestedException &)
|
||||
{
|
||||
logGlobal->info("Terminating network thread");
|
||||
return;
|
||||
|
@ -408,7 +408,7 @@ void CClient::handlePack(CPack * pack)
|
||||
apply->applyOnClBefore(this, pack);
|
||||
logNetwork->trace("\tMade first apply on cl: %s", typeid(*pack).name());
|
||||
{
|
||||
boost::unique_lock<boost::shared_mutex> lock(CGameState::mutex);
|
||||
boost::unique_lock lock(CGameState::mutex);
|
||||
gs->apply(pack);
|
||||
}
|
||||
logNetwork->trace("\tApplied on gs: %s", typeid(*pack).name());
|
||||
|
@ -33,7 +33,7 @@ class ConditionalWait
|
||||
|
||||
void set(bool value)
|
||||
{
|
||||
boost::unique_lock<std::mutex> lock(mx);
|
||||
std::unique_lock lock(mx);
|
||||
isBusyValue = value;
|
||||
}
|
||||
|
||||
@ -59,15 +59,14 @@ public:
|
||||
|
||||
bool isBusy()
|
||||
{
|
||||
std::unique_lock<std::mutex> lock(mx);
|
||||
std::unique_lock lock(mx);
|
||||
return isBusyValue;
|
||||
}
|
||||
|
||||
void waitWhileBusy()
|
||||
{
|
||||
std::unique_lock<std::mutex> un(mx);
|
||||
while(isBusyValue)
|
||||
cond.wait(un);
|
||||
std::unique_lock un(mx);
|
||||
cond.wait(un, [this](){ return !isBusyValue;});
|
||||
|
||||
if (isTerminating)
|
||||
throw TerminationRequestedException();
|
||||
|
@ -48,7 +48,7 @@ void AdventureMapShortcuts::setState(EAdventureState newState)
|
||||
state = newState;
|
||||
}
|
||||
|
||||
EAdventureState AdventureMapShortcuts::getState()
|
||||
EAdventureState AdventureMapShortcuts::getState() const
|
||||
{
|
||||
return state;
|
||||
}
|
||||
|
@ -94,6 +94,6 @@ public:
|
||||
bool optionMapViewActive();
|
||||
|
||||
void setState(EAdventureState newState);
|
||||
EAdventureState getState();
|
||||
EAdventureState getState() const;
|
||||
void onMapViewMoved(const Rect & visibleArea, int mapLevel);
|
||||
};
|
||||
|
@ -72,7 +72,7 @@ void BattleConsole::showAll(Canvas & to)
|
||||
to.drawText(line2, FONT_SMALL, Colors::WHITE, ETextAlignment::CENTER, visibleText[1]);
|
||||
}
|
||||
|
||||
std::vector<std::string> BattleConsole::getVisibleText()
|
||||
std::vector<std::string> BattleConsole::getVisibleText() const
|
||||
{
|
||||
// high priority texts that hide battle log entries
|
||||
for(const auto & text : {consoleText, hoverText})
|
||||
|
@ -72,7 +72,7 @@ private:
|
||||
std::vector<std::string> splitText(const std::string &text);
|
||||
|
||||
/// select line(s) that will be visible in UI
|
||||
std::vector<std::string> getVisibleText();
|
||||
std::vector<std::string> getVisibleText() const;
|
||||
public:
|
||||
BattleConsole(const BattleInterface & owner, std::shared_ptr<CPicture> backgroundSource, const Point & objectPos, const Point & imagePos, const Point &size);
|
||||
|
||||
|
@ -773,7 +773,7 @@ void BattleWindow::bOpenActiveUnit()
|
||||
const auto * unit = owner.stacksController->getActiveStack();
|
||||
|
||||
if (unit)
|
||||
GH.windows().createAndPushWindow<CStackWindow>(unit, false);;
|
||||
GH.windows().createAndPushWindow<CStackWindow>(unit, false);
|
||||
}
|
||||
|
||||
void BattleWindow::bOpenHoveredUnit()
|
||||
|
@ -478,7 +478,7 @@ void TownSelector::updateListItems()
|
||||
{
|
||||
if(y >= line && (y - line) < 3)
|
||||
{
|
||||
auto getImageIndex = [](FactionID factionID, bool enabled){ return factionID.toFaction()->town->clientInfo.icons[true][!enabled] + 2; };
|
||||
auto getImageIndex = [](FactionID targetFactionID, bool enabled){ return targetFactionID.toFaction()->town->clientInfo.icons[true][!enabled] + 2; };
|
||||
towns[factionID] = std::make_shared<CAnimImage>(AnimationPath::builtin("ITPA"), getImageIndex(factionID, townsEnabled[factionID]), 0, x_offset + 48 * x, 32 * (y - line));
|
||||
townsArea[factionID] = std::make_shared<LRClickableArea>(Rect(x_offset + 48 * x, 32 * (y - line), 48, 32), [this, getImageIndex, factionID](){
|
||||
townsEnabled[factionID] = !townsEnabled[factionID];
|
||||
|
@ -698,7 +698,7 @@ void SelectionTab::selectNewestFile()
|
||||
{
|
||||
time_t newestTime = 0;
|
||||
std::string newestFile = "";
|
||||
for(int i = (int)allItems.size() - 1; i >= 0; i--)
|
||||
for(int i = static_cast<int>(allItems.size()) - 1; i >= 0; i--)
|
||||
if(allItems[i]->lastWrite > newestTime)
|
||||
{
|
||||
newestTime = allItems[i]->lastWrite;
|
||||
|
@ -112,10 +112,10 @@ void CHighScoreScreen::addButtons()
|
||||
|
||||
buttons.clear();
|
||||
|
||||
buttons.push_back(std::make_shared<CButton>(Point(31, 113), AnimationPath::builtin("HISCCAM.DEF"), CButton::tooltip(), [&](){ buttonCampaignClick(); }, EShortcut::HIGH_SCORES_CAMPAIGNS));
|
||||
buttons.push_back(std::make_shared<CButton>(Point(31, 345), AnimationPath::builtin("HISCSTA.DEF"), CButton::tooltip(), [&](){ buttonScenarioClick(); }, EShortcut::HIGH_SCORES_SCENARIOS));
|
||||
buttons.push_back(std::make_shared<CButton>(Point(726, 113), AnimationPath::builtin("HISCRES.DEF"), CButton::tooltip(), [&](){ buttonResetClick(); }, EShortcut::HIGH_SCORES_RESET));
|
||||
buttons.push_back(std::make_shared<CButton>(Point(726, 345), AnimationPath::builtin("HISCEXT.DEF"), CButton::tooltip(), [&](){ buttonExitClick(); }, EShortcut::GLOBAL_RETURN));
|
||||
buttons.push_back(std::make_shared<CButton>(Point(31, 113), AnimationPath::builtin("HISCCAM.DEF"), CButton::tooltip(), [this](){ buttonCampaignClick(); }, EShortcut::HIGH_SCORES_CAMPAIGNS));
|
||||
buttons.push_back(std::make_shared<CButton>(Point(31, 345), AnimationPath::builtin("HISCSTA.DEF"), CButton::tooltip(), [this](){ buttonScenarioClick(); }, EShortcut::HIGH_SCORES_SCENARIOS));
|
||||
buttons.push_back(std::make_shared<CButton>(Point(726, 113), AnimationPath::builtin("HISCRES.DEF"), CButton::tooltip(), [this](){ buttonResetClick(); }, EShortcut::HIGH_SCORES_RESET));
|
||||
buttons.push_back(std::make_shared<CButton>(Point(726, 345), AnimationPath::builtin("HISCEXT.DEF"), CButton::tooltip(), [this](){ buttonExitClick(); }, EShortcut::GLOBAL_RETURN));
|
||||
}
|
||||
|
||||
void CHighScoreScreen::addHighScores()
|
||||
|
@ -219,22 +219,21 @@ void CVideoInstance::prepareOutput(bool scaleToScreenSize, bool useTextureOutput
|
||||
|
||||
void FFMpegStream::decodeNextFrame()
|
||||
{
|
||||
AVPacket packet;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
int rc = avcodec_receive_frame(codecContext, frame);
|
||||
if(rc == AVERROR(EAGAIN))
|
||||
break;
|
||||
|
||||
if(rc < 0)
|
||||
throwFFmpegError(rc);
|
||||
int rc = avcodec_receive_frame(codecContext, frame);
|
||||
|
||||
// frame extracted - data that was sent to codecContext before was sufficient
|
||||
if (rc == 0)
|
||||
return;
|
||||
}
|
||||
|
||||
// returning AVERROR(EAGAIN) is legal - this indicates that codec requires more data from input stream to decode next frame
|
||||
if(rc != AVERROR(EAGAIN))
|
||||
throwFFmpegError(rc);
|
||||
|
||||
for(;;)
|
||||
{
|
||||
AVPacket packet;
|
||||
|
||||
// codecContext does not have enough input data - read next packet from input stream
|
||||
int ret = av_read_frame(formatContext, &packet);
|
||||
if(ret < 0)
|
||||
{
|
||||
@ -248,25 +247,33 @@ void FFMpegStream::decodeNextFrame()
|
||||
throwFFmpegError(ret);
|
||||
}
|
||||
|
||||
// Is this a packet from the video stream?
|
||||
// Is this a packet from the stream that needs decoding?
|
||||
if(packet.stream_index == streamIndex)
|
||||
{
|
||||
// Decode video frame
|
||||
// Decode read packet
|
||||
// Note: this method may return AVERROR(EAGAIN). However this should never happen with ffmpeg API
|
||||
// since there is guaranteed call to avcodec_receive_frame and ffmpeg API promises that *both* of these methods will never return AVERROR(EAGAIN).
|
||||
int rc = avcodec_send_packet(codecContext, &packet);
|
||||
if(rc < 0 && rc != AVERROR(EAGAIN))
|
||||
if(rc < 0)
|
||||
throwFFmpegError(rc);
|
||||
|
||||
rc = avcodec_receive_frame(codecContext, frame);
|
||||
if(rc == AVERROR(EAGAIN))
|
||||
{
|
||||
// still need more data - read next packet
|
||||
av_packet_unref(&packet);
|
||||
continue;
|
||||
}
|
||||
if(rc < 0)
|
||||
else if(rc < 0)
|
||||
{
|
||||
throwFFmpegError(rc);
|
||||
|
||||
av_packet_unref(&packet);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
// read succesful. Exit the loop
|
||||
av_packet_unref(&packet);
|
||||
return;
|
||||
}
|
||||
}
|
||||
av_packet_unref(&packet);
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ void CTextInput::setFilterNumber(int minValue, int maxValue)
|
||||
onTextFiltering = std::bind(&CTextInput::numberFilter, _1, _2, minValue, maxValue);
|
||||
}
|
||||
|
||||
std::string CTextInput::getVisibleText()
|
||||
std::string CTextInput::getVisibleText() const
|
||||
{
|
||||
return hasFocus() ? currentText + composedText + "_" : currentText;
|
||||
}
|
||||
@ -216,7 +216,6 @@ void CTextInput::textEdited(const std::string & enteredText)
|
||||
|
||||
composedText = enteredText;
|
||||
updateLabel();
|
||||
//onTextEdited(currentText + composedText);
|
||||
}
|
||||
|
||||
void CTextInput::filenameFilter(std::string & text, const std::string &oldText)
|
||||
|
@ -49,7 +49,6 @@ class CTextInput final : public CFocusable
|
||||
using TextEditedCallback = std::function<void(const std::string &)>;
|
||||
using TextFilterCallback = std::function<void(std::string &, const std::string &)>;
|
||||
|
||||
private:
|
||||
std::string currentText;
|
||||
std::string composedText;
|
||||
ETextAlignment originalAlignment;
|
||||
@ -66,7 +65,7 @@ private:
|
||||
//min-max should be set via something like std::bind
|
||||
static void numberFilter(std::string & text, const std::string & oldText, int minValue, int maxValue);
|
||||
|
||||
std::string getVisibleText();
|
||||
std::string getVisibleText() const;
|
||||
void createLabel(bool giveFocusToInput);
|
||||
void updateLabel();
|
||||
|
||||
|
@ -1039,11 +1039,11 @@ void CCastleBuildings::openTownHall()
|
||||
void CCastleBuildings::enterAnyThievesGuild()
|
||||
{
|
||||
std::vector<const CGTownInstance*> towns = LOCPLINT->cb->getTownsInfo(true);
|
||||
for(auto & town : towns)
|
||||
for(auto & ownedTown : towns)
|
||||
{
|
||||
if(town->builtBuildings.count(BuildingID::TAVERN))
|
||||
if(ownedTown->builtBuildings.count(BuildingID::TAVERN))
|
||||
{
|
||||
LOCPLINT->showThievesGuildWindow(town);
|
||||
LOCPLINT->showThievesGuildWindow(ownedTown);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -208,7 +208,7 @@ void CHeroWindow::update()
|
||||
boost::algorithm::replace_first(helpBox, "%s", CGI->generaltexth->allTexts[43]);
|
||||
|
||||
garr = std::make_shared<CGarrisonInt>(Point(15, 485), 8, Point(), curHero);
|
||||
auto split = std::make_shared<CButton>(Point(539, 519), AnimationPath::builtin("hsbtns9.def"), CButton::tooltip(CGI->generaltexth->allTexts[256], helpBox), [&](){ garr->splitClick(); }, EShortcut::HERO_ARMY_SPLIT);
|
||||
auto split = std::make_shared<CButton>(Point(539, 519), AnimationPath::builtin("hsbtns9.def"), CButton::tooltip(CGI->generaltexth->allTexts[256], helpBox), [this](){ garr->splitClick(); }, EShortcut::HERO_ARMY_SPLIT);
|
||||
garr->addSplitBtn(split);
|
||||
}
|
||||
if(!arts)
|
||||
|
@ -1010,10 +1010,10 @@ CGarrisonWindow::CGarrisonWindow(const CArmedInstance * up, const CGHeroInstance
|
||||
|
||||
garr = std::make_shared<CGarrisonInt>(Point(92, 127), 4, Point(0,96), up, down, removableUnits);
|
||||
{
|
||||
auto split = std::make_shared<CButton>(Point(88, 314), AnimationPath::builtin("IDV6432.DEF"), CButton::tooltip(CGI->generaltexth->tcommands[3], ""), [&](){ garr->splitClick(); }, EShortcut::HERO_ARMY_SPLIT );
|
||||
auto split = std::make_shared<CButton>(Point(88, 314), AnimationPath::builtin("IDV6432.DEF"), CButton::tooltip(CGI->generaltexth->tcommands[3], ""), [this](){ garr->splitClick(); }, EShortcut::HERO_ARMY_SPLIT );
|
||||
garr->addSplitBtn(split);
|
||||
}
|
||||
quit = std::make_shared<CButton>(Point(399, 314), AnimationPath::builtin("IOK6432.DEF"), CButton::tooltip(CGI->generaltexth->tcommands[8], ""), [&](){ close(); }, EShortcut::GLOBAL_ACCEPT);
|
||||
quit = std::make_shared<CButton>(Point(399, 314), AnimationPath::builtin("IOK6432.DEF"), CButton::tooltip(CGI->generaltexth->tcommands[8], ""), [this](){ close(); }, EShortcut::GLOBAL_ACCEPT);
|
||||
|
||||
std::string titleText;
|
||||
if(down->tempOwner == up->tempOwner)
|
||||
|
@ -253,7 +253,7 @@ bool CLegacyConfigParser::endLine()
|
||||
|
||||
void TextLocalizationContainer::registerStringOverride(const std::string & modContext, const std::string & language, const TextIdentifier & UID, const std::string & localized)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
assert(!modContext.empty());
|
||||
assert(!language.empty());
|
||||
@ -269,7 +269,7 @@ void TextLocalizationContainer::registerStringOverride(const std::string & modCo
|
||||
|
||||
void TextLocalizationContainer::addSubContainer(const TextLocalizationContainer & container)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
assert(!vstd::contains(subContainers, &container));
|
||||
subContainers.push_back(&container);
|
||||
@ -277,7 +277,7 @@ void TextLocalizationContainer::addSubContainer(const TextLocalizationContainer
|
||||
|
||||
void TextLocalizationContainer::removeSubContainer(const TextLocalizationContainer & container)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
assert(vstd::contains(subContainers, &container));
|
||||
|
||||
@ -286,7 +286,7 @@ void TextLocalizationContainer::removeSubContainer(const TextLocalizationContain
|
||||
|
||||
const std::string & TextLocalizationContainer::deserialize(const TextIdentifier & identifier) const
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
if(stringsLocalizations.count(identifier.get()) == 0)
|
||||
{
|
||||
@ -307,7 +307,7 @@ const std::string & TextLocalizationContainer::deserialize(const TextIdentifier
|
||||
|
||||
void TextLocalizationContainer::registerString(const std::string & modContext, const TextIdentifier & UID, const std::string & localized, const std::string & language)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
assert(!modContext.empty());
|
||||
assert(!Languages::getLanguageOptions(language).identifier.empty());
|
||||
@ -339,7 +339,7 @@ void TextLocalizationContainer::registerString(const std::string & modContext, c
|
||||
|
||||
bool TextLocalizationContainer::validateTranslation(const std::string & language, const std::string & modContext, const JsonNode & config) const
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
bool allPresent = true;
|
||||
|
||||
@ -398,14 +398,14 @@ void TextLocalizationContainer::loadTranslationOverrides(const std::string & lan
|
||||
|
||||
bool TextLocalizationContainer::identifierExists(const TextIdentifier & UID) const
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
return stringsLocalizations.count(UID.get());
|
||||
}
|
||||
|
||||
void TextLocalizationContainer::exportAllTexts(std::map<std::string, std::map<std::string, std::string>> & storage) const
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
for (auto const & subContainer : subContainers)
|
||||
subContainer->exportAllTexts(storage);
|
||||
@ -436,7 +436,7 @@ std::string TextLocalizationContainer::getModLanguage(const std::string & modCon
|
||||
|
||||
void TextLocalizationContainer::jsonSerialize(JsonNode & dest) const
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
|
||||
for(auto & s : stringsLocalizations)
|
||||
{
|
||||
@ -712,7 +712,7 @@ std::string CGeneralTextHandler::getInstalledEncoding()
|
||||
|
||||
std::vector<std::string> CGeneralTextHandler::findStringsWithPrefix(const std::string & prefix)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> globalLock(globalTextMutex);
|
||||
std::lock_guard globalLock(globalTextMutex);
|
||||
std::vector<std::string> result;
|
||||
|
||||
for(const auto & entry : stringsLocalizations)
|
||||
|
@ -140,7 +140,7 @@ public:
|
||||
{
|
||||
struct Helper : public Serializeable
|
||||
{
|
||||
void serialize(Handler &h)
|
||||
void serialize(Handler &h) const
|
||||
{}
|
||||
};
|
||||
Helper helper;
|
||||
|
@ -200,7 +200,7 @@ std::shared_ptr<CSkill> CSkillHandler::loadFromJson(const std::string & scope, c
|
||||
|
||||
major = json["obligatoryMajor"].Bool();
|
||||
minor = json["obligatoryMinor"].Bool();
|
||||
auto skill = std::make_shared<CSkill>(SecondarySkill((si32)index), identifier, major, minor);
|
||||
auto skill = std::make_shared<CSkill>(SecondarySkill(index), identifier, major, minor);
|
||||
skill->modScope = scope;
|
||||
|
||||
skill->onlyOnWaterMap = json["onlyOnWaterMap"].Bool();
|
||||
|
@ -148,7 +148,7 @@ void NetworkConnection::sendPacket(const std::vector<std::byte> & message)
|
||||
|
||||
bool messageQueueEmpty = dataToSend.empty();
|
||||
dataToSend.push_back(headerVector);
|
||||
if (message.size() > 0)
|
||||
if (!message.empty())
|
||||
dataToSend.push_back(message);
|
||||
|
||||
if (messageQueueEmpty)
|
||||
@ -159,7 +159,7 @@ void NetworkConnection::sendPacket(const std::vector<std::byte> & message)
|
||||
{
|
||||
boost::system::error_code ec;
|
||||
boost::asio::write(*socket, boost::asio::buffer(headerVector), ec );
|
||||
if (message.size() > 0)
|
||||
if (!message.empty())
|
||||
boost::asio::write(*socket, boost::asio::buffer(message), ec );
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ struct DLL_LINKAGE LobbyClientConnected : public CLobbyPackToPropagate
|
||||
else
|
||||
version = ESerializationVersion::RELEASE_150;
|
||||
}
|
||||
catch (const std::runtime_error & e)
|
||||
catch (const std::runtime_error &)
|
||||
{
|
||||
version = ESerializationVersion::RELEASE_150;
|
||||
}
|
||||
|
@ -181,7 +181,7 @@ std::set<Point2D> PenroseTiling::generatePenroseTiling(size_t numZones, CRandomG
|
||||
for (auto & point : points)
|
||||
{
|
||||
point = point + Point2D(0.5f, 0.5f);
|
||||
};
|
||||
}
|
||||
|
||||
// For 8XM8 map, only 650 out of 15971 points are in the range
|
||||
|
||||
@ -193,4 +193,4 @@ std::set<Point2D> PenroseTiling::generatePenroseTiling(size_t numZones, CRandomG
|
||||
return finalPoints;
|
||||
}
|
||||
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
|
@ -85,7 +85,7 @@ class BinarySerializer : public CSaverBase
|
||||
class CBasicPointerSaver
|
||||
{
|
||||
public:
|
||||
virtual void savePtr(CSaverBase &ar, const void *data) const =0;
|
||||
virtual void savePtr(CSaverBase &ar, const Serializeable *data) const =0;
|
||||
virtual ~CBasicPointerSaver() = default;
|
||||
|
||||
template<typename T> static CBasicPointerSaver *getApplier(const T * t=nullptr)
|
||||
@ -99,10 +99,10 @@ class BinarySerializer : public CSaverBase
|
||||
class CPointerSaver : public CBasicPointerSaver
|
||||
{
|
||||
public:
|
||||
void savePtr(CSaverBase &ar, const void *data) const override
|
||||
void savePtr(CSaverBase &ar, const Serializeable *data) const override
|
||||
{
|
||||
auto & s = static_cast<BinarySerializer &>(ar);
|
||||
const T *ptr = static_cast<const T*>(data);
|
||||
const T *ptr = dynamic_cast<const T*>(data);
|
||||
|
||||
//T is most derived known type, it's time to call actual serialize
|
||||
const_cast<T*>(ptr)->serialize(s);
|
||||
@ -283,7 +283,7 @@ public:
|
||||
if(!tid)
|
||||
save(*data); //if type is unregistered simply write all data in a standard way
|
||||
else
|
||||
applier.getApplier(tid)->savePtr(*this, static_cast<const void*>(data)); //call serializer specific for our real type
|
||||
applier.getApplier(tid)->savePtr(*this, static_cast<const Serializeable*>(data)); //call serializer specific for our real type
|
||||
}
|
||||
|
||||
template < typename T, typename std::enable_if_t < is_serializeable<BinarySerializer, T>::value, int > = 0 >
|
||||
|
@ -124,7 +124,7 @@ void Graphics::load()
|
||||
|
||||
void Graphics::loadHeroAnimations()
|
||||
{
|
||||
for(auto & elem : VLC->heroclassesh->objects)
|
||||
for(const auto & elem : VLC->heroclassesh->objects)
|
||||
{
|
||||
for(auto templ : VLC->objtypeh->getHandlerFor(Obj::HERO, elem->getIndex())->getTemplates())
|
||||
{
|
||||
|
@ -985,7 +985,7 @@ ui8 CVCMIServer::getIdOfFirstUnallocatedPlayer() const
|
||||
void CVCMIServer::multiplayerWelcomeMessage()
|
||||
{
|
||||
int humanPlayer = 0;
|
||||
for (auto & pi : si->playerInfos)
|
||||
for (const auto & pi : si->playerInfos)
|
||||
if(pi.second.isControlledByHuman())
|
||||
humanPlayer++;
|
||||
|
||||
@ -996,9 +996,9 @@ void CVCMIServer::multiplayerWelcomeMessage()
|
||||
|
||||
std::vector<std::string> optionIds;
|
||||
if(si->extraOptionsInfo.cheatsAllowed)
|
||||
optionIds.push_back("vcmi.optionsTab.cheatAllowed.hover");
|
||||
optionIds.emplace_back("vcmi.optionsTab.cheatAllowed.hover");
|
||||
if(si->extraOptionsInfo.unlimitedReplay)
|
||||
optionIds.push_back("vcmi.optionsTab.unlimitedReplay.hover");
|
||||
optionIds.emplace_back("vcmi.optionsTab.unlimitedReplay.hover");
|
||||
|
||||
if(!optionIds.size()) // No settings to publish
|
||||
return;
|
||||
|
@ -39,7 +39,7 @@ set(test_SRCS
|
||||
map/CMapFormatTest.cpp
|
||||
map/MapComparer.cpp
|
||||
|
||||
netpacks/EntitiesChangedTest.cpp
|
||||
|
||||
netpacks/NetPackFixture.cpp
|
||||
|
||||
spells/AbilityCasterTest.cpp
|
||||
|
@ -411,15 +411,3 @@ TEST_F(CGameStateTest, DISABLED_battleResurrection)
|
||||
EXPECT_EQ(unit->health.getCount(), 10);
|
||||
EXPECT_EQ(unit->health.getResurrected(), 0);
|
||||
}
|
||||
|
||||
TEST_F(CGameStateTest, updateEntity)
|
||||
{
|
||||
using ::testing::SaveArg;
|
||||
using ::testing::Eq;
|
||||
using ::testing::_;
|
||||
|
||||
JsonNode actual;
|
||||
EXPECT_CALL(services, updateEntity(Eq(Metatype::CREATURE), Eq(424242), _)).WillOnce(SaveArg<2>(&actual));
|
||||
gameState->updateEntity(Metatype::CREATURE, 424242, JsonNode("TEST"));
|
||||
EXPECT_EQ(actual.String(), "TEST");
|
||||
}
|
||||
|
@ -1,47 +0,0 @@
|
||||
/*
|
||||
* EntitiesChangedTest.cpp, part of VCMI engine
|
||||
*
|
||||
* Authors: listed in file AUTHORS in main folder
|
||||
*
|
||||
* License: GNU General Public License v2.0 or later
|
||||
* Full text of license available in license.txt file, in main folder
|
||||
*
|
||||
*/
|
||||
|
||||
#include "StdInc.h"
|
||||
|
||||
#include "NetPackFixture.h"
|
||||
#include "../../lib/networkPacks/PacksForClient.h"
|
||||
|
||||
namespace test
|
||||
{
|
||||
using namespace ::testing;
|
||||
|
||||
class EntitiesChanged : public Test, public NetPackFixture
|
||||
{
|
||||
public:
|
||||
std::shared_ptr<::EntitiesChanged> subject;
|
||||
protected:
|
||||
void SetUp() override
|
||||
{
|
||||
subject = std::make_shared<::EntitiesChanged>();
|
||||
NetPackFixture::setUp();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
TEST_F(EntitiesChanged, Apply)
|
||||
{
|
||||
subject->changes.emplace_back();
|
||||
|
||||
EntityChanges & changes = subject->changes.back();
|
||||
changes.metatype = Metatype::CREATURE;
|
||||
changes.entityIndex = 424242;
|
||||
changes.data.String() = "TEST";
|
||||
|
||||
EXPECT_CALL(*gameState, updateEntity(Eq(Metatype::CREATURE), Eq(424242), _));
|
||||
|
||||
gameState->apply(subject.get());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user