Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
scriptconsolevicinitytab.c
Go to the documentation of this file.
1
class
ScriptConsoleVicinityTab
:
ScriptConsoleTabBase
2
{
3
protected
static
float
m_Distance
= 30;
4
protected
static
Object
m_Selected
= null;
5
6
protected
TextListboxWidget
m_VicinityListbox
;
7
protected
ButtonWidget
m_WatchItem
;
8
protected
EditBoxWidget
m_DistanceWidget
;
9
protected
ref
array<Object>
m_VicinityItems
=
new
array<Object>
;
10
11
protected
ref ContextMenu
m_ContextMenu
;
12
13
void
ScriptConsoleVicinityTab
(
Widget
root, ScriptConsole console,
Widget
button,
ScriptConsoleTabBase
parent = null)
14
{
15
m_VicinityListbox
= TextListboxWidget.Cast(root.FindAnyWidget(
"VicinityListbox"
));
16
m_WatchItem
= ButtonWidget.Cast(root.FindAnyWidget(
"WatchItemButton"
));
17
m_DistanceWidget
=
EditBoxWidget
.Cast(root.FindAnyWidget(
"DistanceInput"
));
18
19
m_DistanceWidget
.SetText(
m_Distance
.ToString());
20
21
m_ContextMenu
=
new
ContextMenu();
22
m_ContextMenu
.Init(root.FindAnyWidget(
"VicinityContextMenu"
),
true
);
23
24
m_ContextMenu
.SetSize(1, 1);
25
m_ContextMenu
.Show(0, 0);
26
27
RenderList
();
28
}
29
30
override
void
OnSelected
()
31
{
32
UpdateSelected
();
33
}
34
35
void
RenderList
()
36
{
37
float
radius =
m_DistanceWidget
.GetText().ToFloat();
38
if
(!radius)
39
return
;
40
array<Object>
objects =
new
array<Object>
();
41
array<CargoBase>
cargo =
new
array<CargoBase>
();
42
43
vector
playerPos =
g_Game
.GetCurrentCameraPosition();
44
g_Game
.GetObjectsAtPosition3D(playerPos, radius, objects,cargo);
45
m_VicinityListbox
.ClearItems();
46
m_VicinityItems
.Clear();
47
48
if
(
m_Selected
&& objects.Find(
m_Selected
) == -1)
49
{
50
objects.Insert(
m_Selected
);
51
}
52
53
map<int, Object>
objectsMap =
new
map<int, Object>
();
54
array<int>
distances =
new
array<int>
();
55
56
foreach
(
int
x
,
Object
obj:objects)
57
{
58
int
dist =
vector
.
Distance
(playerPos, obj.GetPosition()) * 1000;
59
60
while
(objectsMap.Contains(dist))
//hacking for when multiple objects are at the same distance from the player, otherwise sorting using map will fail
61
dist++;
62
objectsMap.Insert(dist, obj);
63
distances.Insert(dist);
64
}
65
66
distances.Sort();
67
68
foreach
(
int
dst:distances)
69
{
70
Object
o = objectsMap.Get(dst);
71
if
(!o)
72
continue
;
73
int
i = 0;
74
if
(o.Type() !=
Object
)
75
{
76
m_VicinityItems
.Insert(o);
//insert at the end
77
int
indx =
m_VicinityListbox
.AddItem(o.GetType(),null,0,-1);
78
float
distanceMeters = dst / 1000;
79
m_VicinityListbox
.SetItem(indx, distanceMeters.
ToString
(),null,1);
80
i++;
81
82
if
(
m_Selected
== o)
83
{
84
m_VicinityListbox
.SelectRow(indx);
85
}
86
}
87
}
88
89
UpdateSelected
();
90
}
91
92
void
UpdateSelected
()
93
{
94
int
row =
m_VicinityListbox
.GetSelectedRow();
95
96
m_Selected
= null;
97
if
(
m_VicinityItems
.IsValidIndex(row))
98
{
99
m_Selected
=
m_VicinityItems
.Get(row);
100
}
101
102
EntityAI
entity =
EntityAI
.Cast(
m_Selected
);
103
if
(entity)
104
{
105
m_ContextMenu
.BuildContextMenu(entity,
m_VicinityListbox
,
this
);
106
107
m_ContextMenu
.SetSize(1, 1);
108
m_ContextMenu
.Show(0, 0);
109
}
110
else
111
{
112
m_ContextMenu
.Hide();
113
}
114
}
115
116
override
bool
OnClick
(
Widget
w,
int
x
,
int
y
,
int
button)
117
{
118
super.OnClick(w,
x
,
y
,button);
119
120
UpdateSelected
();
121
122
int
row =
m_VicinityListbox
.GetSelectedRow();
123
if
(w ==
m_WatchItem
)
124
{
125
if
(
m_VicinityItems
.IsValidIndex(row))
126
{
127
if
(
m_Selected
)
128
{
129
PluginDeveloper.SetDeveloperItemClientEx(
m_Selected
);
130
return
true
;
131
}
132
}
133
}
134
135
return
false
;
136
}
137
138
override
bool
OnChange
(
Widget
w,
int
x
,
int
y
,
bool
finished)
139
{
140
super.OnChange(w,
x
,
y
, finished);
141
142
UpdateSelected
();
143
144
if
(w ==
m_DistanceWidget
)
145
{
146
RenderList
();
147
m_Distance
=
m_DistanceWidget
.GetText().ToFloat();
148
}
149
return
false
;
150
}
151
152
void
OnSelectAction
(
EntityAI
ent,
int
actionId)
153
{
154
#ifdef DIAG_DEVELOPER
155
if
(!ent || ent.IsSetForDeletion())
156
return
;
157
158
PlayerBase
player =
PlayerBase
.Cast(
g_Game
.GetPlayer());
159
if
(player)
160
{
161
player.GetActionManager().OnInstantAction(ActionDebug,
new
Param2<EntityAI, int>
(ent, actionId));
162
}
163
else
164
{
165
ent.
OnAction
(actionId, null, null);
166
}
167
#endif
168
}
169
}
EditBoxWidget
Definition
enwidgets.c:354
EntityAI
Definition
inventoryitem.c:2
EntityAI::OnAction
override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
Definition
transport.c:601
Object
Definition
objecttyped.c:2
Param2
Definition
ppeconstants.c:68
PlayerBase
Definition
playerbaseclient.c:2
ScriptConsoleTabBase::ScriptConsoleTabBase
void ScriptConsoleTabBase(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent=null)
Definition
scriptconsoletabbase.c:14
ScriptConsoleVicinityTab::m_DistanceWidget
EditBoxWidget m_DistanceWidget
Definition
scriptconsolevicinitytab.c:8
ScriptConsoleVicinityTab::OnChange
override bool OnChange(Widget w, int x, int y, bool finished)
Definition
scriptconsolevicinitytab.c:138
ScriptConsoleVicinityTab::OnSelected
override void OnSelected()
Definition
scriptconsolevicinitytab.c:30
ScriptConsoleVicinityTab::m_Selected
static Object m_Selected
Definition
scriptconsolevicinitytab.c:4
ScriptConsoleVicinityTab::m_ContextMenu
ref ContextMenu m_ContextMenu
Definition
scriptconsolevicinitytab.c:11
ScriptConsoleVicinityTab::OnSelectAction
void OnSelectAction(EntityAI ent, int actionId)
Definition
scriptconsolevicinitytab.c:152
ScriptConsoleVicinityTab::RenderList
void RenderList()
Definition
scriptconsolevicinitytab.c:35
ScriptConsoleVicinityTab::m_VicinityListbox
TextListboxWidget m_VicinityListbox
Definition
scriptconsolevicinitytab.c:6
ScriptConsoleVicinityTab::m_VicinityItems
ref array< Object > m_VicinityItems
Definition
scriptconsolevicinitytab.c:9
ScriptConsoleVicinityTab::ScriptConsoleVicinityTab
void ScriptConsoleVicinityTab(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent=null)
Definition
scriptconsolevicinitytab.c:13
ScriptConsoleVicinityTab::m_Distance
static float m_Distance
Definition
scriptconsolevicinitytab.c:3
ScriptConsoleVicinityTab::m_WatchItem
ButtonWidget m_WatchItem
Definition
scriptconsolevicinitytab.c:7
ScriptConsoleVicinityTab::UpdateSelected
void UpdateSelected()
Definition
scriptconsolevicinitytab.c:92
ScriptConsoleVicinityTab::OnClick
override bool OnClick(Widget w, int x, int y, int button)
Definition
scriptconsolevicinitytab.c:116
Widget
Definition
enwidgets.c:190
array
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Definition
isboxcollidinggeometryproxyclasses.c:28
float::ToString
proto string ToString(bool simple=true)
map
Definition
cachedequipmentstorage.c:4
vector
Definition
enconvert.c:119
vector::Distance
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
map
map
Definition
controlsxboxnew.c:4
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
x
Icon x
y
Icon y
Games
Dayz
scripts
5_mission
gui
scriptconsolevicinitytab.c
Generated by
1.17.0