DIFF

SlotsIcon.c

class SlotsIcon: LayoutHolder
{
	protected static int 			m_NormalWidth;
	protected static int 			m_NormalHeight;
	
	protected bool					m_IsWeapon			= false;
	protected bool					m_IsMagazine		= false;
	protected bool					m_HasTemperature	= false;
	protected bool					m_HasQuantity		= false;
	protected bool					m_HasItemSize		= false;
	protected float					m_CurrQuantity		= -1;
	
	protected EntityAI				m_Obj;
	protected ItemBase				m_Item;
	protected EntityAI				m_SlotParent;
	protected Container				m_Container;
	protected int					m_SlotID;
	protected bool					m_IsDragged			= false;
	
	protected Widget				m_PanelWidget;
	
	protected Widget				m_CursorWidget;
	protected Widget				m_ColWidget;
	protected Widget				m_MountedWidget;
	protected Widget				m_OutOfReachWidget;
	protected Widget				m_ReservedWidget;
	
	protected ItemPreviewWidget		m_ItemPreview;
	protected ImageWidget			m_GhostSlot;
	
	protected Widget				m_ColorWidget;
	protected Widget				m_SelectedPanel;
	protected Widget				m_EmptySelectedPanel;
	protected Widget				m_MicromanagedPanel;
	
	protected Widget				m_QuantityPanel;
	protected TextWidget			m_QuantityItem;
	protected ProgressBarWidget		m_QuantityProgress;
	protected Widget				m_QuantityStack;
	
	protected string				m_SlotDisplayName;
	protected string				m_SlotDesc;
	
	protected Widget				m_ItemSizePanel;
	protected TextWidget			m_ItemSizeWidget;
	
	protected Widget				m_RadialIconPanel;
	protected Widget				m_RadialIconClosed;
	protected Widget				m_RadialIcon;

	protected bool					m_Reserved;

	protected ImageWidget				m_AmmoIcon;
	protected ref array<ImageWidget>	m_AmmoIcons;

	void SlotsIcon( LayoutHolder parent, Widget root, int index, EntityAI slot_parent )
	{
		m_MainWidget			= root;
		
		m_PanelWidget			= m_MainWidget.FindAnyWidget( "PanelWidget" + index );
		
		m_CursorWidget			= m_MainWidget.FindAnyWidget( "Cursor" + index );
		m_ColWidget				= m_MainWidget.FindAnyWidget( "Col" + index );
		m_MountedWidget			= m_MainWidget.FindAnyWidget( "Mounted" + index );
		m_OutOfReachWidget		= m_MainWidget.FindAnyWidget( "OutOfReach" + index );

		m_ItemPreview			= ItemPreviewWidget.Cast( m_MainWidget.FindAnyWidget( "Render" + index ) );
		m_ItemPreview.SetForceFlipEnable(true);
		m_ItemPreview.SetForceFlip(false);
		
		m_GhostSlot				= ImageWidget.Cast( m_MainWidget.FindAnyWidget( "GhostSlot" + index ) );
		
		m_ColorWidget			= m_MainWidget.FindAnyWidget( "Color" + index );
		m_SelectedPanel			= m_MainWidget.FindAnyWidget( "Selected" + index );
		m_EmptySelectedPanel    = m_MainWidget.FindAnyWidget( "EmptySelected" + index );
		m_MicromanagedPanel    = m_MainWidget.FindAnyWidget( "Micromanaged" + index );
		
		m_QuantityPanel			= m_MainWidget.FindAnyWidget( "QuantityPanel" + index );
		m_QuantityItem			= TextWidget.Cast( m_MainWidget.FindAnyWidget( "Quantity" + index ) );
		m_QuantityProgress		= ProgressBarWidget.Cast( m_MainWidget.FindAnyWidget( "QuantityBar" + index ) );
		m_QuantityStack			= m_MainWidget.FindAnyWidget( "QuantityStackPanel" + index );
		
		m_ItemSizePanel			= m_MainWidget.FindAnyWidget( "ItemSizePanel" + index );
		m_ItemSizeWidget		= TextWidget.Cast( m_MainWidget.FindAnyWidget( "ItemSize" + index ) );
		
		m_AmmoIcon				= ImageWidget.Cast(m_MainWidget.FindAnyWidget( "AmmoIcon" + index ));
		
		m_RadialIconPanel		= m_MainWidget.FindAnyWidget( "RadialIconPanel" + index );
		m_RadialIconClosed		= m_MainWidget.FindAnyWidget( "RadialIconClosed" + index );
		m_RadialIcon			= m_MainWidget.FindAnyWidget( "RadialIcon" + index );
		
		m_ReservedWidget = Widget.Cast( g_Game.GetWorkspace().CreateWidgets( "gui/layouts/inventory_new/reserved_icon.layout", m_MainWidget ) );
		m_ReservedWidget.Show(false);
		
		WidgetEventHandler.GetInstance().RegisterOnMouseEnter( m_PanelWidget,  this, "MouseEnter" );
		WidgetEventHandler.GetInstance().RegisterOnMouseLeave( m_PanelWidget,  this, "MouseLeave" );
		
		WidgetEventHandler.GetInstance().RegisterOnMouseEnter( m_GhostSlot,  this, "MouseEnterGhostSlot" );
		WidgetEventHandler.GetInstance().RegisterOnMouseLeave( m_GhostSlot,  this, "MouseLeaveGhostSlot" );
		
		WidgetEventHandler.GetInstance().RegisterOnMouseEnter( m_RadialIconPanel,  this, "MouseEnterCategory" );
		WidgetEventHandler.GetInstance().RegisterOnMouseLeave( m_RadialIconPanel,  this, "MouseLeaveCategory" );
		
		WidgetEventHandler.GetInstance().RegisterOnDrag( m_PanelWidget, this, "OnIconDrag" );
		WidgetEventHandler.GetInstance().RegisterOnDrop( m_PanelWidget, this, "OnIconDrop" );
		
		m_Reserved 				= false;
		m_SlotID 				= -1;
		m_Item					= null;
		m_Obj					= null;
		m_Container				= null;
		
		m_SlotParent			= slot_parent;
		
		m_PanelWidget.SetUserData(this);
		m_ItemPreview.SetUserData(this);
		m_GhostSlot.SetUserData(this);
		m_MainWidget.SetUserData(this);
		
		float w,h;
		root.GetSize(w,h);
		
		m_NormalWidth = w;
		m_NormalHeight = h;
		
		SetActive( false );
	}
	
