void CUIActorMenu::OnMesBoxYes( CUIWindow*, void* ) { switch( m_currMenuMode ) { case mmUndefined: break; case mmInventory: break; case mmTrade: break; case mmUpgrade: if ( m_repair_mode ) { RepairEffect_CurItem(); m_repair_mode = false; } else { m_pUpgradeWnd->OnMesBoxYes(); } break; case mmDeadBodySearch: break; default: R_ASSERT(0); break; } UpdateItemsPlace(); }
void CUIActorMenu::OnBtnPerformTrade(CUIWindow* w, void* d) { if ( m_pTradeActorList->ItemsCount() == 0 && m_pTradePartnerList->ItemsCount() == 0 ) { return; } int actor_money = (int)m_pActorInvOwner->get_money(); int partner_money = (int)m_pPartnerInvOwner->get_money(); int actor_price = (int)CalcItemsPrice( m_pTradeActorList, m_partner_trade, true ); int partner_price = (int)CalcItemsPrice( m_pTradePartnerList, m_partner_trade, false ); int delta_price = actor_price - partner_price; actor_money += delta_price; partner_money -= delta_price; if ( ( actor_money >= 0 ) && ( partner_money >= 0 ) && ( actor_price >= 0 || partner_price > 0 ) ) { m_partner_trade->OnPerformTrade( partner_price, actor_price ); TransferItems( m_pTradeActorList, m_pTradePartnerBagList, m_partner_trade, true ); TransferItems( m_pTradePartnerList, m_pTradeActorBagList, m_partner_trade, false ); } else { if ( actor_money < 0 ) { CallMessageBoxOK( "not_enough_money_actor" ); } else if ( partner_money < 0 ) { CallMessageBoxOK( "not_enough_money_partner" ); } else { CallMessageBoxOK( "trade_dont_make" ); } } SetCurrentItem ( NULL ); UpdateItemsPlace (); }
bool CUIActorMenu::OnItemDbClick(CUICellItem* itm) { InfoCurItem( NULL ); CUIDragDropListEx* old_owner = itm->OwnerList(); EDDListType t_old = GetListType(old_owner); switch ( t_old ) { case iActorSlot: { if ( m_currMenuMode == mmDeadBodySearch ) ToDeadBodyBag ( itm, false ); else ToBag ( itm, false ); break; } case iActorBag: { if ( m_currMenuMode == mmTrade ) { ToActorTrade( itm, false ); break; }else if ( m_currMenuMode == mmDeadBodySearch ) { ToDeadBodyBag( itm, false ); break; } if ( TryUseItem( itm ) ) { break; } if ( TryActiveSlot( itm ) ) { break; } if ( !ToSlot( itm, false ) ) { if ( !ToBelt( itm, false ) ) { ToSlot( itm, true ); } } break; } case iActorBelt: { ToBag( itm, false ); break; } case iActorTrade: { ToBag( itm, false ); break; } case iPartnerTradeBag: { ToPartnerTrade( itm, false ); break; } case iPartnerTrade: { ToPartnerTradeBag( itm, false ); break; } case iDeadBodyBag: { ToBag( itm, false ); break; } }; //switch UpdateItemsPlace(); return true; }
bool CUIActorMenu::OnItemDrop(CUICellItem* itm) { InfoCurItem( NULL ); CUIDragDropListEx* old_owner = itm->OwnerList(); CUIDragDropListEx* new_owner = CUIDragDropListEx::m_drag_item->BackList(); if ( old_owner==new_owner || !old_owner || !new_owner ) { return false; } EDDListType t_new = GetListType(new_owner); EDDListType t_old = GetListType(old_owner); if ( !AllowItemDrops(t_old, t_new) ) { Msg("incorrect action [%d]->[%d]",t_old, t_new); return true; } switch(t_new) { case iActorSlot: { if(GetSlotList(CurrentIItem()->GetSlot())==new_owner) ToSlot (itm, true); }break; case iActorBag: { ToBag (itm, true); }break; case iActorBelt: { ToBelt (itm, true); }break; case iActorTrade: { ToActorTrade(itm, true); }break; case iPartnerTrade: { if(t_old!=iPartnerTradeBag) return false; ToPartnerTrade(itm, true); }break; case iPartnerTradeBag: { if(t_old!=iPartnerTrade) return false; ToPartnerTradeBag(itm, true); }break; case iDeadBodyBag: { ToDeadBodyBag(itm, true); }break; #ifdef DRAG_DROP_TRASH case iTrashSlot: { if (CurrentIItem()->IsQuestItem()) return true; SendEvent_Item_Drop(CurrentIItem(), m_pActorInvOwner->object_id()); SetCurrentItem(NULL); }break; #endif }; OnItemDropped (CurrentIItem(), new_owner, old_owner); UpdateItemsPlace(); return true; }