DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
HandsArea.c
Go to the documentation of this file.
2{
3 protected ScrollWidget m_Scroller;
5 protected ref SizeToChild m_HandsResizer;
6
7 protected bool m_ShouldChangeSize = true;
8
9 void HandsArea( LayoutHolder parent )
10 {
11 m_HandsContainer = new HandsContainer( this );
12 m_Body.Insert(m_HandsContainer);
13
14 if ( m_ImmedUpdate )
15 m_MainWidget.Update();
16
17 m_ParentWidget.GetScript( m_HandsResizer );
18 m_Scroller = ScrollWidget.Cast( m_ParentWidget );
19 RecomputeOpenedContainers();
20 }
21
23 {
24 Widget swap_cursor = m_MainWidget.FindAnyWidget("SwapCursor");
25
26 if ( swap_cursor )
27 return swap_cursor.IsVisible();
28 else
29 return false;
30 }
31
33 {
34 Widget combine_cursor = m_MainWidget.FindAnyWidget("CombineCursor");
35
36 if ( combine_cursor )
37 return combine_cursor.IsVisible();
38 else
39 return false;
40 }
41
42 override ScrollWidget GetScrollWidget()
43 {
44 return m_Scroller;
45 }
46
47 override void UpdateSelectionIcons()
48 {
49 #ifdef PLATFORM_CONSOLE
50 ScrollToActiveContainer();
51 #endif
52 }
53
54 override void UpdateInterval()
55 {
56 if (!m_Scroller.IsScrollbarVisible())
57 {
58 m_Scroller.VScrollToPos01(0.0);
59 }
60 else if (m_Scroller.GetVScrollPos01() > 1.0)
61 {
62 m_Scroller.VScrollToPos01(1.0);
63 }
65
66 float x, y;
67 float x2, y2;
68 m_Scroller.GetScreenSize( x, y );
69 m_MainWidget.GetScreenSize( x2, y2 );
70 if ( y2 != y )
71 m_ShouldChangeSize = true;
72
73 bool changed_size;
74 if ( m_ShouldChangeSize && m_HandsResizer.ResizeParentToChild( changed_size, InventoryMenu.GetHeight() * 0.5 ) )
75 m_Scroller.SetAlpha( 0.3921 );
76 else
77 m_Scroller.SetAlpha( 0 );
78
79 if ( changed_size )
80 m_ShouldChangeSize = false;
81 }
82
83 override void SetLayoutName()
84 {
85 m_LayoutName = WidgetLayoutName.HandsArea;
86 }
87
88 override void SetParentWidget()
89 {
90 m_ParentWidget = m_Parent.GetMainWidget().FindAnyWidget( "HandsPanel" );
91 }
92
93 override void OnShow()
94 {
95 super.OnShow();
97 }
98
99 override void Refresh()
100 {
102 m_ShouldChangeSize = true;
103 }
104
105 void DraggingOverHandsPanel( Widget w, int x, int y, Widget receiver )
106 {
107 if ( w == NULL )
108 {
109 return;
110 }
111
112 ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
113
114 if( !ipw )
115 {
116 string name = w.GetName();
117 name.Replace( "PanelWidget", "Render" );
118 ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
119 }
120
121 if( !ipw )
122 {
123 ipw = ItemPreviewWidget.Cast( w );
124 }
125
126 if( !ipw || !ipw.IsInherited( ItemPreviewWidget ) )
127 {
128 return;
129 }
130
131 if( ipw.GetItem() && GetGame().GetPlayer().GetHumanInventory().CanAddEntityIntoHands( ipw.GetItem() ) )
132 {
135 ItemManager.GetInstance().GetCenterDropzone().SetAlpha( 1 );
136 }
137 else
138 {
141 ItemManager.GetInstance().GetCenterDropzone().SetAlpha( 1 );
142 }
143 }
144
145 void OnHandsPanelDropReceived( Widget w, int x, int y, Widget receiver )
146 {
147 ItemPreviewWidget ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( "Render" ) );
148 if( !ipw )
149 {
150 string name = w.GetName();
151 name.Replace( "PanelWidget", "Render" );
152 ipw = ItemPreviewWidget.Cast( w.FindAnyWidget( name ) );
153 }
154
155 if( !ipw )
156 {
157 ipw = ItemPreviewWidget.Cast( w );
158 }
159
160 if( !ipw || !ipw.GetItem() || !ipw.IsInherited( ItemPreviewWidget ) )
161 {
162 return;
163 }
164
165 if( !ipw.GetItem().GetInventory().CanRemoveEntity() )
166 return;
167
168 if( GetGame().GetPlayer().GetHumanInventory().CanAddEntityIntoHands( ipw.GetItem() ) )
169 {
170 ItemBase item_base = ItemBase.Cast( ipw.GetItem() );
171 float stackable = item_base.GetTargetQuantityMax(-1);
172
173 if( stackable == 0 || item_base.GetQuantity() <= stackable )
174 {
175 GetGame().GetPlayer().PredictiveTakeEntityToHands( item_base );
176 }
177 else if( stackable != 0 && stackable <= item_base.GetQuantity() )
178 {
179 item_base.SplitIntoStackMaxHandsClient( PlayerBase.Cast( GetGame().GetPlayer() ) );
180 }
181 }
182 }
183}
Icon x
Icon y
void InventoryMenu()
PlayerBase GetPlayer()
string name
protected Widget m_Parent
Definition SizeToChild.c:92
protected Widget m_ParentWidget
proto native DayZPlayer GetPlayer()
static int GREEN_COLOR
static ColorManager GetInstance()
static int RED_COLOR
void SetColor(Widget w, int color)
protected ScrollWidget m_Scroller
Definition HandsArea.c:3
bool IsSwapActive()
Definition HandsArea.c:22
protected ref SizeToChild m_HandsResizer
Definition HandsArea.c:5
override void Refresh()
Definition HandsArea.c:99
void OnHandsPanelDropReceived(Widget w, int x, int y, Widget receiver)
Definition HandsArea.c:145
void DraggingOverHandsPanel(Widget w, int x, int y, Widget receiver)
Definition HandsArea.c:105
override void UpdateSelectionIcons()
Definition HandsArea.c:47
override void UpdateInterval()
Definition HandsArea.c:54
override void OnShow()
Definition HandsArea.c:93
override ScrollWidget GetScrollWidget()
Definition HandsArea.c:42
protected bool m_ShouldChangeSize
Definition HandsArea.c:7
bool IsCombineActive()
Definition HandsArea.c:32
override void SetParentWidget()
Definition HandsArea.c:88
protected ref HandsContainer m_HandsContainer
Definition HandsArea.c:4
void HandsArea(LayoutHolder parent)
Definition HandsArea.c:9
override void SetLayoutName()
Definition HandsArea.c:83
override void UpdateInterval()
override void OnShow()
Widget GetCenterDropzone()
void HideDropzones()
static ItemManager GetInstance()
proto native EntityAI GetItem()
const string HandsArea
proto native CGame GetGame()
proto int Replace(string sample, string replace)
Replace all occurrances of 'sample' in 'str' by 'replace'.