	override bool IsVisible()
	{
		return m_MainWidget.IsVisible();
	}
	
	void SetSlotParent( EntityAI parent)
	{
		m_SlotParent = parent;
	}
	
	void SetContainer( Container container )
	{
		m_Container = container;
	}
	
	void SetSlotDisplayName( string text )
	{
		m_SlotDisplayName = text;
	}
	
	Container GetContainer()
	{
		return m_Container;
	}
	
	string GetSlotDisplayName( )
	{
		return m_SlotDisplayName;
	}
	
	void SetSlotDesc( string text )
	{
		m_SlotDesc = text;
	}
	
	string GetSlotDesc()
	{
		return m_SlotDesc;
	}
	
	void ~SlotsIcon()
	{
		if (m_IsDragged)
		{
			m_IsDragged = false;
			ItemManager.GetInstance().HideDropzones();
			ItemManager.GetInstance().SetIsDragging( false );
		}
		
		if (m_Obj)
		{
			m_Obj.GetOnItemFlipped().Remove( UpdateFlip );
			m_Obj.GetOnViewIndexChanged().Remove( SetItemPreview );
		}
	}
	
	EntityAI GetSlotParent()
	{
		return m_SlotParent;
	}
	
	int GetSlotID()
	{
		return m_SlotID;
	}
	
	void SetSlotID(int slot_ID)
	{
		m_SlotID = slot_ID;
	}
	
	bool IsReserved()
	{
		return m_Reserved;
	}
	
	Widget GetPanelWidget()
	{
		return m_PanelWidget;
	}
	
	Widget GetCursorWidget()
	{
		return m_CursorWidget;
	}
	
	Widget GetColWidget()
	{
		return m_ColWidget;
	}
	
	Widget GetReservedWidget()
	{
		return m_ReservedWidget;
	}
	
	Widget GetMountedWidget()
	{
		return m_MountedWidget;
	}
	
	ItemPreviewWidget GetRender()
	{
		return m_ItemPreview;
	}

	ImageWidget GetGhostSlot()
	{
		return m_GhostSlot;
	}

	Widget GetColorWidget()
	{
		return m_ColorWidget;
	}

	Widget GetSelectedPanel()
	{
		return m_SelectedPanel;
	}
	
	Widget GetEmptySelectedPanel()
	{
		return m_EmptySelectedPanel;
	}
	
	Widget GetMicromanagedPanel()
	{
		return m_MicromanagedPanel;
	}

