diff --git a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp index f57519f29d..52c5a4a7b7 100644 --- a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp +++ b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp @@ -441,8 +441,9 @@ namespace MWDialogue // Get the sum of disposition effects minus charm (shouldn't be made permanent) npcStats.setBaseDisposition(0); - int zero = MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(mActor, false) - - npcStats.getMagicEffects().getOrDefault(ESM::MagicEffect::Charm).getMagnitude(); + int zero = static_cast( + MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(mActor, false) + - npcStats.getMagicEffects().getOrDefault(ESM::MagicEffect::Charm).getMagnitude()); // Clamp new permanent disposition to avoid negative derived disposition (can be caused by intimidate) int disposition = std::clamp(mOriginalDisposition + mPermanentDispositionChange, -zero, 100 - zero); diff --git a/apps/openmw/mwdialogue/filter.cpp b/apps/openmw/mwdialogue/filter.cpp index a5a3be85f9..4b42d67a03 100644 --- a/apps/openmw/mwdialogue/filter.cpp +++ b/apps/openmw/mwdialogue/filter.cpp @@ -400,7 +400,7 @@ int MWDialogue::Filter::getSelectStructInteger(const SelectWrapper& select) cons case ESM::DialogueCondition::Function_PcLuck: { ESM::RefId attribute = ESM::Attribute::indexToRefId(select.getArgument()); - return player.getClass().getCreatureStats(player).getAttribute(attribute).getModified(); + return static_cast(player.getClass().getCreatureStats(player).getAttribute(attribute).getModified()); } case ESM::DialogueCondition::Function_PcBlock: case ESM::DialogueCondition::Function_PcArmorer: diff --git a/apps/openmw/mwgui/alchemywindow.cpp b/apps/openmw/mwgui/alchemywindow.cpp index 62cc1d0854..da7e1dff78 100644 --- a/apps/openmw/mwgui/alchemywindow.cpp +++ b/apps/openmw/mwgui/alchemywindow.cpp @@ -216,7 +216,7 @@ namespace MWGui std::set itemNames, itemEffects; for (size_t i = 0; i < mModel->getItemCount(); ++i) { - MWWorld::Ptr item = mModel->getItem(i).mBase; + MWWorld::Ptr item = mModel->getItem(static_cast(i)).mBase; if (item.getType() != ESM::Ingredient::sRecordId) continue; @@ -376,7 +376,7 @@ namespace MWGui mItemSelectionDialog->eventDialogCanceled += MyGUI::newDelegate(this, &AlchemyWindow::onItemCancel); mItemSelectionDialog->setVisible(true); mItemSelectionDialog->openContainer(MWMechanics::getPlayer()); - mItemSelectionDialog->getSortModel()->setApparatusTypeFilter(i); + mItemSelectionDialog->getSortModel()->setApparatusTypeFilter(static_cast(i)); mItemSelectionDialog->setFilter(SortFilterItemModel::Filter_OnlyAlchemyTools); } else @@ -459,7 +459,7 @@ namespace MWGui for (const MWMechanics::EffectKey& effectKey : effectIds) { Widgets::SpellEffectParams params; - params.mEffectID = effectKey.mId; + params.mEffectID = static_cast(effectKey.mId); const ESM::MagicEffect* magicEffect = MWBase::Environment::get().getESMStore()->get().find(effectKey.mId); if (magicEffect->mData.mFlags & ESM::MagicEffect::TargetSkill) @@ -589,11 +589,11 @@ namespace MWGui if (arg.button == SDL_CONTROLLER_BUTTON_B) { // Remove active ingredients or close the window, starting with right-most slot. - for (int i = mIngredients.size() - 1; i >= 0; --i) + for (size_t i = mIngredients.size(); i > 0; --i) { - if (mIngredients[i]->isUserString("ToolTipType")) + if (mIngredients[i - 1]->isUserString("ToolTipType")) { - onIngredientSelected(mIngredients[i]); + onIngredientSelected(mIngredients[i - 1]); return true; } } diff --git a/apps/openmw/mwgui/bookpage.cpp b/apps/openmw/mwgui/bookpage.cpp index a32733efd0..3ed47b64c6 100644 --- a/apps/openmw/mwgui/bookpage.cpp +++ b/apps/openmw/mwgui/bookpage.cpp @@ -28,6 +28,76 @@ namespace info.advance /= scale; return info; } + + bool ucsLineBreak(Utf8Stream::UnicodeChar codePoint) + { + return codePoint == '\n'; + } + + bool ucsCarriageReturn(Utf8Stream::UnicodeChar codePoint) + { + return codePoint == '\r'; + } + + // Normal no-break space (0x00A0) is ignored here + // because Morrowind compatibility requires us to render its glyph + bool ucsSpace(Utf8Stream::UnicodeChar codePoint) + { + switch (codePoint) + { + case 0x0020: // SPACE + case 0x1680: // OGHAM SPACE MARK + case 0x180E: // MONGOLIAN VOWEL SEPARATOR + case 0x2000: // EN QUAD + case 0x2001: // EM QUAD + case 0x2002: // EN SPACE + case 0x2003: // EM SPACE + case 0x2004: // THREE-PER-EM SPACE + case 0x2005: // FOUR-PER-EM SPACE + case 0x2006: // SIX-PER-EM SPACE + case 0x2007: // FIGURE SPACE + case 0x2008: // PUNCTUATION SPACE + case 0x2009: // THIN SPACE + case 0x200A: // HAIR SPACE + case 0x200B: // ZERO WIDTH SPACE + case 0x202F: // NARROW NO-BREAK SPACE + case 0x205F: // MEDIUM MATHEMATICAL SPACE + case 0x3000: // IDEOGRAPHIC SPACE + case 0xFEFF: // ZERO WIDTH NO-BREAK SPACE + return true; + default: + return false; + } + } + + // No-break spaces (0x00A0, 0x202F, 0xFEFF - normal, narrow, zero width) + // are ignored here for obvious reasons + // Figure space (0x2007) is not a breaking space either + bool ucsBreakingSpace(int codePoint) + { + switch (codePoint) + { + case 0x0020: // SPACE + case 0x1680: // OGHAM SPACE MARK + case 0x180E: // MONGOLIAN VOWEL SEPARATOR + case 0x2000: // EN QUAD + case 0x2001: // EM QUAD + case 0x2002: // EN SPACE + case 0x2003: // EM SPACE + case 0x2004: // THREE-PER-EM SPACE + case 0x2005: // FOUR-PER-EM SPACE + case 0x2006: // SIX-PER-EM SPACE + case 0x2008: // PUNCTUATION SPACE + case 0x2009: // THIN SPACE + case 0x200A: // HAIR SPACE + case 0x200B: // ZERO WIDTH SPACE + case 0x205F: // MEDIUM MATHEMATICAL SPACE + case 0x3000: // IDEOGRAPHIC SPACE + return true; + default: + return false; + } + } } namespace MWGui @@ -36,11 +106,6 @@ namespace MWGui class PageDisplay; class BookPageImpl; - static bool ucsSpace(int codePoint); - static bool ucsLineBreak(int codePoint); - static bool ucsCarriageReturn(int codePoint); - static bool ucsBreakingSpace(int codePoint); - struct BookTypesetter::Style { virtual ~Style() = default; @@ -806,7 +871,7 @@ namespace MWGui mCursor.top = mOrigin.top + top; } - void emitGlyph(wchar_t ch) + void emitGlyph(MyGUI::Char ch) { std::optional info = getGlyphInfo(mFont, ch); @@ -828,7 +893,7 @@ namespace MWGui mCursor.left += static_cast(info->bearingX + info->advance); } - void emitSpace(wchar_t ch) + void emitSpace(MyGUI::Char ch) { std::optional info = getGlyphInfo(mFont, ch); @@ -1368,75 +1433,4 @@ namespace MWGui factory.registerFactory("Widget"); factory.registerFactory("BasisSkin"); } - - static bool ucsLineBreak(int codePoint) - { - return codePoint == '\n'; - } - - static bool ucsCarriageReturn(int codePoint) - { - return codePoint == '\r'; - } - - // Normal no-break space (0x00A0) is ignored here - // because Morrowind compatibility requires us to render its glyph - static bool ucsSpace(int codePoint) - { - switch (codePoint) - { - case 0x0020: // SPACE - case 0x1680: // OGHAM SPACE MARK - case 0x180E: // MONGOLIAN VOWEL SEPARATOR - case 0x2000: // EN QUAD - case 0x2001: // EM QUAD - case 0x2002: // EN SPACE - case 0x2003: // EM SPACE - case 0x2004: // THREE-PER-EM SPACE - case 0x2005: // FOUR-PER-EM SPACE - case 0x2006: // SIX-PER-EM SPACE - case 0x2007: // FIGURE SPACE - case 0x2008: // PUNCTUATION SPACE - case 0x2009: // THIN SPACE - case 0x200A: // HAIR SPACE - case 0x200B: // ZERO WIDTH SPACE - case 0x202F: // NARROW NO-BREAK SPACE - case 0x205F: // MEDIUM MATHEMATICAL SPACE - case 0x3000: // IDEOGRAPHIC SPACE - case 0xFEFF: // ZERO WIDTH NO-BREAK SPACE - return true; - default: - return false; - } - } - - // No-break spaces (0x00A0, 0x202F, 0xFEFF - normal, narrow, zero width) - // are ignored here for obvious reasons - // Figure space (0x2007) is not a breaking space either - static bool ucsBreakingSpace(int codePoint) - { - switch (codePoint) - { - case 0x0020: // SPACE - case 0x1680: // OGHAM SPACE MARK - case 0x180E: // MONGOLIAN VOWEL SEPARATOR - case 0x2000: // EN QUAD - case 0x2001: // EM QUAD - case 0x2002: // EN SPACE - case 0x2003: // EM SPACE - case 0x2004: // THREE-PER-EM SPACE - case 0x2005: // FOUR-PER-EM SPACE - case 0x2006: // SIX-PER-EM SPACE - case 0x2008: // PUNCTUATION SPACE - case 0x2009: // THIN SPACE - case 0x200A: // HAIR SPACE - case 0x200B: // ZERO WIDTH SPACE - case 0x205F: // MEDIUM MATHEMATICAL SPACE - case 0x3000: // IDEOGRAPHIC SPACE - return true; - default: - return false; - } - } - } diff --git a/apps/openmw/mwgui/companionwindow.cpp b/apps/openmw/mwgui/companionwindow.cpp index 21ed339c5d..a206be01be 100644 --- a/apps/openmw/mwgui/companionwindow.cpp +++ b/apps/openmw/mwgui/companionwindow.cpp @@ -89,7 +89,7 @@ namespace MWGui } MWWorld::Ptr object = item.mBase; - int count = item.mCount; + size_t count = item.mCount; bool shift = MyGUI::InputManager::getInstance().isShiftPressed(); if (MyGUI::InputManager::getInstance().isControlPressed()) count = 1; @@ -101,7 +101,7 @@ namespace MWGui CountDialog* dialog = MWBase::Environment::get().getWindowManager()->getCountDialog(); std::string name{ object.getClass().getName(object) }; name += MWGui::ToolTips::getSoulString(object.getCellRef()); - dialog->openCountDialog(name, "#{sTake}", count); + dialog->openCountDialog(name, "#{sTake}", static_cast(count)); dialog->eventOkClicked.clear(); if (Settings::gui().mControllerMenus || MyGUI::InputManager::getInstance().isAltPressed()) dialog->eventOkClicked += MyGUI::newDelegate(this, &CompanionWindow::transferItem); @@ -174,9 +174,9 @@ namespace MWGui { if (mPtr.isEmpty()) return; - float capacity = mPtr.getClass().getCapacity(mPtr); - float encumbrance = mPtr.getClass().getEncumbrance(mPtr); - mEncumbranceBar->setValue(std::ceil(encumbrance), static_cast(capacity)); + int capacity = static_cast(mPtr.getClass().getCapacity(mPtr)); + float encumbrance = std::ceil(mPtr.getClass().getEncumbrance(mPtr)); + mEncumbranceBar->setValue(static_cast(encumbrance), capacity); if (mModel && mModel->hasProfit(mPtr)) { diff --git a/apps/openmw/mwgui/console.cpp b/apps/openmw/mwgui/console.cpp index 886b4d381e..aa63ed3371 100644 --- a/apps/openmw/mwgui/console.cpp +++ b/apps/openmw/mwgui/console.cpp @@ -32,6 +32,14 @@ #include "../mwworld/class.hpp" #include "../mwworld/esmstore.hpp" +namespace +{ + bool isWhitespace(MyGUI::UString::code_point c) + { + return c == ' ' || c == '\t'; + } +} + namespace MWGui { class ConsoleInterpreterContext : public MWScript::InterpreterContext @@ -275,11 +283,6 @@ namespace MWGui resetReference(); } - bool isWhitespace(char c) - { - return c == ' ' || c == '\t'; - } - void Console::commandBoxKeyPress(MyGUI::Widget* /*sender*/, MyGUI::KeyCode key, MyGUI::Char /*value*/) { if (MyGUI::InputManager::getInstance().isControlPressed()) @@ -697,7 +700,7 @@ namespace MWGui /* Is there still something in the input string? If not just display all commands and return the unchanged * input. */ - if (tmp.length() == 0) + if (tmp.empty()) { matches = mNames; return input; @@ -756,10 +759,9 @@ namespace MWGui } /* Check if all matching strings match further than input. If yes complete to this match. */ - int i = tmp.length(); + size_t i = tmp.length(); - for (std::string::iterator iter = matches.front().begin() + tmp.length(); iter < matches.front().end(); - ++iter, ++i) + for (auto iter = matches.front().begin() + tmp.length(); iter < matches.front().end(); ++iter, ++i) { for (std::string& match : matches) { diff --git a/apps/openmw/mwgui/containeritemmodel.cpp b/apps/openmw/mwgui/containeritemmodel.cpp index 2c13157751..84d88c48b0 100644 --- a/apps/openmw/mwgui/containeritemmodel.cpp +++ b/apps/openmw/mwgui/containeritemmodel.cpp @@ -121,7 +121,7 @@ namespace MWGui void ContainerItemModel::removeItem(const ItemStack& item, size_t count) { - int toRemove = count; + int toRemove = static_cast(count); for (auto& source : mItemSources) { diff --git a/apps/openmw/mwgui/draganddrop.cpp b/apps/openmw/mwgui/draganddrop.cpp index 85229d0a13..5a0c10c5d8 100644 --- a/apps/openmw/mwgui/draganddrop.cpp +++ b/apps/openmw/mwgui/draganddrop.cpp @@ -48,9 +48,9 @@ namespace MWGui ItemModel::ModelIndex newIndex = -1; for (size_t i = 0; i < playerModel->getItemCount(); ++i) { - if (playerModel->getItem(i).mBase == item) + if (playerModel->getItem(static_cast(i)).mBase == item) { - newIndex = i; + newIndex = static_cast(i); break; } } @@ -82,7 +82,7 @@ namespace MWGui mDraggedWidget->setItem(mItem.mBase); mDraggedWidget->setNeedMouseFocus(false); - mDraggedWidget->setCount(count); + mDraggedWidget->setCount(static_cast(count)); MWBase::Environment::get().getWindowManager()->setDragDrop(true); @@ -134,7 +134,7 @@ namespace MWGui mItem.mCount = count; mDraggedCount = count; - mDraggedWidget->setCount(mDraggedCount); + mDraggedWidget->setCount(static_cast(mDraggedCount)); mSourceSortModel->clearDragItems(); mSourceSortModel->addDragItem(mItem.mBase, mDraggedCount); } diff --git a/apps/openmw/mwgui/inventorywindow.cpp b/apps/openmw/mwgui/inventorywindow.cpp index 64d45f1447..0c26ee7222 100644 --- a/apps/openmw/mwgui/inventorywindow.cpp +++ b/apps/openmw/mwgui/inventorywindow.cpp @@ -218,10 +218,10 @@ namespace MWGui const WindowRectSettingValues& rect = settings.mIsMaximized ? settings.mRegular : settings.mMaximized; MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize(); - const float x = rect.mX * viewSize.width; - const float y = rect.mY * viewSize.height; - const float w = rect.mW * viewSize.width; - const float h = rect.mH * viewSize.height; + const int x = static_cast(rect.mX * viewSize.width); + const int y = static_cast(rect.mY * viewSize.height); + const int w = static_cast(rect.mW * viewSize.width); + const int h = static_cast(rect.mH * viewSize.height); MyGUI::Window* window = mMainWidget->castType(); window->setCoord(x, y, w, h); @@ -296,7 +296,7 @@ namespace MWGui const ESM::RefId& sound = item.mBase.getClass().getDownSoundId(item.mBase); MWWorld::Ptr object = item.mBase; - int count = item.mCount; + size_t count = item.mCount; bool shift = MyGUI::InputManager::getInstance().isShiftPressed(); if (MyGUI::InputManager::getInstance().isControlPressed()) @@ -347,7 +347,7 @@ namespace MWGui message = "#{sDrop}"; std::string name{ object.getClass().getName(object) }; name += MWGui::ToolTips::getSoulString(object.getCellRef()); - dialog->openCountDialog(name, message, count); + dialog->openCountDialog(name, message, static_cast(count)); dialog->eventOkClicked.clear(); if (mTrading || mPendingControllerAction == ControllerAction::Sell) dialog->eventOkClicked += MyGUI::newDelegate(this, &InventoryWindow::sellItem); @@ -414,9 +414,9 @@ namespace MWGui int newIndex = -1; for (size_t i = 0; i < mTradeModel->getItemCount(); ++i) { - if (mTradeModel->getItem(i).mBase == newStack) + if (mTradeModel->getItem(static_cast(i)).mBase == newStack) { - newIndex = i; + newIndex = static_cast(i); break; } } @@ -431,21 +431,21 @@ namespace MWGui void InventoryWindow::dragItem(MyGUI::Widget* /*sender*/, std::size_t count) { - ensureSelectedItemUnequipped(count); + ensureSelectedItemUnequipped(static_cast(count)); mDragAndDrop->startDrag(mSelectedItem, mSortModel, mTradeModel, mItemView, count); notifyContentChanged(); } void InventoryWindow::transferItem(MyGUI::Widget* /*sender*/, std::size_t count) { - ensureSelectedItemUnequipped(count); + ensureSelectedItemUnequipped(static_cast(count)); mItemTransfer->apply(mTradeModel->getItem(mSelectedItem), count, *mItemView); notifyContentChanged(); } void InventoryWindow::sellItem(MyGUI::Widget* /*sender*/, std::size_t count) { - ensureSelectedItemUnequipped(count); + ensureSelectedItemUnequipped(static_cast(count)); const ItemStack& item = mTradeModel->getItem(mSelectedItem); const ESM::RefId& sound = item.mBase.getClass().getUpSoundId(item.mBase); MWBase::Environment::get().getWindowManager()->playSound(sound); @@ -652,7 +652,7 @@ namespace MWGui MWWorld::InventoryStore& invStore = mPtr.getClass().getInventoryStore(mPtr); auto [eqSlots, canStack] = ptr.getClass().getEquipmentSlots(ptr); - int useCount = isFromDragAndDrop ? mDragAndDrop->mDraggedCount : ptr.getCellRef().getCount(); + int useCount = isFromDragAndDrop ? static_cast(mDragAndDrop->mDraggedCount) : ptr.getCellRef().getCount(); if (!eqSlots.empty()) { @@ -714,9 +714,9 @@ namespace MWGui for (size_t i = 0; i < mTradeModel->getItemCount(); ++i) { - if (mTradeModel->getItem(i).mBase == itemSelected) + if (mTradeModel->getItem(static_cast(i)).mBase == itemSelected) { - onItemSelectedFromSourceModel(i); + onItemSelectedFromSourceModel(static_cast(i)); return; } } @@ -726,7 +726,7 @@ namespace MWGui MWWorld::Ptr InventoryWindow::getAvatarSelectedItem(int x, int y) { - const osg::Vec2f viewportCoords = mapPreviewWindowToViewport(x, y); + const osg::Vec2i viewportCoords = mapPreviewWindowToViewport(x, y); int slot = mPreview->getSlotSelected(viewportCoords.x(), viewportCoords.y()); if (slot == -1) @@ -843,7 +843,7 @@ namespace MWGui size_t i = 0; for (; i < mTradeModel->getItemCount(); ++i) { - if (mTradeModel->getItem(i).mBase == newObject) + if (mTradeModel->getItem(static_cast(i)).mBase == newObject) break; } if (i == mTradeModel->getItemCount()) @@ -854,13 +854,13 @@ namespace MWGui if (MyGUI::InputManager::getInstance().isAltPressed()) { - const MWWorld::Ptr item = mTradeModel->getItem(i).mBase; + const MWWorld::Ptr item = mTradeModel->getItem(static_cast(i)).mBase; MWBase::Environment::get().getWindowManager()->playSound(item.getClass().getDownSoundId(item)); mItemView->update(); } else { - mDragAndDrop->startDrag(i, mSortModel, mTradeModel, mItemView, count); + mDragAndDrop->startDrag(static_cast(i), mSortModel, mTradeModel, mItemView, count); } MWBase::Environment::get().getWindowManager()->updateSpellWindow(); @@ -901,7 +901,7 @@ namespace MWGui for (size_t i = 0; i < model.getItemCount(); ++i) { cycled += incr; - cycled = (cycled + model.getItemCount()) % model.getItemCount(); + cycled = static_cast((cycled + model.getItemCount()) % model.getItemCount()); MWWorld::Ptr item = model.getItem(cycled).mBase; @@ -946,18 +946,19 @@ namespace MWGui const MyGUI::IntSize previewWindowSize = mAvatarImage->getSize(); const float scale = MWBase::Environment::get().getWindowManager()->getScalingFactor(); - return MyGUI::IntSize(std::min(mPreview->getTextureWidth(), previewWindowSize.width * scale), - std::min(mPreview->getTextureHeight(), previewWindowSize.height * scale)); + return MyGUI::IntSize(std::min(mPreview->getTextureWidth(), static_cast(previewWindowSize.width * scale)), + std::min(mPreview->getTextureHeight(), static_cast(previewWindowSize.height * scale))); } - osg::Vec2f InventoryWindow::mapPreviewWindowToViewport(int x, int y) const + osg::Vec2i InventoryWindow::mapPreviewWindowToViewport(int x, int y) const { const MyGUI::IntSize previewWindowSize = mAvatarImage->getSize(); - const float normalisedX = x / std::max(1.0f, previewWindowSize.width); - const float normalisedY = y / std::max(1.0f, previewWindowSize.height); + const float normalisedX = x / float(std::max(1, previewWindowSize.width)); + const float normalisedY = y / float(std::max(1, previewWindowSize.height)); const MyGUI::IntSize viewport = getPreviewViewportSize(); - return osg::Vec2f(normalisedX * float(viewport.width - 1), (1.0 - normalisedY) * float(viewport.height - 1)); + return osg::Vec2i(static_cast(normalisedX * (viewport.width - 1)), + static_cast((1 - normalisedY) * (viewport.height - 1))); } ControllerButtons* InventoryWindow::getControllerButtons() diff --git a/apps/openmw/mwgui/inventorywindow.hpp b/apps/openmw/mwgui/inventorywindow.hpp index 1b0392d28b..5442b3271f 100644 --- a/apps/openmw/mwgui/inventorywindow.hpp +++ b/apps/openmw/mwgui/inventorywindow.hpp @@ -158,7 +158,7 @@ namespace MWGui void updateArmorRating(); MyGUI::IntSize getPreviewViewportSize() const; - osg::Vec2f mapPreviewWindowToViewport(int x, int y) const; + osg::Vec2i mapPreviewWindowToViewport(int x, int y) const; void adjustPanes(); diff --git a/apps/openmw/mwgui/itemview.cpp b/apps/openmw/mwgui/itemview.cpp index 89d764c845..69f52409e2 100644 --- a/apps/openmw/mwgui/itemview.cpp +++ b/apps/openmw/mwgui/itemview.cpp @@ -54,7 +54,7 @@ namespace MWGui int maxHeight = mScrollView->getHeight(); mRows = std::max(maxHeight / 42, 1); - mItemCount = dragArea->getChildCount(); + mItemCount = static_cast(dragArea->getChildCount()); bool showScrollbar = static_cast(std::ceil(mItemCount / float(mRows))) > mScrollView->getWidth() / 42; if (showScrollbar) { @@ -126,7 +126,7 @@ namespace MWGui if (item.mType == ItemStack::Type_Equipped) state = ItemWidget::Equip; itemWidget->setItem(item.mBase, state); - itemWidget->setCount(item.mCount); + itemWidget->setCount(static_cast(item.mCount)); itemWidget->eventMouseButtonClick += MyGUI::newDelegate(this, &ItemView::onSelectedItem); itemWidget->eventMouseWheel += MyGUI::newDelegate(this, &ItemView::onMouseWheelMoved); diff --git a/apps/openmw/mwgui/itemwidget.cpp b/apps/openmw/mwgui/itemwidget.cpp index 5e47577b27..801ec2d0c2 100644 --- a/apps/openmw/mwgui/itemwidget.cpp +++ b/apps/openmw/mwgui/itemwidget.cpp @@ -207,10 +207,12 @@ namespace MWGui scale = found->second; } + const int diameter = static_cast(44 * scale); if (state == Barter && !isMagic) - setFrame(backgroundTex, MyGUI::IntCoord(2 * scale, 2 * scale, 44 * scale, 44 * scale)); + setFrame(backgroundTex, + MyGUI::IntCoord(static_cast(2 * scale), static_cast(2 * scale), diameter, diameter)); else - setFrame(backgroundTex, MyGUI::IntCoord(0, 0, 44 * scale, 44 * scale)); + setFrame(backgroundTex, MyGUI::IntCoord(0, 0, diameter, diameter)); setIcon(ptr); } diff --git a/apps/openmw/mwgui/mapwindow.cpp b/apps/openmw/mwgui/mapwindow.cpp index 094c348981..cb0f197718 100644 --- a/apps/openmw/mwgui/mapwindow.cpp +++ b/apps/openmw/mwgui/mapwindow.cpp @@ -917,7 +917,7 @@ namespace MWGui const int localWidgetSize = Settings::map().mLocalMapWidgetSize; const bool zoomOut = rel < 0; const bool zoomIn = !zoomOut; - const double speedDiff = zoomOut ? 1.0 / speed : speed; + const float speedDiff = zoomOut ? 1.f / speed : speed; const float currentMinLocalMapZoom = std::max({ (float(Settings::map().mGlobalMapCellSize) * 4.f) / float(localWidgetSize), @@ -985,8 +985,8 @@ namespace MWGui Settings::map().mGlobal ? updateGlobalMap() : updateLocalMap(); - map->setViewOffset(MyGUI::IntPoint(std::round(centerView.left * speedDiff) + cursor.left, - std::round(centerView.top * speedDiff) + cursor.top)); + map->setViewOffset(MyGUI::IntPoint(static_cast(std::round(centerView.left * speedDiff) + cursor.left), + static_cast(std::round(centerView.top * speedDiff) + cursor.top))); } void MapWindow::updateGlobalMap() diff --git a/apps/openmw/mwgui/pickpocketitemmodel.cpp b/apps/openmw/mwgui/pickpocketitemmodel.cpp index 8756427589..c2caeac8ea 100644 --- a/apps/openmw/mwgui/pickpocketitemmodel.cpp +++ b/apps/openmw/mwgui/pickpocketitemmodel.cpp @@ -34,7 +34,7 @@ namespace MWGui for (size_t i = 0; i < mSourceModel->getItemCount(); ++i) { if (Misc::Rng::roll0to99(prng) > chance) - mHiddenItems.push_back(mSourceModel->getItem(i)); + mHiddenItems.push_back(mSourceModel->getItem(static_cast(i))); } } } @@ -64,7 +64,7 @@ namespace MWGui mItems.clear(); for (size_t i = 0; i < mSourceModel->getItemCount(); ++i) { - const ItemStack& item = mSourceModel->getItem(i); + const ItemStack& item = mSourceModel->getItem(static_cast(i)); // Bound items may not be stolen if (item.mFlags & ItemStack::Flag_Bound) diff --git a/apps/openmw/mwgui/postprocessorhud.cpp b/apps/openmw/mwgui/postprocessorhud.cpp index 401770179d..1a1f838abc 100644 --- a/apps/openmw/mwgui/postprocessorhud.cpp +++ b/apps/openmw/mwgui/postprocessorhud.cpp @@ -172,16 +172,16 @@ namespace MWGui if (selected == MyGUI::ITEM_NONE) return; - int index = direction == Direction::Up ? static_cast(selected) - 1 : selected + 1; - index = std::clamp(index, 0, mActiveList->getItemCount() - 1); + size_t index = direction == Direction::Up ? selected - 1 : selected + 1; + index = std::clamp(index, 0, mActiveList->getItemCount() - 1); - if (static_cast(index) != selected) + if (index != selected) { auto technique = getTechnique(*mActiveList, selected); if (technique->getDynamic() || technique->getInternal()) return; - if (processor->enableTechnique(std::move(technique), index - mOffset) + if (processor->enableTechnique(std::move(technique), static_cast(index) - mOffset) != MWRender::PostProcessor::Status_Error) processor->saveChain(); } diff --git a/apps/openmw/mwgui/quickkeysmenu.cpp b/apps/openmw/mwgui/quickkeysmenu.cpp index e7a0c4ca8b..40cd1cd00e 100644 --- a/apps/openmw/mwgui/quickkeysmenu.cpp +++ b/apps/openmw/mwgui/quickkeysmenu.cpp @@ -324,8 +324,7 @@ namespace MWGui std::string path = effect->mIcon; std::replace(path.begin(), path.end(), '/', '\\'); - int slashPos = path.rfind('\\'); - path.insert(slashPos + 1, "b_"); + path.insert(path.rfind('\\') + 1, "b_"); path = Misc::ResourceHelpers::correctIconPath(path, MWBase::Environment::get().getResourceSystem()->getVFS()); float scale = 1.f; diff --git a/apps/openmw/mwgui/spellcreationdialog.cpp b/apps/openmw/mwgui/spellcreationdialog.cpp index f2571a01d5..202c9341b2 100644 --- a/apps/openmw/mwgui/spellcreationdialog.cpp +++ b/apps/openmw/mwgui/spellcreationdialog.cpp @@ -346,7 +346,7 @@ namespace MWGui void EditEffectDialog::onMagnitudeMinChanged(MyGUI::ScrollBar* sender, size_t pos) { mMagnitudeMinValue->setCaption(MyGUI::utility::toString(pos + 1)); - mEffect.mMagnMin = pos + 1; + mEffect.mMagnMin = static_cast(pos + 1); // trigger the check again (see below) onMagnitudeMaxChanged(mMagnitudeMaxSlider, mMagnitudeMaxSlider->getScrollPosition()); @@ -364,7 +364,7 @@ namespace MWGui sender->setScrollPosition(pos); } - mEffect.mMagnMax = pos + 1; + mEffect.mMagnMax = static_cast(pos + 1); const std::string to{ MWBase::Environment::get().getWindowManager()->getGameSettingString("sTo", "-") }; mMagnitudeMaxValue->setCaption(to + " " + MyGUI::utility::toString(pos + 1)); @@ -375,7 +375,7 @@ namespace MWGui void EditEffectDialog::onDurationChanged(MyGUI::ScrollBar* sender, size_t pos) { mDurationValue->setCaption(MyGUI::utility::toString(pos + 1)); - mEffect.mDuration = pos + 1; + mEffect.mDuration = static_cast(pos + 1); eventEffectModified(mEffect); } diff --git a/apps/openmw/mwgui/spellview.cpp b/apps/openmw/mwgui/spellview.cpp index 57ba077f6e..de18b25248 100644 --- a/apps/openmw/mwgui/spellview.cpp +++ b/apps/openmw/mwgui/spellview.cpp @@ -188,7 +188,7 @@ namespace MWGui } // special case, look for spells added to model that are beyond last updatable item - SpellModel::ModelIndex topSpellIndex = mModel->getItemCount() - 1; + auto topSpellIndex = static_cast(mModel->getItemCount() - 1); if (fullUpdateRequired || ((0 <= topSpellIndex) && (maxSpellIndexFound < topSpellIndex))) { update(); diff --git a/apps/openmw/mwgui/tooltips.cpp b/apps/openmw/mwgui/tooltips.cpp index 3abd238344..a1bb907a95 100644 --- a/apps/openmw/mwgui/tooltips.cpp +++ b/apps/openmw/mwgui/tooltips.cpp @@ -196,7 +196,8 @@ namespace MWGui = *focus->getUserData>(); mFocusObject = pair.second->getItem(pair.first).mBase; bool isAllowedToUse = pair.second->allowedToUseItems(); - tooltipSize = getToolTipViaPtr(pair.second->getItem(pair.first).mCount, false, !isAllowedToUse); + tooltipSize = getToolTipViaPtr( + static_cast(pair.second->getItem(pair.first).mCount), false, !isAllowedToUse); } else if (type == "ToolTipInfo") { diff --git a/apps/openmw/mwgui/tradeitemmodel.cpp b/apps/openmw/mwgui/tradeitemmodel.cpp index 660e940367..d4af1dc991 100644 --- a/apps/openmw/mwgui/tradeitemmodel.cpp +++ b/apps/openmw/mwgui/tradeitemmodel.cpp @@ -152,14 +152,14 @@ namespace MWGui size_t i = 0; for (; i < sourceModel->getItemCount(); ++i) { - if (itemStack.mBase == sourceModel->getItem(i).mBase) + if (itemStack.mBase == sourceModel->getItem(static_cast(i)).mBase) break; } if (i == sourceModel->getItemCount()) throw std::runtime_error("The borrowed item disappeared"); - sourceModel->moveItem( - sourceModel->getItem(i), itemStack.mCount, this, !Settings::game().mPreventMerchantEquipping); + sourceModel->moveItem(sourceModel->getItem(static_cast(i)), itemStack.mCount, this, + !Settings::game().mPreventMerchantEquipping); } mBorrowedToUs.clear(); mBorrowedFromUs.clear(); @@ -177,7 +177,7 @@ namespace MWGui // add regular items for (size_t i = 0; i < mSourceModel->getItemCount(); ++i) { - ItemStack item = mSourceModel->getItem(i); + ItemStack item = mSourceModel->getItem(static_cast(i)); if (!mMerchant.isEmpty()) { MWWorld::Ptr base = item.mBase; diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index 259b6ab36c..e1f9340fb8 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -383,7 +383,7 @@ namespace MWGui void TradeWindow::onOfferSubmitted(MyGUI::Widget* /*sender*/, size_t offerAmount) { - mCurrentBalance = offerAmount * (mCurrentBalance < 0 ? -1 : 1); + mCurrentBalance = static_cast(offerAmount) * (mCurrentBalance < 0 ? -1 : 1); updateLabels(); onOfferButtonClicked(mOfferButton); } @@ -622,7 +622,7 @@ namespace MWGui const std::vector& playerBorrowed = playerTradeModel->getItemsBorrowedToUs(); for (const ItemStack& itemStack : playerBorrowed) { - const int basePrice = getEffectiveValue(itemStack.mBase, itemStack.mCount); + const int basePrice = getEffectiveValue(itemStack.mBase, static_cast(itemStack.mCount)); const int cap = static_cast(std::max(1.f, 0.75f * basePrice)); // Minimum buying price -- 75% of the base const int buyingPrice @@ -633,7 +633,7 @@ namespace MWGui const std::vector& merchantBorrowed = mTradeModel->getItemsBorrowedToUs(); for (const ItemStack& itemStack : merchantBorrowed) { - const int basePrice = getEffectiveValue(itemStack.mBase, itemStack.mCount); + const int basePrice = getEffectiveValue(itemStack.mBase, static_cast(itemStack.mCount)); const int cap = static_cast(std::max(1.f, 0.75f * basePrice)); // Maximum selling price -- 75% of the base const int sellingPrice diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 265b97eacc..e6828107a7 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -117,7 +117,8 @@ namespace MWRender const float fov = Settings::camera().mFieldOfView; constexpr double clipFudgeMin = 2.5; // minimum offset of clip plane constexpr double clipFudgeScale = -15000.0; - double clipFudge = std::abs(std::abs((*mCullPlane)[3]) - eyePoint.z()) * fov / clipFudgeScale - clipFudgeMin; + double clipFudge + = std::abs(std::abs((*mCullPlane)[3]) - eyePoint.z()) * fov / clipFudgeScale - clipFudgeMin; modelViewMatrix->preMultTranslate(mCullPlane->getNormal() * clipFudge); cv->pushModelViewMatrix(modelViewMatrix, osg::Transform::RELATIVE_RF); diff --git a/apps/openmw/mwscript/interpretercontext.cpp b/apps/openmw/mwscript/interpretercontext.cpp index 4c890db12b..ec4018d94f 100644 --- a/apps/openmw/mwscript/interpretercontext.cpp +++ b/apps/openmw/mwscript/interpretercontext.cpp @@ -171,7 +171,7 @@ namespace MWScript if (!mLocals) throw std::runtime_error("local variables not available in this context"); - mLocals->mShorts.at(index) = value; + mLocals->mShorts.at(index) = static_cast(value); } void InterpreterContext::setLocalLong(int index, int value) @@ -483,7 +483,7 @@ namespace MWScript { Locals& locals = getMemberLocals(global, id); - locals.mShorts[findLocalVariableIndex(id, name, 's')] = value; + locals.mShorts[findLocalVariableIndex(id, name, 's')] = static_cast(value); } void InterpreterContext::setMemberLong(ESM::RefId id, std::string_view name, int value, bool global) diff --git a/apps/openmw/mwscript/locals.cpp b/apps/openmw/mwscript/locals.cpp index 3bd4e82059..9e072e79bb 100644 --- a/apps/openmw/mwscript/locals.cpp +++ b/apps/openmw/mwscript/locals.cpp @@ -187,29 +187,28 @@ namespace MWScript const Compiler::Locals& declarations = MWBase::Environment::get().getScriptManager()->getLocals(script); int index = 0, numshorts = 0, numlongs = 0; - for (unsigned int v = 0; v < locals.mVariables.size(); ++v) + for (const auto& [_, value] : locals.mVariables) { - ESM::VarType type = locals.mVariables[v].second.getType(); + ESM::VarType type = value.getType(); if (type == ESM::VT_Short) ++numshorts; else if (type == ESM::VT_Int) ++numlongs; } - for (std::vector>::const_iterator iter = locals.mVariables.begin(); - iter != locals.mVariables.end(); ++iter, ++index) + for (const auto& [name, value] : locals.mVariables) { - if (iter->first.empty()) + if (name.empty()) { // no variable names available (this will happen for legacy, i.e. ESS-imported savegames only) try { if (index >= numshorts + numlongs) - mFloats.at(index - (numshorts + numlongs)) = iter->second.getFloat(); + mFloats.at(index - (numshorts + numlongs)) = value.getFloat(); else if (index >= numshorts) - mLongs.at(index - numshorts) = iter->second.getInteger(); + mLongs.at(index - numshorts) = value.getInteger(); else - mShorts.at(index) = iter->second.getInteger(); + mShorts.at(index) = static_cast(value.getInteger()); } catch (std::exception& e) { @@ -220,8 +219,8 @@ namespace MWScript } else { - char type = declarations.getType(iter->first); - int index2 = declarations.getIndex(iter->first); + char type = declarations.getType(name); + int index2 = declarations.getIndex(name); // silently ignore locals that don't exist anymore if (type == ' ' || index2 == -1) @@ -232,13 +231,13 @@ namespace MWScript switch (type) { case 's': - mShorts.at(index2) = iter->second.getInteger(); + mShorts.at(index2) = static_cast(value.getInteger()); break; case 'l': - mLongs.at(index2) = iter->second.getInteger(); + mLongs.at(index2) = value.getInteger(); break; case 'f': - mFloats.at(index2) = iter->second.getFloat(); + mFloats.at(index2) = value.getFloat(); break; } } diff --git a/apps/openmw/mwscript/skyextensions.cpp b/apps/openmw/mwscript/skyextensions.cpp index b354bb5ce2..35faf6cc99 100644 --- a/apps/openmw/mwscript/skyextensions.cpp +++ b/apps/openmw/mwscript/skyextensions.cpp @@ -106,7 +106,7 @@ namespace MWScript chances.reserve(10); while (arg0 > 0) { - chances.push_back(std::clamp(runtime[0].mInteger, 0, 100)); + chances.push_back(static_cast(std::clamp(runtime[0].mInteger, 0, 100))); runtime.pop(); arg0--; }