13 #ifndef SCUMM_INSANE_REBEL2_SHARED_H 14 #define SCUMM_INSANE_REBEL2_SHARED_H 16 #include "common/keyboard.h" 20 enum Rebel2MenuCommand {
21 kRebel2MenuCommandNone,
23 kRebel2MenuCommandDown,
24 kRebel2MenuCommandAccept,
25 kRebel2MenuCommandCancel
29 kRebel2MenuResultCancel = -2,
30 kRebel2MenuResultNone = -1
44 virtual bool shouldQuit()
const = 0;
45 virtual Result playAttempt(
int &lives) = 0;
46 virtual bool playComplete() = 0;
47 virtual bool playDeath() = 0;
48 virtual bool playRetry(
int lives) = 0;
49 virtual bool playGameOver(
int lives) = 0;
56 case Common::KEYCODE_UP:
57 return kRebel2MenuCommandUp;
58 case Common::KEYCODE_DOWN:
59 return kRebel2MenuCommandDown;
60 case Common::KEYCODE_RETURN:
61 case Common::KEYCODE_KP_ENTER:
62 return kRebel2MenuCommandAccept;
63 case Common::KEYCODE_ESCAPE:
64 return kRebel2MenuCommandCancel;
66 return kRebel2MenuCommandNone;
70 inline int applyRebel2MenuCommand(Rebel2MenuCommand command,
int itemCount,
73 return kRebel2MenuResultNone;
76 case kRebel2MenuCommandUp:
78 selection = itemCount - 1;
80 case kRebel2MenuCommandDown:
81 if (++selection >= itemCount)
84 case kRebel2MenuCommandAccept:
85 return selection >= 0 && selection < itemCount ? selection : kRebel2MenuResultNone;
86 case kRebel2MenuCommandCancel:
87 return kRebel2MenuResultCancel;
91 return kRebel2MenuResultNone;
94 inline bool updateRebel2Fire(
bool pressed,
bool wasPressed,
95 bool rapidFire,
bool autoFire, int16 &rapidFireCounter) {
96 const bool pressedEdge = pressed && !wasPressed;
100 bool rapidFireShot =
false;
102 rapidFireShot = pressed && rapidFireCounter % 5 == 0;
103 rapidFireCounter = (rapidFireCounter + 1) % 5;
105 return pressedEdge || rapidFireShot || autoFire;
KeyCode keycode
Definition: keyboard.h:299
Definition: keyboard.h:294