1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-26 08:41:13 +02:00

Merge pull request #4196 from IvanSavenko/bugfixing

[1.5.4] Bugfixing
This commit is contained in:
Ivan Savenko 2024-07-03 13:28:06 +03:00 committed by GitHub
commit feb8b4c676
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 34 additions and 16 deletions

View File

@ -58,6 +58,9 @@ InputSourceTouch::InputSourceTouch()
void InputSourceTouch::handleEventFingerMotion(const SDL_TouchFingerEvent & tfinger)
{
if (CCS && CCS->curh && settings["video"]["cursor"].String() == "software" && state != TouchState::RELATIVE_MODE)
CCS->curh->cursorMove(GH.getCursorPosition().x, GH.getCursorPosition().y);
switch(state)
{
case TouchState::RELATIVE_MODE:

View File

@ -215,7 +215,7 @@ void CBonusSelection::createBonusesIcons()
break;
case CampaignBonusType::SPELL_SCROLL:
desc.appendLocalString(EMetaText::GENERAL_TXT, 716);
desc.replaceName(ArtifactID(bonDescs[i].info2));
desc.replaceName(SpellID(bonDescs[i].info2));
break;
case CampaignBonusType::PRIMARY_SKILL:
{

View File

@ -1540,8 +1540,11 @@ CHallInterface::CHallInterface(const CGTownInstance * Town):
const CBuilding * building = nullptr;
for(auto & buildingID : boxList[row][col])//we are looking for the first not built structure
{
if (town->town->buildings.count(buildingID) == 0)
throw std::runtime_error("Town " + Town->town->faction->getJsonKey() + " has no building with ID " + std::to_string(buildingID.getNum()));
if (!buildingID.hasValue())
{
logMod->warn("Invalid building ID found in hallSlots of town '%s'", town->town->faction->getJsonKey() );
continue;
}
const CBuilding * current = town->town->buildings.at(buildingID);
if(vstd::contains(town->builtBuildings, buildingID))

View File

@ -26,9 +26,15 @@ namespace
{
QString detectModArchive(QString path, QString modName, std::vector<std::string> & filesToExtract)
{
ZipArchive archive(qstringToPath(path));
filesToExtract = archive.listFiles();
try {
ZipArchive archive(qstringToPath(path));
filesToExtract = archive.listFiles();
}
catch (const std::runtime_error & e)
{
logGlobal->error("Failed to open zip archive. Reason: %s", e.what());
return "";
}
QString modDirName;

View File

@ -705,12 +705,12 @@ void CSettingsView::on_spinBoxNetworkPortLobby_valueChanged(int arg1)
void CSettingsView::on_sliderControllerSticksAcceleration_valueChanged(int value)
{
Settings node = settings.write["input"]["configAxisScale"];
Settings node = settings.write["input"]["controllerAxisScale"];
node->Integer() = value / 100.0;
}
void CSettingsView::on_sliderControllerSticksSensitivity_valueChanged(int value)
{
Settings node = settings.write["input"]["configAxisSpeed"];
Settings node = settings.write["input"]["controllerAxisSpeed"];
node->Integer() = value;
}

View File

@ -191,7 +191,7 @@ ZipArchive::ZipArchive(const boost::filesystem::path & from)
#endif
if (archive == nullptr)
throw std::runtime_error("Failed to open file '" + from.string() + "' - unable to list files!");
throw std::runtime_error("Failed to open file '" + from.string());
}
ZipArchive::~ZipArchive()

View File

@ -106,12 +106,12 @@ void Rewardable::Interface::grantRewardBeforeLevelup(IGameCallback * cb, const R
for(const auto & entry : info.reward.secondary)
{
int current = hero->getSecSkillLevel(entry.first);
if( (current != 0 && current < entry.second) ||
(hero->canLearnSkill() ))
{
cb->changeSecSkill(hero, entry.first, entry.second);
}
auto currentLevel = static_cast<MasteryLevel::Type>(hero->getSecSkillLevel(entry.first));
if(currentLevel == MasteryLevel::EXPERT)
continue;
if(currentLevel != MasteryLevel::NONE || hero->canLearnSkill())
cb->changeSecSkill(hero, entry.first, entry.second, false);
}
for(int i=0; i< info.reward.primary.size(); i++)

View File

@ -103,7 +103,13 @@ void Rewardable::Reward::loadComponents(std::vector<Component> & comps, const CG
}
for(const auto & entry : secondary)
comps.emplace_back(ComponentType::SEC_SKILL, entry.first, entry.second);
{
auto skillID = entry.first;
int levelsGained = entry.second;
int currentLevel = h->getSecSkillLevel(skillID);
int finalLevel = std::min(static_cast<int>(MasteryLevel::EXPERT), currentLevel + levelsGained);
comps.emplace_back(ComponentType::SEC_SKILL, entry.first, finalLevel);
}
for(const auto & entry : artifacts)
comps.emplace_back(ComponentType::ARTIFACT, entry);