	Widget GetQuantityPanel()
	{
		return m_QuantityPanel;
	}
	
	Widget GetOutOfReachWidget()
	{
		return m_OutOfReachWidget;
	}

	TextWidget GetQuantityItem()
	{
		return m_QuantityItem;
	}
	
	ProgressBarWidget GetQuantityProgress()
	{
		return m_QuantityProgress;
	}
	
	Widget GetQuantityStack()
	{
		return m_QuantityStack;
	}

	Widget GetItemSizePanel()
	{
		return m_ItemSizePanel;
	}
	
	TextWidget GetItemSizeWidget()
	{
		return m_ItemSizeWidget;
	}

	ImageWidget GetAmmoIcon()
	{
		return m_AmmoIcon;
	}

	Widget GetRadialIconPanel()
	{
		return m_RadialIconPanel;
	}

	Widget GetRadialIconClosed()
	{
		return m_RadialIconClosed;
	}

	Widget GetRadialIcon()
	{
		return m_RadialIcon;
	}
	
	bool IsFocused()
	{
		return GetCursorWidget().IsVisible();
	}

	override void SetActive( bool active )
	{
#ifdef PLATFORM_CONSOLE	
		super.SetActive( active );
		float x, y;
		if( active && GetObject() )
		{
			GetMainWidget().GetScreenPos( x, y );
			PrepareOwnedTooltip( EntityAI.Cast( GetObject() ), x, y );
		}
		else if (active)
		{
			GetMainWidget().GetScreenPos( x, y );
			PrepareOwnedSlotsTooltip( GetMainWidget(), m_SlotDisplayName, m_SlotDesc, x, y );
		}
		
		m_SelectedPanel.Show( active );
#endif
	}
	
	override void SetLayoutName()
	{
		m_LayoutName = "";
	}

	override void Refresh()
	{
		//if (m_HasTemperature)
			SetTemperature();
		if (m_IsWeapon)
			RefreshMuzzleIcon();
		if (m_HasQuantity)
			SetQuantity();
	}

	void SetTemperature()
	{
		ItemManager.GetInstance().SetTemperature(EntityAI.Cast( m_Obj ), m_ItemPreview);
	}

	Object GetObject()
	{
		return m_Obj;
	}
	
	EntityAI GetEntity()
	{
		return EntityAI.Cast( m_Obj );
	}
	
	ItemBase GetItem()
	{
		return m_Item;
	}
	
	void RefreshMuzzleIcon()
	{
		Weapon_Base wpn = Weapon_Base.Cast(GetObject());
		if (wpn)
		{
			int i;
			if (!wpn.IsShowingChamberedBullet())
			{
				for (i = 0; i < m_AmmoIcons.Count(); i++)
					m_AmmoIcon = m_AmmoIcons.Get(i);
			}
			else
			{
				for (i = 0; i < wpn.GetMuzzleCount(); i++)
				{
					if (i > m_AmmoIcons.Count())
						break;
					
					m_AmmoIcon = m_AmmoIcons.Get(i);
					if (wpn.IsChamberFull(i))
					{
						m_AmmoIcon.Show(true);
						if (wpn.IsJammed())
						{
							m_AmmoIcon.Show(true);
							m_AmmoIcon.SetImage(2);
						}
						else if (wpn.IsChamberFiredOut(i))
						{
							m_AmmoIcon.Show(true);
							m_AmmoIcon.SetImage(1);
						}
						else
						{
							m_AmmoIcon.Show(true);
							m_AmmoIcon.SetImage(0);
						}
					}
					else
					{
						m_AmmoIcon.Show(false);
					}
				}
			}
		}
	}
	
	void SetQuantity()
	{
		if (m_Item)
		{
			int quantityType = QuantityConversions.HasItemQuantity(m_Item);
			if (quantityType != QUANTITY_HIDDEN && m_CurrQuantity != QuantityConversions.GetItemQuantity(m_Item))
			{
				m_CurrQuantity = QuantityConversions.GetItemQuantity(m_Item);
	
				if (quantityType == QUANTITY_COUNT)
				{
					string q_text = QuantityConversions.GetItemQuantityText(m_Item, true);

					if (QuantityConversions.GetItemQuantityMax(m_Item) == 1 || q_text == "")
					{
						m_QuantityStack.Show(false);
					}
					else
					{
						m_QuantityItem.SetText(q_text);
						m_QuantityStack.Show(true);
					}
					
					m_QuantityProgress.Show(false);
				}
				else if (quantityType == QUANTITY_PROGRESS)
				{
					float progress_max	= m_QuantityProgress.GetMax();
					int max 			= m_Item.GetQuantityMax();
					int count 			= m_Item.ConfigGetInt("count");
					float quantity 		= m_CurrQuantity;
	
					if (count > 0)
					{
						max = count;
					}

					if (max > 0)
					{
						float value = Math.Round((quantity / max) * 100);
						m_QuantityProgress.SetCurrent(value);
					}
					m_QuantityStack.Show(false);
					m_QuantityProgress.Show(true);
				}
			}
		}
	}
	
