it works reliablly now

This commit is contained in:
potzplitz 2024-03-28 21:17:31 +01:00
parent 4c041a8969
commit 77c659d8e5
2 changed files with 58 additions and 64 deletions

View file

@ -6,78 +6,72 @@ import java.io.IOException;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class ReadAttemptsFromXML { public class ReadAttemptsFromXML {
public String getAttempts(String level) { public String getAttempts(String levelID) {
String atts = "0"; String atts = "0";
try { try {
// Pfad zur XML-Datei // Pfad zur XML-Datei
String filePath = "C:\\ExtremeDemonList\\userdata\\CCGameManager.dat.xml"; File xmlFile = new File("C:\\ExtremeDemonList\\userdata\\CCGameManager.dat.xml");
// Erstellen des Dokument-Builders
// XML-Datei einlesen und als DOM-Dokument parsen
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
// Parsen der XML-Datei, um ein Document-Objekt zu erhalten
Document doc = dBuilder.parse(xmlFile); Document doc = dBuilder.parse(xmlFile);
// Normalisieren des Documents
doc.getDocumentElement().normalize(); doc.getDocumentElement().normalize();
// Nach dem Eintrag für "Theory of Everything" suchen // Die NodeList der <k> Elemente erhalten
NodeList levelNodes = doc.getElementsByTagName("d"); NodeList kList = doc.getElementsByTagName("k");
int index = 1;
for (int i = 0; i < levelNodes.getLength(); i++) {
Node levelNode = levelNodes.item(i); // Durchlaufen der NodeList
if (levelNode.getNodeType() == Node.ELEMENT_NODE) { for (int i = 0; i < kList.getLength(); i++) {
Element levelElement = (Element) levelNode; // Aktuelles Node
NodeList nameNodes = levelElement.getElementsByTagName("s"); Element kElement = (Element) kList.item(i);
for (int j = 0; j < nameNodes.getLength(); j++) {
Node nameNode = nameNodes.item(j); // Prüfen, ob der Wert des <k> Elements eine Level-ID ist
if (nameNode.getNodeType() == Node.ELEMENT_NODE) { String currentLevelID = kElement.getTextContent();
Element nameElement = (Element) nameNode; if (currentLevelID.equals(levelID)) {
String name = nameElement.getTextContent(); // Das übergeordnete <d> Element finden
if (name.equalsIgnoreCase(level)) { Element dElement = (Element) kElement.getNextSibling();
// Wenn der Name übereinstimmt, die Anzahl der Versuche extrahieren
NodeList keyNodes = levelElement.getElementsByTagName("k"); // Überprüfen, ob das nächste Element ein <d> Element ist
for (int k = 0; k < keyNodes.getLength(); k++) { while (dElement != null && !dElement.getNodeName().equals("d")) {
Node keyNode = keyNodes.item(k); dElement = (Element) dElement.getNextSibling();
if (keyNode.getNodeType() == Node.ELEMENT_NODE) {
Element keyElement = (Element) keyNode;
String key = keyElement.getTextContent();
if (key.equals("k18") && index == 2) {
// Wert des Schlüssels "k18" (Versuche) ausgeben
NodeList valueNodes = levelElement.getElementsByTagName("i");
Node valueNode = valueNodes.item(k);
atts = valueNode.getTextContent(); // Sobald die Anzahl der Versuche gefunden wurde, die Schleife beenden
} }
if(key.equals("GS_7")) { // Überprüfen, ob das <d> Element gefunden wurde
NodeList valueNodes = levelElement.getElementsByTagName("i"); if (dElement != null) {
Node valueNode = valueNodes.item(k); // Den <k> Key "k1" im <d> Element finden
System.out.println(valueNode.getTextContent() + " = practice percent"); NodeList dChildren = dElement.getChildNodes();
} for (int j = 0; j < dChildren.getLength(); j++) {
if (dChildren.item(j).getNodeName().equals("k")) {
} Element kChild = (Element) dChildren.item(j);
} if (kChild.getTextContent().equals("k18")) {
index++; // Den Wert der Attempts erhalten
atts = dChildren.item(j + 1).getTextContent();
System.out.println("Attempts des Levels " + levelID + ": " + atts);
return atts;
}
} }
} }
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return atts; return atts;
} }
} }

View file

@ -43,7 +43,7 @@ public class SafeFileManager {
for(int i = 0; i < fetch.allLevels().size(); i++) { for(int i = 0; i < fetch.allLevels().size(); i++) {
attempts = read.getAttempts(database.getLevelname().get(i)); attempts = read.getAttempts(database.getLevelID().get(i));
prog.update(database.getLevelname().get(i), Integer.parseInt(attempts), 1, i); prog.update(database.getLevelname().get(i), Integer.parseInt(attempts), 1, i);
database.modifyData(database.getLevelname().get(i), Boolean.parseBoolean(database.getCompleted().get(i)), Integer.parseInt(attempts)); database.modifyData(database.getLevelname().get(i), Boolean.parseBoolean(database.getCompleted().get(i)), Integer.parseInt(attempts));