FULLPIPE: Implement FullpipeEngine::defHandleKeyDown()

This commit is contained in:
Eugene Sandulenko 2013-09-15 22:29:00 +03:00
parent e2a8dc1b2f
commit 2196916b62
6 changed files with 99 additions and 2 deletions

View file

@ -30,6 +30,7 @@ namespace Fullpipe {
#define ANI_INV_MAP 5321
#define ANI_LIFTBUTTON 2751
#define ANI_MAN 322
#define MSG_CMN_WINARCADE 4778
#define MSG_DISABLESAVES 5201
#define MSG_ENABLESAVES 5202
#define MSG_HMRKICK_METAL 4764

View file

@ -71,6 +71,11 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
_inputController = 0;
_inputDisabled = false;
_normalSpeed = true;
_currentCheat = -1;
_currentCheatPos = 0;
_modalObject = 0;
_gameContinue = true;
@ -201,7 +206,8 @@ Common::Error FullpipeEngine::run() {
_needRestart = false;
}
_system->delayMillis(10);
if (_normalSpeed)
_system->delayMillis(10);
_system->updateScreen();
}

View file

@ -127,6 +127,9 @@ public:
CInputController *_inputController;
bool _inputDisabled;
int _currentCheat;
int _currentCheatPos;
void defHandleKeyDown(int key);
SoundList *_currSoundList1[11];
@ -171,6 +174,7 @@ public:
bool _needRestart;
bool _flgPlayIntro;
int _musicAllowed;
bool _normalSpeed;
void enableSaves() { _isSaveAllowed = true; }
void disableSaves(ExCommand *ex);
@ -222,6 +226,9 @@ public:
void openHelp();
void openMainMenu();
void winArcade();
void getAllInventory();
int lift_getButtonIdP(int objid);
public:

View file

@ -145,8 +145,72 @@ void FullpipeEngine::setCursor(int id) {
_inputController->setCursor(id);
}
const char *input_cheats[] = {
"HELP",
"STUFF",
"FASTER",
"OHWAIT",
"MUSOFF",
""
};
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() {

View file

@ -138,6 +138,10 @@ int CInventory2::getInventoryItemIndexById(int itemId) {
return -1;
}
int CInventory2::getInventoryPoolItemIdAtIndex(int itemId) {
return _itemsPool[itemId]->id;
}
int CInventory2::getInventoryPoolItemFieldCById(int itemId) {
for (uint i = 0; i < _itemsPool.size(); i++) {
if (_itemsPool[i]->id == itemId)
@ -417,4 +421,17 @@ int CInventory2::getHoveredItem(Common::Point *point) {
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

View file

@ -52,6 +52,7 @@ class CInventory : public CObject {
virtual bool load(MfcArchive &file);
int getInventoryPoolItemIndexById(int itemId);
uint getItemsPoolCount() { return _itemsPool.size(); }
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);
int getInventoryItemIndexById(int itemId);
int getInventoryPoolItemIdAtIndex(int itemId);
int getInventoryPoolItemFieldCById(int itemId);
int getCountItemsWithId(int itemId);
int getItemFlags(int itemId);