Exemple #1
0
void Game::runCampaign() {
	std::vector<Common::UString> characters;
	getCharacters(characters, true);

	if (characters.empty())
		throw Common::Exception("No characters in the localvault directory");

	_campaign->load("neverwinter nights 2 campaign");
	_campaign->usePC(*characters.begin(), true);

	if (EventMan.quitRequested() || !_campaign->isLoaded()) {
		_campaign->clear();
		return;
	}

	_campaign->enter();
	EventMan.enableKeyRepeat(true);

	while (!EventMan.quitRequested() && _campaign->isRunning()) {
		Events::Event event;
		while (EventMan.pollEvent(event))
			_campaign->addEvent(event);

		_campaign->processEventQueue();
		EventMan.delay(10);
	}

	EventMan.enableKeyRepeat(false);
	_campaign->leave();

	_campaign->clear();
}
Exemple #2
0
dString*
dString::uppercaseString() const {
	if (!_chars) throw new ExEmptyString;
	
	dUInteger len = length();
	TCHAR buff[len + 1];
	getCharacters(buff);
	_upperCaseString(buff);
	return stringWithCharacters(buff, len);
}
Exemple #3
0
void Differ::computeTextHighlights(QPainterPath *highlighted1,
        QPainterPath *highlighted2, const PdfPage &page1,
        const PdfPage &page2, const int DPI)
{
    const bool ComparingWords = comparisonMode ==
                                CompareWords;
    QRectF rect1;
    QRectF rect2;
    QRectF rect;
    if (margins)
        rect = pointRectForMargins(page1->pageSize());
    const TextBoxList list1 = getTextBoxes(page1, rect);
    const TextBoxList list2 = getTextBoxes(page2, rect);
    TextItems items1 = ComparingWords ? getWords(list1)
                                      : getCharacters(list1);
    TextItems items2 = ComparingWords ? getWords(list2)
                                      : getCharacters(list2);
    const int ToleranceY = 10;
    if (debug >= DebugShowTexts) {
        const bool Yx = debug == DebugShowTextsAndYX;
        items1.debug(1, ToleranceY, ComparingWords, Yx);
        items2.debug(2, ToleranceY, ComparingWords, Yx);
    }

    SequenceMatcher matcher(items1.texts(), items2.texts());
    RangesPair rangesPair = computeRanges(&matcher);
    rangesPair = invertRanges(rangesPair.first, items1.count(),
                              rangesPair.second, items2.count());

    foreach (int index, rangesPair.first)
        addHighlighting(&rect1, highlighted1, items1.at(index).rect, DPI);
    if (!rect1.isNull() && !rangesPair.first.isEmpty())
        highlighted1->addRect(rect1);
    foreach (int index, rangesPair.second)
        addHighlighting(&rect2, highlighted2, items2.at(index).rect, DPI);
    if (!rect2.isNull() && !rangesPair.second.isEmpty())
        highlighted2->addRect(rect2);
}
Exemple #4
0
dComparisonResult
dString::compare(const dString* inStr, dEStringCompareOptions options, dRange range) const {
	if (!inStr) return kCompareLessThan;
	if (dZeroRange.location == range.location && dZeroRange.length == range.length)
		range = dMakeRange(0, length());
	
	dUInteger inStrLen = inStr->length();
	TCHAR selfBuff[range.length + 1];
	TCHAR inStrBuff[inStrLen + 1];
	
	getCharacters(selfBuff, range);
	inStr->getCharacters(inStrBuff);
	
	if (kECaseInsensitiveSearch & options) {
		_upperCaseString(selfBuff);
		_upperCaseString(inStrBuff);
	}
	
	dInteger numResult;
	dUInteger i, j, il, jl;
	if (kENumericSearch & options) {
		for (i = 0, j = 0; i < range.length && j < inStrLen; ++i, ++j) {
			if (_isNumChar(selfBuff[i]) && _isNumChar(inStrBuff[j])) {
				il = range.length;
				jl = inStrLen; 
				numResult = _ctoi(&selfBuff[i], &il) - _ctoi(&inStrBuff[j], &jl);
				if (numResult < 0 ) return kCompareGreaterThan;
				else if (numResult > 0) return kCompareLessThan;
				i += il;
				j += jl;
			}
			
			if (selfBuff[i] < inStrBuff[j]) return kCompareGreaterThan;
			else if (selfBuff[i] > inStrBuff[j]) return kCompareLessThan;
		}
	} else {
		for (i = 0; i < range.length && i < inStrLen; ++i) {
			if (selfBuff[i] < inStrBuff[i]) return kCompareGreaterThan;
			else if (selfBuff[i] > inStrBuff[i]) return kCompareLessThan;
		}
	}
	
	if (range.length == inStrLen)
		return kCompareEqualTo;
	
	return i < inStrLen ? kCompareGreaterThan : kCompareLessThan;
}
Exemple #5
0
dString*
dString::stringByAppendingPathExtension(const dString* extension) const {
	CL_THROW_IF_NIL(extension);
	
	dUInteger len = length();
	if (len && characterAtIndex(len - 1) == SLASH)
		--len;
	
	dUInteger extLen = extension->length();
	dUInteger totalLen = len + extLen + 2;
	TCHAR characters[totalLen];
	
	getCharacters(characters);
	characters[len] = _T('.');
	extension->getCharacters(characters + len + 1);
	
	return stringWithCharacters(characters, totalLen);
}
Exemple #6
0
dString*
dString::stringByAppendingPathComponent(const dString* component) const {
	dUInteger len = length();
	
	if (0 == len) {
		if (component) return stringWithString(component);
		else return string();
	}
	
	dUInteger comLen = component->length();
	dUInteger totalLen = len + 1 + comLen;
	TCHAR characters[totalLen];
	
	getCharacters(characters);
	dInteger p = len;
	while (--p >= 0 && IS_SLASH(characters[p]));
	characters[++p] = SLASH;
	dUInteger q = 0;
	while (q < comLen && IS_SLASH(component->characterAtIndex(q))) ++q;
	component->getCharacters(characters + p + 1, dMakeRange(q, comLen - q));
	
	return stringWithCharacters(characters, p + 1 - q + comLen);
}
void Gallows::displayInfo()
{
    // display relevant info
    std::cout << "Your word is from the subject " << getSubject() << " and has " << getCharacters() << " characters. You have " << lives << " lives remaining." << std::endl;
}
void CharactersFrame::on_plainTextEdit_textChanged()
{
    if (font_config) {
        font_config->setText(sortChars(removeDuplicates(getCharacters())));
    }
}