void CUIActorMenu::UpdatePrices() { LPCSTR kg_str = CStringTable().translate( "st_kg" ).c_str(); UpdateActor(); UpdatePartnerBag(); u32 actor_price = CalcItemsPrice( m_pTradeActorList, m_partner_trade, true ); u32 partner_price = CalcItemsPrice( m_pTradePartnerList, m_partner_trade, false ); string64 buf; sprintf_s( buf, "%d RU", actor_price ); m_ActorTradePrice->SetText( buf ); m_ActorTradePrice->AdjustWidthToText(); sprintf_s( buf, "%d RU", partner_price ); m_PartnerTradePrice->SetText( buf ); m_PartnerTradePrice->AdjustWidthToText(); float actor_weight = CalcItemsWeight( m_pTradeActorList ); float partner_weight = CalcItemsWeight( m_pTradePartnerList ); sprintf_s( buf, "(%.1f %s)", actor_weight, kg_str ); m_ActorTradeWeightMax->SetText( buf ); sprintf_s( buf, "(%.1f %s)", partner_weight, kg_str ); m_PartnerTradeWeightMax->SetText( buf ); Fvector2 pos = m_ActorTradePrice->GetWndPos(); pos.x = m_ActorTradeWeightMax->GetWndPos().x - m_ActorTradePrice->GetWndSize().x - 5.0f; m_ActorTradePrice->SetWndPos( pos ); pos.x = pos.x - m_ActorTradeCaption->GetWndSize().x - 5.0f; m_ActorTradeCaption->SetWndPos( pos ); pos = m_PartnerTradePrice->GetWndPos(); pos.x = m_PartnerTradeWeightMax->GetWndPos().x - m_PartnerTradePrice->GetWndSize().x - 5.0f; m_PartnerTradePrice->SetWndPos( pos ); pos.x = pos.x - m_PartnerTradeCaption->GetWndSize().x - 5.0f; m_PartnerTradeCaption->SetWndPos( pos ); }
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 (); }
void CUITradeWnd::UpdatePrices() { m_iOurTradePrice = CalcItemsPrice (&m_uidata->UIOurTradeList, m_pOthersTrade, true); m_iOthersTradePrice = CalcItemsPrice (&m_uidata->UIOthersTradeList, m_pOthersTrade, false); string256 buf; sprintf_s (buf, "%d %s", m_iOurTradePrice,*CStringTable().translate("ui_st_money_regional")); m_uidata->UIOurPriceCaption.GetPhraseByIndex(2)->str = buf; sprintf_s (buf, "%d %s", m_iOthersTradePrice,*CStringTable().translate("ui_st_money_regional")); m_uidata->UIOthersPriceCaption.GetPhraseByIndex(2)->str = buf; sprintf_s (buf, "%d %s", m_pInvOwner->get_money(),*CStringTable().translate("ui_st_money_regional")); m_uidata->UIOurMoneyStatic.SetText(buf); if(!m_pOthersInvOwner->InfinitiveMoney()){ sprintf_s (buf, "%d %s", m_pOthersInvOwner->get_money(),*CStringTable().translate("ui_st_money_regional")); m_uidata->UIOtherMoneyStatic.SetText(buf); }else { m_uidata->UIOtherMoneyStatic.SetText("---"); } }