1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-12-01 04:04:32 +00:00

Address more conversion warnings in the engine

This commit is contained in:
Evil Eye 2025-09-21 17:45:38 +02:00
parent fc700c61fd
commit bcad4a7fd5
25 changed files with 176 additions and 176 deletions

View file

@ -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<int>(
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);

View file

@ -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<int>(player.getClass().getCreatureStats(player).getAttribute(attribute).getModified());
}
case ESM::DialogueCondition::Function_PcBlock:
case ESM::DialogueCondition::Function_PcArmorer:

View file

@ -216,7 +216,7 @@ namespace MWGui
std::set<std::string> 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<ItemModel::ModelIndex>(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<int32_t>(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<short>(effectKey.mId);
const ESM::MagicEffect* magicEffect
= MWBase::Environment::get().getESMStore()->get<ESM::MagicEffect>().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;
}
}

View file

@ -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<MyGUI::GlyphInfo> info = getGlyphInfo(mFont, ch);
@ -828,7 +893,7 @@ namespace MWGui
mCursor.left += static_cast<int>(info->bearingX + info->advance);
}
void emitSpace(wchar_t ch)
void emitSpace(MyGUI::Char ch)
{
std::optional<MyGUI::GlyphInfo> info = getGlyphInfo(mFont, ch);
@ -1368,75 +1433,4 @@ namespace MWGui
factory.registerFactory<BookPageImpl>("Widget");
factory.registerFactory<PageDisplay>("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;
}
}
}

View file

@ -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<int>(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<int>(capacity));
int capacity = static_cast<int>(mPtr.getClass().getCapacity(mPtr));
float encumbrance = std::ceil(mPtr.getClass().getEncumbrance(mPtr));
mEncumbranceBar->setValue(static_cast<int>(encumbrance), capacity);
if (mModel && mModel->hasProfit(mPtr))
{

View file

@ -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)
{

View file

@ -121,7 +121,7 @@ namespace MWGui
void ContainerItemModel::removeItem(const ItemStack& item, size_t count)
{
int toRemove = count;
int toRemove = static_cast<int>(count);
for (auto& source : mItemSources)
{

View file

@ -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<ItemModel::ModelIndex>(i)).mBase == item)
{
newIndex = i;
newIndex = static_cast<ItemModel::ModelIndex>(i);
break;
}
}
@ -82,7 +82,7 @@ namespace MWGui
mDraggedWidget->setItem(mItem.mBase);
mDraggedWidget->setNeedMouseFocus(false);
mDraggedWidget->setCount(count);
mDraggedWidget->setCount(static_cast<int>(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<int>(mDraggedCount));
mSourceSortModel->clearDragItems();
mSourceSortModel->addDragItem(mItem.mBase, mDraggedCount);
}

View file

