6 private int m_characterRotationX;
7 private int m_characterRotationY;
8 private int m_characterScaleDelta;
9 private vector m_characterOrientation;
14 GetGame().GetMission().AddActiveInputExcludes({
"inspect"});
18 void ~InspectMenuNew()
20 GetGame().GetDragQueue().RemoveCalls(
this);
24 mis.GetHud().ShowHudUI(
true);
25 mis.GetHud().ShowQuickbarUI(
true);
26 mis.RemoveActiveInputExcludes({
"inspect"});
31 override Widget
Init()
33 layoutRoot =
GetGame().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");
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 GetGame().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 ) )
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();
200 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_ruined",
Colors.COLOR_RUINED);
205 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_badly",
Colors.COLOR_BADLY_DAMAGED);
211 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_damaged",
Colors.COLOR_DAMAGED);
217 WidgetTrySetText(root_widget,
"ItemDamageWidget",
"#inv_inspect_worn",
Colors.COLOR_WORN);
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() )
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);
365 WidgetTrySetText(root_widget,
"ItemWetnessWidget",
"");
369 WidgetTrySetText(root_widget,
"ItemWetnessWidget",
"#inv_inspcet_damp",
Colors.COLOR_DAMP);
373 WidgetTrySetText( root_widget,
"ItemWetnessWidget",
"#inv_inspect_wet",
Colors.COLOR_WET );
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 );
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)
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) );
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
Super root of all classes in Enforce script.
override FoodStage GetFoodStage()
proto native CGame GetGame()
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)