Decompile fn_16208 (CUIProbabilityTable::SetItem)
Batch #8525 by youko: 0 byte-identical, 1 confirmed by peer review. - fn_16208 CUIProbabilityTable::SetItem: logic confirmed by peer review Peer-reviewed-by: eAthena, dori Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
parent
b520323df2
commit
f194039e13
1 changed files with 46 additions and 0 deletions
|
|
@ -50,6 +50,52 @@ int CUIProbabilityTable::SendMsg(UIWindow* sender, int message, std::intptr_t ar
|
|||
}
|
||||
|
||||
// OFFSET: 0x00A4E4D0
|
||||
// FUNCTION: fn_16208
|
||||
void CUIProbabilityTable::SetItem(int itemId) {
|
||||
this->m_itemId = itemId;
|
||||
|
||||
{
|
||||
ITEM_INFO item;
|
||||
item.SetItemId(itemId);
|
||||
CUIStaticText* label = this->m_itemName;
|
||||
const std::string name = item.DisplayName(0);
|
||||
label->SetText(name.c_str(), name.size());
|
||||
}
|
||||
|
||||
this->m_list->ClearData();
|
||||
|
||||
if (!Singleton<NEO_PACKAGEITEM::CNeoPackageItemMgr>::s_instance) {
|
||||
Singleton<NEO_PACKAGEITEM::CNeoPackageItemMgr>::s_instance = new (std::nothrow) NEO_PACKAGEITEM::CNeoPackageItemMgr;
|
||||
}
|
||||
|
||||
std::optional<std::map<int, NEO_PACKAGEITEM::PackageGroup>*> package = Singleton<NEO_PACKAGEITEM::CNeoPackageItemMgr>::s_instance->FindPackage(itemId);
|
||||
if (!package) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::uint32_t color = 0xFFFFEFE7;
|
||||
for (const auto& group : **package) {
|
||||
color = color == 0xFFFFEFE7 ? 0xFFFFFFFF : 0xFFFFEFE7;
|
||||
|
||||
std::list<NEO_PACKAGEITEM::PackageEntry> entries = group.second.items;
|
||||
entries.sort([](const NEO_PACKAGEITEM::PackageEntry& left, const NEO_PACKAGEITEM::PackageEntry& right) { return left.probability < right.probability; });
|
||||
|
||||
for (const NEO_PACKAGEITEM::PackageEntry& entry : entries) {
|
||||
long long value = static_cast<long long>(std::pow(10.0, 6.0));
|
||||
if (group.first != 0) {
|
||||
value = (static_cast<long long>(std::pow(10.0, 7.0) * entry.probability / group.second.totalProbability) + 5) / 10;
|
||||
}
|
||||
|
||||
ProbabilityTable::CItemData data;
|
||||
data.color = color;
|
||||
data.name = entry.name;
|
||||
data.probability = static_cast<double>(value) / 10000.0;
|
||||
this->m_list->data.push_back(std::move(data));
|
||||
}
|
||||
}
|
||||
|
||||
this->m_list->UpdateScrollBar();
|
||||
}
|
||||
|
||||
// OFFSET: 0x00A4EBD0
|
||||
// FUNCTION: fn_16210
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue