123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- class ClosableHeader: Header
- {
- protected float m_SquareSize;
- protected int m_DefaultSort;
-
- protected Widget m_MovePanel;
- protected Widget m_PanelWidget;
- protected Widget m_DragRender;
- protected ButtonWidget m_MoveUp;
- protected ButtonWidget m_MoveDown;
-
- protected bool m_IsInLocalEquipment;
-
- void ClosableHeader( LayoutHolder parent, string function_name )
- {
- m_MovePanel = GetMainWidget().FindAnyWidget( "MovePanel" );
- m_PanelWidget = GetMainWidget().FindAnyWidget( "PanelWidget" );
- m_DragRender = GetMainWidget().FindAnyWidget( "Drag_Render" );
- m_MoveUp = ButtonWidget.Cast( GetMainWidget().FindAnyWidget( "MoveUp" ) );
- m_MoveDown = ButtonWidget.Cast( GetMainWidget().FindAnyWidget( "MoveDown" ) );
-
- WidgetEventHandler.GetInstance().RegisterOnClick( m_MoveUp, m_Parent, "MoveContainerUp" );
- WidgetEventHandler.GetInstance().RegisterOnClick( m_MoveDown, m_Parent, "MoveContainerDown" );
- WidgetEventHandler.GetInstance().RegisterOnMouseLeave( m_MoveUp, this, "MouseLeave" );
- WidgetEventHandler.GetInstance().RegisterOnMouseLeave( m_MoveDown, this, "MouseLeave" );
-
- WidgetEventHandler.GetInstance().RegisterOnDrag( GetMainWidget() , this, "OnDragHeader" );
- WidgetEventHandler.GetInstance().RegisterOnDrop( GetMainWidget() , this, "OnDropHeader" );
-
- WidgetEventHandler.GetInstance().RegisterOnMouseEnter( GetMainWidget(), this, "MouseEnter" );
- WidgetEventHandler.GetInstance().RegisterOnMouseLeave( GetMainWidget(), this, "MouseLeave" );
-
- float temp;
- GetMainWidget().GetScreenSize( temp, m_SquareSize );
-
- m_DefaultColor = m_PanelWidget.GetColor();
- m_DefaultFontSize = 20;
-
- if( GetParent() && GetParent().GetParent() && GetParent().GetParent().GetParent() )
- m_IsInLocalEquipment = GetParent().GetParent().GetParent().IsInherited( RightArea );
- }
-
- void ~ClosableHeader()
- {
- if( InventoryItem.Cast( m_Entity ) )
- InventoryItem.Cast( m_Entity ).GetOnItemFlipped().Remove( UpdateFlip );
- }
- override void SetLayoutName()
- {
- m_LayoutName = WidgetLayoutName.ClosableHeader;
- }
-
- override void SetName( string name )
- {
- name.ToUpper();
-
- m_HeaderText.SetText( name );
- m_HeaderText.Update();
-
- float x, y;
- m_HeaderText.GetScreenSize( x, y );
- m_PanelWidget.SetSize( 1, y + InventoryMenu.GetHeightMultiplied( 10 ) );
- }
-
- void OnDragHeader( Widget w, int x, int y )
- {
- ClosableContainer parent = ClosableContainer.Cast( m_Parent );
- if( parent && GetMainWidget() && m_Entity )
- {
- ItemPreviewWidget item_preview_drag = ItemPreviewWidget.Cast( m_DragRender );
- item_preview_drag.SetFlags(WidgetFlags.EXACTPOS );
- m_DefaultSort = GetRootWidget().GetSort();
- item_preview_drag.GetParent().GetParent().GetParent().GetParent().GetParent().GetParent().GetParent().GetParent().AddChild( GetRootWidget() );
- if( item_preview_drag && m_Entity )
- {
- item_preview_drag.SetItem( m_Entity );
- item_preview_drag.SetView( m_Entity.GetViewIndex() );
- }
-
- ItemManager.GetInstance().SetIsDragging( true );
-
- parent.HideContent( true );
-
- m_PanelWidget.Show( false );
- if( item_preview_drag )
- item_preview_drag.Show( true );
-
- int ww, hh;
- GetGame().GetInventoryItemSize( InventoryItem.Cast( m_Entity ), ww, hh );
- if( item_preview_drag )
- {
- m_Entity.GetOnItemFlipped().Insert( UpdateFlip );
- if( m_Entity.GetInventory().GetFlipCargo() )
- {
- item_preview_drag.SetSize( hh * m_SquareSize, ww * m_SquareSize );
- }
- else
- {
- item_preview_drag.SetSize( ww * m_SquareSize, hh * m_SquareSize );
- }
- }
- }
- }
-
- void UpdateFlip( bool flipped )
- {
- ItemPreviewWidget item_preview_drag = ItemPreviewWidget.Cast( m_DragRender );
- if( InventoryItem.Cast( m_Entity ) && item_preview_drag )
- {
- int ww, hh;
- GetGame().GetInventoryItemSize( InventoryItem.Cast( m_Entity ), ww, hh );
- if( flipped )
- {
- item_preview_drag.SetSize( hh * m_SquareSize, ww * m_SquareSize );
- }
- else
- {
- item_preview_drag.SetSize( ww * m_SquareSize, hh * m_SquareSize );
- }
- }
- }
-
- void OnDropHeader( Widget w )
- {
- ClosableContainer parent = ClosableContainer.Cast( m_Parent );
- parent.GetMainWidget().AddChild( GetRootWidget() );
- GetRootWidget().SetSort( 0 );
- if( parent )
- {
- //
- ItemPreviewWidget item_preview_drag = ItemPreviewWidget.Cast( m_DragRender );
- if( item_preview_drag )
- {
- item_preview_drag.SetItem( null );//TODO: is this safe?
- }
- //
-
- m_PanelWidget.Show( true );
- m_DragRender.Show( false );
-
- parent.ShowContent( true );
-
- ItemManager.GetInstance().HideDropzones();
- ItemManager.GetInstance().SetIsDragging( false );
- }
- if( InventoryItem.Cast( m_Entity ) )
- InventoryItem.Cast( m_Entity ).GetOnItemFlipped().Remove( UpdateFlip );
- }
-
- bool MouseEnter(Widget w, int x, int y)
- {
- if( m_IsInLocalEquipment && !GetDragWidget() )
- {
- #ifdef PLATFORM_CONSOLE
- m_MovePanel.Show( GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer() );
- #else
- m_MovePanel.Show( true );
- #endif
- }
- PrepareOwnedTooltip( m_Entity, x, y );
- return true;
- }
- bool MouseLeave( Widget w, Widget enter_w, int x, int y )
- {
- if( enter_w != m_MoveUp && enter_w != m_MoveDown && enter_w != m_CollapseButton )
- {
- if( m_IsInLocalEquipment )
- {
- m_MovePanel.Show( false );
- }
- }
- HideOwnedTooltip();
- return true;
- }
-
- override void SetActive( bool active )
- {
- super.SetActive( active );
- if( active )
- {
- m_PanelWidget.SetColor( ARGBF( 1, 1, 0, 0 ) );
- }
- else
- {
- m_PanelWidget.SetColor( m_DefaultColor );
- }
- }
- }
|