	void SetItemPreview()
	{
		m_ItemPreview.Show( true );
		m_ItemPreview.SetItem( EntityAI.Cast( m_Obj ) );
		m_ItemPreview.SetModelOrientation( "0 0 0" );
		m_ItemPreview.SetView( m_Obj.GetViewIndex() );
	}
	
	void SetItemSize()
	{
		if( m_HasItemSize )
		{
			int size_x, size_y;
			g_Game.GetInventoryItemSize( InventoryItem.Cast( m_Obj ), size_x, size_y );
			
			m_ItemSizePanel.Show( true );
			m_ItemSizeWidget.SetText( ( size_x * size_y ).ToString() );
		}
	}
	
	void UpdateFlip( bool flipped )
	{
		if( !m_Reserved )
		{
			float x_content, y_content;
			GetPanelWidget().GetScreenSize( x_content, y_content );
			GetPanelWidget().SetSize( y_content, x_content );
		}
	}

	void Init( EntityAI obj, bool reservation = false )
	{
		if( m_Obj != obj )
		{
			ClearRemainSelected();
			m_Obj	= obj;
			m_Item	= ItemBase.Cast( m_Obj );
			m_Obj.GetOnItemFlipped().Insert( UpdateFlip );
			m_Obj.GetOnViewIndexChanged().Insert( SetItemPreview );
			m_Reserved = reservation;
			m_Container	= null;
			
			if(reservation)
			{
				ItemManager.GetInstance().SetWidgetDraggable( m_PanelWidget, false );
				
				m_IsWeapon = false;
				m_IsMagazine = false;
				m_HasTemperature = false;
				m_HasQuantity = false;
				m_HasItemSize = false;
			}
			else
			{
				CheckIsWeapon();
				CheckIsMagazine();
				CheckHasTemperature();
				CheckHasQuantity();
				CheckHasItemSize();
			}

			m_ReservedWidget.Show(reservation);

			SetItemPreview();
			
			m_GhostSlot.Show( false );
			m_PanelWidget.Show( true );
			
			Refresh();
#ifdef PLATFORM_CONSOLE			
			if ( IsFocused() )
			{
				Inventory.GetInstance().UpdateConsoleToolbar();
			}
#endif
		}
	}
	
	void ClearRemainSelected()
	{
		if (m_IsDragged)
		{
			OnIconDrop(m_PanelWidget);
			Widget a = CancelWidgetDragging();
			ItemManager.GetInstance().SetWidgetDraggable( a, false );
		}
		if (m_Obj)
		{
			m_Obj.GetOnItemFlipped().Remove( UpdateFlip );
			m_Obj.GetOnViewIndexChanged().Remove( SetItemPreview );
			HideOwnedTooltip();
		}
			
		m_Obj = null;
		m_Item = null;
		m_Container	= null;
		
		m_ItemPreview.Show( false );
		m_ItemPreview.SetItem( null );
		
		m_CurrQuantity = -1;
		m_IsWeapon = false;
		m_IsMagazine = false;
		m_HasTemperature = false;
		m_HasQuantity = false;
		m_HasItemSize = false;
		
		m_GhostSlot.Show( true );
		m_AmmoIcon.Show( false );
		m_PanelWidget.Show( false );
		m_RadialIconPanel.Show( false );
		
		m_QuantityPanel.Show( false );
		if(GetSlotID() != -1)
		{
			int stack_max = InventorySlots.GetStackMaxForSlotId( GetSlotID() );
			if(stack_max > 1)
			{
				m_QuantityPanel.Show( true );
				m_QuantityItem.SetText( string.Format("0/%1", stack_max.ToString()) );
				m_QuantityStack.Show( true );
				m_QuantityProgress.Show( false );
				m_PanelWidget.Show( true );
				m_ItemPreview.Show( true );
			}
		}
		
		m_ColWidget.Show( false );
		m_MountedWidget.Show( false );
		m_OutOfReachWidget.Show( false );
		m_ReservedWidget.Show( false );
		
		if( m_ItemSizePanel )
			m_ItemSizePanel.Show( false );
		
		if( m_ColorWidget )
			m_ColorWidget.Show( false );
		
		Refresh();
	}
	
