DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnDropReceivedFromGhostArea()

void PlayerContainer::OnDropReceivedFromGhostArea ( Widget w,
int x,
int y,
Widget receiver )
inlineprotected

См. определение в файле PlayerContainer.c строка 876

877 {
878 ItemManager.GetInstance().HideDropzones();
879 ItemManager.GetInstance().SetIsDragging( false );
880
881 EntityAI receiver_item;
882 bool is_reserved = false;
883 InventoryMenu menu = InventoryMenu.Cast( GetGame().GetUIManager().FindMenu( MENU_INVENTORY ) );
884 float stack_max;
885
886 ItemPreviewWidget ipw = ItemPreviewWidget.Cast( GetItemPreviewWidget( w ) );
887 SlotsIcon slots_icon;
888 receiver.GetUserData(slots_icon);
889 int slot_id = slots_icon.GetSlotID();
890
891 receiver_item = slots_icon.GetEntity();
892 is_reserved = slots_icon.IsReserved();
893 InventoryLocation il;
894
895 if ( !ipw )
896 {
897 return;
898 }
899
900 ItemBase item = ItemBase.Cast(ipw.GetItem());
901 PlayerBase real_player = PlayerBase.Cast( GetGame().GetPlayer() );
902 if ( !item )
903 {
904 return;
905 }
906 if ( receiver_item && !is_reserved )
907 {
908 if ( GameInventory.CanSwapEntitiesEx( receiver_item, item ) )
909 {
910 GetGame().GetPlayer().PredictiveSwapEntities( item, receiver_item );
911
912 if ( menu )
913 {
914 menu.RefreshQuickbar();
915 }
916 return;
917 }
918 else if ( receiver_item.GetInventory().CanAddAttachment( item ) )
919 {
920 GetGame().GetPlayer().PredictiveTakeEntityToTargetAttachment( receiver_item, item );
921
922 if ( menu )
923 {
924 menu.RefreshQuickbar();
925 }
926 return;
927 }
928 else if ( receiver_item.GetInventory().CanAddEntityInCargo( item, item.GetInventory().GetFlipCargo() ) && !receiver_item.GetInventory().HasEntityInCargo( item ) )
929 {
930 SplitItemUtils.TakeOrSplitToInventory(real_player, receiver_item,item);
931
932 if ( menu )
933 {
934 menu.RefreshQuickbar();
935 }
936 return;
937 }
938 else if ( ( ItemBase.Cast( receiver_item ) ).CanBeCombined( ItemBase.Cast( item ) ) )
939 {
940 ( ItemBase.Cast( receiver_item ) ).CombineItemsClient( ItemBase.Cast( item ) );
941 return;
942 }
943 }
944
945 if ( m_Player.GetInventory().CanAddAttachmentEx( item, slot_id ) )
946 {
947 if (item.GetQuantity() > item.GetTargetQuantityMax(slot_id))
948 {
949 item.SplitIntoStackMaxClient( real_player, slot_id );
950 }
951 else
952 {
953 real_player.PredictiveTakeEntityToTargetAttachmentEx( m_Player, item, slots_icon.GetSlotID() );
954 }
955 }
956 else if ( m_Player.GetInventory().CanAddAttachment( item ) )
957 {
958 il = new InventoryLocation;
959 m_Player.GetInventory().FindFreeLocationFor( item, FindInventoryLocationType.ATTACHMENT, il );
960 float stackable = item.GetTargetQuantityMax(-1);
961
962 if( il.IsValid() )
963 {
964 if ( stackable == 0 || stackable >= item.GetQuantity() )
965 {
966 real_player.PredictiveTakeEntityToTargetAttachment( il.GetParent(), item );
967 }
968 else
969 {
970
971 ItemBase.Cast(item).SplitIntoStackMaxToInventoryLocationClient( il );
972 }
973 }
974 }
975 else if( m_Player.GetInventory().CanAddEntityToInventory( item, FindInventoryLocationType.CARGO | FindInventoryLocationType.ATTACHMENT ) && ( !m_Player.GetInventory().HasEntityInInventory( item ) ) || m_Player.GetHumanInventory().HasEntityInHands( item ) )
976 {
977 SplitItemUtils.TakeOrSplitToInventory(m_Player, m_Player, item);
978 }
979
980 if ( menu )
981 {
982 menu.RefreshQuickbar();
983 }
984 }
class LogManager EntityAI
class GP5GasMask extends MaskBase ItemBase
FindInventoryLocationType
flags for searching locations in inventory
Определения InventoryLocation.c:17
void InventoryMenu()
Определения InventoryMenu.c:20
PlayerBase GetPlayer()
Определения ModifierBase.c:51
proto native DayZPlayer GetPlayer()
proto native bool IsValid()
verify current set inventory location
proto native EntityAI GetParent()
returns parent of current inventory location
proto native EntityAI GetItem()
PlayerBase m_Player
Определения PlayerContainer.c:7
ItemPreviewWidget GetItemPreviewWidget(Widget w)
Определения PlayerContainer.c:731
EntityAI GetEntity()
Определения SlotsIcon.c:365
bool IsReserved()
Определения SlotsIcon.c:200
int GetSlotID()
Определения SlotsIcon.c:190
proto native CGame GetGame()
const int MENU_INVENTORY
Определения constants.c:180

Перекрестные ссылки GameInventory::CanSwapEntitiesEx(), SlotsIcon::GetEntity(), GetGame(), ItemManager::GetInstance(), ItemPreviewWidget::GetItem(), GetItemPreviewWidget(), InventoryLocation::GetParent(), CGame::GetPlayer(), GetPlayer(), SlotsIcon::GetSlotID(), ItemManager::HideDropzones(), InventoryMenu(), SlotsIcon::IsReserved(), InventoryLocation::IsValid(), m_Player, MENU_INVENTORY, ItemManager::SetIsDragging(), SplitItemUtils::TakeOrSplitToInventory(), x и y.