DayZ 1.27
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 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 {
33 }
34
36 {
37 float radius = m_DistanceWidget.GetText().ToFloat();
38 if (!radius)
39 return;
40 array<Object> objects = new array<Object>();
42
44 GetGame().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
90 }
91
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
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
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 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
156 player.GetActionManager().OnInstantAction(ActionDebug,new Param2<EntityAI,int>(ent,actionId));
157 #endif
158 }
159}
map
Определения ControlsXboxNew.c:4
Icon x
Icon y
PlayerBase GetPlayer()
Определения ModifierBase.c:51
proto native void GetObjectsAtPosition3D(vector pos, float radius, out array< Object > objects, out array< CargoBase > proxyCargos)
Returns list of all objects in sphere "radius" around position "pos".
proto native vector GetCurrentCameraPosition()
Определения EnWidgets.c:354
Определения Building.c:6
Определения ObjectTyped.c:2
Определения PPEConstants.c:68
Определения PlayerBaseClient.c:2
void ScriptConsoleTabBase(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent=null)
Определения ScriptConsoleTabBase.c:14
void OnSelectAction(EntityAI ent, int actionId)
Определения ScriptConsoleVicinityTab.c:152
override bool OnClick(Widget w, int x, int y, int button)
Определения ScriptConsoleVicinityTab.c:116
static Object m_Selected
Определения ScriptConsoleVicinityTab.c:4
ref array< Object > m_VicinityItems
Определения ScriptConsoleVicinityTab.c:9
static float m_Distance
Определения ScriptConsoleVicinityTab.c:3
void ScriptConsoleVicinityTab(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent=null)
Определения ScriptConsoleVicinityTab.c:13
ref ContextMenu m_ContextMenu
Определения ScriptConsoleVicinityTab.c:11
override bool OnChange(Widget w, int x, int y, bool finished)
Определения ScriptConsoleVicinityTab.c:138
TextListboxWidget m_VicinityListbox
Определения ScriptConsoleVicinityTab.c:6
override void OnSelected()
Определения ScriptConsoleVicinityTab.c:30
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)
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
Определения EnConvert.c:106
proto native CGame GetGame()