Beispiel #1
0
        /*IDs:
         *	1 - Eisen
         *	4 - Eis
         *	5 - Chem.
        */
        public static GeoScan Parse(XmlNode n, String DBPrefix, BesonderheitenData dta)
        {
            try {
                GeoScan s = new GeoScan(DBPrefix);
                NumberFormatInfo numberFormat = new NumberFormatInfo();
                numberFormat.NumberDecimalSeparator = ".";
                numberFormat.NumberGroupSeparator = ",";

                XmlNode planidata = n.SelectSingleNode("scann/plani_data");
                XmlNode coords = planidata.SelectSingleNode("koordinaten");
                s.gal = int.Parse(coords["gal"].InnerText);
                s.sol = int.Parse(coords["sol"].InnerText);
                s.pla = int.Parse(coords["pla"].InnerText);
                s.pla_typ = planidata.SelectSingleNode("planeten_typ/name").InnerText;
                s.obj_typ = planidata.SelectSingleNode("objekt_typ/name").InnerText;
                s.owner_name = planidata.SelectSingleNode("user/name").InnerText;
                s.owner_ally = planidata.SelectSingleNode("user/allianz_tag").InnerText;
                XmlNode ressvorkommen = planidata.SelectSingleNode("ressourcen_vorkommen");
                foreach (XmlNode node in ressvorkommen.SelectNodes("ressource")) {
                    switch (int.Parse(node["id"].InnerText)) {
                        case 1:
                            s.eisen = Convert.ToInt32(float.Parse(node["wert"].InnerText, numberFormat) * 1000);
                            break;
                        case 4:
                            s.eis = Convert.ToInt32(float.Parse(node["wert"].InnerText, numberFormat) * 1000);
                            break;
                        case 5:
                            s.chem = Convert.ToInt32(float.Parse(node["wert"].InnerText, numberFormat) * 1000);
                            break;
                    }
                }
                foreach (XmlNode node in ressvorkommen.SelectNodes("ressource_tech_team")) {
                    switch (int.Parse(node["id"].InnerText)) {
                        case 1:
                            s.tt_eisen = Convert.ToInt32(float.Parse(node["wert"].InnerText, numberFormat) * 1000);
                            break;
                        case 4:
                            s.tt_eis = Convert.ToInt32(float.Parse(node["wert"].InnerText, numberFormat) * 1000);
                            break;
                        case 5:
                            s.tt_chem = Convert.ToInt32(float.Parse(node["wert"].InnerText, numberFormat) * 1000);
                            break;
                    }
                }
                s.gravi = Convert.ToInt32(float.Parse(planidata["gravitation"].InnerText, numberFormat) * 100);
                s.lbled = Convert.ToInt32(float.Parse(planidata["lebensbedingungen"].InnerText, numberFormat) * 1000);
                s.bev_max = int.Parse(planidata["bev_max"].InnerText);

                s.besonderheiten = new Besonderheiten(dta);
                foreach (XmlNode node in planidata.SelectNodes("besonderheiten/besonderheit/name"))
                    s.besonderheiten.Add(node.InnerText);
                s.timestamp = uint.Parse(n.SelectSingleNode("scann/timestamp").InnerText);
                XmlNode mod = planidata.SelectSingleNode("modifikatoren");
                s.hasMods = mod != null;
                if (mod != null) {
                    s.mod_forschung = (int)(float.Parse(mod["forschung"].InnerText, numberFormat) * 100);
                    s.mod_geb_k = (int)(float.Parse(mod["gebaeude_bau"]["kosten"].InnerText, numberFormat) * 100);
                    s.mod_geb_d = (int)(float.Parse(mod["gebaeude_bau"]["dauer"].InnerText, numberFormat) * 100);
                    s.mod_schif_k = (int)(float.Parse(mod["schiff_bau"]["kosten"].InnerText, numberFormat) * 100);
                    s.mod_schif_d = (int)(float.Parse(mod["schiff_bau"]["dauer"].InnerText, numberFormat) * 100);
                    //Die Angabe im Scan ist relativ ab dem Timestamp, +86400 Sekunden weil +-24h
                    s.resetTimestamp = uint.Parse(n.SelectSingleNode("scann/plani_data/reset_timestamp").InnerText) + s.timestamp + 86400;
                }
                return s;
            } catch (Exception e) {
                IRCeX.Log.WriteLine(IRCeX.LogLevel.E_DEBUG, "Exception beim Geoscan-Einlesen");
                IRCeX.Log.WriteException(e);
                return null;
            }
        }
Beispiel #2
0
 public Besonderheiten(BesonderheitenData dta)
 {
     this.bes = 0;
     this.nebel = 0;
     this.dta = dta;
 }
Beispiel #3
0
 public bool ToDB(MySqlConnection con, String DBPrefix, BesonderheitenData dta, ParserResponse resp, String desc)
 {
     PlaniFetcher f = new PlaniFetcher(dta, con, DBPrefix) {Gala = zielGala, Sys=zielSys, Pla=zielPla};
     List<PlaniInfo> ids = f.FetchMatching(PlaniDataFlags.ID);
     if (ids.Count == 0) {
         resp.RespondError(desc+" übersprungen, Unidaten fehlerhaft bei " + zielGala + ":" + zielSys);
         return false;
     }
     uint planid = ids[0].ID;
     MySqlCommand cmd = new MySqlCommand("INSERT IGNORE INTO " + DBPrefix + "bilanz (planid, empfaenger, absender, zeit, eisen, stahl, chemie, vv4a, eis, wasser, energie, bev) VALUES (?planid, ?empf, ?abs, ?zeit, ?fe, ?st, ?ch, ?vv, ?ei, ?wa, ?en, ?bev)", con);
     cmd.Parameters.Add("?planid", MySqlDbType.UInt32).Value = planid;
     cmd.Parameters.Add("?empf", MySqlDbType.String).Value = empfänger;
     cmd.Parameters.Add("?abs", MySqlDbType.String).Value = absender;
     cmd.Parameters.Add("?zeit", MySqlDbType.UInt32).Value = ankunftszeit;
     cmd.Parameters.Add("?fe", MySqlDbType.UInt32).Value = eisen;
     cmd.Parameters.Add("?st", MySqlDbType.UInt32).Value = stahl;
     cmd.Parameters.Add("?ch", MySqlDbType.UInt32).Value = chem;
     cmd.Parameters.Add("?vv", MySqlDbType.UInt32).Value = vv4a;
     cmd.Parameters.Add("?ei", MySqlDbType.UInt32).Value = eis;
     cmd.Parameters.Add("?wa", MySqlDbType.UInt32).Value = wasser;
     cmd.Parameters.Add("?en", MySqlDbType.UInt32).Value = energie;
     cmd.Parameters.Add("?bev", MySqlDbType.UInt32).Value = bev;
     if (cmd.ExecuteNonQuery() == 0)
         resp.Respond("Bereits bekannten "+desc+" übersprungen!");
     else
         resp.Respond(desc+" eingelesen!");
     return true;
 }