13 #ifndef SCUMM_INSANE_REBEL2_SHARED_H 14 #define SCUMM_INSANE_REBEL2_SHARED_H 16 #include "common/keyboard.h" 24 enum Rebel2MenuCommand {
25 kRebel2MenuCommandNone,
27 kRebel2MenuCommandDown,
28 kRebel2MenuCommandAccept,
29 kRebel2MenuCommandCancel
33 kRebel2MenuResultCancel = -2,
34 kRebel2MenuResultNone = -1
48 virtual bool shouldQuit()
const = 0;
49 virtual Result playAttempt(
int &lives) = 0;
50 virtual bool playComplete() = 0;
51 virtual bool playDeath() = 0;
52 virtual bool playRetry(
int lives) = 0;
53 virtual bool playGameOver(
int lives) = 0;
80 virtual bool shouldQuit()
const = 0;
82 virtual bool playOpening() = 0;
83 virtual void beginAttempt() = 0;
84 virtual void beginPhase(
int phase,
bool clearEnemies) = 0;
85 virtual int16 waveBudget(
int phase) = 0;
86 virtual bool playBackgroundWave(
int phase) = 0;
87 virtual bool playWave(
int phase, uint16 selection) = 0;
88 virtual WaveCredit creditWave(int16 mask, int16 *budget, int16 threshold) = 0;
89 virtual bool playPhaseEnd(
int phase) = 0;
91 virtual uint16 phaseState()
const = 0;
92 virtual bool playerDead()
const = 0;
93 virtual void accumulateKills() = 0;
94 virtual void accumulateMisses() = 0;
97 virtual bool handleDeath(
int phase, Result &result) = 0;
98 virtual void playComplete(
int bonusCount) = 0;
104 inline Rebel2MenuCommand getRebel2MenuCommand(
const Common::KeyState &key) {
106 case Common::KEYCODE_UP:
107 return kRebel2MenuCommandUp;
108 case Common::KEYCODE_DOWN:
109 return kRebel2MenuCommandDown;
110 case Common::KEYCODE_RETURN:
111 case Common::KEYCODE_KP_ENTER:
112 return kRebel2MenuCommandAccept;
113 case Common::KEYCODE_ESCAPE:
114 return kRebel2MenuCommandCancel;
116 return kRebel2MenuCommandNone;
120 inline int applyRebel2MenuCommand(Rebel2MenuCommand command,
int itemCount,
123 return kRebel2MenuResultNone;
126 case kRebel2MenuCommandUp:
128 selection = itemCount - 1;
130 case kRebel2MenuCommandDown:
131 if (++selection >= itemCount)
134 case kRebel2MenuCommandAccept:
135 return selection >= 0 && selection < itemCount ? selection : kRebel2MenuResultNone;
136 case kRebel2MenuCommandCancel:
137 return kRebel2MenuResultCancel;
141 return kRebel2MenuResultNone;
144 inline bool updateRebel2Fire(
bool pressed,
bool wasPressed,
145 bool rapidFire,
bool autoFire, int16 &rapidFireCounter) {
146 const bool pressedEdge = pressed && !wasPressed;
148 rapidFireCounter = 0;
150 bool rapidFireShot =
false;
152 rapidFireShot = pressed && rapidFireCounter % 5 == 0;
153 rapidFireCounter = (rapidFireCounter + 1) % 5;
155 return pressedEdge || rapidFireShot || autoFire;
KeyCode keycode
Definition: keyboard.h:299
Definition: algorithm.h:29
Definition: keyboard.h:294