DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
SizeToChild.c
См. документацию.
1class SizeToChild extends ScriptedWidgetEventHandler
2{
3 reference string m_ChildName;
4 reference float m_HorizontalOffset;
5 reference float m_VerticalOffset;
6 reference bool m_ResizeHorizontal;
7 reference bool m_ResizeVertical;
8
9 protected Widget m_Root;
10 protected Widget m_Child;
11
12 protected static bool m_IgnoredBool;
13
15 {
16 m_Root = w;
17
18 m_Child = m_Root.FindAnyWidget( m_ChildName );
19 if ( m_Child )
20 {
22 }
23 }
24
26 {
27 return ResizeParentToChild( m_IgnoredBool, -1, true );
28 }
29
30 bool ResizeParentToChild( out bool changed_size, int limit = -1, bool immedUpdate = true )
31 {
32 float x, y, o_x, o_y, new_x, new_y;
33 if ( m_Child )
34 {
35 m_Child.Update();
36 m_Child.GetScreenSize( x, y );
37 m_Root.GetScreenSize( new_x, new_y );
38 m_Root.GetSize( o_x, o_y );
39
40 bool changed = false;
41 bool hit_limit = false;
42
43 if ( m_ResizeHorizontal && ( x > new_x + 0.01 || x < new_x - 0.01 ) )
44 {
45 new_x = x + m_HorizontalOffset;
46 changed = true;
47 }
48 else
49 new_x = o_x;
50
51 if ( m_ResizeVertical && ( y > new_y + 0.01 || y < new_y - 0.01 ) )
52 {
53 new_y = y + m_VerticalOffset;
54 changed = true;
55 }
56 else
57 new_y = o_y;
58
59 if ( limit > 0 && new_y > limit )
60 {
61 new_y = limit;
62 hit_limit = true;
63 }
64
65 if ( changed )
66 {
67 m_Root.SetSize( new_x, new_y, immedUpdate );
68 }
69
70 changed_size = changed;
71 return hit_limit;
72 }
73 else
74 {
75 m_Child = m_Root.FindAnyWidget( m_ChildName );
76 if ( !m_Child )
77 {
78 Print( "Error in size to child, " + m_Root.GetName() + " has no child named " + m_ChildName );
79 }
80 }
81
82 return false;
83 }
84}
85
86class SizeToParent extends ScriptedWidgetEventHandler
87{
88 reference bool m_ResizeHorizontal;
89 reference bool m_ResizeVertical;
90
91 protected Widget m_Root;
92 protected Widget m_Parent;
93
95 {
96 m_Root = w;
97
99 m_Root.ClearFlags( WidgetFlags.HEXACTSIZE );
100 if ( m_ResizeVertical )
101 m_Root.ClearFlags( WidgetFlags.VEXACTSIZE );
102
103 m_Parent = m_Root.GetParent();
104
105 Refresh();
106 }
107
108 void Refresh()
109 {
110 float x, y, o_x, o_y, new_x, new_y;
111 m_Parent.Update();
112 m_Parent.GetScreenSize( x, y );
113 m_Root.GetScreenSize( new_x, new_y );
114 m_Root.GetSize( o_x, o_y );
115
116 bool changed = false;
117
118 if ( m_ResizeHorizontal && x != new_x )
119 {
120 new_x = x;
121 changed = true;
122 }
123 else
124 new_x = o_x;
125
126 if ( m_ResizeVertical && y != new_y )
127 {
128 new_y = y;
129 changed = true;
130 }
131 else
132 new_y = o_y;
133
134 if ( changed )
135 m_Root.SetSize( new_x, new_y );
136 }
137}
Icon x
Icon y
Widget m_Root
Определения SizeToChild.c:91
Widget m_Parent
Определения SizeToChild.c:92
class SizeToChild extends ScriptedWidgetEventHandler m_ResizeHorizontal
reference bool m_ResizeVertical
Определения SizeToChild.c:89
reference bool m_ResizeHorizontal
Определения SizeToChild.c:6
void OnWidgetScriptInit(Widget w)
Определения SizeToChild.c:14
Widget m_Root
Определения SizeToChild.c:9
reference float m_VerticalOffset
Определения SizeToChild.c:5
bool ResizeParentToChild(out bool changed_size, int limit=-1, bool immedUpdate=true)
Определения SizeToChild.c:30
bool ResizeParentToChild()
Определения SizeToChild.c:25
reference float m_HorizontalOffset
Определения SizeToChild.c:4
Widget m_Child
Определения SizeToChild.c:10
reference string m_ChildName
Определения SizeToChild.c:3
reference bool m_ResizeVertical
Определения SizeToChild.c:7
static bool m_IgnoredBool
Определения SizeToChild.c:12
void Refresh()
Определения LayoutHolder.c:202
map: item x vector(index, width, height)
Определения EnWidgets.c:651
Определения EnWidgets.c:190
proto void Print(void var)
Prints content of variable to console/log.
WidgetFlags
Определения EnWidgets.c:58