	void Clear()
	{
		#ifdef PLATFORM_CONSOLE	
		m_SelectedPanel.Show(false);
		#endif
		m_CursorWidget.Show(false);
		m_EmptySelectedPanel.Show(false);
		
		ClearRemainSelected();
	}
	
	void CheckIsWeapon()
	{
		Weapon_Base wpn = Weapon_Base.Cast(m_Obj);
		if (wpn)
		{
			m_AmmoIcons = new array<ImageWidget>();
			m_IsWeapon = true;
			float posX = 0.0;
			float width = 0.0, height = 0.0;
			for (int i = 0; i < wpn.GetMuzzleCount(); i++)
			{
				if (i == 1)
				{
					m_AmmoIcons[0].GetSize(width,height);
				}
				posX += width;
				
				m_AmmoIcon.SetPos(posX, 0.0, false);
				
				AmmoData data = Magazine.GetAmmoData(wpn.GetChamberAmmoTypeName(i));
				if (data)
				{
					CartridgeType cartridgeType = data.m_CartridgeType;
					switch (cartridgeType)
					{
						case CartridgeType.Pistol:
						{
							m_AmmoIcon.LoadImageFile(0, "set:dayz_gui image:cartridge_pistol");
							m_AmmoIcon.LoadImageFile(1, "set:dayz_gui image:shell_pistol");
							m_AmmoIcon.LoadImageFile(2, "set:dayz_gui image:jam_pistol");
							break;
						}
						case CartridgeType.Intermediate:
						{
							m_AmmoIcon.LoadImageFile(0, "set:dayz_gui image:cartridge_int");
							m_AmmoIcon.LoadImageFile(1, "set:dayz_gui image:shell_int");
							m_AmmoIcon.LoadImageFile(2, "set:dayz_gui image:jam_int");
							break;
						}
						case CartridgeType.FullPower:
						{
							m_AmmoIcon.LoadImageFile(0, "set:dayz_gui image:cartridge_fp");
							m_AmmoIcon.LoadImageFile(1, "set:dayz_gui image:shell_fp");
							m_AmmoIcon.LoadImageFile(2, "set:dayz_gui image:jam_fp");
							break;
						}
						case CartridgeType.Shell:
						{
							m_AmmoIcon.LoadImageFile(0, "set:dayz_gui image:cartridge_shell");
							m_AmmoIcon.LoadImageFile(1, "set:dayz_gui image:shell_shell");
							m_AmmoIcon.LoadImageFile(2, "set:dayz_gui image:jam_shell");
							break;
						}
						//@note: Crossbows cant jam so we dont add a icon for the jam state
						case CartridgeType.Arrow:
						{
							m_AmmoIcon.LoadImageFile(0, "set:dayz_gui image:arrow_int");
							m_AmmoIcon.LoadImageFile(1, "set:dayz_gui image:arrow_int");
							break;
						}
					}
				}
				m_AmmoIcons.Insert(m_AmmoIcon);
			}
		}
		else
		{
			m_IsWeapon = false;
		}
	}
	
	void CheckIsMagazine()
	{
		m_IsMagazine = ( Magazine.Cast( m_Obj ) != null );
	}
	
	void CheckHasTemperature()
	{
		if (m_Item)
		{
			m_HasTemperature = m_Item.CanHaveTemperature();
		}
	}
	
	void CheckHasQuantity()
	{
		if( m_Item )
		{
			m_HasQuantity = ( QuantityConversions.HasItemQuantity( m_Item ) != QUANTITY_HIDDEN );
			if( m_HasQuantity )
			{
				m_QuantityPanel.Show( true );
			}
		}
	}
	
	void CheckHasItemSize()
	{
		#ifdef PLATFORM_CONSOLE
		string config = "CfgVehicles " + m_Obj.GetType() + " GUIInventoryAttachmentsProps";
		m_HasItemSize = ( InventoryItem.Cast( m_Obj ) && !g_Game.ConfigIsExisting( config ) );
		#else
		m_HasItemSize = false;
		#endif
	}
	
	bool IsOutOfReach()
	{
		bool oot = ( m_OutOfReachWidget.IsVisible() || m_MountedWidget.IsVisible() );
		return oot;
	}
	
