void CUIMpTradeWnd::OnBtnPistolAmmoClicked(CUIWindow* w, void* d) { CheckDragItemToDestroy (); CUIDragDropListEx* res = m_list[e_pistol]; CUICellItem* ci = (res->ItemsCount())?res->GetItemIdx(0):NULL; if(!ci) return; CInventoryItem* ii = (CInventoryItem*)ci->m_pData; CWeapon* wpn = smart_cast<CWeapon*>(ii); R_ASSERT (wpn); u32 ammo_idx = (pInput->iGetAsyncKeyState(DIK_LSHIFT))?1:0; if(wpn->m_ammoTypes.size() < ammo_idx+1) return; const shared_str& ammo_name = wpn->m_ammoTypes[ammo_idx]; if ( NULL==m_store_hierarchy->FindItem(ammo_name) ) return; SBuyItemInfo* pitem = CreateItem (ammo_name, SBuyItemInfo::e_undefined, false); bool b_res = TryToBuyItem (pitem, bf_normal, NULL ); if(!b_res) DestroyItem (pitem); }
void CUIMpTradeWnd::OnBtnRifleSilencerClicked(CUIWindow* w, void* d) { CheckDragItemToDestroy (); CUIDragDropListEx* res = m_list[e_rifle]; CUICellItem* ci = (res->ItemsCount())?res->GetItemIdx(0):NULL; if(!ci) return; SBuyItemInfo* pitem = FindItem(ci); if(IsAddonAttached(pitem, at_silencer)) {//detach SellItemAddons (pitem,at_silencer); }else if(CanAttachAddon(pitem, at_silencer)) {//attach shared_str addon_name = GetAddonNameSect(pitem,at_silencer); if ( NULL==m_store_hierarchy->FindItem(addon_name) ) return; SBuyItemInfo* addon_item = CreateItem(addon_name, SBuyItemInfo::e_undefined, false); bool b_res_addon = TryToBuyItem(addon_item, bf_normal, pitem ); if(!b_res_addon) DestroyItem (addon_item); } }
void CUIMpTradeWnd::OnBtnRifleAmmo2Clicked(CUIWindow* w, void* d) { CheckDragItemToDestroy (); CUIDragDropListEx* res = m_list[e_rifle]; CUICellItem* ci = (res->ItemsCount())?res->GetItemIdx(0):NULL; if(!ci) return; CInventoryItem* ii = (CInventoryItem*)ci->m_pData; CWeaponMagazinedWGrenade* wpn = smart_cast<CWeaponMagazinedWGrenade*>(ii); if(!wpn) return; u32 ammo_idx = 0; const shared_str& ammo_name = wpn->m_ammoTypes2[ammo_idx]; if ( NULL==m_store_hierarchy->FindItem(ammo_name) ) return; SBuyItemInfo* pitem = CreateItem (ammo_name, SBuyItemInfo::e_undefined, false); bool b_res = TryToBuyItem (pitem, bf_normal, NULL); if(!b_res) DestroyItem (pitem); }
void CUIMpTradeWnd::OnBtnSellClicked(CUIWindow* w, void* d) { CheckDragItemToDestroy (); CUIDragDropListEx* pList = m_list[e_player_bag]; SBuyItemInfo* iinfo = NULL; while( pList->ItemsCount() ) { CUICellItem* ci = pList->GetItemIdx(0); iinfo = FindItem(ci); bool b_ok = true; SBuyItemInfo* tmp_iinfo = NULL; b_ok = TryToSellItem(iinfo, true, tmp_iinfo); R_ASSERT (b_ok); } }