/*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; } }
public Besonderheiten(BesonderheitenData dta) { this.bes = 0; this.nebel = 0; this.dta = dta; }
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; }