Tanoda
StepperSide.cs
Go to the documentation of this file.
1
3
4using System;
7
9{
10
11 [RequireComponent(typeof(Selectable))]
12 public class StepperSide :
13 UIBehaviour,
14 IPointerClickHandler,
15 ISubmitHandler,
16 IPointerEnterHandler, IPointerExitHandler,
17 IPointerDownHandler, IPointerUpHandler,
18 ISelectHandler, IDeselectHandler
19 {
20 Selectable button { get { return GetComponent<Selectable>(); } }
21
22 Stepper stepper { get { return GetComponentInParent<Stepper>(); } }
23
24 bool leftmost { get { return button == stepper.sides[0]; } }
25
26 internal Sprite cutSprite;
27
28 protected StepperSide()
29 { }
30
31 public virtual void OnPointerClick(PointerEventData eventData)
32 {
33 if (eventData.button != PointerEventData.InputButton.Left)
34 return;
35
36 Press();
37 AdjustSprite(false);
38 }
39
40 public virtual void OnSubmit(BaseEventData eventData)
41 {
42 Press();
43 AdjustSprite(true);
44 }
45
46 public virtual void OnPointerEnter(PointerEventData eventData)
47 {
48 AdjustSprite(false);
49 }
50
51 public virtual void OnPointerExit(PointerEventData eventData)
52 {
53 AdjustSprite(true);
54 }
55
56 public virtual void OnPointerDown(PointerEventData eventData)
57 {
58 AdjustSprite(false);
59 }
60
61 public virtual void OnPointerUp(PointerEventData eventData)
62 {
63 AdjustSprite(false);
64 }
65
66 public virtual void OnSelect(BaseEventData eventData)
67 {
68 AdjustSprite(false);
69 }
70
71 public virtual void OnDeselect(BaseEventData eventData)
72 {
73 AdjustSprite(true);
74 }
75
76 private void Press()
77 {
78 if (!button.IsActive() || !button.IsInteractable())
79 return;
80
81 if (leftmost)
82 {
83 stepper.StepDown();
84 }
85 else
86 {
87 stepper.StepUp();
88 }
89 }
90
91 private void AdjustSprite(bool restore)
92 {
93 var image = button.image;
94 if (!image || image.overrideSprite == cutSprite)
95 return;
96
97 if (restore)
98 image.overrideSprite = cutSprite;
99 else
100 image.overrideSprite = Stepper.CutSprite(image.overrideSprite, leftmost);
101 }
102 }
103}
virtual void OnPointerClick(PointerEventData eventData)
Definition: StepperSide.cs:31
virtual void OnPointerUp(PointerEventData eventData)
Definition: StepperSide.cs:61
virtual void OnDeselect(BaseEventData eventData)
Definition: StepperSide.cs:71
virtual void OnPointerDown(PointerEventData eventData)
Definition: StepperSide.cs:56
virtual void OnPointerExit(PointerEventData eventData)
Definition: StepperSide.cs:51
virtual void OnSelect(BaseEventData eventData)
Definition: StepperSide.cs:66
virtual void OnSubmit(BaseEventData eventData)
Definition: StepperSide.cs:40
virtual void OnPointerEnter(PointerEventData eventData)
Definition: StepperSide.cs:46
Credit Erdener Gonenc - @PixelEnvision.