Beispiel #1
0
bool CPetLoadSave::KeyCharMsg(int key) {
	switch (key) {
	case Common::KEYCODE_TAB:
	case Common::KEYCODE_DOWN:
	case Common::KEYCODE_KP2:
		if (_savegameSlotNum != -1) {
			highlightSlot((_savegameSlotNum + 1) % 5);
			getPetControl()->makeDirty();
		}
		return true;

	case Common::KEYCODE_UP:
	case Common::KEYCODE_KP8:
		if (_savegameSlotNum != -1) {
			int slotNum = --_savegameSlotNum;
			highlightSlot((slotNum == -1) ? SAVEGAME_SLOTS_COUNT - 1 : slotNum);
			getPetControl()->makeDirty();
		}
		return true;

	case Common::KEYCODE_RETURN:
	case Common::KEYCODE_KP_ENTER:
		execute();
		return true;

	default:
		return false;
	}
}
Beispiel #2
0
void CPetLoadSave::resetSlots() {
	for (int idx = 0; idx < SAVEGAME_SLOTS_COUNT; ++idx) {
		_slotNames[idx].setText(EMPTY);
		_slotInUse[idx] = false;

		// Try and open up the savegame for access
		Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(
			g_vm->generateSaveName(idx));

		if (in) {
			// Read in the savegame header data
			CompressedFile file;
			file.open(in);

			TitanicSavegameHeader header;
			if (CProjectItem::readSavegameHeader(&file, header)) {
				_slotInUse[idx] = true;
				_slotNames[idx].setText(header._saveName);
			}

			if (header._thumbnail) {
				header._thumbnail->free();
				delete header._thumbnail;
			}

			file.close();
		}
	}

	highlightSlot(_savegameSlotNum);
}
Beispiel #3
0
bool CPetLoadSave::isSlotHighlighted(int index, const Point &pt) {
	Rect r = getSlotBounds(index);
	if (r.contains(pt)) {
		highlightSlot(index);
		return true;
	} else {
		return false;
	}
}
Beispiel #4
0
bool CPetLoadSave::checkSlotsHighlight(const Point &pt) {
	for (int idx = 0; idx < SAVEGAME_SLOTS_COUNT; ++idx) {
		if (isSlotHighlighted(idx, pt)) {
			highlightSlot(idx);
			return true;
		}
	}

	return false;
}
Beispiel #5
0
void CPetSave::execute() {
	CPetControl *pet = getPetControl();
	if (_savegameSlotNum >= 0) {
		highlightSlot(-1);
		CProjectItem *project = pet ? pet->getRoot() : nullptr;

		if (project) {
			project->saveGame(_savegameSlotNum, _slotNames[_savegameSlotNum].getText());
			pet->displayMessage(BLANK);
		}
	} else if (pet) {
		pet->displayMessage(SELECT_GAME_TO_SAVE);
	}
}