	bool MouseEnter(Widget w, int x, int y)
	{
		if( m_Reserved )
			return MouseEnterGhostSlot(w, x, y);
		
		PrepareOwnedTooltip( m_Item, x, y );
		if( GetDragWidget() != m_PanelWidget && !IsOutOfReach() )
		{
			m_CursorWidget.Show( true );
		}
		return true;
	}
	
	bool MouseEnterGhostSlot(Widget w, int x, int y)
	{
		float pos_x, pos_y;
		m_MainWidget.GetScreenPos(pos_x, pos_y);

		x = pos_x;
		y = pos_y;
		
		PrepareOwnedSlotsTooltip( m_MainWidget, m_SlotDisplayName, m_SlotDesc, x, y );
		if( GetDragWidget() != m_PanelWidget )
		{
			m_EmptySelectedPanel.Show( true );
		}
		
		
		return true;
	}

	bool MouseLeave( Widget w, Widget s, int x, int y	)
	{
		if( m_Reserved )
			return MouseLeaveGhostSlot(w, s, x, y);
		
		HideOwnedTooltip();
		if( GetDragWidget() != m_PanelWidget )
		{
			m_CursorWidget.Show( false );
		}
		return true;
	}
	
	bool MouseLeaveGhostSlot( Widget w, Widget s, int x, int y	)
	{
		HideOwnedSlotsTooltip();
		
		if( GetDragWidget() != m_PanelWidget )
		{
			m_EmptySelectedPanel.Show( false );
		}
		
		return true;
	}
	
	override void UpdateInterval()
	{
		if (m_Item)
		{
			if (m_HasTemperature)
				SetTemperature();
			if (m_IsWeapon)
				RefreshMuzzleIcon();
			if (m_HasQuantity)
				SetQuantity();
			if (m_HasItemSize)
				SetItemSize();
		}
	}
	
	void OnIconDrag( Widget w )
	{
		if(!m_Obj || !w)
		{
			return;
		}
		ItemManager.GetInstance().HideDropzones();
		if( m_Obj.GetHierarchyRootPlayer() == g_Game.GetPlayer() )
		{
			ItemManager.GetInstance().GetRightDropzone().SetAlpha( 1 );
		}
		else
		{
			ItemManager.GetInstance().GetLeftDropzone().SetAlpha( 1 );
		}

		ItemManager.GetInstance().SetIsDragging( true );
		int icon_x, icon_y;
		float icon_size, y;
		int m_sizeX, m_sizeY;

		if( m_Item )
		{
			g_Game.GetInventoryItemSize( m_Item, icon_x, icon_y );
			
			CargoContainer c_parent = CargoContainer.Cast( m_Parent );
			HandsPreview h_parent = HandsPreview.Cast( m_Parent );

			if( GetRoot().m_MainWidget.FindAnyWidget( "HandsPanel" ) )
			{
				GetRoot().m_MainWidget.FindAnyWidget( "HandsPanel" ).GetScreenSize( icon_size, y );
			}
			
			icon_size = icon_size / 10;
			
			w.SetFlags( WidgetFlags.EXACTSIZE );
			m_ItemPreview.SetForceFlipEnable(false);
			
			if( !m_Item.GetInventory().GetFlipCargo() )
			{
				w.SetSize( icon_x * icon_size , icon_y * icon_size );
			}
			else
			{
				w.SetSize( icon_y * icon_size , icon_x * icon_size );
			}
		
			m_ColWidget.Show( true );
			m_CursorWidget.Show( true );
			
			ItemManager.GetInstance().SetDraggedItem( m_Item );
		}
		m_IsDragged = true;
	}
	
	void OnIconDrop( Widget w )
	{
		m_IsDragged = false;
		ItemManager.GetInstance().HideDropzones();
		ItemManager.GetInstance().SetIsDragging( false );
		w.ClearFlags( WidgetFlags.EXACTSIZE );
		w.SetSize( 1, 1 );
		m_ColWidget.Show( false );
		m_CursorWidget.Show( false );
		m_EmptySelectedPanel.Show( false );
		m_CursorWidget.SetColor( ARGBF( 1, 1, 1, 1 ) );
		m_ItemPreview.SetForceFlipEnable(true);
	}
	
	static int GetNormalWidth()
	{
		return m_NormalWidth;
	}
	
	static int GetNormalHeight()
	{
		return m_NormalHeight;
	}
	
	/*override void HideOwnedSlotsTooltip()
	{
		if (m_TooltipOwner)
		{
			ItemManager.GetInstance().HideTooltipSlot();
			m_TooltipOwner = false;
		}
	}*/
}