123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- class HandsArea: Container
- {
- protected ScrollWidget m_Scroller;
- protected ref HandsContainer m_HandsContainer;
- protected ref SizeToChild m_HandsResizer;
-
- protected bool m_ShouldChangeSize = true;
- void HandsArea( LayoutHolder parent )
- {
- m_HandsContainer = new HandsContainer( this );
- m_Body.Insert(m_HandsContainer);
-
- if ( m_ImmedUpdate )
- m_MainWidget.Update();
-
- m_ParentWidget.GetScript( m_HandsResizer );
- m_Scroller = ScrollWidget.Cast( m_ParentWidget );
- RecomputeOpenedContainers();
- }
- bool IsSwapActive()
- {
- Widget swap_cursor = m_MainWidget.FindAnyWidget("SwapCursor");
-
- if ( swap_cursor )
- return swap_cursor.IsVisible();
- else
- return false;
- }
- bool IsCombineActive()
- {
- Widget combine_cursor = m_MainWidget.FindAnyWidget("CombineCursor");
- if ( combine_cursor )
- return combine_cursor.IsVisible();
- else
- return false;
- }
-
- override ScrollWidget GetScrollWidget()
- {
- return m_Scroller;
- }
-
- override void UpdateSelectionIcons()
- {
- #ifdef PLATFORM_CONSOLE
- ScrollToActiveContainer();
- #endif
- }
- override void UpdateInterval()
- {
- if (!m_Scroller.IsScrollbarVisible())
- {
- m_Scroller.VScrollToPos01(0.0);
- }
- else if (m_Scroller.GetVScrollPos01() > 1.0)
- {
- m_Scroller.VScrollToPos01(1.0);
- }
- m_HandsContainer.UpdateInterval();
-
- float x, y;
- float x2, y2;
- m_Scroller.GetScreenSize( x, y );
- m_MainWidget.GetScreenSize( x2, y2 );
- if ( y2 != y )
- m_ShouldChangeSize = true;
-
- bool changed_size;
- if ( m_ShouldChangeSize && m_HandsResizer.ResizeParentToChild( changed_size, InventoryMenu.GetHeight() * 0.5 ) )
- m_Scroller.SetAlpha( 0.3921 );
- else
- m_Scroller.SetAlpha( 0 );
-
- if ( changed_size )
- m_ShouldChangeSize = false;
- }
- override void SetLayoutName()
- {
- m_LayoutName = WidgetLayoutName.HandsArea;
- }
- override void SetParentWidget()
- {
- m_ParentWidget = m_Parent.GetMainWidget().FindAnyWidget( "HandsPanel" );
- }
- override void OnShow()
- {
- super.OnShow();
- m_HandsContainer.OnShow();
- }
- override void Refresh()
- {
- UpdateSelectionIcons();
- m_ShouldChangeSize = true;
- }
-
- override void SetSameLevelNextActive()
- {
- super.SetSameLevelNextActive();
- Refresh();
- }
- override void SetSameLevelPreviousActive()
- {
- super.SetSameLevelPreviousActive();
- Refresh();
- }
-
- void DraggingOverHandsPanel( Widget w, int x, int y, Widget receiver )
- {
- if ( w == NULL )
- {
- return;
- }
-
- ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
-
- if( !ipw )
- {
- string name = w.GetName();
- name.Replace( "PanelWidget", "Render" );
- ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
- }
-
- if( !ipw )
- {
- ipw = ItemPreviewWidget.Cast( w );
- }
-
- if( !ipw || !ipw.IsInherited( ItemPreviewWidget ) )
- {
- return;
- }
-
- if( ipw.GetItem() && GetGame().GetPlayer().GetHumanInventory().CanAddEntityIntoHands( ipw.GetItem() ) )
- {
- ColorManager.GetInstance().SetColor( w, ColorManager.GREEN_COLOR );
- ItemManager.GetInstance().HideDropzones();
- ItemManager.GetInstance().GetCenterDropzone().SetAlpha( 1 );
- }
- else
- {
- ColorManager.GetInstance().SetColor( w, ColorManager.RED_COLOR );
- ItemManager.GetInstance().HideDropzones();
- ItemManager.GetInstance().GetCenterDropzone().SetAlpha( 1 );
- }
- }
-
- void OnHandsPanelDropReceived( Widget w, int x, int y, Widget receiver )
- {
- ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
- if( !ipw )
- {
- string name = w.GetName();
- name.Replace( "PanelWidget", "Render" );
- ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
- }
-
- if( !ipw )
- {
- ipw = ItemPreviewWidget.Cast( w );
- }
-
- if( !ipw || !ipw.GetItem() || !ipw.IsInherited( ItemPreviewWidget ) )
- {
- return;
- }
-
- if( !ipw.GetItem().GetInventory().CanRemoveEntity() )
- return;
-
- if( GetGame().GetPlayer().GetHumanInventory().CanAddEntityIntoHands( ipw.GetItem() ) )
- {
- ItemBase item_base = ItemBase.Cast( ipw.GetItem() );
- float stackable = item_base.GetTargetQuantityMax(-1);
-
- if( stackable == 0 || item_base.GetQuantity() <= stackable )
- {
- GetGame().GetPlayer().PredictiveTakeEntityToHands( item_base );
- }
- else if( stackable != 0 && stackable <= item_base.GetQuantity() )
- {
- item_base.SplitIntoStackMaxHandsClient( PlayerBase.Cast( GetGame().GetPlayer() ) );
- }
- }
- }
- }
|