コード例 #1
0
ファイル: GeoScan.cs プロジェクト: Grollicus/iwdb
 public void LoadXml(XmlNode xml, WarFilter warFilter)
 {
     this.xml = xml;
     XmlNode planidata = xml.SelectSingleNode("scann/plani_data");
     XmlNode coords = planidata.SelectSingleNode("koordinaten");
     gal = uint.Parse(coords["gal"].InnerText);
     sol = uint.Parse(coords["sol"].InnerText);
     pla = uint.Parse(coords["pla"].InnerText);
     pla_typ = planidata.SelectSingleNode("planeten_typ/name").InnerText;
     obj_typ = planidata.SelectSingleNode("objekt_typ/name").InnerText;
     owner_name = planidata.SelectSingleNode("user/name").InnerText;
     owner_ally = planidata.SelectSingleNode("user/allianz_tag").InnerText;
     timestamp = uint.Parse(xml.SelectSingleNode("scann/timestamp").InnerText);
     ress = new ResourceSet();
     ress.ParseXml(xml.SelectSingleNode("scann/ressourcen"));
     WarFilter.War war = warFilter.getWar(owner_ally, timestamp);
     warID = war != null ? war.id : 0;
 }
コード例 #2
0
ファイル: TechTree.cs プロジェクト: Grollicus/iwdb
 public override void Matched(MatchCollection matches, uint posterID, uint victimID, DateTime now, MySqlConnection con, SingleNewscanRequestHandler handler, ParserResponse resp)
 {
     String str = IWCache.WebQuery(matches[0].Value);
     System.Xml.XmlDocument d = new System.Xml.XmlDocument();
     d.LoadXml(str);
     foreach(XmlNode sch in d["struktur"].SelectNodes("schiff")) {
         MySqlCommand insertItem = new MySqlCommand("INSERT IGNORE INTO " + DBPrefix + "techtree_items (name, type) VALUES (?name, 'schiff')", con);
         insertItem.Parameters.Add("?name", MySqlDbType.String).Value = sch["name"].InnerText;
         insertItem.ExecuteNonQuery();
         long itemID = insertItem.LastInsertedId;
         if(itemID == 0) {
             MySqlCommand sel = new MySqlCommand("SELECT ID FROM " + DBPrefix + "techtree_items WHERE name=?name AND type='schiff'", con);
             sel.Parameters.Add("?name", MySqlDbType.String).Value = sch["name"].InnerText;
             Object obj = sel.ExecuteScalar();
             itemID = (uint)obj;
         }
         ResourceSet kosten = new ResourceSet();
         kosten.ParseXml(sch["kosten"]);
         kosten.Zeit = TimeSpan.FromSeconds(int.Parse(sch["dauer"].InnerText));
         MySqlCommand insertStufe = new MySqlCommand("INSERT INTO " + DBPrefix + @"techtree_stufen (ItemID, Stufe, Dauer, bauE,bauS,bauC,bauV,bauEis,bauW,bauEn,bauCr,bauBev) VALUES (?itemid, 1, ?dauer, ?baue, ?baus, ?bauc, ?bauv, ?baueis, ?bauw, ?bauen, ?baucr, ?baubev)
     ON DUPLICATE KEY UPDATE Dauer=VALUES(Dauer), bauE=VALUES(bauE), bauS=VALUES(bauS), bauC=VALUES(bauC), bauV=VALUES(bauV), bauEis=VALUES(bauEis), bauW=VALUES(bauW), bauEn=VALUES(bauEn), bauCr=VALUES(bauCr), bauBev=VALUES(bauBev)", con);
         insertStufe.Parameters.Add("?itemid", MySqlDbType.UInt32).Value = itemID;
         insertStufe.Parameters.Add("?dauer", MySqlDbType.UInt32).Value = kosten.Zeit.TotalSeconds;
         insertStufe.Parameters.Add("?baue", MySqlDbType.UInt32).Value = kosten.Eisen;
         insertStufe.Parameters.Add("?baus", MySqlDbType.UInt32).Value = kosten.Stahl;
         insertStufe.Parameters.Add("?bauc", MySqlDbType.UInt32).Value = kosten.Chemie;
         insertStufe.Parameters.Add("?bauv", MySqlDbType.UInt32).Value = kosten.VV4A;
         insertStufe.Parameters.Add("?baueis", MySqlDbType.UInt32).Value = kosten.Eis;
         insertStufe.Parameters.Add("?bauw", MySqlDbType.UInt32).Value = kosten.Wasser;
         insertStufe.Parameters.Add("?bauen", MySqlDbType.UInt32).Value = kosten.Energie;
         insertStufe.Parameters.Add("?baucr", MySqlDbType.UInt32).Value = kosten.Credits;
         insertStufe.Parameters.Add("?baubev", MySqlDbType.UInt32).Value = kosten.Bev;
         insertStufe.ExecuteNonQuery();
     }
     resp.Respond("Schiffskosten-XML erfolgreich eingelesen!");
 }
コード例 #3
0
ファイル: ResskoloUebersicht.cs プロジェクト: Grollicus/iwdb
 public override void Matched(MatchCollection matches, uint posterID, uint victimID, DateTime now, MySqlConnection con, SingleNewscanRequestHandler handler, ParserResponse resp)
 {
     uint unixnow = IWDBUtils.toUnixTimestamp(now);
     String dot = Regex.Escape(System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator);
     String comma = Regex.Escape(System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator);
     foreach (Match outerMatch in matches) {
         MatchCollection innerMatches = Regex.Matches(outerMatch.Value, "\n" + KolonieName + @"\s+(\d+):(\d+):(\d+)\s+
     \((?:Kolonie|Kampfbasis|Sammelbasis)\)\s+((?:[\d" + dot + @"]+\s+
     \([-\d" + dot + comma + @"]+\)\s+
     (?:---|[\d" + dot + @"]+)\s+
     [\d" + dot + @"]+\s){7})+", RegexOptions.IgnorePatternWhitespace);
         uint uid = 0;
         if (innerMatches.Count == 0)
             return;
         foreach (Match innerMatch in innerMatches) {
             ResourceSet aktRess = new ResourceSet();
             ResourceSet vRess = new ResourceSet();
             ResourceSet lager = new ResourceSet();
             MatchCollection ressMatches = Regex.Matches(innerMatch.Groups[4].Value, @"([\d" + dot + @"]+)\s+
     \(([-\d" + dot + comma + @"]+)\)\s+
     (---|[\d" + dot + @"]+)\s+
     [\d" + dot + @"]+\s", RegexOptions.IgnorePatternWhitespace);
             int i = 0;
             foreach (Match m in ressMatches) {
                 aktRess.Set(i, m.Groups[1].Value);
                 vRess.Set(i, m.Groups[2].Value);
                 String str = m.Groups[3].Value;
                 if (str != "---")
                     lager.Set(i, str);
                 ++i;
             }
             uint gala = uint.Parse(innerMatch.Groups[1].Value);
             uint sys = uint.Parse(innerMatch.Groups[2].Value);
             uint pla = uint.Parse(innerMatch.Groups[3].Value);
             uint planid;
             if (uid == 0) {
                 MySqlCommand uidPlanidQry = new MySqlCommand(@"SELECT universum.id , igm_data.id
                     FROM " + DBPrefix + "universum AS universum LEFT JOIN " + DBPrefix + @"igm_data AS igm_data ON universum.ownername=igm_data.igmname
                     WHERE universum.sys=?sys AND universum.gala=?gala AND universum.pla=?pla", con);
                 uidPlanidQry.Parameters.Add("?sys", MySqlDbType.UInt32).Value = sys;
                 uidPlanidQry.Parameters.Add("?gala", MySqlDbType.UInt32).Value = gala;
                 uidPlanidQry.Parameters.Add("?pla", MySqlDbType.UInt32).Value = pla;
                 MySqlDataReader r = uidPlanidQry.ExecuteReader();
                 if (!r.Read() || r.IsDBNull(1)) {
                     resp.RespondError("Universumsdaten fehlerhaft oder unvollständig!\n");
                     r.Close();
                     continue;
                 }
                 planid = r.GetUInt32(0);
                 uid = r.GetUInt32(1);
                 r.Close();
                 MySqlCommand cleanupQry = new MySqlCommand(@"DELETE FROM " + DBPrefix + "ressuebersicht WHERE uid=?uid", con);
                 cleanupQry.Parameters.Add("?uid", MySqlDbType.UInt32).Value = uid;
                 cleanupQry.ExecuteNonQuery();
             } else {
                 MySqlCommand planIdQry = new MySqlCommand("SELECT id from " + DBPrefix + "universum WHERE sys=?sys AND gala=?gala AND pla=?pla", con);
                 planIdQry.Parameters.Add("?sys", MySqlDbType.UInt32).Value = sys;
                 planIdQry.Parameters.Add("?gala", MySqlDbType.UInt32).Value = gala;
                 planIdQry.Parameters.Add("?pla", MySqlDbType.UInt32).Value = pla;
                 object res = planIdQry.ExecuteScalar();
                 if (res == null || Convert.IsDBNull(res)) {
                     resp.RespondError("Universumsdaten fehlerhaft oder unvollständig!\n");
                     continue;
                 }
                 planid = (uint)res;
             }
             MySqlCommand insertQry = new MySqlCommand("INSERT INTO " + DBPrefix + @"ressuebersicht (uid, planid, fe, st, vv, ch, ei, wa, en, vFe, vSt, vVv, vCh, vEi, vWa, vEn, lCh, lEi, lWa, lEn, time) VALUES (
                                                                                             ?uid, ?planid, ?fe, ?st, ?vv, ?ch, ?ei, ?wa, ?en, ?vFe, ?vSt, ?vVv, ?vCh, ?vEi, ?vWa, ?vEn, ?lCh, ?lEi, ?lWa, ?lEn, ?time)
                                                             on duplicate key update uid=VALUES(uid), fe=VALUES(fe), st=VALUES(st), vv=VALUES(vv), ch=VALUES(ch), ei=VALUES(ei), wa=VALUES(wa), en=VALUES(en), vFe=VALUES(vFe), vSt=VALUES(vSt), vVv=VALUES(vVv), vCh=VALUES(vCh), vEi=VALUES(vEi), vWa=VALUES(vWa), vEn=VALUES(vEn), lCh=VALUES(lCh), lEi=VALUES(lEi), lWa=VALUES(lWa), lEn=VALUES(lEn), time=VALUES(time)", con);
             insertQry.Parameters.Add("?uid", MySqlDbType.UInt32).Value = uid;
             insertQry.Parameters.Add("?planid", MySqlDbType.UInt32).Value = planid;
             insertQry.Parameters.Add("?fe", MySqlDbType.UInt32).Value = aktRess.Eisen;
             insertQry.Parameters.Add("?st", MySqlDbType.UInt32).Value = aktRess.Stahl;
             insertQry.Parameters.Add("?vv", MySqlDbType.UInt32).Value = aktRess.VV4A;
             insertQry.Parameters.Add("?ch", MySqlDbType.UInt32).Value = aktRess.Chemie;
             insertQry.Parameters.Add("?ei", MySqlDbType.UInt32).Value = aktRess.Eis;
             insertQry.Parameters.Add("?wa", MySqlDbType.UInt32).Value = aktRess.Wasser;
             insertQry.Parameters.Add("?en", MySqlDbType.UInt32).Value = aktRess.Energie;
             insertQry.Parameters.Add("?vFe", MySqlDbType.Int32).Value = vRess.Eisen * 100;
             insertQry.Parameters.Add("?vSt", MySqlDbType.Int32).Value = vRess.Stahl * 100;
             insertQry.Parameters.Add("?vVv", MySqlDbType.Int32).Value = vRess.VV4A * 100;
             insertQry.Parameters.Add("?vCh", MySqlDbType.Int32).Value = vRess.Chemie * 100;
             insertQry.Parameters.Add("?vEi", MySqlDbType.Int32).Value = vRess.Eis * 100;
             insertQry.Parameters.Add("?vWa", MySqlDbType.Int32).Value = vRess.Wasser * 100;
             insertQry.Parameters.Add("?vEn", MySqlDbType.Int32).Value = vRess.Energie * 100;
             insertQry.Parameters.Add("?lCh", MySqlDbType.UInt32).Value = lager.Chemie;
             insertQry.Parameters.Add("?lEi", MySqlDbType.UInt32).Value = lager.Eis;
             insertQry.Parameters.Add("?lWa", MySqlDbType.UInt32).Value = lager.Wasser;
             insertQry.Parameters.Add("?lEn", MySqlDbType.UInt32).Value = lager.Energie;
             insertQry.Parameters.Add("?time", MySqlDbType.UInt32).Value = unixnow;
             insertQry.ExecuteNonQuery();
         }
         resp.Respond("Ressourcenkoloübersicht eingelesen!\n");
     }
 }
コード例 #4
0
ファイル: TechTree.cs プロジェクト: Grollicus/iwdb
 public static ResourceSet operator -(ResourceSet rs1, ResourceSet rs2)
 {
     ResourceSet ret = new ResourceSet();
     ret.Eisen = rs1.Eisen-rs2.Eisen;
     ret.Stahl = rs1.Stahl-rs2.Stahl;
     ret.Chemie = rs1.Chemie-rs2.Chemie;
     ret.VV4A = rs1.VV4A-rs2.VV4A;
     ret.Eis = rs1.Eis-rs2.Eis;
     ret.Wasser = rs1.Wasser-rs2.Wasser;
     ret.Energie = rs1.Energie-rs2.Energie;
     ret.Credits = rs1.Credits-rs2.Credits;
     ret.Bev = rs1.Bev-rs2.Bev;
     ret.FP = rs1.FP-rs2.FP;
     ret.Zeit = rs1.Zeit - rs2.Zeit;
     return ret;
 }
コード例 #5
0
ファイル: TechTree.cs プロジェクト: Grollicus/iwdb
 public static ResourceSet operator +(ResourceSet rs1, ResourceSet rs2)
 {
     ResourceSet ret = new ResourceSet();
     ret.Eisen = rs1.Eisen + rs2.Eisen;
     ret.Stahl = rs1.Stahl + rs2.Stahl;
     ret.Chemie = rs1.Chemie + rs2.Chemie;
     ret.VV4A = rs1.VV4A + rs2.VV4A;
     ret.Eis = rs1.Eis + rs2.Eis;
     ret.Wasser = rs1.Wasser + rs2.Wasser;
     ret.Energie = rs1.Energie + rs2.Energie;
     ret.Credits = rs1.Credits + rs2.Credits;
     ret.Bev = rs1.Bev + rs2.Bev;
     ret.FP = rs1.FP + rs2.FP;
     ret.Zeit = rs1.Zeit + rs2.Zeit;
     return ret;
 }
コード例 #6
0
ファイル: TechTree.cs プロジェクト: Grollicus/iwdb
 public static ResourceSet operator *(ResourceSet rs1, ResourceSet rs2)
 {
     ResourceSet ret = new ResourceSet();
     ret.Eisen = rs1.Eisen * rs2.Eisen;
     ret.Stahl = rs1.Stahl * rs2.Stahl;
     ret.Chemie = rs1.Chemie * rs2.Chemie;
     ret.VV4A = rs1.VV4A * rs2.VV4A;
     ret.Eis = rs1.Eis * rs2.Eis;
     ret.Wasser = rs1.Wasser * rs2.Wasser;
     ret.Energie = rs1.Energie * rs2.Energie;
     ret.Credits = rs1.Credits * rs2.Credits;
     ret.Bev = rs1.Bev * rs2.Bev;
     ret.FP = rs1.FP + rs2.FP;
     ret.Zeit = TimeSpan.Zero;
     return ret;
 }
コード例 #7
0
ファイル: TechTree.cs プロジェクト: Grollicus/iwdb
 public static ResourceSet operator *(ResourceSet rs1, uint scalar)
 {
     ResourceSet ret = new ResourceSet();
     ret.Eisen = rs1.Eisen * scalar;
     ret.Stahl = rs1.Stahl * scalar;
     ret.Chemie = rs1.Chemie * scalar;
     ret.VV4A = rs1.VV4A * scalar;
     ret.Eis = rs1.Eis * scalar;
     ret.Wasser = rs1.Wasser * scalar;
     ret.Energie = rs1.Energie * scalar;
     ret.Credits = rs1.Credits * scalar;
     ret.Bev = rs1.Bev * scalar;
     ret.FP = rs1.FP * scalar;
     ret.Zeit = TimeSpan.FromSeconds(rs1.Zeit.TotalSeconds * scalar);
     return ret;
 }
コード例 #8
0
ファイル: TechTree.cs プロジェクト: Grollicus/iwdb
        public TechtreeItemStufe(String kostenZeileToParse)
        {
            BauKosten = new ResourceSet();
            laufendeEffekte = new ResourceSet();
            Match levelMatch = Regex.Match(kostenZeileToParse, @"(?:Stufe|globale Anzahl) (\d+):\s+(.*)");
            if (levelMatch.Success) {
                Stufe = int.Parse(levelMatch.Groups[1].Value);
                kostenZeileToParse = levelMatch.Groups[2].Value;
            } else {
                Stufe = 1;
                Match fpMatch = Regex.Match(kostenZeileToParse, "("+IWDBRegex.Number+@") Forschungspunkte(:?\n(.*))?");
                if (fpMatch.Success) {
                    BauKosten.Set("Forschungspunkte", fpMatch.Groups[1].Value);
                    kostenZeileToParse = fpMatch.Groups[2].Value;
                }
            }

            MatchCollection matches = Regex.Matches(kostenZeileToParse, @"(\S.+?):\s+(\d+)");
            foreach (Match m in matches) {
                BauKosten.Set(m.Groups[1].Value, m.Groups[2].Value);
            }
        }