#include "UI/UIChangeMaterialWnd.h" // OFFSET: 0x005E1080 // FUNCTION: fn_03871 void UIChangeMaterialWnd_List::sub_5E1080(int delta) { int64_t newIndex = this->m_selectedIndex + delta; const int count = static_cast(this->m_items.size()); const int maxIndex = count - 1; if (newIndex >= static_cast(maxIndex)) { newIndex = maxIndex; } int targetIndex = static_cast(newIndex); if (targetIndex < this->m_scrollOffset || targetIndex >= this->m_scrollOffset + this->m_pageSize) { int newOffset = this->m_previousScrollOffset; if (targetIndex < newOffset || targetIndex >= newOffset + this->m_pageSize) { const int candidate = targetIndex - this->m_pageSize + 1; const int limit = count - this->m_pageSize; newOffset = static_cast(candidate) < static_cast(limit) ? candidate : limit; } this->m_scrollOffset = newOffset; this->sub_5E2A70(); this->m_previousScrollOffset = this->m_scrollOffset; } this->sub_5E3B80(targetIndex); } // OFFSET: 0x005E1120 // FUNCTION: fn_03872 ITEM_INFO* UIChangeMaterialWnd::GetItemAt(int x, int y) { if (this->m_resultX <= x && x <= this->m_resultX + 24 && this->m_resultY <= y && y <= this->m_resultY + 24) { return &this->m_resultItem; } for (unsigned int i = 0; i < this->m_materials.size(); ++i) { const MaterialSlotPos& pos = this->m_materialPos[i]; if (pos.x <= x && x <= pos.x + 24 && pos.y <= y && y <= pos.y + 24) { return &this->m_materials[i]; } } return nullptr; } // OFFSET: 0x005E1300 // FUNCTION: fn_03874 bool UIChangeMaterialWnd::Slot02() { return true; } // OFFSET: 0x005E1310 // FUNCTION: fn_03875 void UIChangeMaterialWnd_List::Move(int x, int y) { UIWindow::Move(x, y); }