4 private ItemPreviewWidget m_item_widget;
5 private ItemPreviewWidget m_slot_widget;
6 private int m_characterRotationX;
7 private int m_characterRotationY;
8 private int m_characterScaleDelta;
9 private vector m_characterOrientation;
14 g_Game.GetMission().AddActiveInputExcludes({
"inspect"});
18 void ~InspectMenuNew()
20 g_Game.GetDragQueue().RemoveCalls(
this);
21 Mission mis =
g_Game.GetMission();
24 mis.GetHud().ShowHudUI(
true);
25 mis.GetHud().ShowQuickbarUI(
true);
26 mis.RemoveActiveInputExcludes({
"inspect"});
31 override Widget
Init()
33 layoutRoot =
g_Game.GetWorkspace().CreateWidgets(
"gui/layouts/inventory_new/day_z_inventory_new_inspect.layout");
40 override bool OnClick(Widget w,
int x,
int y,
int button)
42 super.OnClick(w,
x,
y, button);
44 switch (w.GetUserID())
59 InspectMenuNew.UpdateItemInfo(layoutRoot, item);
63 Widget preview_frame = layoutRoot.FindAnyWidget(
"ItemFrameWidget");
66 m_item_widget = ItemPreviewWidget.Cast( preview_frame );
70 m_item_widget.SetItem(item);
71 m_item_widget.SetView( item.GetViewIndex() );
72 m_item_widget.SetModelPosition(
Vector(0,0,1));
73 PPERequesterBank.GetRequester(PPERequester_InventoryBlur).Start();
80 super.OnMouseButtonDown(w,
x,
y, button);
82 if (w == m_item_widget)
84 g_Game.GetDragQueue().Call(
this,
"UpdateRotation");
85 GetMousePos(m_characterRotationX, m_characterRotationY);
92 void UpdateRotation(
int mouse_x,
int mouse_y,
bool is_dragging)
94 vector o = m_characterOrientation;
95 o[0] = o[0] + (m_characterRotationY - mouse_y);
96 o[1] = o[1] - (m_characterRotationX - mouse_x);
98 m_item_widget.SetModelOrientation( o );
102 m_characterOrientation = o;
107 override bool OnMouseWheel(Widget w,
int x,
int y,
int wheel)
109 super.OnMouseWheel(w,
x,
y, wheel);
111 if ( w == m_item_widget )
113 m_characterScaleDelta = wheel;
123 m_item_widget.GetPos(
x,
y);
124 m_item_widget.GetSize(w,h);
125 w = w + ( m_characterScaleDelta / 4);
126 h = h + ( m_characterScaleDelta / 4 );
127 if ( w > 0.5 && w < 3 )
129 m_item_widget.SetSize( w, h );
132 int screen_w, screen_h;
134 float new_x =
x - ( m_characterScaleDelta / 8 );
135 float new_y =
y - ( m_characterScaleDelta / 8 );
136 m_item_widget.SetPos( new_x, new_y );
140 static void UpdateItemInfo(Widget root_widget,
EntityAI item)
142 if (!root_widget || !item)
return;
144 Widget panelInfo = root_widget.FindAnyWidget(
"InventoryInfoPanelWidget");
147 if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) )
149 panelInfo.Show(
false );
153 panelInfo.Show(
true );
157 if ( !item.IsInherited( ZombieBase ) && !item.IsInherited( Car ) )
159 InventoryItem iItem = InventoryItem.Cast( item );
160 string tooltip = iItem.GetTooltip();
161 if (iItem.IsMeleeFinisher())
162 tooltip = tooltip +
"\n" +
"#inv_inspect_stealth_tooltip";
164 WidgetTrySetText(root_widget,
"ItemDescWidget", tooltip);
168 WidgetTrySetText(root_widget,
"ItemNameWidget", item.GetDisplayName());
169 InspectMenuNew.UpdateItemInfoDamage(root_widget, item);
170 InspectMenuNew.UpdateItemInfoLiquidType(root_widget, item);
171 InspectMenuNew.UpdateItemInfoTemperature(root_widget, item);
172 InspectMenuNew.UpdateItemInfoWetness(root_widget, item);
173 InspectMenuNew.UpdateItemInfoQuantity(root_widget, item);
174 InspectMenuNew.UpdateItemInfoWeight(root_widget, item);
175 InspectMenuNew.UpdateItemInfoFoodStage(root_widget, item);
176 InspectMenuNew.UpdateItemInfoCleanness(root_widget, item);
178 Widget content = root_widget.FindAnyWidget(
"InventoryInfoPanelWidget");
182 static void UpdateSlotInfo(Widget root_widget,
string name,
string desc =
"")
184 if (!root_widget )
return;
186 WidgetTrySetText(root_widget,
"ItemNameWidget",
name);
190 static void UpdateItemInfoDamage(Widget root_widget,
EntityAI item)
192 if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) )
return;
194 int damageLevel = item.GetHealthLevel();
198 case GameConstants.STATE_RUINED:
200 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_ruined",
Colors.COLOR_RUINED);
203 case GameConstants.STATE_BADLY_DAMAGED:
205 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_badly",
Colors.COLOR_BADLY_DAMAGED);
209 case GameConstants.STATE_DAMAGED:
211 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_damaged",
Colors.COLOR_DAMAGED);
215 case GameConstants.STATE_WORN:
217 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_worn",
Colors.COLOR_WORN);
221 case GameConstants.STATE_PRISTINE:
223 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_pristine",
Colors.COLOR_PRISTINE);
229 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"ERROR",
Colors.COLOR_PRISTINE);
237 static void UpdateItemInfoLiquidType(Widget root_widget,
EntityAI item)
239 if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) )
return;
243 if( item_base && item_base.GetQuantity() > 0 && item_base.IsBloodContainer() )
245 BloodContainerBase blood_container = BloodContainerBase.Cast( item_base );
247 if( blood_container.GetBloodTypeVisible() )
251 string blood_type_name = BloodTypes.GetBloodTypeName(blood_container.GetLiquidType(), type, positive);
252 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_blood: " + blood_type_name,
Colors.COLOR_LIQUID);
256 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_blood",
Colors.COLOR_LIQUID);
259 else if( item_base && item_base.GetQuantity() > 0 && item_base.IsLiquidContainer() )
261 int liquid_type = item_base.GetLiquidType();
267 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_water",
Colors.COLOR_LIQUID);
273 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_river_water",
Colors.COLOR_LIQUID);
279 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_vodka",
Colors.COLOR_LIQUID);
285 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_beer",
Colors.COLOR_LIQUID);
291 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_gasoline",
Colors.COLOR_LIQUID);
297 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_diesel",
Colors.COLOR_LIQUID);
303 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_disinfectant",
Colors.COLOR_LIQUID);
309 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"#inv_inspect_saline",
Colors.COLOR_LIQUID);
315 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"ERROR",
Colors.COLOR_LIQUID);
322 WidgetTrySetText(root_widget,
"ItemLiquidTypeWidget",
"");
327 static void UpdateItemInfoTemperature(Widget root_widget,
EntityAI item)
329 if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) )
return;
332 ObjectTemperatureState temperatureState;
335 if (item_base && item.CanHaveTemperature())
337 temperature = item_base.GetTemperature();
338 temperatureState = ObjectTemperatureState.GetStateData(temperature);
342 WidgetTrySetText(root_widget,
"ItemTemperatureWidget",
"");
344 WidgetTrySetText(root_widget,
"ItemTemperatureWidget", temperatureState.m_LocalizedName, temperatureState.m_Color);
348 static void UpdateItemInfoWetness(Widget root_widget,
EntityAI item)
350 if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) )
return;
356 wetness = item_IB.GetWet();
359 if (item.GetIsFrozen())
361 WidgetTrySetText(root_widget,
"ItemWetnessWidget",
"#inv_inspect_frozen",
Colors.COLOR_FROZEN);
363 else if ( wetness < GameConstants.STATE_DAMP )
365 WidgetTrySetText(root_widget,
"ItemWetnessWidget",
"");
367 else if( wetness >= GameConstants.STATE_DAMP && wetness < GameConstants.STATE_WET )
369 WidgetTrySetText(root_widget,
"ItemWetnessWidget",
"#inv_inspcet_damp",
Colors.COLOR_DAMP);
371 else if( wetness >= GameConstants.STATE_WET && wetness < GameConstants.STATE_SOAKING_WET )
373 WidgetTrySetText( root_widget,
"ItemWetnessWidget",
"#inv_inspect_wet",
Colors.COLOR_WET );
375 else if( wetness >= GameConstants.STATE_SOAKING_WET && wetness < GameConstants.STATE_DRENCHED )
377 WidgetTrySetText( root_widget,
"ItemWetnessWidget",
"#inv_inspect_soaking_wet",
Colors.COLOR_SOAKING_WET );
381 WidgetTrySetText( root_widget,
"ItemWetnessWidget",
"#inv_inspect_drenched",
Colors.COLOR_DRENCHED );
386 static void UpdateItemInfoQuantity(Widget root_widget,
EntityAI item)
388 if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) )
return;
393 float item_quantity = item_base.GetQuantity();
394 int max_quantity = item.GetQuantityMax();
396 float quantity_ratio;
398 if( max_quantity > 0 && !item.IsInherited(
ClothingBase ))
401 if( item.ConfigGetString(
"stackedUnit") ==
"pc." )
403 if( item_quantity == 1 )
405 WidgetTrySetText( root_widget,
"ItemQuantityWidget", item_quantity.ToString() +
" " +
"#inv_inspect_piece",
Colors.COLOR_DEFAULT );
409 WidgetTrySetText( root_widget,
"ItemQuantityWidget", item_quantity.ToString() +
" " +
"#inv_inspect_pieces",
Colors.COLOR_DEFAULT );
412 else if( item.ConfigGetString(
"stackedUnit") ==
"percentage" )
414 quantity_ratio = Math.Round( ( item_quantity / max_quantity ) * 100 );
416 quantity_str =
"#inv_inspect_remaining " + quantity_ratio.ToString() +
"#inv_inspect_percent";
417 WidgetTrySetText( root_widget,
"ItemQuantityWidget", quantity_str,
Colors.COLOR_DEFAULT );
419 else if( item.ConfigGetString(
"stackedUnit") ==
"g" )
421 quantity_ratio = Math.Round( ( item_quantity / max_quantity ) * 100 );
423 quantity_str =
"#inv_inspect_remaining " + quantity_ratio.ToString() +
"#inv_inspect_percent";
424 WidgetTrySetText( root_widget,
"ItemQuantityWidget", quantity_str,
Colors.COLOR_DEFAULT );
426 else if( item.ConfigGetString(
"stackedUnit") ==
"ml" )
428 quantity_ratio = Math.Round( ( item_quantity / max_quantity ) * 100 );
430 quantity_str =
"#inv_inspect_remaining " + quantity_ratio.ToString() +
"#inv_inspect_percent";
431 WidgetTrySetText( root_widget,
"ItemQuantityWidget", quantity_str,
Colors.COLOR_DEFAULT );
433 else if( item.IsInherited( Magazine ) )
435 Magazine magazine_item;
436 Class.CastTo(magazine_item, item);
438 if( magazine_item.GetAmmoCount() == 1 )
440 WidgetTrySetText( root_widget,
"ItemQuantityWidget", magazine_item.GetAmmoCount().ToString() +
" " +
"#inv_inspect_piece",
Colors.COLOR_DEFAULT );
444 WidgetTrySetText( root_widget,
"ItemQuantityWidget", magazine_item.GetAmmoCount().ToString() +
" " +
"#inv_inspect_pieces",
Colors.COLOR_DEFAULT );
449 WidgetTrySetText( root_widget,
"ItemQuantityWidget",
"" );
456 float heatIsolation = MiscGameplayFunctions.GetCurrentItemHeatIsolation( item_base );
457 if ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_BAD )
459 WidgetTrySetText( root_widget,
"ItemQuantityWidget",
"#inv_inspect_iso_worst",
GetTemperatureColor( 10 ) );
461 else if ( ( heatIsolation > GameConstants.HEATISO_THRESHOLD_BAD ) && ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_LOW ) )
463 WidgetTrySetText( root_widget,
"ItemQuantityWidget",
"#inv_inspect_iso_low",
GetTemperatureColor( 20 ) );
465 else if ( ( heatIsolation > GameConstants.HEATISO_THRESHOLD_LOW ) && ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_MEDIUM ) )
467 WidgetTrySetText( root_widget,
"ItemQuantityWidget",
"#inv_inspect_iso_medium",
GetTemperatureColor( 30 ) );
469 else if ( ( heatIsolation > GameConstants.HEATISO_THRESHOLD_MEDIUM ) && ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_HIGH ) )
471 WidgetTrySetText( root_widget,
"ItemQuantityWidget",
"#inv_inspect_iso_high",
GetTemperatureColor( 50 ) );
475 WidgetTrySetText( root_widget,
"ItemQuantityWidget",
"#inv_inspect_iso_excel",
GetTemperatureColor( 70 ) );
480 WidgetTrySetText( root_widget,
"ItemQuantityWidget",
"" );
487 static void UpdateItemInfoWeight(Widget root_widget,
EntityAI item)
489 if (!item.CanDisplayWeight())
491 WidgetTrySetText(root_widget,
"ItemWeightWidget",
"",
Colors.COLOR_DEFAULT);
498 int weight = item_IB.GetWeightEx();
500 if (root_widget.GetName() !=
"BackPanelWidget")
502 weight = item_IB.GetSingleInventoryItemWeightEx();
507 int kilos = Math.Round(weight / 1000.0);
508 WidgetTrySetText(root_widget,
"ItemWeightWidget",
"#inv_inspect_about" +
" " + kilos.ToString() +
" " +
"#inv_inspect_kg",
Colors.COLOR_DEFAULT);
510 else if (weight >= 500)
512 WidgetTrySetText(root_widget,
"ItemWeightWidget",
"#inv_inspect_under_1",
Colors.COLOR_DEFAULT);
514 else if (weight >= 250)
516 WidgetTrySetText(root_widget,
"ItemWeightWidget",
"#inv_inspect_under_05",
Colors.COLOR_DEFAULT);
520 WidgetTrySetText(root_widget,
"ItemWeightWidget",
"#inv_inspect_under_025",
Colors.COLOR_DEFAULT);
526 static void UpdateItemInfoFoodStage(Widget root_widget,
EntityAI item)
528 Edible_Base food_item = Edible_Base.Cast( item );
532 FoodStageType food_stage_type = food_stage.GetFoodStageType();
534 switch( food_stage_type )
538 WidgetTrySetText( root_widget,
"ItemFoodStageWidget",
"#inv_inspect_raw",
Colors.COLOR_RAW );
543 WidgetTrySetText( root_widget,
"ItemFoodStageWidget",
"#inv_inspect_baked",
Colors.COLOR_BAKED );
548 WidgetTrySetText( root_widget,
"ItemFoodStageWidget",
"#inv_inspect_boiled",
Colors.COLOR_BOILED );
553 WidgetTrySetText( root_widget,
"ItemFoodStageWidget",
"#inv_inspect_dried",
Colors.COLOR_DRIED );
558 WidgetTrySetText( root_widget,
"ItemFoodStageWidget",
"#inv_inspect_burned",
Colors.COLOR_BURNED );
563 WidgetTrySetText( root_widget,
"ItemFoodStageWidget",
"#inv_inspect_rotten",
Colors.COLOR_ROTTEN );
570 WidgetTrySetText( root_widget,
"ItemFoodStageWidget",
"" );
576 static void UpdateItemInfoCleanness(Widget root_widget,
EntityAI item)
579 if(ib && ib.m_Cleanness==1)
581 WidgetTrySetText( root_widget,
"ItemCleannessWidget",
"#inv_inspect_cleaned",
Colors.WHITEGRAY );
585 WidgetTrySetText( root_widget,
"ItemCleannessWidget",
"" );
592 static void WidgetTrySetText(Widget root_widget,
string widget_name,
string text,
int color = 0)
594 TextWidget widget = TextWidget.Cast( root_widget.FindAnyWidget(widget_name) );
595 RichTextWidget rt_widget = RichTextWidget.Cast( root_widget.FindAnyWidget(widget_name) );
598 widget.SetText(text);
599 Widget widget_background = root_widget.FindAnyWidget(widget_name+
"Background");
600 if (widget_background)
604 widget_background.Show(
true );
605 widget_background.SetColor(color | 0x7F000000);
609 widget_background.Show(
false );
621 super.OnPlayerDeath();
625 MissionGameplay missionGameplay = MissionGameplay.Cast(
g_Game.GetMission());
626 if (missionGameplay && missionGameplay.GetInventory())
628 missionGameplay.HideInventory();
#define LIQUID_FRESHWATER
#define LIQUID_DISINFECTANT
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
override FoodStage GetFoodStage()
class GP5GasMask extends MaskBase ItemBase
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
proto void GetScreenSize(out int x, out int y)
proto void GetMousePos(out int x, out int y)