Beispiel #1
0
void UserInterface::updateInventoryScroller() {
	ScreenObjects &screenObjects = _vm->_game->_screenObjects;

	if (screenObjects._inputMode != kInputBuildingSentences)
		return;

	_scrollbarActive = SCROLLBAR_NONE;

	if ((screenObjects._category == CAT_INV_SCROLLER) || (screenObjects._category != CAT_INV_SCROLLER
			&& _scrollbarOldActive == SCROLLBAR_ELEVATOR && _vm->_events->_mouseStatusCopy)) {
		if (_vm->_events->_mouseStatusCopy || _vm->_easyMouse) {
			if ((_vm->_events->_mouseClicked || (_vm->_easyMouse && !_vm->_events->_mouseStatusCopy))
					&& (screenObjects._category == CAT_INV_SCROLLER))
				_scrollbarStrokeType = (ScrollbarActive)screenObjects._spotId;

			if (screenObjects._spotId == _scrollbarStrokeType || _scrollbarOldActive == SCROLLBAR_ELEVATOR) {
				_scrollbarActive = _scrollbarStrokeType;
				uint32 currentMilli = g_system->getMillis();
				uint32 timeInc = _scrollbarQuickly ? 100 : 380;

				if (_vm->_events->_mouseStatus && (_scrollbarMilliTime + timeInc) <= currentMilli) {
					_scrollbarQuickly = _vm->_events->_strokeGoing < 1;
					_scrollbarMilliTime = currentMilli;

					// Change the scrollbar and visible inventory list
					changeScrollBar();
				}
			}
		}
	}

	if (_scrollbarActive != _scrollbarOldActive || _scrollbarElevator != _scrollbarOldElevator)
		scrollbarChanged();

	_scrollbarOldActive = _scrollbarActive;
	_scrollbarOldElevator = _scrollbarElevator;
}
Beispiel #2
0
void UserInterface::updateInventoryScroller() {
	ScreenObjects &screenObjects = _vm->_game->_screenObjects;
	Common::Array<int> &inventoryList = _vm->_game->_objects._inventoryList;

	if (screenObjects._inputMode != kInputBuildingSentences)
		return;

	_scrollbarActive = SCROLLBAR_NONE;

	if ((screenObjects._category == CAT_INV_SCROLLER) || (screenObjects._category != CAT_INV_SCROLLER
			&& _scrollbarOldActive == SCROLLBAR_ELEVATOR && _vm->_events->_mouseStatusCopy)) {
		if (_vm->_events->_mouseStatusCopy || _vm->_easyMouse) {
			if ((_vm->_events->_mouseClicked || (_vm->_easyMouse && !_vm->_events->_mouseStatusCopy))
					&& (screenObjects._category == CAT_INV_SCROLLER))
				_scrollbarStrokeType = (ScrollbarActive)screenObjects._spotId;

			if (screenObjects._spotId == _scrollbarStrokeType || _scrollbarOldActive == SCROLLBAR_ELEVATOR) {
				_scrollbarActive = _scrollbarStrokeType;
				uint32 currentMilli = g_system->getMillis();
				uint32 timeInc = _scrollbarQuickly ? 100 : 380;

				if (_vm->_events->_mouseStatus && (_scrollbarMilliTime + timeInc) <= currentMilli) {
					_scrollbarQuickly = _vm->_events->_vD2 < 1;
					_scrollbarMilliTime = currentMilli;

					switch (_scrollbarStrokeType) {
					case SCROLLBAR_UP:
						// Scroll up
						if (_inventoryTopIndex > 0 && inventoryList.size() > 0) {
							--_inventoryTopIndex;
							_inventoryChanged = true;
						}
						break;

					case SCROLLBAR_DOWN:
						// Scroll down
						if (_inventoryTopIndex < ((int)inventoryList.size() - 1) && inventoryList.size() > 1) {
							++_inventoryTopIndex;
							_inventoryChanged = true;
						}
						break;

					case SCROLLBAR_ELEVATOR: {
						// Inventory slider
						int newIndex = CLIP((int)_vm->_events->currentPos().y - 170, 0, 17)
							* inventoryList.size() / 10;
						if (newIndex >= (int)inventoryList.size())
							newIndex = inventoryList.size() - 1;

						if (inventoryList.size() > 0) {
							_inventoryChanged = newIndex != _inventoryTopIndex;
							_inventoryTopIndex = newIndex;
						}
						break;
					}

					default:
						break;
					}

					if (_inventoryChanged) {
						int dummy;
						updateSelection(CAT_INV_LIST, 0, &dummy);
					}
				}
			}
		}
	}

	if (_scrollbarActive != _scrollbarOldActive || _scrollbarElevator != _scrollbarOldElevator)
		scrollbarChanged();

	_scrollbarOldActive = _scrollbarActive;
	_scrollbarOldElevator = _scrollbarElevator;
}