DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ScriptConsoleVicinityTab.c
См. документацию.
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;
10
11 protected ref ContextMenu m_ContextMenu;
12
13 override void InitializeTab(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent = null)
14 {
15 super.InitializeTab(root, console, button, parent);
16
17 m_VicinityListbox = TextListboxWidget.Cast(root.FindAnyWidget("VicinityListbox"));
18 m_WatchItem = ButtonWidget.Cast(root.FindAnyWidget("WatchItemButton"));
19 m_DistanceWidget = EditBoxWidget.Cast(root.FindAnyWidget("DistanceInput"));
20
21 m_DistanceWidget.SetText(m_Distance.ToString());
22
23 m_ContextMenu = new ContextMenu();
24 m_ContextMenu.Init(root.FindAnyWidget("VicinityContextMenu"), true);
25
26 m_ContextMenu.SetSize(1, 1);
27 m_ContextMenu.Show(0, 0);
28
29 RenderList();
30 }
31
32 override void OnSelected()
33 {
35 }
36
38 {
39 float radius = m_DistanceWidget.GetText().ToFloat();
40 if (!radius)
41 return;
42 array<Object> objects = new array<Object>();
44
45 vector playerPos = g_Game.GetCurrentCameraPosition();
46 g_Game.GetObjectsAtPosition3D(playerPos, radius, objects,cargo);
47 m_VicinityListbox.ClearItems();
48 m_VicinityItems.Clear();
49
50 if (m_Selected && objects.Find(m_Selected) == -1)
51 {
52 objects.Insert(m_Selected);
53 }
54
55 map<int, Object> objectsMap = new map<int, Object>();
56 array<int> distances = new array<int>();
57
58 foreach (int x, Object obj:objects)
59 {
60 int dist = vector.Distance(playerPos, obj.GetPosition()) * 1000;
61
62 while (objectsMap.Contains(dist))//hacking for when multiple objects are at the same distance from the player, otherwise sorting using map will fail
63 dist++;
64 objectsMap.Insert(dist, obj);
65 distances.Insert(dist);
66 }
67
68 distances.Sort();
69
70 foreach (int dst:distances)
71 {
72 Object o = objectsMap.Get(dst);
73 if (!o)
74 continue;
75 int i = 0;
76 if (o.Type() != Object)
77 {
78 m_VicinityItems.Insert(o);//insert at the end
79 int indx = m_VicinityListbox.AddItem(o.GetType(),null,0,-1);
80 float distanceMeters = dst / 1000;
81 m_VicinityListbox.SetItem(indx, distanceMeters.ToString(),null,1);
82 i++;
83
84 if (m_Selected == o)
85 {
86 m_VicinityListbox.SelectRow(indx);
87 }
88 }
89 }
90
92 }
93
95 {
96 int row = m_VicinityListbox.GetSelectedRow();
97
98 m_Selected = null;
99 if (m_VicinityItems.IsValidIndex(row))
100 {
101 m_Selected = m_VicinityItems.Get(row);
102 }
103
104 EntityAI entity = EntityAI.Cast(m_Selected);
105 if (entity)
106 {
107 m_ContextMenu.BuildContextMenu(entity, m_VicinityListbox, this);
108
109 m_ContextMenu.SetSize(1, 1);
110 m_ContextMenu.Show(0, 0);
111 }
112 else
113 {
114 m_ContextMenu.Hide();
115 }
116 }
117
118 override bool OnClick(Widget w, int x, int y, int button)
119 {
120 super.OnClick(w,x,y,button);
121
123
124 int row = m_VicinityListbox.GetSelectedRow();
125 if (w == m_WatchItem)
126 {
127 if (m_VicinityItems.IsValidIndex(row))
128 {
129 if (m_Selected)
130 {
131 PluginDeveloper.SetDeveloperItemClientEx(m_Selected);
132 return true;
133 }
134 }
135 }
136
137 return false;
138 }
139
140 override bool OnChange(Widget w, int x, int y, bool finished)
141 {
142 super.OnChange(w, x, y, finished);
143
145
146 if (w == m_DistanceWidget)
147 {
148 RenderList();
149 m_Distance = m_DistanceWidget.GetText().ToFloat();
150 }
151 return false;
152 }
153
154 void OnSelectAction(EntityAI ent, int actionId)
155 {
156 #ifdef DIAG_DEVELOPER
157 if (!ent || ent.IsSetForDeletion())
158 return;
159
160 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
161 if (player)
162 {
163 player.GetActionManager().OnInstantAction(ActionDebug, new Param2<EntityAI, int>(ent, actionId));
164 }
165 else
166 {
167 ent.OnAction(actionId, null, null);
168 }
169 #endif
170 }
171}
map
Определения ControlsXboxNew.c:4
DayZGame g_Game
Определения DayZGame.c:4074
Icon x
Icon y
void ScriptConsole()
Определения ScriptConsole.c:114
Определения EnWidgets.c:354
Определения ObjectTyped.c:2
Определения PPEConstants.c:68
Определения PlayerBaseClient.c:2
void OnSelectAction(EntityAI ent, int actionId)
Определения ScriptConsoleVicinityTab.c:154
override bool OnClick(Widget w, int x, int y, int button)
Определения ScriptConsoleVicinityTab.c:118
static Object m_Selected
Определения ScriptConsoleVicinityTab.c:4
ref array< Object > m_VicinityItems
Определения ScriptConsoleVicinityTab.c:9
static float m_Distance
Определения ScriptConsoleVicinityTab.c:3
ref ContextMenu m_ContextMenu
Определения ScriptConsoleVicinityTab.c:11
override bool OnChange(Widget w, int x, int y, bool finished)
Определения ScriptConsoleVicinityTab.c:140
TextListboxWidget m_VicinityListbox
Определения ScriptConsoleVicinityTab.c:6
override void InitializeTab(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent=null)
Определения ScriptConsoleVicinityTab.c:13
override void OnSelected()
Определения ScriptConsoleVicinityTab.c:32
ButtonWidget m_WatchItem
Определения ScriptConsoleVicinityTab.c:7
EditBoxWidget m_DistanceWidget
Определения ScriptConsoleVicinityTab.c:8
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString(bool simple=true)
Определения Transport.c:70
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
Определения EnConvert.c:119