private void PrintSiteHistory() { if (Entity.SiteHistory.Count > 0) { HTML.AppendLine(Bold("Site History") + " " + MakeLink("[Load]", LinkOption.LoadEntitySites) + LineBreak); TableMaker siteTable = new TableMaker(true); foreach (OwnerPeriod ownedSite in Entity.SiteHistory) { siteTable.StartRow(); siteTable.AddData(ownedSite.Owner.ToLink(true, Entity)); siteTable.AddData(ownedSite.StartCause); siteTable.AddData(ownedSite.Site.ToLink()); siteTable.AddData(ownedSite.StartYear.ToString()); if (ownedSite.EndYear >= 0) { siteTable.AddData(ownedSite.EndCause); siteTable.AddData(ownedSite.EndYear.ToString()); } if (ownedSite.Ender != null) { if (ownedSite.Ender is Entity) { siteTable.AddData(" by " + ((Entity)ownedSite.Ender).PrintEntity(), 0, TableDataAlign.Right); } else { siteTable.AddData(" by " + ownedSite.Ender.ToLink(true, Entity), 0, TableDataAlign.Right); } } siteTable.EndRow(); } HTML.AppendLine(siteTable.GetTable() + LineBreak); } }
private void PrintReputations() { if (HistoricalFigure.Reputations.Count > 0) { HTML.AppendLine(Bold("Entity Reputations") + LineBreak); StartList(ListType.Unordered); foreach (EntityReputation reputation in HistoricalFigure.Reputations) { HTML.AppendLine(ListItem + reputation.Entity.PrintEntity() + ": "); StartList(ListType.Unordered); if (reputation.UnsolvedMurders > 0) { HTML.AppendLine(ListItem + "Unsolved Murders: " + reputation.UnsolvedMurders); } if (reputation.FirstSuspectedAgelessYear > 0) { HTML.AppendLine(ListItem + "First Suspected Ageless Year: " + reputation.FirstSuspectedAgelessYear + ", " + reputation.FirstSuspectedAgelessSeason); } foreach (var item in reputation.Reputations) { HTML.AppendLine(ListItem + item.Key.GetDescription() + ": " + item.Value + "%"); } EndList(ListType.Unordered); } EndList(ListType.Unordered); } }
private void PrintRelatedEntities() { if (HistoricalFigure.RelatedEntities.Count > 0) { HTML.AppendLine(Bold("Related Entities") + LineBreak); StartList(ListType.Unordered); foreach (EntityLink link in HistoricalFigure.RelatedEntities) { string linkString = link.Entity.PrintEntity() + " (" + link.Type.GetDescription(); if (link.Strength > 0) { linkString += " " + link.Strength + "%"; } if (link.StartYear > -1) { linkString += " " + link.PositionID + ", " + link.StartYear + "-"; if (link.EndYear > -1) { linkString += link.EndYear; } else { linkString += "Present"; } } linkString += ")"; HTML.AppendLine(ListItem + linkString); } EndList(ListType.Unordered); } }
private void PrintEvents() { HTML.AppendLine("<b>Event Log</b> " + LineBreak); foreach (WorldEvent eraEvent in Artifact.Events) { if (!Artifact.Filters.Contains(eraEvent.Type)) { HTML.AppendLine(eraEvent.Print() + "</br></br>"); } } }
private void PrintEvents() { HTML.AppendLine(Bold("Event Log") + " " + MakeLink(Font("[Chart]", "Maroon"), LinkOption.LoadChart) + LineBreak); foreach (var e in HistoricalFigure.Events) { if (!HistoricalFigure.Filters.Contains(e.Type)) { HTML.AppendLine(e.Print(true, HistoricalFigure) + LineBreak + LineBreak); } } }
private void PrintSkills() { if (HistoricalFigure.Skills.Count > 0) { HTML.AppendLine(Bold("Skills") + LineBreak); StartList(ListType.Unordered); foreach (Skill skill in HistoricalFigure.Skills) { HTML.AppendLine(ListItem + skill.Name + " - " + skill.Rank + " (" + skill.Points + ")"); } EndList(ListType.Unordered); } }
private void PrintPopulations() { if (Entity.Populations.Count > 0) { HTML.AppendLine(Bold("Populations") + LineBreak); StartList(ListType.Unordered); foreach (Population population in Entity.Populations) { HTML.AppendLine(ListItem + population.Count + " " + population.Race); } EndList(ListType.Unordered); } }
private void PrintBreedInfo() { if (!string.IsNullOrWhiteSpace(HistoricalFigure.BreedID)) { HTML.AppendLine(Bold("Breed") + LineBreak); HTML.AppendLine("<ol>"); foreach (HistoricalFigure hfOfSameBreed in World.Breeds[HistoricalFigure.BreedID]) { HTML.AppendLine("<li>" + hfOfSameBreed.ToLink() + "</li>"); } HTML.AppendLine("</ol>"); } }
private void PrintKills() { if (HistoricalFigure.NotableKills.Count > 0) { HTML.AppendLine(Bold("Kills") + " " + MakeLink("[Load]", LinkOption.LoadHFKills)); StartList(ListType.Ordered); foreach (HFDied kill in HistoricalFigure.NotableKills) { HTML.AppendLine(ListItem + kill.HistoricalFigure.ToLink() + ", in " + kill.Year + " (" + kill.Cause.GetDescription() + ")" + LineBreak); } EndList(ListType.Ordered); } }
private void PrintRelatedSites() { if (HistoricalFigure.RelatedSites.Count > 0) { HTML.AppendLine(Bold("Related Sites") + LineBreak); StartList(ListType.Unordered); foreach (SiteLink link in HistoricalFigure.RelatedSites) { string linkString = link.Site.ToLink() + ", " + link.Type.GetDescription() + " (" + (link.Type == SiteLinkType.Occupation ? link.OccupationID : link.SubID) + ") "; if (link.Entity != null) { linkString += "" + link.Entity.ToLink(); } HTML.AppendLine(ListItem + linkString); } EndList(ListType.Unordered); } }
private void PrintBeastAttacks() { if (HistoricalFigure.BeastAttacks != null && HistoricalFigure.BeastAttacks.Count > 0) { HTML.AppendLine(Bold("Beast Attacks")); StartList(ListType.Ordered); foreach (BeastAttack attack in HistoricalFigure.BeastAttacks) { HTML.AppendLine(ListItem + attack.StartYear + ", " + MakeLink(attack.GetOrdinal(attack.Ordinal) + "rampage in ", attack) + attack.Site.ToLink()); if (attack.GetSubEvents().OfType <HFDied>().Any()) { HTML.Append(" (Kills: " + attack.GetSubEvents().OfType <HFDied>().Count() + ")"); } } EndList(ListType.Ordered); HTML.AppendLine(LineBreak); } }
private void PrintLeaders() { if (Entity.Leaders != null && Entity.Leaders.Count > 0) { HTML.AppendLine(Bold("Leaders") + " " + MakeLink("[Load]", LinkOption.LoadEntityLeaders) + LineBreak); foreach (string leaderType in Entity.LeaderTypes) { HTML.AppendLine(leaderType + "s" + LineBreak); TableMaker leaderTable = new TableMaker(true); foreach (HistoricalFigure leader in Entity.Leaders[Entity.LeaderTypes.IndexOf(leaderType)]) { leaderTable.StartRow(); leaderTable.AddData(leader.Positions.Last(position => position.Title == leaderType).Began.ToString()); leaderTable.AddData(leader.ToLink()); leaderTable.EndRow(); } HTML.AppendLine(leaderTable.GetTable() + LineBreak); } } }
private void PrintTitle() { string title = Entity.ToLink(false); if (Entity.IsCiv) { title += " is a civilization of "; } else { title += " is a group of "; } title += Entity.Race.ToLower(); if (Entity.Parent != null) { title += " of " + Entity.Parent.ToLink(true, Entity); } HTML.AppendLine(Bold(title) + LineBreak + LineBreak); if (Entity.IsCiv) { HTML.AppendLine(Entity.PrintIdenticon(true) + LineBreak + LineBreak); } if (Entity.SiteHistory.Count > 0) { if (Entity.SiteHistory.Count(sitePeriod => sitePeriod.EndYear == -1) == 0) { HTML.AppendLine(Font("Last Known Sites. Year: " + (Entity.SiteHistory.Max(sitePeriod => sitePeriod.EndYear) - 1), "red")); } List <Bitmap> maps = MapPanel.CreateBitmaps(World, Entity); TableMaker mapTable = new TableMaker(false, maps[0].Width + maps[1].Width + 10); mapTable.StartRow(); mapTable.AddData(MakeLink(BitmapToHTML(maps[0]), LinkOption.LoadMap)); mapTable.AddData(MakeLink(BitmapToHTML(maps[1]), LinkOption.LoadMap)); mapTable.EndRow(); HTML.AppendLine(mapTable.GetTable()); maps[0].Dispose(); maps[1].Dispose(); } }
private void PrintPositions() { if (HistoricalFigure.Positions.Count > 0) { HTML.AppendLine(Bold("Positions") + LineBreak); StartList(ListType.Ordered); foreach (HistoricalFigure.Position position in HistoricalFigure.Positions) { HTML.AppendLine(ListItem + position.Title + " of " + position.Entity.PrintEntity() + " (" + position.Began + " - "); if (position.Ended == -1) { HTML.Append("Present)"); } else { HTML.Append(position.Ended + ")"); } } EndList(ListType.Ordered); } }
private void PrintWorships() { if (Entity.Worshipped != null && Entity.Worshipped.Count > 0) { HTML.AppendLine(Bold("Worships") + LineBreak); StartList(ListType.Unordered); foreach (HistoricalFigure worship in Entity.Worshipped) { string associations = ""; foreach (string association in worship.Spheres) { if (associations.Length > 0) { associations += ", "; } associations += association; } HTML.AppendLine(ListItem + worship.ToLink() + " (" + associations + ")"); } EndList(ListType.Unordered); } }
private void PrintSkills() { if (HistoricalFigure.Skills.Count > 0) { var described = HistoricalFigure.Skills.ConvertAll(s => SkillDictionary.lookupSkill(s)); HTML.AppendLine(Bold("Skills") + LineBreak); foreach (var group in described.Where(d => d.Category != "non").GroupBy(d => d.Category).OrderByDescending(g => g.Count())) { HTML.AppendLine("<ol class='skills'>"); foreach (var desc in group.OrderByDescending(d => d.Points)) { HTML.AppendLine(SkillToString(desc)); } HTML.AppendLine("</ol>"); } HTML.AppendLine(LineBreak); } }
private void PrintRelatedHistoricalFigures() { if (HistoricalFigure.RelatedHistoricalFigures.Count > 0) { HTML.AppendLine(Bold("Related Historical Figures") + LineBreak); StartList(ListType.Unordered); foreach (HistoricalFigureLink relation in HistoricalFigure.RelatedHistoricalFigures) { string hf = "UNKNOWN"; if (relation.HistoricalFigure != null) { hf = relation.HistoricalFigure.ToLink(); } string relationString = hf + ", " + relation.Type.GetDescription(); if (relation.Type == HistoricalFigureLinkType.Deity) { relationString += " (" + relation.Strength + "%)"; } HTML.AppendLine(ListItem + relationString); } EndList(ListType.Unordered); } }
private void PrintMiscInfo() { //if (HistoricalFigure.CurrentIdentity != null) //{ // HTML.AppendLine(Bold("Current Identity: ") + HistoricalFigure.CurrentIdentity.ToLink() + LineBreak); //} //if (HistoricalFigure.UsedIdentity != null) //{ // HTML.AppendLine(Bold("Used Identity: ") + HistoricalFigure.UsedIdentity.ToLink() + LineBreak); //} if (HistoricalFigure.Spheres.Count > 0) { string spheres = ""; foreach (string sphere in HistoricalFigure.Spheres) { if (HistoricalFigure.Spheres.Last() == sphere && HistoricalFigure.Spheres.Count > 1) { spheres += " and "; } else if (spheres.Length > 0) { spheres += ", "; } spheres += sphere; } HTML.Append(Bold("Associated Spheres: ") + spheres + LineBreak); } if (HistoricalFigure.Goal != "") { HTML.AppendLine(Bold("Goal: ") + HistoricalFigure.Goal + LineBreak); } if (HistoricalFigure.ActiveInteractions.Count > 0) { string interactions = ""; foreach (string interaction in HistoricalFigure.ActiveInteractions) { if (HistoricalFigure.ActiveInteractions.Last() == interaction && HistoricalFigure.ActiveInteractions.Count > 1) { interactions += " and "; } else if (interactions.Length > 0) { interactions += ", "; } interactions += interaction; } HTML.AppendLine(Bold("Active Interactions: ") + interactions + LineBreak); } if (HistoricalFigure.InteractionKnowledge.Count > 0) { string interactions = ""; foreach (string interaction in HistoricalFigure.InteractionKnowledge) { if (HistoricalFigure.InteractionKnowledge.Last() == interaction && HistoricalFigure.InteractionKnowledge.Count > 1) { interactions += " and "; } else if (interactions.Length > 0) { interactions += ", "; } interactions += interaction; } HTML.AppendLine(Bold("Interaction Knowledge: ") + interactions + LineBreak); } if (HistoricalFigure.HoldingArtifacts.Count > 0) { string artifacts = ""; foreach (Artifact artifact in HistoricalFigure.HoldingArtifacts) { if (HistoricalFigure.HoldingArtifacts.Last() == artifact && HistoricalFigure.HoldingArtifacts.Count > 1) { artifacts += " and "; } else if (artifacts.Length > 0) { artifacts += ", "; } artifacts += artifact.ToLink(); } HTML.AppendLine(Bold("Holding Artifacts: ") + artifacts + LineBreak); } if (HistoricalFigure.Animated) { HTML.AppendLine(Bold("Animated as: ") + HistoricalFigure.AnimatedType + LineBreak); } if (HistoricalFigure.JourneyPets.Count > 0) { string pets = ""; foreach (string pet in HistoricalFigure.JourneyPets) { if (HistoricalFigure.JourneyPets.Last() == pet && HistoricalFigure.JourneyPets.Count > 1) { pets += " and "; } else if (pets.Length > 0) { pets += ", "; } pets += pet; } HTML.AppendLine(Bold("Journey Pets: ") + pets + LineBreak); } HTML.AppendLine(LineBreak); }
private void PrintBattles() { Battle unnotableDeathBattle = null; //Temporarily make the battle that the HF died in Notable so it shows up. if (HistoricalFigure.Battles.Count > 0 && HistoricalFigure.Battles.Last().Collection.OfType <HFDied>().Count(death => death.HistoricalFigure == HistoricalFigure) == 1 && !HistoricalFigure.Battles.Last().Notable) { unnotableDeathBattle = HistoricalFigure.Battles.Last(); unnotableDeathBattle.Notable = true; } if (HistoricalFigure.Battles.Count(battle => !World.FilterBattles || battle.Notable) > 0) { HTML.AppendLine(Bold("Battles") + MakeLink("[Load]", LinkOption.LoadHFBattles)); if (World.FilterBattles) { HTML.Append(" (Notable)"); } HTML.Append(LineBreak); TableMaker battleTable = new TableMaker(true); foreach (Battle battle in HistoricalFigure.Battles.Where(battle => (!World.FilterBattles || battle.Notable) || battle.Collection.OfType <HFDied>().Count(death => death.HistoricalFigure == HistoricalFigure) > 0)) { battleTable.StartRow(); battleTable.AddData(battle.StartYear.ToString()); battleTable.AddData(battle.ToLink()); if (battle.ParentCollection != null) { battleTable.AddData("as part of"); battleTable.AddData(battle.ParentCollection.ToLink()); } string involvement = ""; if (battle.NotableAttackers.Count > 0 && battle.NotableAttackers.Contains(HistoricalFigure)) { if (battle.Collection.OfType <FieldBattle>().Any(fieldBattle => fieldBattle.AttackerGeneral == HistoricalFigure) || battle.Collection.OfType <AttackedSite>().Any(attack => attack.AttackerGeneral == HistoricalFigure)) { involvement += "Led the attack"; } else { involvement += "Fought in the attack"; } } else if (battle.NotableDefenders.Count > 0 && battle.NotableDefenders.Contains(HistoricalFigure)) { if (battle.Collection.OfType <FieldBattle>().Any(fieldBattle => fieldBattle.DefenderGeneral == HistoricalFigure) || battle.Collection.OfType <AttackedSite>().Any(attack => attack.DefenderGeneral == HistoricalFigure)) { involvement += "Led the defense"; } else { involvement += "Aided in the defense"; } } else { involvement += "A non combatant"; } if (battle.GetSubEvents().OfType <HFDied>().Any(death => death.HistoricalFigure == HistoricalFigure)) { involvement += " and died"; } battleTable.AddData(involvement); if (battle.NotableAttackers.Contains(HistoricalFigure)) { battleTable.AddData("against"); battleTable.AddData(battle.Defender.PrintEntity(), 0, TableDataAlign.Right); if (battle.Victor == battle.Attacker) { battleTable.AddData("and won"); } else { battleTable.AddData("and lost"); } } else if (battle.NotableDefenders.Contains(HistoricalFigure)) { battleTable.AddData("against"); battleTable.AddData(battle.Attacker.PrintEntity(), 0, TableDataAlign.Right); if (battle.Victor == battle.Defender) { battleTable.AddData("and won"); } else { battleTable.AddData("and lost"); } } battleTable.AddData("Deaths: " + (battle.AttackerDeathCount + battle.DefenderDeathCount) + ")"); battleTable.EndRow(); } HTML.AppendLine(battleTable.GetTable() + LineBreak); } if (World.FilterBattles && HistoricalFigure.Battles.Count(battle => !battle.Notable) > 0) { HTML.AppendLine(Bold("Battles") + " (Unnotable): " + HistoricalFigure.Battles.Where(battle => !battle.Notable).Count() + LineBreak + LineBreak); } if (unnotableDeathBattle != null) { unnotableDeathBattle.Notable = false; } }
private void PrintWars() { if (Entity.Wars.Count(war => !World.FilterBattles || war.Notable) > 0) { HTML.AppendLine(Bold("Wars") + " " + MakeLink("[Load]", LinkOption.LoadEntityWars) + LineBreak); TableMaker warTable = new TableMaker(true); foreach (War war in Entity.Wars.Where(war => !World.FilterBattles || war.Notable)) { warTable.StartRow(); string endString; if (war.EndYear == -1) { endString = "Present"; } else { endString = war.EndYear.ToString(); } warTable.AddData(war.StartYear + " - " + endString); warTable.AddData(war.ToLink()); if (war.Attacker == Entity) { warTable.AddData("waged against"); warTable.AddData(war.Defender.PrintEntity(), 0, TableDataAlign.Right); warTable.AddData(""); } else if (war.Attacker.Parent == Entity) { warTable.AddData("waged against"); warTable.AddData(war.Defender.PrintEntity(), 0, TableDataAlign.Right); warTable.AddData("by " + war.Attacker.ToLink()); } else if (war.Defender == Entity) { warTable.AddData("defended against"); warTable.AddData(war.Attacker.PrintEntity(), 0, TableDataAlign.Right); warTable.AddData(""); } else if (war.Defender.Parent == Entity) { warTable.AddData("defended against"); warTable.AddData(war.Attacker.PrintEntity(), 0, TableDataAlign.Right); warTable.AddData("by " + war.Defender.ToLink()); } int battleVictories = 0, battleLossses = 0, sitesDestroyed = 0, sitesLost = 0, kills, losses; if (war.Attacker == Entity || war.Attacker.Parent == Entity) { battleVictories = war.AttackerVictories.OfType <Battle>().Count(); battleLossses = war.DefenderVictories.OfType <Battle>().Count(); sitesDestroyed = war.AttackerVictories.OfType <SiteConquered>().Count(conquering => conquering.ConquerType != SiteConqueredType.Pillaging); sitesLost = war.DefenderVictories.OfType <SiteConquered>().Count(conquering => conquering.ConquerType != SiteConqueredType.Pillaging); } else if (war.Defender == Entity || war.Defender.Parent == Entity) { battleVictories = war.DefenderVictories.OfType <Battle>().Count(); battleLossses = war.AttackerVictories.OfType <Battle>().Count(); sitesDestroyed = war.DefenderVictories.OfType <SiteConquered>().Count(conquering => conquering.ConquerType != SiteConqueredType.Pillaging); sitesLost = war.AttackerVictories.OfType <SiteConquered>().Count(conquering => conquering.ConquerType != SiteConqueredType.Pillaging); } kills = war.Collections.OfType <Battle>().Where(battle => battle.Attacker == Entity || battle.Attacker.Parent == Entity).Sum(battle => battle.DefenderDeathCount) + war.Collections.OfType <Battle>().Where(battle => battle.Defender == Entity || battle.Defender.Parent == Entity).Sum(battle => battle.AttackerDeathCount); losses = war.Collections.OfType <Battle>().Where(battle => battle.Attacker == Entity || battle.Attacker.Parent == Entity).Sum(battle => battle.AttackerDeathCount) + war.Collections.OfType <Battle>().Where(battle => battle.Defender == Entity || battle.Defender.Parent == Entity).Sum(battle => battle.DefenderDeathCount); warTable.AddData("(V/L)"); warTable.AddData("Battles:"); warTable.AddData(battleVictories.ToString(), 0, TableDataAlign.Right); warTable.AddData("/"); warTable.AddData(battleLossses.ToString()); warTable.AddData("Sites:"); warTable.AddData(sitesDestroyed.ToString(), 0, TableDataAlign.Right); warTable.AddData("/"); warTable.AddData(sitesLost.ToString()); warTable.AddData("Deaths:"); warTable.AddData(kills.ToString(), 0, TableDataAlign.Right); warTable.AddData("/"); warTable.AddData(losses.ToString()); warTable.EndRow(); } HTML.AppendLine(warTable.GetTable() + LineBreak); } }
private void PrintTitle() { HTML.AppendLine("<h1>" + HistoricalFigure.Name + "</h1>"); string title = string.Empty; if (HistoricalFigure.Deity) { title = "Is a deity"; if (HistoricalFigure.WorshippedBy != null) { title += " that occurs in the myths of " + HistoricalFigure.WorshippedBy.ToLink() + ". "; } else { title += ". "; } title += HistoricalFigure.ToLink(false, HistoricalFigure) + " is most often depicted as a " + HistoricalFigure.GetRaceTitleString() + ". "; } else if (HistoricalFigure.Force) { title = "Is a force said to permeate nature. "; if (HistoricalFigure.WorshippedBy != null) { title += "Worshipped by " + HistoricalFigure.WorshippedBy.ToLink(); } } else { if (HistoricalFigure.DeathYear >= 0) { title += "Was a " + HistoricalFigure.GetRaceTitleString(); } else { title += "Is a " + HistoricalFigure.GetRaceTitleString(); } title += " born in " + HistoricalFigure.BirthYear; if (HistoricalFigure.DeathYear > 0) { HFDied death = HistoricalFigure.Events.OfType <HFDied>().First(hfDeath => hfDeath.HistoricalFigure == HistoricalFigure); title += " and died in " + HistoricalFigure.DeathYear + " (" + death.Cause.GetDescription() + ")"; if (death.Slayer != null) { title += " by " + death.Slayer.ToLink(); } else if (death.SlayerRace != "UNKNOWN" && death.SlayerRace != "-1") { title += " by a " + death.SlayerRace.ToLower(); } if (death.PrintParentCollection().Length > 0) { title += ", " + death.PrintParentCollection().Replace("In ", "in "); } } if (!title.EndsWith(". ")) { title += ". "; } title += LineBreak + "Caste: " + HistoricalFigure.Caste + LineBreak + "Type: " + HistoricalFigure.AssociatedType; } HTML.AppendLine("<b>" + title + "</b></br>"); }
private void PrintTitle() { string title = Entity.ToLink(false); if (Entity.IsCiv) { title += " is a civilization"; } else { title += " is a "; switch (Entity.Type) { case EntityType.Civilization: title += "civilization"; break; case EntityType.NomadicGroup: title += "nomadic group"; break; case EntityType.MigratingGroup: title += "migrating group"; break; case EntityType.Outcast: title += "collection of outcasts"; break; case EntityType.Religion: title += "religion"; break; case EntityType.SiteGovernment: title += "site government"; break; case EntityType.PerformanceTroupe: title += "performance troupe"; break; default: title += "group"; break; } } if (!string.IsNullOrWhiteSpace(Entity.Race) && Entity.Race != "Unknown") { title += " of "; title += Entity.Race.ToLower(); } if (Entity.Parent != null) { title += " of " + Entity.Parent.ToLink(true, Entity); } title += "."; HTML.AppendLine("<h1>" + title + "</h1></br>"); if (Entity.IsCiv) { HTML.AppendLine(Entity.PrintIdenticon(true) + LineBreak + LineBreak); } if (Entity.SiteHistory.Count > 0) { if (Entity.SiteHistory.Count(sitePeriod => sitePeriod.EndYear == -1) == 0) { HTML.AppendLine(Font("Last Known Sites. Year: " + (Entity.SiteHistory.Max(sitePeriod => sitePeriod.EndYear) - 1), "red")); } List <Bitmap> maps = MapPanel.CreateBitmaps(World, Entity); TableMaker mapTable = new TableMaker(); mapTable.StartRow(); mapTable.AddData(MakeLink(BitmapToHTML(maps[0]), LinkOption.LoadMap)); mapTable.AddData(MakeLink(BitmapToHTML(maps[1]), LinkOption.LoadMap)); mapTable.EndRow(); HTML.AppendLine(mapTable.GetTable() + "</br>"); maps[0].Dispose(); maps[1].Dispose(); } }