/// <summary> /// Gets the total resource space /// </summary> /// <remarks>This is the (warehouse - hiding place) * 3</remarks> public int GetTotalResourceRoom() { if (Buildings != null) { ReportBuilding warehouse = null, hide = null; if (Buildings.ContainsKey(BuildingTypes.Warehouse)) { warehouse = Buildings[BuildingTypes.Warehouse]; } if (Buildings.ContainsKey(BuildingTypes.HidingPlace)) { hide = Buildings[BuildingTypes.HidingPlace]; } if (warehouse != null) { int room = warehouse.GetTotalProduction(); if (hide != null) { room -= hide.GetTotalProduction(); } return(room * 3); } } return(0); }
public virtual void ReadXml(XmlReader r) { r.MoveToContent(); string reportDate = r.GetAttribute(0); DateTime reportDateTest; if (DateTime.TryParse(reportDate, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out reportDateTest)) { _dateReport = reportDateTest; } _dateCopied = Convert.ToDateTime(r.GetAttribute(1), System.Globalization.CultureInfo.InvariantCulture); r.Read(); _reportType = (ReportTypes)Convert.ToInt32(r.ReadElementString("Type")); _reportStatus = (ReportStatusses)Convert.ToInt32(r.ReadElementString("Status")); _reportFlag = (ReportFlags)Convert.ToInt32(r.ReadElementString("Flags")); r.MoveToContent(); _loyaltyBegin = Convert.ToInt32(r.GetAttribute(0)); _loyaltyEnd = Convert.ToInt32(r.GetAttribute(1)); r.Read(); r.MoveToContent(); _attacker = new ReportVillage(); _attacker.ReadXml(r); //r.ReadEndElement(); //r.MoveToContent(); _defender = new ReportVillage(); _defender.ReadXml(r); //r.Read(); //r.MoveToContent(); //r.ReadStartElement(); //r.MoveToContent(); _resourcesHaul = new Resource(); r.Read(); _resourcesHaul.ReadXml(r); //r.ReadEndElement(); _resourceHaulMax = Convert.ToInt32(r.ReadElementString("Max")); r.Read(); r.Read(); _resourcesLeft = new Resource(); _resourcesLeft.ReadXml(r); r.Read(); DateTime?tempDate; _attack = ReportUnit.LoadXmlList(r, out tempDate); _defense = ReportUnit.LoadXmlList(r, out tempDate); _buildings = ReportBuilding.LoadXmlList(r, out tempDate); r.ReadEndElement(); r.Read(); }
public virtual void WriteXml(XmlWriter w) { w.WriteStartElement("Report"); if (_dateReport.HasValue) { w.WriteAttributeString("Report", _dateReport.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)); } else { w.WriteAttributeString("Report", ""); } w.WriteAttributeString("Copied", _dateCopied.ToString(System.Globalization.CultureInfo.InvariantCulture)); w.WriteElementString("Type", ((int)_reportType).ToString()); w.WriteElementString("Status", ((int)_reportStatus).ToString()); w.WriteElementString("Flags", ((int)_reportFlag).ToString()); w.WriteStartElement("Loyalty"); w.WriteAttributeString("Begin", _loyaltyBegin.ToString()); w.WriteAttributeString("End", _loyaltyEnd.ToString()); w.WriteEndElement(); Attacker.WriteXml(w); Defender.WriteXml(w); w.WriteStartElement("Haul"); _resourcesHaul.WriteXml(w); w.WriteElementString("Max", _resourceHaulMax.ToString()); w.WriteEndElement(); w.WriteStartElement("Scouted"); _resourcesLeft.WriteXml(w); w.WriteEndElement(); ReportUnit.WriteXmlList(w, "Attack", Attack, true, null); ReportUnit.WriteXmlList(w, "Defense", Defense, true, null); ReportBuilding.WriteXmlList(w, Buildings, null); w.WriteEndElement(); }
/// <summary> /// Builds the village buildings dictionary /// </summary> /// <param name="group">The RegEx group containing the buildings</param> /// <param name="points">Out: Calculated points for the building list</param> private static Dictionary <BuildingTypes, ReportBuilding> GetBuildings(Group group, out int points) { points = 0; Dictionary <BuildingTypes, ReportBuilding> build = new Dictionary <BuildingTypes, ReportBuilding>(); string pattern = @"^(?<name>.*) (\<b\>)?\(Level\s*(?<level>\d*)\)(\</b\>\<br /\>)?\s*$"; Regex x = new Regex(pattern); for (int i = 0; i < group.Captures.Count; i++) { Match match = x.Match(group.Captures[i].Value.Trim()); if (match.Success) { string name = match.Groups["name"].Value.Trim(); int level; int.TryParse(match.Groups["level"].Value, out level); ReportBuilding vilbuild = new ReportBuilding(WorldBuildings.Default[name], level); build.Add(vilbuild.Building.Type, vilbuild); points += vilbuild.GetTotalPoints(); } } return(build); }
public static Dictionary <BuildingTypes, ReportBuilding> LoadXmlList(XmlReader r, out DateTime?date) { Dictionary <BuildingTypes, ReportBuilding> list = new Dictionary <BuildingTypes, ReportBuilding>(); if (r.HasAttributes) { date = System.Convert.ToDateTime(r.GetAttribute(0), System.Globalization.CultureInfo.InvariantCulture); } else { date = null; } r.Read(); r.MoveToContent(); if (r.IsStartElement("Building")) { while (r.IsStartElement("Building")) { string typeDesc = r.GetAttribute(0); if (Enum.IsDefined(typeof(BuildingTypes), typeDesc)) { BuildingTypes type = (BuildingTypes)Enum.Parse(typeof(BuildingTypes), typeDesc); int level = System.Convert.ToInt32(r.GetAttribute(1)); ReportBuilding build = new ReportBuilding(WorldBuildings.Default[type], level); list.Add(type, build); } r.Read(); r.Read(); } r.Read(); r.MoveToContent(); } return(list); }
public static void WriteXmlList(XmlWriter w, Dictionary <BuildingTypes, ReportBuilding> list) { ReportBuilding.WriteXmlList(w, list, null); }
public string BbCodeStandard() { // players var str = new StringBuilder(200); PrintPlayers(str); if (_report.ReportDate.HasValue) { str.Append(Environment.NewLine); TimeSpan span = World.Default.Settings.ServerTime - _report.ReportDate.Value; if (span.TotalHours < 1) { str.Append(string.Format("Date: {0}", _report.ReportDate.Value)); } else { str.Append(string.Format("Date: {0} ({1} hours ago)", _report.ReportDate.Value, Math.Round(span.TotalHours))); } } // resources if (_report.ReportOptions.ResourceDetails || true) { str.Append(PrintResources()); } // Troops if (_report.ReportOptions.AttackingTroops) { str.Append(PrintTroops("Attacker:", _report.Attack, true)); } if (_report.ReportOptions.DefendingTroops) { str.Append(PrintTroops("Defender:", _report.Defense, false)); } // print free space if (_report.ReportOptions.People) { string space = Environment.NewLine + Resource.FaceBBCodeString; space += "[b]" + Report.GetTotalPeople(_report.Defense, TotalPeople.End).ToString("#,0") + "[/b]"; if (_report.Buildings != null && _report.Buildings.Count > 2) { int farmBuildings = _report.GetTotalPeopleInBuildings(); if (farmBuildings > 0) { space += string.Format(" + {0:#,0}", farmBuildings); } if (_report.Buildings.ContainsKey(BuildingTypes.Farm)) { ReportBuilding farm = _report.Buildings[BuildingTypes.Farm]; int totalFarm = farm.GetTotalProduction(); //space += string.Format(" + {0:#,0}", farmBuildings); space = string.Format("{1} ({0:#,0} free)", totalFarm - farmBuildings - Report.GetTotalPeople(_report.Defense, TotalPeople.End), space); } } if (space.Length > 0) { if (Report.GetTotalPeople(_report.Defense, TotalPeople.Start) == 0) { str.Append(Environment.NewLine + Environment.NewLine + "[b]Defender:[/b]"); } str.Append(space); } } // Buildings if (_report.ReportOptions.Buildings) { str.Append(PrintBuildings("Buildings:", _report.Buildings)); } return(str.ToString()); }
/// <summary> /// Builds the village buildings dictionary /// </summary> /// <param name="group">The RegEx group containing the buildings</param> /// <param name="points">Out: Calculated points for the building list</param> private static Dictionary<BuildingTypes, ReportBuilding> GetBuildings(Group group, out int points) { points = 0; Dictionary<BuildingTypes, ReportBuilding> build = new Dictionary<BuildingTypes, ReportBuilding>(); string pattern = @"^(?<name>.*) (\<b\>)?\(Level\s*(?<level>\d*)\)(\</b\>\<br /\>)?\s*$"; Regex x = new Regex(pattern); for (int i = 0; i < group.Captures.Count; i++) { Match match = x.Match(group.Captures[i].Value.Trim()); if (match.Success) { string name = match.Groups["name"].Value.Trim(); int level; int.TryParse(match.Groups["level"].Value, out level); ReportBuilding vilbuild = new ReportBuilding(WorldBuildings.Default[name], level); build.Add(vilbuild.Building.Type, vilbuild); points += vilbuild.GetTotalPoints(); } } return build; }
public static Dictionary<BuildingTypes, ReportBuilding> LoadXmlList(XmlReader r, out DateTime? date) { Dictionary<BuildingTypes, ReportBuilding> list = new Dictionary<BuildingTypes, ReportBuilding>(); if (r.HasAttributes) date = System.Convert.ToDateTime(r.GetAttribute(0), System.Globalization.CultureInfo.InvariantCulture); else date = null; r.Read(); r.MoveToContent(); if (r.IsStartElement("Building")) { while (r.IsStartElement("Building")) { string typeDesc = r.GetAttribute(0); if (Enum.IsDefined(typeof(BuildingTypes), typeDesc)) { BuildingTypes type = (BuildingTypes)Enum.Parse(typeof(BuildingTypes), typeDesc); int level = System.Convert.ToInt32(r.GetAttribute(1)); ReportBuilding build = new ReportBuilding(WorldBuildings.Default[type], level); list.Add(type, build); } r.Read(); r.Read(); } r.Read(); r.MoveToContent(); } return list; }