예제 #1
0
파일: GeoScan.cs 프로젝트: Grollicus/iwdb
 public override void Matched(MatchCollection matches, uint posterID, uint victimID, DateTime now, MySqlConnection con, SingleNewscanRequestHandler handler, ParserResponse resp)
 {
     foreach (Match m in matches) {
         String url = m.Value+"&typ=xml";
         XmlNode xml = IWCache.Query(url, con, DBPrefix);
         if (xml.SelectSingleNode("scann/informationen/vollstaendig").InnerText != "1") {
             resp.Respond("Ein Scan war nicht vollständig!");
             continue;
         }
         switch (xml.SelectSingleNode("scann/scann_typ/id").InnerText) {
             case "1": //Sondierung (Geologie)
                 GeoScan scan = GeoScan.Parse(xml, DBPrefix, handler.BesData);
                 if (scan == null) {
                     resp.RespondError("Beim Einlesen eines Geoscans ist ein Fehler aufgetreten!\n");
                     continue;
                 }
                 scan.ToDB(con);
                 resp.Respond("Geoscan eingelesen!\n");
                 break;
             case "2": //Sondierung (Gebäude/Ress)
                 GebScan s = new GebScan(uint.Parse(m.Groups[1].Value), m.Groups[2].Value);
                 s.LoadXml(xml, warFilter);
                 if (s.ToDB(con, DBPrefix, warFilter.TechKostenCache)) {
                     resp.Respond("Gebäudescan eingelesen!\n");
                 } else {
                     resp.Respond("Gebäudescan übersprungen!\n");
                 }
                 break;
             case "3": //Sondierung (Schiffe/Def/Ress)
                 SchiffScan schiffScan = new SchiffScan(uint.Parse(m.Groups[1].Value), m.Groups[2].Value);
                 schiffScan.LoadXml(xml, warFilter);
                 if(schiffScan.ToDB(con, DBPrefix, warFilter.TechKostenCache)) {
                     resp.Respond("Schiffscan eingelesen!\n");
                 } else {
                     resp.Respond("Schiffscan übersprungen!\n");
                 }
                 break;
         }
     }
 }
예제 #2
0
파일: GeoScan.cs 프로젝트: Grollicus/iwdb
 public static IWScan LoadXml(MySqlConnection con, String DBPrefix, WarFilter filter, uint iwid, string iwhash)
 {
     String url = String.Format("http://www.icewars.de/portal/kb/de/sb.php?id={0}&md_hash={1}&typ=xml", iwid, iwhash);
     XmlNode xml = IWCache.Query(url, con, DBPrefix);
     switch (xml.SelectSingleNode("scann/scann_typ/id").InnerText) {
         case "2": { //Sondierung (Gebäude/Ress)
             GebScan s = new GebScan(iwid, iwhash);
             s.LoadXml(xml, filter);
             return s;
             }
         case "3": { //Sondierung (Schiffe/Def/Ress)
             SchiffScan s = new SchiffScan(iwid, iwhash);
             s.LoadXml(xml, filter);
             return s;
             }
     }
     throw new InvalidOperationException("Unbekannter Scan-Typ!");
 }