bool QueueEventProcessing(Funds & funds, u8 mul) { const s8 index = GetIndexClick(); if(index >= 0) { u8 rs = Resource::FromIndexSprite2(index); u8 step = rs == Resource::GOLD ? 100 : 1; u32 cur = resource.Get(rs); u32 sel = cur; u32 max = mul > 1 ? (funds.Get(rs) + resource.Get(rs)) / mul : funds.Get(rs) + resource.Get(rs); if(0 == mul) { Dialog::Message("", "First select recipients!", Font::BIG, Dialog::OK); } else if(0 == max) { std::string msg = _("You cannot select %{resource}!"); String::Replace(msg, "%{resource}", Resource::String(rs)); Dialog::Message("", msg, Font::BIG, Dialog::OK); } else { std::string msg = _("Select count %{resource}:"); String::Replace(msg, "%{resource}", Resource::String(rs)); if(Dialog::SelectCount(msg, 0, max, sel, step) && cur != sel) { s32* from = funds.GetPtr(rs); s32* to = resource.GetPtr(rs); if(from && to) { s32 count = sel - cur; *from -= mul > 1 ? count * mul : count; *to += count; return true; } } } } return false; }