本文整理汇总了C++中gui::SaveLoadChooser类的典型用法代码示例。如果您正苦于以下问题:C++ SaveLoadChooser类的具体用法?C++ SaveLoadChooser怎么用?C++ SaveLoadChooser使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SaveLoadChooser类的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: showSaveMenu
bool StarTrekEngine::showSaveMenu() {
GUI::SaveLoadChooser *dialog;
Common::String desc;
int slot;
dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
slot = dialog->runModalWithCurrentTarget();
desc = dialog->getResultString();
if (desc.empty()) {
// create our own description for the saved game, the user didnt enter it
desc = dialog->createDefaultSaveDescription(slot);
}
if (desc.size() > 28)
desc = Common::String(desc.c_str(), 28);
delete dialog;
if (slot < 0)
return true;
return saveGame(slot, desc);
}
开发者ID:BenCastricum,项目名称:scummvm,代码行数:25,代码来源:saveload.cpp
示例2: getKey
bool Keyboard::getKey(Common::Event &event) {
Common::KeyCode keycode = event.kbd.keycode;
switch (keycode) {
case Common::KEYCODE_F1:
if (event.type == Common::EVENT_KEYUP)
return false;
// Display ScummVM version and translation strings
for (int i = 0; i < 3; i++)
_vm->_commandHandler->addCommand(kCmdInf, 1, kShowScummVMVersion + i, NULL);
return false;
case Common::KEYCODE_F5:
if (_vm->canSaveGameStateCurrently()) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
int16 savegameId = dialog->runModalWithCurrentTarget();
Common::String savegameDescription = dialog->getResultString();
delete dialog;
if (savegameId != -1)
_vm->saveGameState(savegameId, savegameDescription);
}
return false;
case Common::KEYCODE_F7:
if (_vm->canLoadGameStateCurrently()) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
int16 savegameId = dialog->runModalWithCurrentTarget();
delete dialog;
if (savegameId != -1)
_vm->loadGameState(savegameId);
}
return false;
case Common::KEYCODE_d:
if (event.kbd.flags & Common::KBD_CTRL) {
// Start the debugger
_vm->getDebugger()->attach();
_vm->getDebugger()->onFrame();
return false;
}
break;
case Common::KEYCODE_x:
if (event.kbd.flags & Common::KBD_ALT) {
_vm->quit();
return false;
}
break;
case Common::KEYCODE_F10:
if (_vm->_commandHandler->idle())
_vm->switchScene(-1); // Exits the game.
return false;
default:
break;
}
return true;
}
开发者ID:AReim1982,项目名称:scummvm,代码行数:56,代码来源:events.cpp
示例3: showScummVMRestoreDialog
void WidgetFiles::showScummVMRestoreDialog() {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
int slot = dialog->runModalWithCurrentTarget();
close();
delete dialog;
if (slot >= 0) {
_vm->loadGameState(slot);
}
}
开发者ID:86400,项目名称:scummvm,代码行数:10,代码来源:widget_files.cpp
示例4: loadGame
bool SavesManager::loadGame() {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"), false);
int slotNum = dialog->runModalWithCurrentTarget();
delete dialog;
if (slotNum != -1) {
loadGameState(slotNum);
g_vm->_interface->drawParty(true);
}
return slotNum != -1;
}
开发者ID:BenCastricum,项目名称:scummvm,代码行数:12,代码来源:saves.cpp
示例5: showLoadMenu
bool StarTrekEngine::showLoadMenu() {
GUI::SaveLoadChooser *dialog;
int slot;
dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
slot = dialog->runModalWithCurrentTarget();
delete dialog;
if (slot < 0)
return true;
return loadGame(slot);
}
开发者ID:BenCastricum,项目名称:scummvm,代码行数:14,代码来源:saveload.cpp
示例6: handleSaveLoad
void RingworldGame::handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) {
const EnginePlugin *plugin = 0;
EngineMan.findGame(_vm->getGameId(), &plugin);
GUI::SaveLoadChooser *dialog;
if (saveFlag)
dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"));
else
dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load"));
dialog->setSaveMode(saveFlag);
saveSlot = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
saveName = dialog->getResultString();
delete dialog;
}
开发者ID:TomFrost,项目名称:scummvm,代码行数:16,代码来源:ringworld_logic.cpp
示例7: initializeGame
void DMEngine::initializeGame() {
initMemoryManager();
_displayMan->loadGraphics();
_displayMan->initializeGraphicData();
_displayMan->loadFloorSet(k0_FloorSetStone);
_displayMan->loadWallSet(k0_WallSetStone);
_sound->loadSounds(); // @ F0506_AMIGA_AllocateData
if (!ConfMan.hasKey("save_slot")) // skip drawing title if loading from launcher
drawTittle();
_textMan->initialize();
_objectMan->loadObjectNames();
_eventMan->initMouse();
int16 saveSlot = -1;
do {
// if loading from the launcher
if (ConfMan.hasKey("save_slot")) {
saveSlot = ConfMan.getInt("save_slot");
} else { // else show the entrance
processEntrance();
if (_engineShouldQuit)
return;
if (_newGameFl == k0_modeLoadSavedGame) { // if resume was clicked, bring up ScummVM load screen
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
saveSlot = dialog->runModalWithCurrentTarget();
delete dialog;
}
}
} while (loadgame(saveSlot) != k1_LoadgameSuccess);
_displayMan->loadIntoBitmap(k11_MenuSpellAreLinesIndice, _menuMan->_bitmapSpellAreaLines); // @ F0396_MENUS_LoadSpellAreaLinesBitmap
// There was some memory wizardy for the Amiga platform, I skipped that part
_displayMan->allocateFlippedWallBitmaps();
startGame();
if (_newGameFl)
_moveSens->getMoveResult(Thing::_party, kM1_MapXNotOnASquare, 0, _dungeonMan->_partyMapX, _dungeonMan->_partyMapY);
_eventMan->showMouse();
_eventMan->discardAllInput();
}
开发者ID:WinterGrascph,项目名称:dm,代码行数:45,代码来源:dm.cpp
示例8: showScummVMSaveDialog
void WidgetFiles::showScummVMSaveDialog() {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
int slot = dialog->runModalWithCurrentTarget();
if (slot >= 0) {
Common::String desc = dialog->getResultString();
if (desc.empty()) {
// create our own description for the saved game, the user didn't enter it
desc = dialog->createDefaultSaveDescription(slot);
}
_vm->saveGameState(slot, desc);
}
close();
delete dialog;
}
开发者ID:86400,项目名称:scummvm,代码行数:18,代码来源:widget_files.cpp
示例9: saveGame
bool SavesManager::saveGame() {
Map &map = *g_vm->_map;
if (map.mazeData()._mazeFlags & RESTRICTION_SAVE) {
ErrorScroll::show(g_vm, Res.SAVE_OFF_LIMITS, WT_NONFREEZED_WAIT);
return false;
} else if (!g_vm->canSaveGameStateCurrently()) {
return false;
} else {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
int slotNum = dialog->runModalWithCurrentTarget();
Common::String saveName = dialog->getResultString();
delete dialog;
if (slotNum != -1)
saveGameState(slotNum, saveName);
return slotNum != -1;
}
}
开发者ID:BenCastricum,项目名称:scummvm,代码行数:20,代码来源:saves.cpp
示例10: saveRestoreGame
bool LabEngine::saveRestoreGame() {
bool isOK = false;
// The original had one screen for saving/loading. We have two.
// Ask the user which screen to use.
GUI::MessageDialog saveOrLoad(_("Would you like to save or restore a game?"), _("Save"), _("Restore"));
int choice = saveOrLoad.runModal();
if (choice == GUI::kMessageOK) {
// Save
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
int slot = dialog->runModalWithCurrentTarget();
if (slot >= 0) {
Common::String desc = dialog->getResultString();
if (desc.empty()) {
// create our own description for the saved game, the user didn't enter it
desc = dialog->createDefaultSaveDescription(slot);
}
isOK = saveGame(slot, desc);
}
delete dialog;
} else {
// Restore
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
int slot = dialog->runModalWithCurrentTarget();
if (slot >= 0) {
isOK = loadGame(slot);
}
delete dialog;
}
return isOK;
}
开发者ID:vladimir-zahradnik,项目名称:scummvm,代码行数:35,代码来源:savegame.cpp
示例11: getKey
bool Keyboard::getKey(Common::Event &event, int &cgeCode) {
Common::KeyCode keycode = event.kbd.keycode;
if ((keycode == Common::KEYCODE_LCTRL) || (keycode == Common::KEYCODE_RCTRL)) {
cgeCode = kKeyCtrl;
return true;
}
if ((keycode == Common::KEYCODE_LALT) || (keycode == Common::KEYCODE_RALT)) {
cgeCode = kKeyAlt;
return true;
}
if (keycode == Common::KEYCODE_KP_ENTER) {
cgeCode = 28;
return true;
}
if (keycode == Common::KEYCODE_F5) {
warning("keycode %d", event.kbd.ascii);
if (_vm->canSaveGameStateCurrently()) {
const EnginePlugin *plugin = NULL;
EngineMan.findGame(_vm->_gameDescription->gameid, &plugin);
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Save game:", "Save");
dialog->setSaveMode(true);
int16 savegameId = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
Common::String savegameDescription = dialog->getResultString();
delete dialog;
_vm->saveGameState(savegameId, savegameDescription);
}
return false;
} else if (keycode == Common::KEYCODE_F7) {
if (_vm->canLoadGameStateCurrently()) {
const EnginePlugin *plugin = NULL;
EngineMan.findGame(_vm->_gameDescription->gameid, &plugin);
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Restore game:", "Restore");
dialog->setSaveMode(false);
int16 savegameId = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
delete dialog;
_vm->loadGameState(savegameId);
}
return false;
}
// Scan through the ScummVM mapping list
for (int idx = 0; idx < 0x60; idx++) {
if (_scummVmCodes[idx] == event.kbd.ascii) {
cgeCode = idx;
return true;
}
}
return false;
}
开发者ID:grayfoxier,项目名称:scummvm,代码行数:52,代码来源:events.cpp
示例12: scummVMSaveLoadDialog
bool SaveManager::scummVMSaveLoadDialog(bool isSave) {
GUI::SaveLoadChooser *dialog;
Common::String desc;
int slot;
if (isSave) {
dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
slot = dialog->runModalWithCurrentTarget();
desc = dialog->getResultString();
if (desc.empty()) {
// create our own description for the saved game, the user didnt enter it
desc = dialog->createDefaultSaveDescription(slot);
}
if (desc.size() > 28)
desc = Common::String(desc.c_str(), 28);
} else {
dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
slot = dialog->runModalWithCurrentTarget();
}
delete dialog;
if (slot < 0)
return false;
if (isSave) {
saveGame(slot, desc, false);
return true;
} else {
Common::ErrorCode result = loadGame(slot).getCode();
return (result == Common::kNoError);
}
}
开发者ID:lukecharman,项目名称:scummvm,代码行数:36,代码来源:save_manager.cpp
示例13: saveGame
void DMEngine::saveGame() {
_menuMan->drawDisabledMenu();
_eventMan->showMouse();
switch (getGameLanguage()) { // localized
default:
case Common::EN_ANY:
_dialog->dialogDraw(nullptr, nullptr, "SAVE AND PLAY", "SAVE AND QUIT", "CANCEL", "LOAD", false, false, false);
break;
case Common::DE_DEU:
_dialog->dialogDraw(nullptr, nullptr, "SICHERN/SPIEL", "SICHERN/ENDEN", "WIDERRUFEN", "LOAD", false, false, false);
break;
case Common::FR_FRA:
_dialog->dialogDraw(nullptr, nullptr, "GARDER/JOUER", "GARDER/SORTIR", "ANNULLER", "LOAD", false, false, false);
break;
}
enum SaveAndPlayChoice {
kSaveAndPlay = 1,
kSaveAndQuit = 2,
kCancel = 3,
kLoad = 4
};
SaveAndPlayChoice saveAndPlayChoice = (SaveAndPlayChoice)_dialog->getChoice(4, kDMDialogCommandSetViewport, 0, kDMDialogChoiceNone);
if (saveAndPlayChoice == kLoad) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
int loadSlot = dialog->runModalWithCurrentTarget();
if (loadSlot >= 0) {
_loadSaveSlotAtRuntime = loadSlot;
return;
}
saveAndPlayChoice = kCancel;
}
if (saveAndPlayChoice == kSaveAndQuit || saveAndPlayChoice == kSaveAndPlay) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
int16 saveSlot = dialog->runModalWithCurrentTarget();
Common::String saveDescription = dialog->getResultString();
if (saveDescription.empty())
saveDescription = "Nice save ^^";
delete dialog;
if (saveSlot >= 0) {
switch (getGameLanguage()) { // localized
default:
case Common::EN_ANY:
_dialog->dialogDraw(nullptr, "SAVING GAME . . .", nullptr, nullptr, nullptr, nullptr, false, false, false);
break;
case Common::DE_DEU:
_dialog->dialogDraw(nullptr, "SPIEL WIRD GESICHERT . . .", nullptr, nullptr, nullptr, nullptr, false, false, false);
break;
case Common::FR_FRA:
_dialog->dialogDraw(nullptr, "UN MOMENT A SAUVEGARDER DU JEU...", nullptr, nullptr, nullptr, nullptr, false, false, false);
break;
}
uint16 champHandObjWeight = 0;
if (!_championMan->_leaderEmptyHanded) {
champHandObjWeight = _dungeonMan->getObjectWeight(_championMan->_leaderHandObject);
_championMan->_champions[_championMan->_leaderIndex]._load -= champHandObjWeight;
}
if (!writeCompleteSaveFile(saveSlot, saveDescription, saveAndPlayChoice)) {
_dialog->dialogDraw(nullptr, "Unable to open file for saving", "OK", nullptr, nullptr, nullptr, false, false, false);
_dialog->getChoice(1, kDMDialogCommandSetViewport, 0, kDMDialogChoiceNone);
}
if (!_championMan->_leaderEmptyHanded) {
_championMan->_champions[_championMan->_leaderIndex]._load += champHandObjWeight;
}
} else
saveAndPlayChoice = kCancel;
}
if (saveAndPlayChoice == kSaveAndQuit) {
_eventMan->hideMouse();
endGame(false);
}
_restartGameAllowed = true;
_menuMan->drawEnabledMenus();
_eventMan->hideMouse();
}
开发者ID:mikeliturbe,项目名称:scummvm,代码行数:87,代码来源:loadsave.cpp
示例14: restoreGame
/**
* Restore game from supplied slot number
*/
bool FileManager::restoreGame(const int16 slot) {
debugC(1, kDebugFile, "restoreGame(%d)", slot);
int16 savegameId;
if (slot == -1) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Restore game:", "Restore", false);
savegameId = dialog->runModalWithCurrentTarget();
delete dialog;
} else {
savegameId = slot;
}
if (savegameId < 0) // dialog aborted
return false;
Common::String savegameFile = _vm->getSavegameFilename(savegameId);
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
Common::InSaveFile *in = saveMan->openForLoading(savegameFile);
if (!in)
return false;
// Initialize new-game status
_vm->initStatus();
// Check version, can't restore from different versions
int saveVersion = in->readByte();
if (saveVersion != kSavegameVersion) {
warning("Savegame of incompatible version");
delete in;
return false;
}
// Skip over description
int32 saveGameNameSize = in->readSint16BE();
in->skip(saveGameNameSize);
Graphics::skipThumbnail(*in);
in->skip(6); // Skip date & time
// If hero image is currently swapped, swap it back before restore
if (_vm->_heroImage != kHeroIndex)
_vm->_object->swapImages(kHeroIndex, _vm->_heroImage);
_vm->_object->restoreObjects(in);
_vm->_heroImage = in->readByte();
// If hero swapped in saved game, swap it
byte heroImg = _vm->_heroImage;
if (heroImg != kHeroIndex)
_vm->_object->swapImages(kHeroIndex, _vm->_heroImage);
_vm->_heroImage = heroImg;
Status &gameStatus = _vm->getGameStatus();
int score = in->readSint16BE();
_vm->setScore(score);
gameStatus._storyModeFl = (in->readByte() == 1);
_vm->_mouse->setJumpExitFl(in->readByte() == 1);
gameStatus._gameOverFl = (in->readByte() == 1);
for (int i = 0; i < _vm->_numStates; i++)
_vm->_screenStates[i] = in->readByte();
_vm->_scheduler->restoreSchedulerData(in);
// Restore palette and change it if necessary
_vm->_screen->restorePal(in);
// Restore maze status
_vm->_maze._enabledFl = (in->readByte() == 1);
_vm->_maze._size = in->readByte();
_vm->_maze._x1 = in->readSint16BE();
_vm->_maze._y1 = in->readSint16BE();
_vm->_maze._x2 = in->readSint16BE();
_vm->_maze._y2 = in->readSint16BE();
_vm->_maze._x3 = in->readSint16BE();
_vm->_maze._x4 = in->readSint16BE();
_vm->_maze._firstScreenIndex = in->readByte();
_vm->_scheduler->restoreScreen(*_vm->_screenPtr);
if ((_vm->getGameStatus()._viewState = (Vstate) in->readByte()) != kViewPlay)
_vm->_screen->hideCursor();
delete in;
return true;
}
开发者ID:Bundesdrucker,项目名称:scummvm,代码行数:94,代码来源:file.cpp
示例15: saveGame
/**
* Save game to supplied slot
*/
bool FileManager::saveGame(const int16 slot, const Common::String &descrip) {
debugC(1, kDebugFile, "saveGame(%d, %s)", slot, descrip.c_str());
int16 savegameId;
Common::String savegameDescription;
if (slot == -1) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Save game:", "Save", true);
savegameId = dialog->runModalWithCurrentTarget();
savegameDescription = dialog->getResultString();
delete dialog;
} else {
savegameId = slot;
if (!descrip.empty()) {
savegameDescription = descrip;
} else {
savegameDescription = Common::String::format("Quick save #%d", slot);
}
}
if (savegameId < 0) // dialog aborted
return false;
Common::String savegameFile = _vm->getSavegameFilename(savegameId);
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
Common::OutSaveFile *out = saveMan->openForSaving(savegameFile);
if (!out) {
warning("Can't create file '%s', game not saved", savegameFile.c_str());
return false;
}
// Write version. We can't restore from obsolete versions
out->writeByte(kSavegameVersion);
if (savegameDescription == "") {
savegameDescription = "Untitled savegame";
}
out->writeSint16BE(savegameDescription.size() + 1);
out->write(savegameDescription.c_str(), savegameDescription.size() + 1);
Graphics::saveThumbnail(*out);
TimeDate curTime;
_vm->_system->getTimeAndDate(curTime);
uint32 saveDate = (curTime.tm_mday & 0xFF) << 24 | ((curTime.tm_mon + 1) & 0xFF) << 16 | ((curTime.tm_year + 1900) & 0xFFFF);
uint16 saveTime = (curTime.tm_hour & 0xFF) << 8 | ((curTime.tm_min) & 0xFF);
out->writeUint32BE(saveDate);
out->writeUint16BE(saveTime);
_vm->_object->saveObjects(out);
const Status &gameStatus = _vm->getGameStatus();
// Save whether hero image is swapped
out->writeByte(_vm->_heroImage);
// Save score
out->writeSint16BE(_vm->getScore());
// Save story mode
out->writeByte((gameStatus._storyModeFl) ? 1 : 0);
// Save jumpexit mode
out->writeByte((_vm->_mouse->getJumpExitFl()) ? 1 : 0);
// Save gameover status
out->writeByte((gameStatus._gameOverFl) ? 1 : 0);
// Save screen states
for (int i = 0; i < _vm->_numStates; i++)
out->writeByte(_vm->_screenStates[i]);
_vm->_scheduler->saveSchedulerData(out);
// Save palette table
_vm->_screen->savePal(out);
// Save maze status
out->writeByte((_vm->_maze._enabledFl) ? 1 : 0);
out->writeByte(_vm->_maze._size);
out->writeSint16BE(_vm->_maze._x1);
out->writeSint16BE(_vm->_maze._y1);
out->writeSint16BE(_vm->_maze._x2);
out->writeSint16BE(_vm->_maze._y2);
out->writeSint16BE(_vm->_maze._x3);
out->writeSint16BE(_vm->_maze._x4);
out->writeByte(_vm->_maze._firstScreenIndex);
out->writeByte((byte)_vm->getGameStatus()._viewState);
out->finalize();
delete out;
//.........这里部分代码省略.........
开发者ID:Bundesdrucker,项目名称:scummvm,代码行数:101,代码来源:file.cpp
示例16: getKey
bool Keyboard::getKey(Common::Event &event) {
Common::KeyCode keycode = event.kbd.keycode;
if (((keycode == Common::KEYCODE_LALT) || (keycode == Common::KEYCODE_RALT)) && event.type == Common::EVENT_KEYDOWN)
_keyAlt = true;
else
_keyAlt = false;
switch (keycode) {
case Common::KEYCODE_F1:
if (event.type == Common::EVENT_KEYUP)
return false;
// Display ScummVM version and translation strings
for (int i = 0; i < 5; i++)
_vm->_commandHandler->addCommand(kCmdInf, 1, kShowScummVMVersion + i, NULL);
return false;
case Common::KEYCODE_F5:
if (_vm->canSaveGameStateCurrently()) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Save game:", "Save", true);
int16 savegameId = dialog->runModalWithCurrentTarget();
Common::String savegameDescription = dialog->getResultString();
delete dialog;
if (savegameId != -1)
_vm->saveGameState(savegameId, savegameDescription);
}
return false;
case Common::KEYCODE_F7:
if (_vm->canLoadGameStateCurrently()) {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Restore game:", "Restore", false);
int16 savegameId = dialog->runModalWithCurrentTarget();
delete dialog;
if (savegameId != -1)
_vm->loadGameState(savegameId);
}
return false;
case Common::KEYCODE_d:
if (event.kbd.flags & Common::KBD_CTRL) {
// Start the debugger
_vm->getDebugger()->attach();
_vm->getDebugger()->onFrame();
return false;
}
break;
case Common::KEYCODE_x:
if (event.kbd.flags & Common::KBD_ALT) {
_vm->quit();
return false;
}
break;
case Common::KEYCODE_0:
case Common::KEYCODE_1:
case Common::KEYCODE_2:
case Common::KEYCODE_3:
case Common::KEYCODE_4:
if (event.kbd.flags & Common::KBD_ALT) {
_vm->_commandHandler->addCommand(kCmdLevel, -1, keycode - Common::KEYCODE_0, NULL);
return false;
}
// Fallthrough intended
case Common::KEYCODE_5:
case Common::KEYCODE_6:
case Common::KEYCODE_7:
case Common::KEYCODE_8:
if (event.type == Common::EVENT_KEYDOWN && !(event.kbd.flags & Common::KBD_ALT) && keycode != Common::KEYCODE_0) {
_vm->selectPocket(keycode - Common::KEYCODE_1);
return false;
}
break;
default:
break;
}
return true;
}
开发者ID:33d,项目名称:scummvm,代码行数:76,代码来源:events.cpp
示例17: getKey
bool Keyboard::getKey(Common::Event &event) {
Common::KeyCode keycode = event.kbd.keycode;
if ((keycode == Common::KEYCODE_LALT) || (keycode == Common::KEYCODE_RALT))
_keyAlt = true;
else
_keyAlt = false;
switch (keycode) {
case Common::KEYCODE_F1:
if (event.type == Common::EVENT_KEYUP)
return false;
// Display ScummVM version and translation strings
for (int i = 0; i < 5; i++)
_vm->_commandHandler->addCommand(kCmdInf, 1, kShowScummVMVersion + i, NULL);
return false;
case Common::KEYCODE_F5:
if (_vm->canSaveGameStateCurrently()) {
const EnginePlugin *plugin = NULL;
EngineMan.findGame(_vm->_gameDescription->gameid, &plugin);
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Save game:", "Save");
dialog->setSaveMode(true);
int16 savegameId = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
Common::String savegameDescription = dialog->getResultString();
delete dialog;
if (savegameId != -1)
_vm->saveGameState(savegameId, savegameDescription);
}
return false;
case Common::KEYCODE_F7:
if (_vm->canLoadGameStateCurrently()) {
const EnginePlugin *plugin = NULL;
EngineMan.findGame(_vm->_gameDescription->gameid, &plugin);
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser("Restore game:", "Restore");
dialog->setSaveMode(false);
int16 savegameId = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
delete dialog;
if (savegameId != -1)
_vm->loadGameState(savegameId);
}
return false;
case Common::KEYCODE_d:
if (event.kbd.flags & Common::KBD_CTRL) {
// Start the debugger
_vm->getDebugger()->attach();
_vm->getDebugger()->onFrame();
return false;
}
break;
case Common::KEYCODE_x:
if (event.kbd.flags & Common::KBD_ALT) {
_vm->quit();
return false;
}
break;
case Common::KEYCODE_0:
case Common::KEYCODE_1:
case Common::KEYCODE_2:
case Common::KEYCODE_3:
case Common::KEYCODE_4:
if (event.kbd.flags & Common::KBD_ALT) {
_vm->_commandHandler->addCommand(kCmdLevel, -1, keycode - '0', NULL);
return false;
}
default:
break;
}
return true;
}
开发者ID:YakBizzarro,项目名称:scummvm,代码行数:74,代码来源:events.cpp
示例18: initMenu
void MenuSystem::initMenu(MenuID menuID) {
_items.clear();
memcpy(_vm->_screen->_frontScreen, _background->getPixels(), 640 * 400);
switch (menuID) {
case kMenuIdMain:
drawString(0, 75, 320, 1, 229, _vm->getSysString(kStrWhatCanIDoForYou));
addClickTextItem(kItemIdLoad, 0, 116, 320, 0, _vm->getSysString(kStrLoad), 253, 255);
addClickTextItem(kItemIdSave, 0, 136, 320, 0, _vm->getSysString(kStrSave), 253, 255);
addClickTextItem(kItemIdToggleText, 0, 166, 320, 0, _vm->getSysString(_vm->_cfgText ? kStrTextOn : kStrTextOff), 253, 255);
addClickTextItem(kItemIdToggleVoices, 0, 186, 320, 0, _vm->getSysString(_vm->_cfgVoices ? kStrVoicesOn : kStrVoicesOff), 253, 255);
addClickTextItem(kItemIdVolumesMenu, 0, 216, 320, 0, _vm->getSysString(kStrVolume), 253, 255);
addClickTextItem(kItemIdPlay, 0, 246, 320, 0, _vm->getSysString(kStrPlay), 253, 255);
addClickTextItem(kItemIdQuit, 0, 276, 320, 0, _vm->getSysString(kStrQuit), 253, 255);
break;
case kMenuIdLoad:
if (ConfMan.getBool("originalsaveload")) {
shadeRect(80, 92, 440, 141, 226, 225);
drawString(0, 75, 320, 1, 229, _vm->getSysString(kStrLoadGame));
addClickTextItem(kItemIdSavegameUp, 0, 156, 545, 1, "^", 253, 255);
addClickTextItem(kItemIdSavegameDown, 0, 196, 545, 1, "\\", 253, 255);
addClickTextItem(kItemIdCancel, 0, 276, 320, 0, _vm->getSysString(kStrCancel), 253, 255);
for (int i = 1; i <= 7; i++) {
Common::String saveDesc = Common::String::format("SAVEGAME %d", i);
addClickTextItem((ItemID)(kItemIdSavegame1 + i - 1), 0, 116 + 20 * (i - 1), 300, 0, saveDesc.c_str(), 231, 234);
}
loadSavegamesList();
setSavegameCaptions(true);
} else {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
int slot = dialog->runModalWithCurrentTarget();
delete dialog;
if (slot >= 0)
_vm->requestLoadgame(slot);
_running = false;
}
break;
case kMenuIdSave:
if (ConfMan.getBool("originalsaveload")) {
shadeRect(80, 92, 440, 141, 226, 225);
drawString(0, 75, 320, 1, 229, _vm->getSysString(kStrSaveGame));
addClickTextItem(kItemIdSavegameUp, 0, 156, 545, 1, "^", 253, 255);
addClickTextItem(kItemIdSavegameDown, 0, 196, 545, 1, "\\", 253, 255);
addClickTextItem(kItemIdCancel, 0, 276, 320, 0, _vm->getSysString(kStrCancel), 253, 255);
for (int i = 1; i <= 7; i++) {
Common::String saveDesc = Common::String::format("SAVEGAME %d", i);
addClickTextItem((ItemID)(kItemIdSavegame1 + i - 1), 0, 116 + 20 * (i - 1), 300, 0, saveDesc.c_str(), 231, 234);
}
int newSlotNum = loadSavegamesList() + 1;
_savegames.push_back(SavegameItem(newSlotNum, Common::String::format("GAME %04d", _savegames.size())));
setSavegameCaptions(true);
} else {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
int slot = dialog->runModalWithCurrentTarget();
Common::String desc = dialog->getResultString();
if (desc.empty()) {
// Create our own description for the saved game, the user didn't enter one
desc = dialog->createDefaultSaveDescription(slot);
}
if (slot >= 0)
_vm->requestSavegame(slot, desc);
_running = false;
}
break;
case kMenuIdVolumes:
drawString(0, 75, 320, 1, 229, _vm->getSysString(kStrAdjustVolume));
drawString(0, 131, 200, 0, 246, _vm->getSysString(kStrMaster));
drawString(0, 156, 200, 0, 244, _vm->getSysString(kStrVoices));
drawString(0, 181, 200, 0, 244, _vm->getSysString(kStrMusic));
drawString(0, 206, 200, 0, 244, _vm->getSysString(kStrSoundFx));
drawString(0, 231, 200, 0, 244, _vm->getSysString(kStrBackground));
addClickTextItem(kItemIdDone, 0, 276, 200, 0, _vm->getSysString(kStrDone), 253, 255);
addClickTextItem(kItemIdCancel, 0, 276, 440, 0, _vm->getSysString(kStrCancel), 253, 255);
addClickTextItem(kItemIdMasterDown, 0, 131 + 25 * 0, 348, 1, "[", 243, 246);
addClickTextItem(kItemIdVoicesDown, 0, 131 + 25 * 1, 348, 1, "[", 243, 246);
addClickTextItem(kItemIdMusicDown, 0, 131 + 25 * 2, 348, 1, "[", 243, 246);
addClickTextItem(kItemIdSoundFXDown, 0, 131 + 25 * 3, 348, 1, "[", 243, 246);
addClickTextItem(kItemIdBackgroundDown, 0, 131 + 25 * 4, 348, 1, "[", 243, 246);
addClickTextItem(kItemIdMasterUp, 0, 131 + 25 * 0, 372, 1, "]", 243, 246);
addClickTextItem(kItemIdVoicesUp, 0, 131 + 25 * 1, 372, 1, "]", 243, 246);
addClickTextItem(kItemIdMusicUp, 0, 131 + 25 * 2, 372, 1, "]", 243, 246);
addClickTextItem(kItemIdSoundFXUp, 0, 131 + 25 * 3, 372, 1, "]", 243, 246);
addClickTextItem(kItemIdBackgroundUp, 0, 131 + 25 * 4, 372, 1, "]", 243, 246);
drawVolumeBar(kItemIdMaster);
drawVolumeBar(kItemIdVoices);
drawVolumeBar(kItemIdMusic);
drawVolumeBar(kItemIdSoundFX);
drawVolumeBar(kItemIdBackground);
break;
default:
break;
}
for (Common::Array<Item>::iterator iter = _items.begin(); iter != _items.end(); ++iter) {
if ((*iter).enabled)
//.........这里部分代码省略.........
开发者ID:AReim1982,项目名称:scummvm,代码行数:101,代码来源:menu.cpp
注:本文中的gui::SaveLoadChooser类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论