1
2 #include "../nx.h"
3 #include "YesNoPrompt.h"
4 #include "YesNoPrompt.fdh"
5
6 enum
7 {
8 STATE_APPEAR,
9 STATE_WAIT,
10 STATE_YES_SELECTED,
11 STATE_NO_SELECTED
12 };
13
14 #define YESNO_X 216
15 #define YESNO_Y 144
16 #define YESNO_POP_SPEED 4
17
18 /*
19 void c------------------------------() {}
20 */
21
ResetState()22 void TB_YNJPrompt::ResetState()
23 {
24 fVisible = false;
25 fAnswer = -1;
26 }
27
SetVisible(bool enable)28 void TB_YNJPrompt::SetVisible(bool enable)
29 {
30 fVisible = enable;
31
32 if (fVisible)
33 {
34 fState = STATE_APPEAR;
35 fCoords.y = YESNO_Y + (YESNO_POP_SPEED * 2);
36 fAnswer = -1;
37
38 sound(SND_MENU_PROMPT);
39 }
40 }
41
42 /*
43 void c------------------------------() {}
44 */
45
Draw()46 void TB_YNJPrompt::Draw()
47 {
48 if (!fVisible)
49 return;
50
51 draw_sprite(YESNO_X, fCoords.y, SPR_YESNO, 0, 0);
52
53 // draw hand selector
54 if (fState == STATE_YES_SELECTED || \
55 fState == STATE_NO_SELECTED)
56 {
57 int xoff = (fState == STATE_YES_SELECTED) ? -4 : 37;
58 draw_sprite(YESNO_X+xoff, fCoords.y+12, SPR_YESNOHAND, 0, 0);
59 }
60
61 switch(fState)
62 {
63 case STATE_APPEAR:
64 {
65 fCoords.y -= YESNO_POP_SPEED;
66
67 if (fCoords.y <= YESNO_Y)
68 {
69 fCoords.y = YESNO_Y;
70 fState = STATE_WAIT;
71 fTimer = 15;
72 }
73 else break;
74 }
75 case STATE_WAIT:
76 {
77 if (fTimer)
78 {
79 fTimer--;
80 break;
81 }
82
83 fState = STATE_YES_SELECTED;
84 }
85 break;
86
87 case STATE_YES_SELECTED:
88 case STATE_NO_SELECTED:
89 {
90 if (justpushed(LEFTKEY) || justpushed(RIGHTKEY))
91 {
92 sound(SND_MENU_MOVE);
93
94 fState = (fState == STATE_YES_SELECTED) ?
95 STATE_NO_SELECTED : STATE_YES_SELECTED;
96 }
97
98 if (justpushed(JUMPKEY))
99 {
100 sound(SND_MENU_SELECT);
101 lastinputs[JUMPKEY] = true;
102 lastpinputs[JUMPKEY] = true;
103
104 fAnswer = (fState == STATE_YES_SELECTED) ? YES : NO;
105 SetVisible(false);
106 }
107 }
108 break;
109 }
110 }
111
112 /*
113 void c------------------------------() {}
114 */
115
ResultReady()116 bool TB_YNJPrompt::ResultReady()
117 {
118 return (fAnswer != -1);
119 }
120
GetResult()121 int TB_YNJPrompt::GetResult()
122 {
123 return fAnswer;
124 }
125
126