minimap.otui

main 416 lines · 10.1 KB Raw
Alex Alex Commit Client Upload Part 2 19/10/2026 00:06
1MinimapToggleButton < UIWidget
2 size: 30 30
3 icon-size: 16 16
4 icon-align: center
5 icon-color: #A6AAB2
6 opacity: 0.9
7 image-source: /images/ui/windows/minimap/icon_border_off
8 $hover:
9 opacity: 1.0
10 $pressed:
11 opacity: 0.9
12 $on:
13 icon-color: #181A1D
14 image-source: /images/ui/windows/minimap/icon_border_on
15
16 @onDragEnter: function(a,b,c) modules.game_minimap.onMinimapButtonDragEnter(a,b,c) end
17 @onSetup: |
18 function(self)
19 if self.setupFunc then
20 self:setupFunc()
21 end
22 end
23
24MinimapExpandingButton < UIWidget
25 size: 30 30
26 icon-size: 16 16
27 icon-align: center
28 icon-color: #A6AAB2
29 opacity: 0.9
30 image-source: /images/ui/windows/minimap/icon_border_off
31 $hover:
32 opacity: 1.0
33 $pressed:
34 opacity: 0.9
35 $on:
36 //icon-color: #181A1D
37 //image-source: /images/ui/windows/minimap/icon_border_on
38
39 @onSetup: |
40 function(self)
41 if self.setupFunc then
42 self:setupFunc()
43 end
44 end
45
46// Native engine minimap widget - renders g_minimap directly
47Minimap < UIMinimap
48 focusable: false
49 color: alpha
50 opacity: 1.0
51 zoom: 0
52 min-zoom: -5
53 max-zoom: 5
54
55MinimapWindow < UIWindow
56 id: minimapWindow
57 size: 260 260
58 draggable: true
59
60 @onMouseWheel: |
61 function(widget, mousePos, direction)
62 if direction == MouseWheelDown then
63 modules.game_minimap.zoomOut()
64 elseif direction == MouseWheelUp then
65 modules.game_minimap.zoomIn()
66 end
67 end
68
69 // Tile container hidden - engine handles rendering via UIMinimap
70 UIWidget
71 id: minimapTileContainer
72 size: 200 200
73 anchors.top: parent.top
74 anchors.left: parent.left
75 phantom: true
76 margin-left: 30
77 margin-top: 40
78 visible: false
79
80 UIWidget
81 id: background
82 anchors.fill: minimap
83 image-source: /images/ui/windows/minimap/empty_background
84 phantom: true
85
86 // Native UIMinimap renderer
87 Minimap
88 id: minimap
89 anchors.centerIn: border
90 size: 196 196
91 clipping: true
92 background-color: #00000000
93 color: #00000000
94
95
96 UIWidget
97 id: border
98 anchors.top: topPanel.bottom
99 anchors.horizontalCenter: parent.horizontalCenter
100 image-source: /images/ui/windows/minimap/border
101 margin-top: 5
102 phantom: true
103
104 // Region name / clock header. Hidden: nothing in this client fills it
105 // (updateTime/updateRegionName are never called). Kept as the anchor for
106 // the minimap border so the minimap stays where it is.
107 UIWidget
108 id: topPanel
109 visible: false
110 anchors.left: parent.left
111 anchors.right: parent.right
112 anchors.top: parent.top
113 margin-left: 10
114 margin-right: 10
115 image-border: 15
116 padding: 5
117 image-source: /images/ui/windows/minimap/btnTime
118
119 UIWidget
120 id: time
121 anchors.right: parent.right
122 anchors.verticalCenter: parent.verticalCenter
123 margin-right: 10
124 text-auto-resize: true
125 text-align: right
126 text-offset: 0 2
127
128 UIWidget
129 id: regionName
130 anchors.fill: parent
131 text-auto-resize: true
132 text-align: left
133 text-offset: 0 2
134 margin-left: 10
135
136 UIWidget
137 id: zoomIn
138 size: 25 25
139 opacity: 0.9
140 $hover:
141 opacity: 1.0
142 $pressed:
143 opacity: 0.9
144 &offset: -3
145 @onClick: modules.game_minimap.zoomIn()
146 @onSetup: |
147 self:setAnglePosition(self:getParent().minimap, 52.5, self.offset)
148
149 UIWidget
150 id: zoomInImage
151 image-source: /images/ui/windows/minimap/zoomin
152 image-auto-resize: true
153 phantom: true
154 &offset: -3
155 @onSetup: |
156 self:setAnglePosition(self:getParent().minimap, 52.5, self.offset)
157
158 UIWidget
159 id: zoomOut
160 size: 25 25
161 opacity: 0.9
162 $hover:
163 opacity: 1.0
164 $pressed:
165 opacity: 0.9
166 &offset: -3
167 @onClick: modules.game_minimap.zoomOut()
168 @onSetup: |
169 self:setAnglePosition(self:getParent().minimap, 37.5, self.offset)
170
171 UIWidget
172 id: zoomOutImage
173 image-source: /images/ui/windows/minimap/zoomout
174 image-auto-resize: true
175 phantom: true
176 &offset: -3
177 @onSetup: |
178 self:setAnglePosition(self:getParent().minimap, 37.5, self.offset)
179
180 MinimapToggleButton
181 id: questTrackerButton
182 draggable: true
183 icon-source: /images/ui/windows/minimap/icon_questTracker
184 @onClick: modules.game_minimap.btnQuestTracker(self)
185 &offset: -3
186 &tooltip: 'Toggle quest tracker'
187 @onSetup: |
188 self:setAnglePosition(self:getParent().minimap, 95, self.offset)
189
190 MinimapToggleButton
191 id: teleportButton
192 draggable: true
193 image-source: /images/ui/windows/minimap/hearth_background
194 icon-source: /images/ui/windows/minimap/icon_hearth
195 icon-color: #36F991
196 $on:
197 image-source: /images/ui/windows/minimap/hearth_background
198 icon-color: #A6AAB2
199 $disabled:
200 icon-color: #A6AAB2
201 opacity: 0.8
202 @onClick: modules.game_minimap.btnTeleport(self)
203 &offset: -3
204 &tooltip: 'Teleport to Ravencrest'
205 @onSetup: |
206 self:setAnglePosition(self:getParent().minimap, 350, self.offset)
207
208 UIWidget
209 id: safeModeButtonPopup
210 anchors.verticalCenter: safeModeButton.verticalCenter
211 anchors.right: safeModeButton.left
212 image-source: /images/ui/windows/minimap/background
213 margin-right: -20
214 visible: false
215
216 UIWidget
217 size: 16 16
218 anchors.left: parent.left
219 anchors.verticalCenter: parent.verticalCenter
220 margin-left: 5
221 @onClick: modules.game_minimap.onPvpButtonClicked(self:getId())
222 opacity: 0.8
223 $hover:
224 opacity: 1.0
225
226 UIWidget
227 size: 16 16
228 anchors.left: parent.left
229 anchors.verticalCenter: parent.verticalCenter
230 margin-left: 30
231 @onClick: modules.game_minimap.onPvpButtonClicked(self:getId())
232 opacity: 0.8
233 $hover:
234 opacity: 1.0
235
236 UIWidget
237 width: 1
238 anchors.left: parent.left
239 anchors.top: prev.top
240 anchors.bottom: prev.bottom
241 background-color: #3A3D43
242 margin-left: 25
243
244 MinimapExpandingButton
245 id: safeModeButton
246 draggable: true
247 @onClick: |
248 self:setOn(not self:isOn())
249 local popup = modules.game_minimap.safeModeButtonPopup
250 if popup then popup:setVisible(self:isOn()) end
251 &offset: 5
252 &tooltip:'Toggle player attack (PvP)'
253 &setupFunc: |
254 function(self)
255 self:setAnglePosition(self:getParent().minimap, 225, self.offset)
256 end
257
258 UIWidget
259 id: floorIndicatorButtonPopup
260 anchors.verticalCenter: floorIndicatorButton.verticalCenter
261 anchors.right: floorIndicatorButton.left
262 image-source: /images/ui/windows/minimap/background
263 margin-right: -20
264 visible: false
265
266 UIWidget
267 size: 16 16
268 anchors.left: parent.left
269 anchors.verticalCenter: parent.verticalCenter
270 margin-left: 5
271 @onClick: modules.game_minimap.onFloorIndicatorButtonClicked(self:getId())
272 opacity: 0.8
273 $hover:
274 opacity: 1.0
275
276 UIWidget
277 size: 16 16
278 anchors.left: parent.left
279 anchors.verticalCenter: parent.verticalCenter
280 margin-left: 30
281 @onClick: modules.game_minimap.onFloorIndicatorButtonClicked(self:getId())
282 opacity: 0.8
283 $hover:
284 opacity: 1.0
285
286 UIWidget
287 width: 1
288 anchors.left: parent.left
289 anchors.top: prev.top
290 anchors.bottom: prev.bottom
291 background-color: #3A3D43
292 margin-left: 25
293
294 MinimapExpandingButton
295 id: floorIndicatorButton
296 draggable: true
297 icon-source: /images/ui/windows/minimap/icon_floor_enabled
298 @onClick: |
299 self:setOn(not self:isOn())
300 &offset: -2
301 &tooltip:'Toggle floor change indicators'
302 &setupFunc: |
303 function(self)
304 self:setAnglePosition(self:getParent().minimap, 130, self.offset)
305 end
306
307 MinimapToggleButton
308 id: houseMakerButton
309 draggable: true
310 icon-source: /images/ui/windows/minimap/icon_house
311 @onClick: modules.game_minimap.btnHouseMode(self)
312 &offset: 2
313 &tooltip: 'Toggle house mode'
314 &setupFunc: |
315 function(self)
316 self:setAnglePosition(self:getParent().minimap, 195, self.offset)
317 end
318
319 MinimapToggleButton
320 id: channelSwitchButton
321 draggable: true
322 @onClick: modules.game_minimap.btnChannelSwitch(self)
323 &offset: -3
324 &tooltip: 'Channel Selector'
325 text-offset: 0 2
326 @onSetup: |
327 self:setAnglePosition(self:getParent().minimap, 15, self.offset)
328
329 MinimapToggleButton
330 id: battleListButton
331 draggable: true
332 icon-source: /images/ui/windows/minimap/battle_list
333 @onClick: modules.game_minimap.btnBattleList(self)
334 &offset: 0
335 &tooltip: 'Battle List'
336 text-offset: 0 2
337 icon-offset: -1 0
338 @onSetup: |
339 self:setAnglePosition(self:getParent().minimap, 165, self.offset)
340
341 MinimapToggleButton
342 id: mailButton
343 draggable: true
344 icon-source: /images/ui/windows/minimap/mail
345 @onClick: modules.game_minimap.btnMail(self)
346 &offset: 2
347 &tooltip: 'Mailbox'
348 $hover:
349 icon-source: /images/ui/windows/minimap/mail_hover
350 $on:
351 icon-color: white
352 text-offset: 0 2
353 @onSetup: |
354 self:setAnglePosition(self:getParent().minimap, 300, self.offset)
355
356 UIWidget
357 id: iconWind
358 image-source: /images/ui/windows/minimap/icon_wind
359 size: 56 45
360 text: S
361 text-offset: 31 0
362 @onSetup: |
363 self:setAnglePosition(self:getParent().minimap, 330)
364
365
366MiniMapPlayerIcon < UIWidget
367 anchors.top: parent.top
368 anchors.left: parent.left
369 size: 24 30
370
371 UICreature
372 id: playerOutfit
373 anchors.top: parent.top
374 anchors.left: parent.left
375 size: 20 20
376 margin-top: 2
377 margin-left: 2
378 clipping: true
379 outfit-scale: 1
380 outfit-offset: 5 3
381 outfit-direction: 2
382 phantom: true
383
384 UIWidget
385 id: playerOutfitFrame
386 anchors.fill: parent
387 image-source: /images/ui/windows/minimap/arrows/worldmap/player_arrow
388 image-auto-resize: true
389 phantom: true
390
391MiniMapPartyIcon < UIWidget
392 anchors.top: parent.top
393 anchors.left: parent.left
394 size: 24 30
395
396 UICreature
397 id: partyOutfit
398 anchors.top: parent.top
399 anchors.left: parent.left
400 size: 20 20
401 margin-top: 2
402 margin-left: 2
403 clipping: true
404 outfit-scale: 1
405 outfit-offset: 5 3
406 outfit-direction: 2
407 phantom: true
408
409 UIWidget
410 id: partyOutfitFrame
411 anchors.fill: parent
412 image-source: /images/ui/windows/minimap/arrow/frame_party
413 image-auto-resize: true
414 margin-top: 1
415 phantom: true
416
Top