@ -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<int>(rect.mX * viewSize.width);
const int y = static_cast<int>(rect.mY * viewSize.height);
const int w = static_cast<int>(rect.mW * viewSize.width);
const int h = static_cast<int>(rect.mH * viewSize.height);
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
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<int>(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<ItemModel::ModelIndex>(i)).mBase == newStack)
{
newIndex = i;
newIndex = static_cast<int>(i);
break;
}
}
@ -431,21 +431,21 @@ namespace MWGui
void InventoryWindow::dragItem(MyGUI::Widget* /*sender*/, std::size_t count)
{
ensureSelectedItemUnequipped(count);
ensureSelectedItemUnequipped(static_cast<int>(count));
mDragAndDrop->startDrag(mSelectedItem, mSortModel, mTradeModel, mItemView, count);
notifyContentChanged();
}
void InventoryWindow::transferItem(MyGUI::Widget* /*sender*/, std::size_t count)
{
ensureSelectedItemUnequipped(count);
ensureSelectedItemUnequipped(static_cast<int>(count));
mItemTransfer->apply(mTradeModel->getItem(mSelectedItem), count, *mItemView);
notifyContentChanged();
}
void InventoryWindow::sellItem(MyGUI::Widget* /*sender*/, std::size_t count)
{
ensureSelectedItemUnequipped(count);
ensureSelectedItemUnequipped(static_cast<int>(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<int>(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<ItemModel::ModelIndex>(i)).mBase == itemSelected)
{
onItemSelectedFromSourceModel(i);
onItemSelectedFromSourceModel(static_cast<int>(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<ItemModel::ModelIndex>(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<ItemModel::ModelIndex>(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<int>(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<ItemModel::ModelIndex>((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<int>(mPreview->getTextureWidth(), previewWindowSize.width * scale),
std::min<int>(mPreview->getTextureHeight(), previewWindowSize.height * scale));
return MyGUI::IntSize(std::min(mPreview->getTextureWidth(), static_cast<int>(previewWindowSize.width * scale)),
std::min(mPreview->getTextureHeight(), static_cast<int>(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<float>(1.0f, previewWindowSize.width);
const float normalisedY = y / std::max<float>(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<int>(normalisedX * (viewport.width - 1)),
static_cast<int>((1 - normalisedY) * (viewport.height - 1)));
}
ControllerButtons* InventoryWindow::getControllerButtons()

View file

@ -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();

View file

@ -54,7 +54,7 @@ namespace MWGui
int maxHeight = mScrollView->getHeight();
mRows = std::max(maxHeight / 42, 1);
mItemCount = dragArea->getChildCount();
mItemCount = static_cast<int>(dragArea->getChildCount());
bool showScrollbar = static_cast<int>(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<int>(item.mCount));
itemWidget->eventMouseButtonClick += MyGUI::newDelegate(this, &ItemView::onSelectedItem);
itemWidget->eventMouseWheel += MyGUI::newDelegate(this, &ItemView::onMouseWheelMoved);

View file

@ -207,10 +207,12 @@ namespace MWGui
scale = found->second;
}
const int diameter = static_cast<int>(44 * scale);
if (state == Barter && !isMagic)
setFrame(backgroundTex, MyGUI::IntCoord(2 * scale, 2 * scale, 44 * scale, 44 * scale));
setFrame(backgroundTex,
MyGUI::IntCoord(static_cast<int>(2 * scale), static_cast<int>(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);
}

View file

@ -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<int>(std::round(centerView.left * speedDiff) + cursor.left),
static_cast<int>(std::round(centerView.top * speedDiff) + cursor.top)));
}
void MapWindow::updateGlobalMap()

View file

@ -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<ModelIndex>(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<ModelIndex>(i));
// Bound items may not be stolen
if (item.mFlags & ItemStack::Flag_Bound)

View file

@ -172,16 +172,16 @@ namespace MWGui
if (selected == MyGUI::ITEM_NONE)
return;
int index = direction == Direction::Up ? static_cast<int>(selected) - 1 : selected + 1;
index = std::clamp<int>(index, 0, mActiveList->getItemCount() - 1);
size_t index = direction == Direction::Up ? selected - 1 : selected + 1;
index = std::clamp<size_t>(index, 0, mActiveList->getItemCount() - 1);
if (static_cast<size_t>(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<int>(index) - mOffset)
!= MWRender::PostProcessor::Status_Error)
processor->saveChain();
}

View file

@ -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;

View file

@ -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<int32_t>(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<int32_t>(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<int32_t>(pos + 1);
eventEffectModified(mEffect);
}

View file

@ -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<SpellModel::ModelIndex>(mModel->getItemCount() - 1);
if (fullUpdateRequired || ((0 <= topSpellIndex) && (maxSpellIndexFound < topSpellIndex)))
{
update();

View file

@ -196,7 +196,8 @@ namespace MWGui
= *focus->getUserData<std::pair<ItemModel::ModelIndex, ItemModel*>>();
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<int>(pair.second->getItem(pair.first).mCount), false, !isAllowedToUse);
}
else if (type == "ToolTipInfo")
{

View file

@ -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<ModelIndex>(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<ModelIndex>(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<ModelIndex>(i));
if (!mMerchant.isEmpty())
{
MWWorld::Ptr base = item.mBase;

View file

@ -383,7 +383,7 @@ namespace MWGui
void TradeWindow::onOfferSubmitted(MyGUI::Widget* /*sender*/, size_t offerAmount)
{
mCurrentBalance = offerAmount * (mCurrentBalance < 0 ? -1 : 1);
mCurrentBalance = static_cast<int>(offerAmount) * (mCurrentBalance < 0 ? -1 : 1);
updateLabels();
onOfferButtonClicked(mOfferButton);
}
@ -622,7 +622,7 @@ namespace MWGui
const std::vector<ItemStack>& playerBorrowed = playerTradeModel->getItemsBorrowedToUs();
for (const ItemStack& itemStack : playerBorrowed)
{
const int basePrice = getEffectiveValue(itemStack.mBase, itemStack.mCount);
const int basePrice = getEffectiveValue(itemStack.mBase, static_cast<int>(itemStack.mCount));
const int cap
= static_cast<int>(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<ItemStack>& merchantBorrowed = mTradeModel->getItemsBorrowedToUs();
for (const ItemStack& itemStack : merchantBorrowed)
{
const int basePrice = getEffectiveValue(itemStack.mBase, itemStack.mCount);
const int basePrice = getEffectiveValue(itemStack.mBase, static_cast<int>(itemStack.mCount));
const int cap
= static_cast<int>(std::max(1.f, 0.75f * basePrice)); // Maximum selling price -- 75% of the base
const int sellingPrice

View file

@ -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);

View file

@ -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<Interpreter::Type_Short>(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<Interpreter::Type_Short>(value);
}
void InterpreterContext::setMemberLong(ESM::RefId id, std::string_view name, int value, bool global)

View file

@ -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<std::pair<std::string, ESM::Variant>>::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<Interpreter::Type_Short>(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<Interpreter::Type_Short>(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;
}
}

View file

@ -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<uint8_t>(std::clamp(runtime[0].mInteger, 0, 100)));
runtime.pop();
arg0--;
}