Applying patches by Michi to Enigma

This commit is contained in:
pelya
2010-10-15 14:23:30 +03:00
parent 679f64d3a0
commit ebaff58990
15 changed files with 141 additions and 84 deletions

View File

@@ -305,11 +305,11 @@ namespace enigma { namespace lev {
}
if (doc != NULL && !app.domParserErrorHandler->getSawErrors()) {
infoElem = dynamic_cast<DOMElement *>(doc->getElementsByTagName(
infoElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("info").x_str())->item(0));
updateElem = dynamic_cast<DOMElement *>(doc->getElementsByTagName(
updateElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("update").x_str())->item(0));
levelsElem = dynamic_cast<DOMElement *>(doc->getElementsByTagName(
levelsElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("levels").x_str())->item(0));
}
@@ -396,7 +396,7 @@ namespace enigma { namespace lev {
knownAttributes.insert("unit");
knownAttributes.insert("target");
for (int i = 0, l = levelList->getLength(); i < l; i++) {
DOMElement *levelElem = dynamic_cast<DOMElement *>(levelList->item(i));
DOMElement *levelElem = reinterpret_cast<DOMElement *>(levelList->item(i));
std::string path = XMLtoUtf8(levelElem->getAttribute(
Utf8ToXML("_xpath").x_str())).c_str();
std::string id = XMLtoUtf8(levelElem->getAttribute(
@@ -436,7 +436,7 @@ namespace enigma { namespace lev {
Utf8ToXML("target").x_str())).c_str();
DOMNamedNodeMap * attrMap = levelElem->getAttributes();
for (int j = 0, k = attrMap->getLength(); j < k; j++) {
DOMAttr * levelAttr = dynamic_cast<DOMAttr *>(attrMap->item(j));
DOMAttr * levelAttr = reinterpret_cast<DOMAttr *>(attrMap->item(j));
std::string attrName = XMLtoUtf8(levelAttr->getName()).c_str();
if (knownAttributes.find(attrName) == knownAttributes.end()) {
Log << "PersistentIndex Load unknown Attribut: " << attrName << "\n";
@@ -660,9 +660,9 @@ namespace enigma { namespace lev {
app.domParserSchemaResolver->addSchemaId("index.xsd","index.xsd");
doc = app.domParser->parseURI(indexTemplatePath.c_str());
if (doc != NULL && !app.domParserErrorHandler->getSawErrors()) {
infoElem = dynamic_cast<DOMElement *>(doc->getElementsByTagName(
infoElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("info").x_str())->item(0));
levelsElem = dynamic_cast<DOMElement *>(doc->getElementsByTagName(
levelsElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("levels").x_str())->item(0));
}
if(app.domParserErrorHandler->getSawErrors()) {
@@ -777,7 +777,7 @@ namespace enigma { namespace lev {
DOMNodeList *levList = levelsElem->getElementsByTagName(
Utf8ToXML("level").x_str());
for (int i = 0, l = levList-> getLength(); i < l; i++) {
DOMElement *levElem = dynamic_cast<DOMElement *>(levList->item(i));
DOMElement *levElem = reinterpret_cast<DOMElement *>(levList->item(i));
levElem->setAttribute( Utf8ToXML("_seq").x_str(),
Utf8ToXML(ecl::strf("%d",i+1)).x_str());
}

View File

@@ -564,7 +564,7 @@ namespace enigma { namespace lev {
#endif
}
if (doc != NULL && !app.domParserErrorHandler->getSawErrors()) {
infoElem = dynamic_cast<DOMElement *>(doc->getElementsByTagNameNS(
infoElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagNameNS(
levelNS, Utf8ToXML("info").x_str())->item(0));
stringList = doc->getElementsByTagNameNS(levelNS,
Utf8ToXML("string").x_str());
@@ -631,7 +631,7 @@ namespace enigma { namespace lev {
DOMNodeList *depList = infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("dependency").x_str());
for (int i = 0, l = depList->getLength(); i < l; i++) {
DOMElement *depElem = dynamic_cast<DOMElement *>(depList->item(i));
DOMElement *depElem = reinterpret_cast<DOMElement *>(depList->item(i));
std::string depPath;
std::string depId;
int depRelease;
@@ -763,7 +763,7 @@ namespace enigma { namespace lev {
lua_State *L = lua::LevelState();
DOMNodeList * luamainList = doc->getElementsByTagNameNS(levelNS, Utf8ToXML("luamain").x_str());
if (luamainList->getLength() == 1) {
DOMElement *luamain = dynamic_cast<DOMElement *>(luamainList->item(0));
DOMElement *luamain = reinterpret_cast<DOMElement *>(luamainList->item(0));
// add debugging info to lua code
std::string luaCode = "--@" + absLevelPath + "\n" +
XMLtoUtf8(luamain->getTextContent()).c_str();
@@ -793,7 +793,7 @@ namespace enigma { namespace lev {
if (key == "title" || key == "subtitle") {
// get the english originals from the identity attributes
DOMElement *identityElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("identity").x_str())->item(0));
english = XMLtoUtf8(identityElem->getAttributeNS(levelNS,
Utf8ToXML(&key).x_str())).c_str();
@@ -805,7 +805,7 @@ namespace enigma { namespace lev {
bool keyFound = false;
bool protectedString = true;
for (int i = 0, l = stringList-> getLength(); i < l && !translFound; i++) {
DOMElement *stringElem = dynamic_cast<DOMElement *>(stringList->item(i));
DOMElement *stringElem = reinterpret_cast<DOMElement *>(stringList->item(i));
if (key == XMLtoUtf8(stringElem->getAttributeNS(levelNS,
Utf8ToXML("key").x_str())).c_str()) {
keyFound = true;
@@ -814,7 +814,7 @@ namespace enigma { namespace lev {
if (protectedString) {
// resolve english text from string->english subelement
DOMElement *englishElem =
dynamic_cast<DOMElement *>(stringElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(stringElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("english").x_str())->item(0));
std::string tmp = XMLtoUtf8(englishElem->getTextContent()).c_str();
if (!tmp.empty()) {
@@ -832,7 +832,7 @@ namespace enigma { namespace lev {
DOMNodeList *translList = stringElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("translation").x_str());
for (int i = 0, l = translList-> getLength(); i < l && !translFound; i++) {
DOMElement *translElem = dynamic_cast<DOMElement *>(translList->item(i));
DOMElement *translElem = reinterpret_cast<DOMElement *>(translList->item(i));
if (lang == XMLtoUtf8(translElem->getAttributeNS(levelNS,
Utf8ToXML("lang").x_str())).c_str()) {
translation = XMLtoUtf8(translElem->getTextContent()).c_str();
@@ -873,7 +873,7 @@ namespace enigma { namespace lev {
bool Proxy::updateId() {
if (doc != NULL) {
DOMElement *identityElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("identity").x_str())->item(0));
std::string docId = XMLtoUtf8(identityElem->getAttributeNS(levelNS,
Utf8ToXML("id").x_str())).c_str();
@@ -894,7 +894,7 @@ namespace enigma { namespace lev {
int Proxy::getScoreVersion() {
if (doc != NULL) {
DOMElement *versionElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("version").x_str())->item(0));
scoreVersion = XMLString::parseInt(versionElem->getAttributeNS(levelNS,
Utf8ToXML("score").x_str()));
@@ -905,7 +905,7 @@ namespace enigma { namespace lev {
bool Proxy::updateReleaseVersion() {
if (doc != NULL) {
DOMElement *versionElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("version").x_str())->item(0));
int docRelease = XMLString::parseInt(versionElem->getAttributeNS(levelNS,
Utf8ToXML("release").x_str()));
@@ -927,7 +927,7 @@ namespace enigma { namespace lev {
int Proxy::getRevisionNumber() {
if (doc != NULL) {
DOMElement *versionElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("version").x_str())->item(0));
const XMLCh * revision = versionElem->getAttributeNS(levelNS,
Utf8ToXML("revision").x_str());
@@ -959,7 +959,7 @@ namespace enigma { namespace lev {
levelStatusType Proxy::getLevelStatus() {
if (doc != NULL) {
DOMElement *versionElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("version").x_str())->item(0));
std::string status = XMLtoUtf8(versionElem->getAttributeNS(levelNS,
Utf8ToXML("status").x_str())).c_str();
@@ -978,7 +978,7 @@ namespace enigma { namespace lev {
std::string Proxy::getAuthor() {
if (doc != NULL) {
DOMElement *authorElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("author").x_str())->item(0));
author = XMLtoUtf8(authorElem->getAttributeNS(levelNS,
Utf8ToXML("name").x_str())).c_str();
@@ -989,7 +989,7 @@ namespace enigma { namespace lev {
std::string Proxy::getTitle() {
if (doc != NULL) {
DOMElement *identityElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("identity").x_str())->item(0));
title = XMLtoUtf8(identityElem->getAttributeNS(levelNS,
Utf8ToXML("title").x_str())).c_str();
@@ -1000,7 +1000,7 @@ namespace enigma { namespace lev {
bool Proxy::hasEasymode() {
if (doc != NULL) {
DOMElement *modesElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("modes").x_str())->item(0));
hasEasymodeFlag = boolValue(modesElem->getAttributeNS(levelNS,
Utf8ToXML("easy").x_str()));
@@ -1012,7 +1012,7 @@ namespace enigma { namespace lev {
std::string contact;
if (doc != NULL) {
DOMElement *authorElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("author").x_str())->item(0));
contact = XMLtoUtf8(authorElem->getAttributeNS(levelNS,
Utf8ToXML("email").x_str())).c_str();
@@ -1024,7 +1024,7 @@ namespace enigma { namespace lev {
std::string homepage;
if (doc != NULL) {
DOMElement *authorElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("author").x_str())->item(0));
homepage = XMLtoUtf8(authorElem->getAttributeNS(levelNS,
Utf8ToXML("homepage").x_str())).c_str();
@@ -1036,7 +1036,7 @@ namespace enigma { namespace lev {
double value = 0.92;
if (doc != NULL) {
DOMElement *compatibilityElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("compatibility").x_str())->item(0));
XMLDouble * result = new XMLDouble(compatibilityElem->getAttributeNS(levelNS,
Utf8ToXML("enigma").x_str()));
@@ -1049,7 +1049,7 @@ namespace enigma { namespace lev {
GameType Proxy::getEngineCompatibility() {
if (doc != NULL) {
DOMElement *authorElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("compatibility").x_str())->item(0));
engineCompatibility = GetGameType(XMLtoUtf8(authorElem->getAttributeNS(levelNS,
Utf8ToXML("engine").x_str())).c_str());
@@ -1062,7 +1062,7 @@ namespace enigma { namespace lev {
controlType control = force;
if (doc != NULL) {
DOMElement *authorElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("modes").x_str())->item(0));
std::string controlString = XMLtoUtf8(authorElem->getAttributeNS(levelNS,
Utf8ToXML("control").x_str())).c_str();
@@ -1079,7 +1079,7 @@ namespace enigma { namespace lev {
scoreUnitType Proxy::getScoreUnit() {
if (doc != NULL) {
DOMElement *modesElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("modes").x_str())->item(0));
std::string txt = XMLtoUtf8(modesElem->getAttributeNS(levelNS,
Utf8ToXML("scoreunit").x_str())).c_str();
@@ -1096,7 +1096,7 @@ namespace enigma { namespace lev {
std::string title = "time";
if (doc != NULL) {
DOMElement *modesElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("modes").x_str())->item(0));
title = XMLtoUtf8(modesElem->getAttributeNS(levelNS,
Utf8ToXML("scoretarget").x_str())).c_str();
@@ -1109,7 +1109,7 @@ namespace enigma { namespace lev {
std::string attribute = infoUsage ? "showinfo" : "showstart";
if (doc != NULL) {
DOMElement *creditsElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("credits").x_str())->item(0));
if (creditsElem != NULL) // element is optional
if (boolValue(creditsElem->getAttributeNS(levelNS,
@@ -1124,7 +1124,7 @@ namespace enigma { namespace lev {
std::string attribute = infoUsage ? "showinfo" : "showstart";
if (doc != NULL) {
DOMElement *dedicationElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("dedication").x_str())->item(0));
if (dedicationElem != NULL) // element is optional
if (boolValue(dedicationElem->getAttributeNS(levelNS,
@@ -1137,7 +1137,7 @@ namespace enigma { namespace lev {
int score = -1;
if (doc != NULL) {
DOMElement *versionElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("score").x_str())->item(0));
score = scoreText2Int(XMLtoUtf8(versionElem->getAttributeNS(levelNS,
Utf8ToXML("easy").x_str())).c_str());
@@ -1149,7 +1149,7 @@ namespace enigma { namespace lev {
int score = -1;
if (doc != NULL) {
DOMElement *versionElem =
dynamic_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
reinterpret_cast<DOMElement *>(infoElem->getElementsByTagNameNS(
levelNS, Utf8ToXML("score").x_str())->item(0));
score = scoreText2Int(XMLtoUtf8(versionElem->getAttributeNS(levelNS,
Utf8ToXML("difficult").x_str())).c_str());

View File

@@ -134,7 +134,7 @@ namespace enigma { namespace lev {
DOMDocument *doc = app.domParser->parseURI(path.c_str());
if (doc != NULL && !app.domParserErrorHandler->getSawErrors()) {
DOMElement *updateElem =
dynamic_cast<DOMElement *>(doc->getElementsByTagName(
reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("update").x_str())->item(0));
std::time_t newVersion = timeValue(updateElem->getAttribute(Utf8ToXML("date").x_str()));
bool isUpdate = (std::difftime(newVersion, ratingVersion) > 0) ? true : false;
@@ -148,7 +148,7 @@ namespace enigma { namespace lev {
DOMNodeList *levelList = doc->getElementsByTagName(
Utf8ToXML("level").x_str());
for (int i = 0, l = levelList-> getLength(); i < l; i++) {
DOMElement *levelElem = dynamic_cast<DOMElement *>(levelList->item(i));
DOMElement *levelElem = reinterpret_cast<DOMElement *>(levelList->item(i));
const XMLCh * attr = levelElem->getAttribute(Utf8ToXML("id").x_str());
std::string id = XMLtoUtf8(attr).c_str();
attr = levelElem->getAttribute(Utf8ToXML("sv").x_str());
@@ -335,13 +335,13 @@ namespace enigma { namespace lev {
app.domParserSchemaResolver->addSchemaId("ratings.xsd","ratings.xsd");
saveDoc = app.domParser->parseURI(ratTemplatePath.c_str());
if (saveDoc != NULL && !app.domParserErrorHandler->getSawErrors()) {
DOMElement * updateElem = dynamic_cast<DOMElement *>(saveDoc->getElementsByTagName(
DOMElement * updateElem = reinterpret_cast<DOMElement *>(saveDoc->getElementsByTagName(
Utf8ToXML("update").x_str())->item(0));
updateElem->setAttribute(Utf8ToXML("date").x_str(), Utf8ToXML(ratingVersionString.c_str()).x_str());
updateElem->setAttribute(Utf8ToXML("urlFull").x_str(), Utf8ToXML(urlFullUpdate.c_str()).x_str());
updateElem->setAttribute(Utf8ToXML("urlIncremental").x_str(), Utf8ToXML(urlIncrementalUpdate.c_str()).x_str());
updateElem->setAttribute(Utf8ToXML("delay").x_str(), Utf8ToXML(ecl::strf("%d",updateMinDelay).c_str()).x_str());
levelsElem = dynamic_cast<DOMElement *>(saveDoc->getElementsByTagName(
levelsElem = reinterpret_cast<DOMElement *>(saveDoc->getElementsByTagName(
Utf8ToXML("levels").x_str())->item(0));
std::for_each(cache.begin(), cache.end(), saveLevelRating);
std::string writePath = app.userPath + "/" + RATINGSFILENAME;

View File

@@ -81,7 +81,7 @@ namespace {
#endif
if (node->getNodeType () == DOMNode::ELEMENT_NODE &&
std::string(XMLtoUtf8(node->getNodeName()).c_str()) == "level") {
const DOMElement *e = dynamic_cast<const DOMElement *>(node);
const DOMElement *e = reinterpret_cast<const DOMElement *>(node);
std::string id = XMLtoUtf8(e->getAttribute(Utf8ToXML("id").x_str())).c_str();
if (id.find("Import ") == 0) {
// reject scores for levels imported from dat files
@@ -182,9 +182,9 @@ namespace enigma { namespace lev {
}
if (doc != NULL && !app.domParserErrorHandler->getSawErrors()) {
propertiesElem = dynamic_cast<DOMElement *>(doc->getElementsByTagName(
propertiesElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("properties").x_str())->item(0));
levelsElem = dynamic_cast<DOMElement *>(doc->getElementsByTagName(
levelsElem = reinterpret_cast<DOMElement *>(doc->getElementsByTagName(
Utf8ToXML("levels").x_str())->item(0));
levelList = levelsElem->getElementsByTagName(Utf8ToXML("level").x_str());
@@ -192,13 +192,13 @@ namespace enigma { namespace lev {
if (hasValidStateUserId && userId == stateUserId) {
hasValidUserId = true;
for (int i = 0, l = levelList->getLength(); i < l; i++) {
DOMElement * levelElem = dynamic_cast<DOMElement *>(levelList->item(i));
DOMElement * levelElem = reinterpret_cast<DOMElement *>(levelList->item(i));
std::string levelId = XMLtoUtf8(levelElem->getAttribute(Utf8ToXML("id").x_str())).c_str();
std::string scoreVersion = XMLtoUtf8(levelElem->getAttribute(Utf8ToXML("version").x_str())).c_str();
DOMNamedNodeMap * attrXMap = levelElem->getAttributes();
std::map<std::string, std::string> attrMap;
for (int j = 0, k = attrXMap->getLength(); j < k; j++) {
DOMAttr * levelAttr = dynamic_cast<DOMAttr *>(attrXMap->item(j));
DOMAttr * levelAttr = reinterpret_cast<DOMAttr *>(attrXMap->item(j));
std::string attrName = XMLtoUtf8(levelAttr->getName()).c_str();
if (attrName != "sec" && levelAttr->getSpecified())
attrMap[attrName] = XMLtoUtf8(levelAttr->getValue()).c_str();
@@ -383,11 +383,11 @@ namespace enigma { namespace lev {
}
for (int i = 0, l = levelList->getLength(); i < l; i++) {
DOMElement * levelElem = dynamic_cast<DOMElement *>(levelList->item(i));
DOMElement * levelElem = reinterpret_cast<DOMElement *>(levelList->item(i));
DOMNamedNodeMap * attrXMap = levelElem->getAttributes();
std::map<std::string, std::string> attrMap;
for (int j = 0, k = attrXMap->getLength(); j < k; j++) {
DOMAttr * levelAttr = dynamic_cast<DOMAttr *>(attrXMap->item(j));
DOMAttr * levelAttr = reinterpret_cast<DOMAttr *>(attrXMap->item(j));
std::string attrName = XMLtoUtf8(levelAttr->getName()).c_str();
if (attrName != "sec" && levelAttr->getSpecified())
attrMap[attrName] = XMLtoUtf8(levelAttr->getValue()).c_str();
@@ -1007,7 +1007,7 @@ namespace enigma { namespace lev {
std::string ScoreManager::upgradeSum() {
std::string scores;
for (int i = 0, l = levelList->getLength(); i < l; i++) {
DOMElement * level = dynamic_cast<DOMElement *>(levelList->item(i));
DOMElement * level = reinterpret_cast<DOMElement *>(levelList->item(i));
const XMLCh *attr = level->getAttribute(Utf8ToXML("diff1").x_str());
int score = (XMLString::stringLen(attr) > 0) ? XMLString::parseInt(attr) : -1;
if (score >= 0)