void TryToDefuseWeapon(CWeapon const * weapon, TIItemContainer const & all_items, buffer_vector<shared_str> & dest_ammo) { if (!weapon) return; CWeaponMagazinedWGrenade const * tmp_gl_weapon = smart_cast<CWeaponMagazinedWGrenade const *>(weapon); if (weapon->IsGrenadeLauncherAttached()) TryToDefuseGrenadeLauncher(tmp_gl_weapon, all_items, dest_ammo); xr_vector<shared_str> const * tmp_ammo_types = NULL; u8 const * tmp_ammo_type = NULL; u16 ammo_elapsed = 0; if (tmp_gl_weapon && tmp_gl_weapon->m_bGrenadeMode) { tmp_ammo_types = &tmp_gl_weapon->m_ammoTypes2; tmp_ammo_type = &tmp_gl_weapon->m_ammoType2; ammo_elapsed = (u16)tmp_gl_weapon->m_magazine2.size(); } else { tmp_ammo_types = &weapon->m_ammoTypes; tmp_ammo_type = &weapon->m_ammoType; ammo_elapsed = (u16)weapon->GetAmmoElapsed(); } if (tmp_ammo_types->size() <= u32(*tmp_ammo_type)) return; shared_str ammo_section = (*tmp_ammo_types)[*tmp_ammo_type]; VERIFY2(ammo_section.size(), make_string( "ammo type of [%s] hasn't section name", weapon->cName().c_str()).c_str()); if (!ammo_section.size()) return; VERIFY(pSettings->line_exist(ammo_section.c_str(), "box_size")); u16 ammo_box_size = pSettings->r_u16(ammo_section.c_str(), "box_size"); while (ammo_elapsed >= ammo_box_size) { dest_ammo.push_back(ammo_section); ammo_elapsed = ammo_elapsed - ammo_box_size; } if (!ammo_elapsed) return; AmmoSearcherPredicate ammo_completitor(ammo_elapsed, ammo_section); TIItemContainer::const_iterator temp_iter = std::find_if( all_items.begin(), all_items.end(), ammo_completitor); if (temp_iter == all_items.end()) return; CWeaponAmmo* temp_ammo = smart_cast<CWeaponAmmo*>(*temp_iter); R_ASSERT2(temp_ammo, "failed to create ammo after defusing weapon"); temp_ammo->m_boxCurr = temp_ammo->m_boxSize; }
void CUITradeWnd::FillList (TIItemContainer& cont, CUIDragDropListEx& dragDropList, bool do_colorize) { TIItemContainer::iterator it = cont.begin(); TIItemContainer::iterator it_e = cont.end(); for(; it != it_e; ++it) { CUICellItem* itm = create_cell_item (*it); if(do_colorize) ColorizeItem (itm, CanMoveToOther(*it)); dragDropList.SetItem (itm); } }