FULLPIPE: Implement FullpipeEngine::defHandleKeyDown()
This commit is contained in:
parent
e2a8dc1b2f
commit
2196916b62
6 changed files with 99 additions and 2 deletions
|
@ -30,6 +30,7 @@ namespace Fullpipe {
|
||||||
#define ANI_INV_MAP 5321
|
#define ANI_INV_MAP 5321
|
||||||
#define ANI_LIFTBUTTON 2751
|
#define ANI_LIFTBUTTON 2751
|
||||||
#define ANI_MAN 322
|
#define ANI_MAN 322
|
||||||
|
#define MSG_CMN_WINARCADE 4778
|
||||||
#define MSG_DISABLESAVES 5201
|
#define MSG_DISABLESAVES 5201
|
||||||
#define MSG_ENABLESAVES 5202
|
#define MSG_ENABLESAVES 5202
|
||||||
#define MSG_HMRKICK_METAL 4764
|
#define MSG_HMRKICK_METAL 4764
|
||||||
|
|
|
@ -71,6 +71,11 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
|
||||||
_inputController = 0;
|
_inputController = 0;
|
||||||
_inputDisabled = false;
|
_inputDisabled = false;
|
||||||
|
|
||||||
|
_normalSpeed = true;
|
||||||
|
|
||||||
|
_currentCheat = -1;
|
||||||
|
_currentCheatPos = 0;
|
||||||
|
|
||||||
_modalObject = 0;
|
_modalObject = 0;
|
||||||
|
|
||||||
_gameContinue = true;
|
_gameContinue = true;
|
||||||
|
@ -201,7 +206,8 @@ Common::Error FullpipeEngine::run() {
|
||||||
_needRestart = false;
|
_needRestart = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_system->delayMillis(10);
|
if (_normalSpeed)
|
||||||
|
_system->delayMillis(10);
|
||||||
_system->updateScreen();
|
_system->updateScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,9 @@ public:
|
||||||
CInputController *_inputController;
|
CInputController *_inputController;
|
||||||
bool _inputDisabled;
|
bool _inputDisabled;
|
||||||
|
|
||||||
|
int _currentCheat;
|
||||||
|
int _currentCheatPos;
|
||||||
|
|
||||||
void defHandleKeyDown(int key);
|
void defHandleKeyDown(int key);
|
||||||
|
|
||||||
SoundList *_currSoundList1[11];
|
SoundList *_currSoundList1[11];
|
||||||
|
@ -171,6 +174,7 @@ public:
|
||||||
bool _needRestart;
|
bool _needRestart;
|
||||||
bool _flgPlayIntro;
|
bool _flgPlayIntro;
|
||||||
int _musicAllowed;
|
int _musicAllowed;
|
||||||
|
bool _normalSpeed;
|
||||||
|
|
||||||
void enableSaves() { _isSaveAllowed = true; }
|
void enableSaves() { _isSaveAllowed = true; }
|
||||||
void disableSaves(ExCommand *ex);
|
void disableSaves(ExCommand *ex);
|
||||||
|
@ -222,6 +226,9 @@ public:
|
||||||
void openHelp();
|
void openHelp();
|
||||||
void openMainMenu();
|
void openMainMenu();
|
||||||
|
|
||||||
|
void winArcade();
|
||||||
|
void getAllInventory();
|
||||||
|
|
||||||
int lift_getButtonIdP(int objid);
|
int lift_getButtonIdP(int objid);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -145,8 +145,72 @@ void FullpipeEngine::setCursor(int id) {
|
||||||
_inputController->setCursor(id);
|
_inputController->setCursor(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *input_cheats[] = {
|
||||||
|
"HELP",
|
||||||
|
"STUFF",
|
||||||
|
"FASTER",
|
||||||
|
"OHWAIT",
|
||||||
|
"MUSOFF",
|
||||||
|
""
|
||||||
|
};
|
||||||
|
|
||||||
void FullpipeEngine::defHandleKeyDown(int key) {
|
void FullpipeEngine::defHandleKeyDown(int key) {
|
||||||
warning("STUB: FullpipeEngine::defHandleKeyDown(%d)", key);
|
if (_currentCheat == -1) {
|
||||||
|
for (int i = 0; input_cheats[i][0]; i++)
|
||||||
|
if (toupper(key) == input_cheats[i][0]) {
|
||||||
|
_currentCheat = i;
|
||||||
|
_currentCheatPos = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
warning("%d %d", _currentCheat, _currentCheatPos);
|
||||||
|
if (toupper(key) != input_cheats[_currentCheat][_currentCheatPos]) {
|
||||||
|
_currentCheat = -1;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentCheatPos++;
|
||||||
|
warning("%d %d", _currentCheat, _currentCheatPos);
|
||||||
|
|
||||||
|
if (!input_cheats[_currentCheat][_currentCheatPos]) {
|
||||||
|
switch (_currentCheat) {
|
||||||
|
case 0: // HELP
|
||||||
|
winArcade();
|
||||||
|
break;
|
||||||
|
case 1: // STUFF
|
||||||
|
getAllInventory();
|
||||||
|
break;
|
||||||
|
case 2: // FASTER
|
||||||
|
_normalSpeed = !_normalSpeed;
|
||||||
|
break;
|
||||||
|
case 3: // OHWAIT
|
||||||
|
_gamePaused = 1;
|
||||||
|
_flgGameIsRunning = 0;
|
||||||
|
break;
|
||||||
|
case 4: // MUSOFF
|
||||||
|
if (_musicAllowed & 2)
|
||||||
|
setMusicAllowed(_musicAllowed & 0xFFFFFFFD);
|
||||||
|
else
|
||||||
|
setMusicAllowed(_musicAllowed | 2);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentCheatPos = 0;
|
||||||
|
_currentCheat = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullpipeEngine::winArcade() {
|
||||||
|
ExCommand *ex = new ExCommand(0, 17, MSG_CMN_WINARCADE, 0, 0, 0, 1, 0, 0, 0);
|
||||||
|
ex->_excFlags |= 3;
|
||||||
|
|
||||||
|
ex->postMessage();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FullpipeEngine::updateCursorsCommon() {
|
void FullpipeEngine::updateCursorsCommon() {
|
||||||
|
|
|
@ -138,6 +138,10 @@ int CInventory2::getInventoryItemIndexById(int itemId) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CInventory2::getInventoryPoolItemIdAtIndex(int itemId) {
|
||||||
|
return _itemsPool[itemId]->id;
|
||||||
|
}
|
||||||
|
|
||||||
int CInventory2::getInventoryPoolItemFieldCById(int itemId) {
|
int CInventory2::getInventoryPoolItemFieldCById(int itemId) {
|
||||||
for (uint i = 0; i < _itemsPool.size(); i++) {
|
for (uint i = 0; i < _itemsPool.size(); i++) {
|
||||||
if (_itemsPool[i]->id == itemId)
|
if (_itemsPool[i]->id == itemId)
|
||||||
|
@ -417,4 +421,17 @@ int CInventory2::getHoveredItem(Common::Point *point) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FullpipeEngine::getAllInventory() {
|
||||||
|
CInventory2 *inv = getGameLoaderInventory();
|
||||||
|
|
||||||
|
for (uint i = 0; i < inv->getItemsPoolCount(); ++i ) {
|
||||||
|
int id = inv->getInventoryPoolItemIdAtIndex(i);
|
||||||
|
|
||||||
|
if (inv->getCountItemsWithId(id) < 1)
|
||||||
|
inv->addItem(id, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
inv->rebuildItemRects();
|
||||||
|
}
|
||||||
|
|
||||||
} // End of namespace Fullpipe
|
} // End of namespace Fullpipe
|
||||||
|
|
|
@ -52,6 +52,7 @@ class CInventory : public CObject {
|
||||||
virtual bool load(MfcArchive &file);
|
virtual bool load(MfcArchive &file);
|
||||||
|
|
||||||
int getInventoryPoolItemIndexById(int itemId);
|
int getInventoryPoolItemIndexById(int itemId);
|
||||||
|
uint getItemsPoolCount() { return _itemsPool.size(); }
|
||||||
bool setItemFlags(int itemId, int flags);
|
bool setItemFlags(int itemId, int flags);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -102,6 +103,7 @@ class CInventory2 : public CInventory {
|
||||||
void removeItem2(Scene *sceneObj, int itemId, int x, int y, int priority);
|
void removeItem2(Scene *sceneObj, int itemId, int x, int y, int priority);
|
||||||
|
|
||||||
int getInventoryItemIndexById(int itemId);
|
int getInventoryItemIndexById(int itemId);
|
||||||
|
int getInventoryPoolItemIdAtIndex(int itemId);
|
||||||
int getInventoryPoolItemFieldCById(int itemId);
|
int getInventoryPoolItemFieldCById(int itemId);
|
||||||
int getCountItemsWithId(int itemId);
|
int getCountItemsWithId(int itemId);
|
||||||
int getItemFlags(int itemId);
|
int getItemFlags(int itemId);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue