123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- class SlotsContainer: Container
- {
- protected ref array<ref SlotsIcon> m_Icons;
- int m_VisibleColumnCount;
-
- void SlotsContainer( LayoutHolder parent, EntityAI slot_parent )
- {
- m_Icons = new array<ref SlotsIcon>;
- for ( int i = 0; i < ITEMS_IN_ROW; i++ )
- {
- if ( GetRootWidget().FindAnyWidget( "Icon" + i ) )
- m_Icons.Insert( new SlotsIcon( this, GetRootWidget().FindAnyWidget( "Icon" + i ), i , slot_parent) );
- /*else
- {
- Widget child = GetRootWidget().GetChildren();
- while ( child )
- {
- child = child.GetSibling();
- }
- }*/
- }
- }
-
- override void SetDefaultFocus( bool while_micromanagment_mode = false )
- {
- m_FocusedColumn = 0;
- for (int i = 0; i < GetColumnCount(); i++)
- {
- SlotsIcon icon = m_Icons[i];
- if (icon.IsVisible())
- {
- m_FocusedColumn = i;
- break;
- }
- }
-
- SetFocus( m_FocusedColumn );
- }
-
- override void SetLastFocus()
- {
- SetDefaultFocus();
- }
-
- void SetFocus( int index )
- {
- if ( index >= 0 && index < m_Icons.Count() )
- {
- m_Icons.Get( index ).GetSelectedPanel().Show( true );
- }
- UpdateIcon();
- }
-
- void SetVisibleFocus( int index )
- {
- Unfocus();
- int visible_icons_count = 0;
-
- m_FocusedColumn = 0;
- for (int i = 0; i < GetColumnCount(); i++)
- {
- SlotsIcon icon = m_Icons[i];
- if (icon.IsVisible())
- {
- m_FocusedColumn = i;
- if (visible_icons_count == index)
- break;
- visible_icons_count++;
- }
- }
-
- SetFocus( m_FocusedColumn );
- }
-
- int GetVisibleFocus()
- {
- int visible_icons_count = 0;
- for (int i = 0; i < GetColumnCount(); i++)
- {
- if (m_FocusedColumn == i)
- {
- return visible_icons_count;
- }
- SlotsIcon icon = m_Icons[i];
- if (icon.IsVisible())
- {
- visible_icons_count++;
- }
- }
- return visible_icons_count - 1;
- }
-
- override void SetNextRightActive()
- {
- Unfocus();
-
- int index = m_FocusedColumn + 1;
- for (int i = 0; i < GetColumnCount(); i++ )
- {
- if (index >= GetColumnCount())
- {
- index = 0;
- }
- SlotsIcon icon = m_Icons[index];
- if (icon.IsVisible())
- {
- m_FocusedColumn = index;
- break;
- }
- index++;
- }
-
- UpdateIcon();
- }
-
- override void SetNextLeftActive()
- {
- Unfocus();
-
- int index = m_FocusedColumn - 1;
- for (int i = 0; i < GetColumnCount(); i++ )
- {
- if (index < 0)
- {
- index = GetColumnCount() - 1;
- }
- SlotsIcon icon = m_Icons[index];
- if (icon.IsVisible())
- {
- m_FocusedColumn = index;
- break;
- }
- index--;
- }
-
- UpdateIcon();
- }
-
- void UpdateIcon()
- {
- float x, y;
- SlotsIcon icon = GetSlotIcon( m_FocusedColumn );
-
- icon.GetSelectedPanel().Show( true );
- icon.GetSelectedPanel().GetScreenPos( x, y );
-
- EntityAI focused_item = GetFocusedItem();
- if ( focused_item )
- {
- PrepareOwnedTooltip( focused_item, -1, y ); //custom positioning for the controller
- }
- else
- {
- PrepareOwnedSlotsTooltip( icon.GetSelectedPanel(), icon.GetSlotDisplayName(), icon.GetSlotDesc(), x, y );
- }
- }
-
- override void UnfocusAll()
- {
- for (int i = 0; i < m_Icons.Count(); i++)
- {
- m_Icons.Get( i ).GetSelectedPanel().Show( false );
- }
- }
-
- override void Unfocus()
- {
- Widget w = m_Icons.Get( m_FocusedColumn ).GetSelectedPanel();
- if ( w )
- {
- w.Show( false );
- }
- }
-
- override bool SelectItem()
- {
- ItemBase item = ItemBase.Cast( GetFocusedItem() );
- SlotsIcon icon = GetFocusedSlotsIcon();
-
- if( item && !item.IsLockedInSlot() && !icon.IsOutOfReach() && !icon.IsReserved() && item.IsTakeable() && item.CanPutIntoHands(null))
- {
- ItemManager.GetInstance().SetSelectedItemEx(item, null, icon);
- return true;
- }
- return false;
- }
-
- override bool IsEmpty()
- {
- return false;
- }
-
- override bool IsDisplayable()
- {
- if (m_ForcedShow)
- return true;
- for (int i = 0; i < m_ColumnCount; i++)
- {
- if ( GetSlotIcon(i).IsVisible() )
- {
- return true;
- }
- }
- return false;
- }
-
- SlotsIcon GetSlotIcon( int index )
- {
- if ( m_Icons.IsValidIndex( index ) )
- {
- return m_Icons.Get( index );
- }
-
- return null;
- }
-
- override SlotsIcon GetFocusedSlotsIcon()
- {
- if (m_Icons.Count())
- {
- return m_Icons.Get(m_FocusedColumn);
- }
- return null;
- }
-
- override EntityAI GetFocusedItem()
- {
- SlotsIcon focus_icon = GetFocusedSlotsIcon();
- if(focus_icon && !focus_icon.IsReserved())
- {
- return EntityAI.Cast(focus_icon.GetObject());
- }
- return null;
- }
- override void SetLayoutName()
- {
- #ifdef PLATFORM_CONSOLE
- m_LayoutName = WidgetLayoutName.InventorySlotsContainerXbox;
- #else
- switch ( InventoryMenu.GetWidthType() )
- {
- case ScreenWidthType.NARROW:
- {
- m_LayoutName = WidgetLayoutName.InventorySlotsContainerNarrow;
- break;
- }
- case ScreenWidthType.MEDIUM:
- {
- m_LayoutName = WidgetLayoutName.InventorySlotsContainerMedium;
- break;
- }
- case ScreenWidthType.WIDE:
- {
- m_LayoutName = WidgetLayoutName.InventorySlotsContainerWide;
- break;
- }
- }
- #endif
-
- }
-
- //! Returns 'true' if radial icon is VISIBLE and also OPEN (individual icon or any icon, use parameter..)
- bool VerifySlotsIconVisibility(int idx = -1)
- {
- if (idx != -1)
- {
- return m_Icons[idx].IsVisible() && m_Icons[idx].GetRadialIconPanel().IsVisible() && m_Icons[idx].GetRadialIcon().IsVisible();
- }
- else
- {
- int count = m_Icons.Count();
- for (int i = 0; i < count; i++)
- {
- if (m_Icons[i].IsVisible() && m_Icons[i].GetRadialIconPanel().IsVisible() && m_Icons[i].GetRadialIcon().IsVisible())
- {
- return true;
- }
- }
- }
- return false;
- }
- }
|