示例#1
0
void CTrueTalkManager::triggerNPC(CTrueTalkNPC *npc) {
	CTrueTalkSelfQueueAnimSetMsg queueSetMsg;
	if (queueSetMsg.execute(npc)) {
		if (_speechDuration > 300) {
			CTrueTalkQueueUpAnimSetMsg upMsg(_speechDuration);
			upMsg.execute(npc);
		}
	} else {
		CTrueTalkGetAnimSetMsg getAnimMsg;
		while (_speechDuration > 300) {
			getAnimMsg.execute(npc);
			if (!getAnimMsg._endFrame)
				break;

			npc->playMovie(getAnimMsg._startFrame, getAnimMsg._endFrame, 0);
			getAnimMsg._endFrame = 0;

			uint numFrames = getAnimMsg._endFrame - getAnimMsg._startFrame;
			int diff = (numFrames * 1000) / 15 - 500;
			_speechDuration += diff;

			getAnimMsg._index++;
		}
	}
}
示例#2
0
void CInputHandler::decLockCount() {
	if (--_lockCount == 0 && _inputTranslator) {
		if (_dragging && !_inputTranslator->isMousePressed()) {
			CMouseButtonUpMsg upMsg(_mousePos, MK_LBUTTON);
			handleMessage(upMsg);
		}

		_buttonDown = _inputTranslator->isMousePressed();
		_singleton = true;
	}
}