91 protected ref array<ref RadialQuickbarItem>
m_Items;
96 const string TEXT_ITEM_NAME =
"ItemName";
97 const string TEXT_ITEM_TITLE =
"ItemTitle";
110 m_Items =
new ref array<ref RadialQuickbarItem>;
125 m_ItemToAssign = item;
138 RadialQuickbarMenu.SetItemToAssign( NULL );
160 m_ItemCardPanel = layoutRoot.FindAnyWidget(
RadialMenu.RADIAL_ITEM_CARD_CONTAINER );
163 RadialMenu.GetInstance().RegisterClass(
this );
166 RadialMenu.GetInstance().SetWidgetInitialized(
false);
169 RadialMenu.GetInstance().SetWidgetProperties(
"gui/layouts/radial_menu/radial_quickbar/radial_quickbar_delimiter.layout" );
175 #ifdef PLATFORM_CONSOLE
176 ImageWidget toolbar_select = ImageWidget.Cast(layoutRoot.FindAnyWidget(
"SelectIcon" ));
177 ImageWidget toolbar_back = ImageWidget.Cast(layoutRoot.FindAnyWidget(
"CombineIcon" ));
179 toolbar_select.LoadImageFile( 0,
"set:xbox_buttons image:A" );
180 toolbar_back.LoadImageFile( 0,
"set:xbox_buttons image:B" );
183 string confirm =
"cross";
184 string back =
"circle";
195 toolbar_select.LoadImageFile( 0,
"set:playstation_buttons image:" + confirm );
196 toolbar_back.LoadImageFile( 0,
"set:playstation_buttons image:" + back );
200 #ifdef PLATFORM_WINDOWS
201 Widget toolbar_panel = layoutRoot.FindAnyWidget(
"toolbar_bg" );
202 toolbar_panel.Show( !
RadialMenu.GetInstance().IsUsingMouse() );
213 m_IsMenuClosing =
false;
218 super.OnController( w, control, value );
227 super.OnMouseEnter( w,
x,
y );
250 int selected_item_id = -1;
251 if ( !reset_selection )
254 if ( instance.m_SelectedItem )
256 instance.m_SelectedItem.GetUserData( quickbar_item );
257 selected_item_id = quickbar_item.GetId();
269 protected void GetItems( out ref array<ref RadialQuickbarItem> items )
274 int size = player.GetQuickBarSize();
277 for (
int i = 0; i < size; ++i )
279 entity = player.GetQuickBarEntity( i );
292 ItemBase headgear =
ItemBase.Cast(player.FindAttachmentBySlotName(
"Headgear"));
293 ItemBase eyewear =
ItemBase.Cast(player.FindAttachmentBySlotName(
"Eyewear"));
298 entity = headgear.FindAttachmentBySlotName(
"NVG");
308 entity = eyewear.FindAttachmentBySlotName(
"NVG");
318 if ( headgear.IsLightSource() && headgear.HasEnergyManager() && headgear.GetCompEM().CanWork() )
324 else if ( headgear.GetInventory().AttachmentCount() > 0 )
327 for (
int i = 0; i < headgear.GetInventory().AttachmentCount(); i++)
329 attachment =
ItemBase.Cast(headgear.GetInventory().GetAttachmentFromIndex(i));
330 if ( attachment && attachment.IsLightSource() && attachment.HasEnergyManager() && attachment.GetCompEM().CanWork() )
358 int category_item_count;
360 for (
int i = 0; i < m_Items.Count(); ++i )
364 if (quickbar_item.GetItemCategory() == m_CurrentCategory)
367 Widget item_card_widget =
Widget.Cast(
GetGame().GetWorkspace().CreateWidgets(
"gui/layouts/radial_menu/radial_quickbar/radial_quickbar_item_card.layout", m_ItemCardPanel ) );
368 quickbar_item.SetRadialItemCard( item_card_widget );
374 item_card_widget.SetUserData( quickbar_item );
377 if ( quickbar_item.GetId() == selected_item_id )
381 category_item_count++;
386 if ( category_item_count > 0 )
389 radial_menu.SetRadiusOffset( 0 );
390 radial_menu.SetExecuteDistOffset( 0.5 );
391 radial_menu.SetOffsetFromTop( 0 );
392 radial_menu.SetItemCardRadiusOffset( 0.25 );
393 radial_menu.ActivateControllerTimeout(
false );
402 Widget item_card_widget = quickbar_item.GetRadialItemCard();
405 Widget item_details = item_card_widget.FindAnyWidget(
"ItemDetails" );
410 EntityAI item = quickbar_item.GetItem();
412 Widget quantity_panel = item_card_widget.FindAnyWidget(
"QuantityPanel" );
416 text_widget.SetText( quickbar_item.GetItem().GetDisplayName() );
421 item_preview.
SetView( item.GetViewIndex() );
425 Widget quantity_stack = quantity_panel.FindAnyWidget(
"QuantityStackPanel" );
426 ProgressBarWidget quantity_bar = ProgressBarWidget.Cast( quantity_panel.FindAnyWidget(
"QuantityBar" ) );
431 quantity_panel.Show(
false );
436 quantity_bar.Show(
false );
441 quantity_stack.Show(
true );
446 quantity_stack.Show(
false );
449 float progress_max = quantity_bar.GetMax();
450 int max = item.ConfigGetInt(
"varQuantityMax" );
451 int count = item.ConfigGetInt(
"count" );
461 float value =
Math.
Round( ( quantity / max ) * 100 );
462 quantity_bar.SetCurrent( value );
465 quantity_bar.Show(
true );
469 item_details.Show(
true );
470 item_title.Show(
false );
472 else if ( quickbar_item.GetCategorySwitchID() != -1 )
474 item_title.SetText( quickbar_item.GetItemName() );
476 item_details.Show(
false );
477 item_title.Show(
true );
481 item_title.SetText(
"#container_empty" );
484 item_details.Show(
false );
485 item_title.Show(
true );
495 child = m_ItemCardPanel.GetChildren();
498 child_to_destroy = child;
499 child = child.GetSibling();
501 delete child_to_destroy;
507 m_CurrentCategory = category;
518 Widget toolbar_panel = layoutRoot.FindAnyWidget(
"toolbar_bg" );
521 toolbar_panel.Show(
true );
525 toolbar_panel.Show(
true );
590 m_SelectedItem = NULL;
620 if ( instance.m_SelectedItem )
625 instance.m_SelectedItem.GetUserData( quickbar_item );
635 if ( quickbar_item.GetItem() == GetItemToAssign() )
641 player.SetQuickBarEntityShortcut(
GetItemToAssign(), quickbar_item.GetId() );
645 else if (m_CurrentCategory ==
RadialQuickbarCategory.SPECIALIZED_LIGHTS && quickbar_item.IsLightSourceExtra())
655 else if (quickbar_item.GetCategorySwitchID() != -1)
663 EntityAI item = quickbar_item.GetItem();
668 player.RadialQuickBarSingleUse( quickbar_item.GetId() + 1 );
685 instance.m_SelectedItem.GetUserData( quickbar_item );
690 EntityAI item = quickbar_item.GetItem();
695 player.RadialQuickBarCombine( quickbar_item.GetId() + 1 );
713 if ( Headtorch_ColorBase.Cast(item) )
725 else if ( Mich2001Helmet.Cast(item.GetHierarchyParent()) )
759 m_IsMenuClosing = state;