123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629 |
- //--------------------------------------------------------------------------
- class InspectMenuNew extends UIScriptedMenu
- {
- private ItemPreviewWidget m_item_widget;
- private ItemPreviewWidget m_slot_widget;
- private int m_characterRotationX;
- private int m_characterRotationY;
- private int m_characterScaleDelta;
- private vector m_characterOrientation;
-
- void InspectMenuNew()
- {
-
- }
-
- //--------------------------------------------------------------------------
- void ~InspectMenuNew()
- {
- GetGame().GetDragQueue().RemoveCalls(this);
- if (GetGame().GetMission())
- {
- GetGame().GetMission().GetHud().ShowHudUI( true );
- GetGame().GetMission().GetHud().ShowQuickbarUI( true );
- }
- }
-
- //--------------------------------------------------------------------------
- override Widget Init()
- {
- layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/inventory_new/day_z_inventory_new_inspect.layout");
-
-
- return layoutRoot;
- }
-
- //--------------------------------------------------------------------------
- override bool OnClick(Widget w, int x, int y, int button)
- {
- super.OnClick(w, x, y, button);
-
- switch (w.GetUserID())
- {
- case IDC_CANCEL:
- Close();
- return true;
- }
-
- return false;
- }
-
- //--------------------------------------------------------------------------
- void SetItem(EntityAI item)
- {
- if (item)
- {
- InspectMenuNew.UpdateItemInfo(layoutRoot, item);
-
- if (!m_item_widget)
- {
- Widget preview_frame = layoutRoot.FindAnyWidget("ItemFrameWidget");
- if (preview_frame)
- {
- m_item_widget = ItemPreviewWidget.Cast( preview_frame );
- }
- }
-
- m_item_widget.SetItem(item);
- m_item_widget.SetView( item.GetViewIndex() );
- m_item_widget.SetModelPosition(Vector(0,0,1));
- PPERequesterBank.GetRequester(PPERequester_InventoryBlur).Start();
- }
- }
-
- //--------------------------------------------------------------------------
- override bool OnMouseButtonDown(Widget w, int x, int y, int button)
- {
- super.OnMouseButtonDown(w, x, y, button);
-
- if (w == m_item_widget)
- {
- GetGame().GetDragQueue().Call(this, "UpdateRotation");
- GetMousePos(m_characterRotationX, m_characterRotationY);
- return true;
- }
- return false;
- }
-
- //--------------------------------------------------------------------------
- void UpdateRotation(int mouse_x, int mouse_y, bool is_dragging)
- {
- vector o = m_characterOrientation;
- o[0] = o[0] + (m_characterRotationY - mouse_y);
- o[1] = o[1] - (m_characterRotationX - mouse_x);
-
- m_item_widget.SetModelOrientation( o );
-
- if (!is_dragging)
- {
- m_characterOrientation = o;
- }
- }
-
- //--------------------------------------------------------------------------
- override bool OnMouseWheel(Widget w, int x, int y, int wheel)
- {
- super.OnMouseWheel(w, x, y, wheel);
-
- if ( w == m_item_widget )
- {
- m_characterScaleDelta = wheel;
- UpdateScale();
- }
- return false;
- }
-
- //--------------------------------------------------------------------------
- void UpdateScale()
- {
- float w, h, x, y;
- m_item_widget.GetPos(x, y);
- m_item_widget.GetSize(w,h);
- w = w + ( m_characterScaleDelta / 4);
- h = h + ( m_characterScaleDelta / 4 );
- if ( w > 0.5 && w < 3 )
- {
- m_item_widget.SetSize( w, h );
-
- // align to center
- int screen_w, screen_h;
- GetScreenSize(screen_w, screen_h);
- float new_x = x - ( m_characterScaleDelta / 8 );
- float new_y = y - ( m_characterScaleDelta / 8 );
- m_item_widget.SetPos( new_x, new_y );
- }
- }
- //--------------------------------------------------------------------------
- static void UpdateItemInfo(Widget root_widget, EntityAI item)
- {
- if (!root_widget || !item) return;
-
- Widget panelInfo = root_widget.FindAnyWidget("InventoryInfoPanelWidget");
- if ( panelInfo )
- {
- if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) )
- {
- panelInfo.Show( false );
- }
- else
- {
- panelInfo.Show( true );
- }
- }
-
- if ( !item.IsInherited( ZombieBase ) && !item.IsInherited( Car ) )
- {
- InventoryItem iItem = InventoryItem.Cast( item );
- string tooltip = iItem.GetTooltip();
- if (iItem.IsMeleeFinisher())
- tooltip = tooltip + "\n" + "#inv_inspect_stealth_tooltip";
-
- WidgetTrySetText(root_widget, "ItemDescWidget", tooltip);
-
- }
-
- WidgetTrySetText(root_widget, "ItemNameWidget", item.GetDisplayName());
- InspectMenuNew.UpdateItemInfoDamage(root_widget, item);
- InspectMenuNew.UpdateItemInfoLiquidType(root_widget, item);
- InspectMenuNew.UpdateItemInfoTemperature(root_widget, item);
- InspectMenuNew.UpdateItemInfoWetness(root_widget, item);
- InspectMenuNew.UpdateItemInfoQuantity(root_widget, item);
- InspectMenuNew.UpdateItemInfoWeight(root_widget, item);
- InspectMenuNew.UpdateItemInfoFoodStage(root_widget, item);
- InspectMenuNew.UpdateItemInfoCleanness(root_widget, item);
-
- Widget content = root_widget.FindAnyWidget("InventoryInfoPanelWidget");
- }
-
- //--------------------------------------------------------------------------
- static void UpdateSlotInfo(Widget root_widget, string name, string desc = "")
- {
- if (!root_widget ) return;
-
- WidgetTrySetText(root_widget, "ItemNameWidget", name);
- }
- //--------------------------------------------------------------------------
- static void UpdateItemInfoDamage(Widget root_widget, EntityAI item)
- {
- if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) ) return;
-
- int damageLevel = item.GetHealthLevel();
-
- switch(damageLevel)
- {
- case GameConstants.STATE_RUINED:
- {
- WidgetTrySetText(root_widget, "ItemDamageWidget", "#inv_inspect_ruined", Colors.COLOR_RUINED);
- break;
- }
- case GameConstants.STATE_BADLY_DAMAGED:
- {
- WidgetTrySetText(root_widget, "ItemDamageWidget", "#inv_inspect_badly", Colors.COLOR_BADLY_DAMAGED);
- break;
- }
-
- case GameConstants.STATE_DAMAGED:
- {
- WidgetTrySetText(root_widget, "ItemDamageWidget", "#inv_inspect_damaged", Colors.COLOR_DAMAGED);
- break;
- }
-
- case GameConstants.STATE_WORN:
- {
- WidgetTrySetText(root_widget, "ItemDamageWidget", "#inv_inspect_worn", Colors.COLOR_WORN);
- break;
- }
-
- case GameConstants.STATE_PRISTINE:
- {
- WidgetTrySetText(root_widget, "ItemDamageWidget", "#inv_inspect_pristine", Colors.COLOR_PRISTINE);
- break;
- }
-
- default:
- {
- WidgetTrySetText(root_widget, "ItemDamageWidget", "ERROR", Colors.COLOR_PRISTINE);
- break;
- }
- }
-
- }
-
- //--------------------------------------------------------------------------
- static void UpdateItemInfoLiquidType(Widget root_widget, EntityAI item)
- {
- if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) ) return;
-
- ItemBase item_base = ItemBase.Cast( item );
-
- if( item_base && item_base.GetQuantity() > 0 && item_base.IsBloodContainer() )
- {
- BloodContainerBase blood_container = BloodContainerBase.Cast( item_base );
-
- if( blood_container.GetBloodTypeVisible() )
- {
- string type;
- bool positive;
- string blood_type_name = BloodTypes.GetBloodTypeName(blood_container.GetLiquidType(), type, positive);
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_blood: " + blood_type_name, Colors.COLOR_LIQUID);
- }
- else
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_blood", Colors.COLOR_LIQUID);
- }
- }
- else if( item_base && item_base.GetQuantity() > 0 && item_base.IsLiquidContainer() )
- {
- int liquid_type = item_base.GetLiquidType();
-
- switch(liquid_type)
- {
- case LIQUID_WATER:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_water", Colors.COLOR_LIQUID);
- break;
- }
-
- case LIQUID_FRESHWATER:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_river_water", Colors.COLOR_LIQUID);
- break;
- }
-
- case LIQUID_VODKA:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_vodka", Colors.COLOR_LIQUID);
- break;
- }
-
- case LIQUID_BEER:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_beer", Colors.COLOR_LIQUID);
- break;
- }
-
- case LIQUID_GASOLINE:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_gasoline", Colors.COLOR_LIQUID);
- break;
- }
-
- case LIQUID_DIESEL:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_diesel", Colors.COLOR_LIQUID);
- break;
- }
-
- case LIQUID_DISINFECTANT:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_disinfectant", Colors.COLOR_LIQUID);
- break;
- }
-
- case LIQUID_SALINE:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "#inv_inspect_saline", Colors.COLOR_LIQUID);
- break;
- }
-
- default:
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "ERROR", Colors.COLOR_LIQUID);
- break;
- }
- }
- }
- else
- {
- WidgetTrySetText(root_widget, "ItemLiquidTypeWidget", "");
- }
- }
-
- //--------------------------------------------------------------------------
- static void UpdateItemInfoTemperature(Widget root_widget, EntityAI item)
- {
- if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) ) return;
-
- float temperature;
- ObjectTemperatureState temperatureState;
- ItemBase item_base = ItemBase.Cast(item);
-
- if (item_base && item.CanHaveTemperature())
- {
- temperature = item_base.GetTemperature();
- temperatureState = ObjectTemperatureState.GetStateData(temperature);
- }
-
- if (!temperatureState || temperatureState.m_State == EObjectTemperatureState.NEUTRAL)
- WidgetTrySetText(root_widget, "ItemTemperatureWidget", "");
- else
- WidgetTrySetText(root_widget, "ItemTemperatureWidget", temperatureState.m_LocalizedName, temperatureState.m_Color);
- }
-
- //--------------------------------------------------------------------------
- static void UpdateItemInfoWetness(Widget root_widget, EntityAI item)
- {
- if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) ) return;
- float wetness = 0;
-
- if ( item.IsInherited(ItemBase) )
- {
- ItemBase item_IB = ItemBase.Cast( item );
- wetness = item_IB.GetWet();
- }
- if (item.GetIsFrozen())
- {
- WidgetTrySetText(root_widget, "ItemWetnessWidget", "#inv_inspect_frozen", Colors.COLOR_FROZEN);
- }
- else if ( wetness < GameConstants.STATE_DAMP )
- {
- WidgetTrySetText(root_widget, "ItemWetnessWidget", "");
- }
- else if( wetness >= GameConstants.STATE_DAMP && wetness < GameConstants.STATE_WET )
- {
- WidgetTrySetText(root_widget, "ItemWetnessWidget", "#inv_inspcet_damp", Colors.COLOR_DAMP);
- }
- else if( wetness >= GameConstants.STATE_WET && wetness < GameConstants.STATE_SOAKING_WET )
- {
- WidgetTrySetText( root_widget, "ItemWetnessWidget", "#inv_inspect_wet", Colors.COLOR_WET );
- }
- else if( wetness >= GameConstants.STATE_SOAKING_WET && wetness < GameConstants.STATE_DRENCHED )
- {
- WidgetTrySetText( root_widget, "ItemWetnessWidget", "#inv_inspect_soaking_wet", Colors.COLOR_SOAKING_WET );
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemWetnessWidget", "#inv_inspect_drenched", Colors.COLOR_DRENCHED );
- }
- }
-
- //--------------------------------------------------------------------------
- static void UpdateItemInfoQuantity(Widget root_widget, EntityAI item)
- {
- if ( item.IsInherited( ZombieBase ) || item.IsInherited( Car ) ) return;
-
- ItemBase item_base = ItemBase.Cast( item );
- if( item_base )
- {
- float item_quantity = item_base.GetQuantity();
- int max_quantity = item.GetQuantityMax();
-
- float quantity_ratio;
-
- if( max_quantity > 0 && !item.IsInherited( ClothingBase )) // Some items, like books, have max_quantity set to 0 => division by ZERO error in quantity_ratio
- {
- string quantity_str;
- if( item.ConfigGetString("stackedUnit") == "pc." )
- {
- if( item_quantity == 1 )
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", item_quantity.ToString() + " " + "#inv_inspect_piece", Colors.COLOR_DEFAULT );
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", item_quantity.ToString() + " " + "#inv_inspect_pieces", Colors.COLOR_DEFAULT );
- }
- }
- else if( item.ConfigGetString("stackedUnit") == "percentage" )
- {
- quantity_ratio = Math.Round( ( item_quantity / max_quantity ) * 100 );
-
- quantity_str = "#inv_inspect_remaining " + quantity_ratio.ToString() + "#inv_inspect_percent";
- WidgetTrySetText( root_widget, "ItemQuantityWidget", quantity_str, Colors.COLOR_DEFAULT );
- }
- else if( item.ConfigGetString("stackedUnit") == "g" )
- {
- quantity_ratio = Math.Round( ( item_quantity / max_quantity ) * 100 );
-
- quantity_str = "#inv_inspect_remaining " + quantity_ratio.ToString() + "#inv_inspect_percent";
- WidgetTrySetText( root_widget, "ItemQuantityWidget", quantity_str, Colors.COLOR_DEFAULT );
- }
- else if( item.ConfigGetString("stackedUnit") == "ml" )
- {
- quantity_ratio = Math.Round( ( item_quantity / max_quantity ) * 100 );
-
- quantity_str = "#inv_inspect_remaining " + quantity_ratio.ToString() + "#inv_inspect_percent";
- WidgetTrySetText( root_widget, "ItemQuantityWidget", quantity_str, Colors.COLOR_DEFAULT );
- }
- else if( item.IsInherited( Magazine ) )
- {
- Magazine magazine_item;
- Class.CastTo(magazine_item, item);
-
- if( magazine_item.GetAmmoCount() == 1 )
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", magazine_item.GetAmmoCount().ToString() + " " + "#inv_inspect_piece", Colors.COLOR_DEFAULT );
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", magazine_item.GetAmmoCount().ToString() + " " + "#inv_inspect_pieces", Colors.COLOR_DEFAULT );
- }
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", "" );
- }
- }
- else
- {
- if ( item.IsInherited( ClothingBase ) )
- {
- float heatIsolation = MiscGameplayFunctions.GetCurrentItemHeatIsolation( item_base );
- if ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_BAD )
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", "#inv_inspect_iso_worst", GetTemperatureColor( 10 ) );
- }
- else if ( ( heatIsolation > GameConstants.HEATISO_THRESHOLD_BAD ) && ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_LOW ) )
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", "#inv_inspect_iso_low", GetTemperatureColor( 20 ) );
- }
- else if ( ( heatIsolation > GameConstants.HEATISO_THRESHOLD_LOW ) && ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_MEDIUM ) )
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", "#inv_inspect_iso_medium", GetTemperatureColor( 30 ) );
- }
- else if ( ( heatIsolation > GameConstants.HEATISO_THRESHOLD_MEDIUM ) && ( heatIsolation <= GameConstants.HEATISO_THRESHOLD_HIGH ) )
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", "#inv_inspect_iso_high", GetTemperatureColor( 50 ) );
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", "#inv_inspect_iso_excel", GetTemperatureColor( 70 ) );
- }
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemQuantityWidget", "" );
- }
- }
- }
- }
-
- //--------------------------------------------------------------------------
- static void UpdateItemInfoWeight(Widget root_widget, EntityAI item)
- {
- if (!item.CanDisplayWeight())
- {
- WidgetTrySetText(root_widget, "ItemWeightWidget", "", Colors.COLOR_DEFAULT);
- return;
- }
-
- ItemBase item_IB = ItemBase.Cast( item );
- if( item_IB )
- {
- int weight = item_IB.GetWeightEx();
-
- if (root_widget.GetName() != "BackPanelWidget")
- {
- weight = item_IB.GetSingleInventoryItemWeightEx();
- }
-
- if (weight >= 1000)
- {
- int kilos = Math.Round(weight / 1000.0);
- WidgetTrySetText(root_widget, "ItemWeightWidget", "#inv_inspect_about" + " " + kilos.ToString() + " " + "#inv_inspect_kg", Colors.COLOR_DEFAULT);
- }
- else if (weight >= 500)
- {
- WidgetTrySetText(root_widget, "ItemWeightWidget", "#inv_inspect_under_1", Colors.COLOR_DEFAULT);
- }
- else if (weight >= 250)
- {
- WidgetTrySetText(root_widget, "ItemWeightWidget", "#inv_inspect_under_05", Colors.COLOR_DEFAULT);
- }
- else
- {
- WidgetTrySetText(root_widget, "ItemWeightWidget", "#inv_inspect_under_025", Colors.COLOR_DEFAULT);
- }
- }
- }
-
- //--------------------------------------------------------------------------
- static void UpdateItemInfoFoodStage(Widget root_widget, EntityAI item)
- {
- Edible_Base food_item = Edible_Base.Cast( item );
- if ( food_item && food_item.GetFoodStage() )
- {
- FoodStage food_stage = food_item.GetFoodStage();
- FoodStageType food_stage_type = food_stage.GetFoodStageType();
-
- switch( food_stage_type )
- {
- case FoodStageType.RAW:
- {
- WidgetTrySetText( root_widget, "ItemFoodStageWidget", "#inv_inspect_raw", Colors.COLOR_RAW );
- break;
- }
- case FoodStageType.BAKED:
- {
- WidgetTrySetText( root_widget, "ItemFoodStageWidget", "#inv_inspect_baked", Colors.COLOR_BAKED );
- break;
- }
- case FoodStageType.BOILED:
- {
- WidgetTrySetText( root_widget, "ItemFoodStageWidget", "#inv_inspect_boiled", Colors.COLOR_BOILED );
- break;
- }
- case FoodStageType.DRIED:
- {
- WidgetTrySetText( root_widget, "ItemFoodStageWidget", "#inv_inspect_dried", Colors.COLOR_DRIED );
- break;
- }
- case FoodStageType.BURNED:
- {
- WidgetTrySetText( root_widget, "ItemFoodStageWidget", "#inv_inspect_burned", Colors.COLOR_BURNED );
- break;
- }
- case FoodStageType.ROTTEN:
- {
- WidgetTrySetText( root_widget, "ItemFoodStageWidget", "#inv_inspect_rotten", Colors.COLOR_ROTTEN );
- break;
- }
- }
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemFoodStageWidget", "" );
- }
- }
-
-
- //--------------------------------------------------------------------------
- static void UpdateItemInfoCleanness(Widget root_widget, EntityAI item)
- {
- ItemBase ib = ItemBase.Cast(item);
- if(ib && ib.m_Cleanness==1)
- {
- WidgetTrySetText( root_widget, "ItemCleannessWidget", "#inv_inspect_cleaned", Colors.WHITEGRAY );
- }
- else
- {
- WidgetTrySetText( root_widget, "ItemCleannessWidget", "" );
- }
- }
-
-
-
- //--------------------------------------------------------------------------
- static void WidgetTrySetText(Widget root_widget, string widget_name, string text, int color = 0)
- {
- TextWidget widget = TextWidget.Cast( root_widget.FindAnyWidget(widget_name) );
- RichTextWidget rt_widget = RichTextWidget.Cast( root_widget.FindAnyWidget(widget_name) );
- if (widget)
- {
- widget.SetText(text);
- Widget widget_background = root_widget.FindAnyWidget(widget_name+"Background");
- if (widget_background)
- {
- if (color != 0)
- {
- widget_background.Show( true );
- widget_background.SetColor(color | 0x7F000000);
- }
- else
- {
- widget_background.Show( false );
- }
- }
- }
- if( rt_widget )
- {
- rt_widget.Update();
- }
- }
- override void OnPlayerDeath()
- {
- super.OnPlayerDeath();
-
- // Close inventory menu when this menu got closed by the character death event as player could be inspecting a item from the inventory
- // in the moment he dies and the inventory menu is opened too.
- MissionGameplay missionGameplay = MissionGameplay.Cast(g_Game.GetMission());
- if (missionGameplay && missionGameplay.GetInventory())
- {
- missionGameplay.HideInventory();
- }
- }
- };
|