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