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(); }
dString* dString::uppercaseString() const { if (!_chars) throw new ExEmptyString; dUInteger len = length(); TCHAR buff[len + 1]; getCharacters(buff); _upperCaseString(buff); return stringWithCharacters(buff, len); }
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); }
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; }
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); }
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()))); } }