MCPcopy Create free account
hub / github.com/SolarLune/masterplan / Update

Method Update

menu.go:202–498  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

200}
201
202func (menu *Menu) Update() {
203
204 if menu.AutoOpen != nil {
205
206 if menu.AutoOpen() && !menu.Opened {
207 menu.Open()
208 } else if !menu.AutoOpen() && menu.Opened {
209 menu.Close()
210 }
211 }
212
213 if menu.CurrentPage == "" {
214 return
215 }
216
217 if menu.Opened {
218
219 if menu.Dragging {
220 diff := globals.Mouse.Position().Sub(menu.DragStart)
221 menu.Rect.X = menu.DragStart.X + diff.X - menu.DragOffset.X
222 menu.Rect.Y = menu.DragStart.Y + diff.Y - menu.DragOffset.Y
223 }
224
225 if menu.Rect.X < 0 {
226 menu.Rect.X = 0
227 }
228
229 if menu.Rect.Y < 0 {
230 menu.Rect.Y = 0
231 }
232
233 sizeChanged := false
234
235 if menu.Draggable {
236
237 switch menu.AnchorMode {
238 case MenuAnchorTopLeft:
239 menu.Rect.X = 0
240 menu.Rect.Y = 0
241 case MenuAnchorTop:
242 menu.Rect.Y = 0
243 if globals.ScreenSizeChanged {
244 menu.Rect.X *= globals.ScreenSize.X / globals.ScreenSizePrev.X
245 }
246 case MenuAnchorTopRight:
247 menu.Rect.X = globals.ScreenSize.X - menu.Rect.W
248 menu.Rect.Y = 0
249 case MenuAnchorRight:
250 menu.Rect.X = globals.ScreenSize.X - menu.Rect.W
251 if globals.ScreenSizeChanged {
252 menu.Rect.Y *= globals.ScreenSize.Y / globals.ScreenSizePrev.Y
253 }
254 case MenuAnchorBottomRight:
255 menu.Rect.X = globals.ScreenSize.X - menu.Rect.W
256 menu.Rect.Y = globals.ScreenSize.Y - menu.Rect.H
257 case MenuAnchorBottom:
258 menu.Rect.Y = globals.ScreenSize.Y - menu.Rect.H
259 if globals.ScreenSizeChanged {

Callers

nothing calls this directly

Calls 15

OpenMethod · 0.95
CloseMethod · 0.95
RecreateMethod · 0.95
CanGoBackMethod · 0.95
UpdateAnchorMethod · 0.95
InsideMethod · 0.80
ButtonMethod · 0.80
SetSizesMethod · 0.80
InsideShapeMethod · 0.80
SetCursorMethod · 0.80
ConsumeMethod · 0.80
SDLRectMethod · 0.80

Tested by

no test coverage detected