CrabUI
Loading...
Searching...
No Matches
CUISwipeHandle.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Reflection;
5
6using Barotrauma;
7using Microsoft.Xna.Framework;
8using Microsoft.Xna.Framework.Input;
9using Microsoft.Xna.Framework.Graphics;
10
11namespace CrabUI
12{
13 public class CUISwipeHandle : ICUIVitalizable
14 {
15 public void SetHost(CUIComponent host) => Host = host;
16 public CUIComponent Host;
17 public bool Grabbed;
18 public bool Swipeable;
19 public Vector2 PrevPosition;
20 public CUIMouseEvent Trigger = CUIMouseEvent.Down;
21 public bool ShouldStart(CUIInput input)
22 {
23 return Swipeable && (
24 (Trigger == CUIMouseEvent.Down && input.MouseDown) ||
25 (Trigger == CUIMouseEvent.DClick && input.DoubleClick)
26 );
27 }
28
29 public void BeginSwipe(Vector2 cursorPos)
30 {
31 Grabbed = true;
32 PrevPosition = cursorPos;
33 }
34
35 public void EndSwipe()
36 {
37 Grabbed = false;
38 Host.MainComponent?.OnSwipeEnd(this);
39 }
40
41 public void Swipe(CUIInput input)
42 {
43 Host.CUIProps.ChildrenOffset.SetValue(
44 Host.ChildrenOffset.Shift(
45 input.MousePositionDif.X,
46 input.MousePositionDif.Y
47 )
48 );
49 Host.InvokeOnSwipe(input.MousePositionDif.X, input.MousePositionDif.Y);
50 }
51 public CUISwipeHandle() { }
52
53 public CUISwipeHandle(CUIComponent host) => Host = host;
54 }
55}