annotate api/Exporters/WarFoundryHtmlExporter.cs @ 237:ec7fe85116cf

Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all" * Output "all" and number for "-1" numeric amount * Clean up export code
author IBBoard <dev@ibboard.co.uk>
date Sun, 21 Feb 2010 20:13:44 +0000
parents ece26f6a62f3
children 22509bd03ca2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
130
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 // This file (WarFoundryHtmlExporter.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using System;
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
6 using System.Collections.Generic;
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
7 using System.IO;
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
8 using System.Text;
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
9 using System.Xml;
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
10 using System.Xml.Schema;
164
91f7b8da0b53 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 163
diff changeset
11 using IBBoard.Lang;
163
395c8042dc03 Fixes #144: HTML generation may need network connection
IBBoard <dev@ibboard.co.uk>
parents: 154
diff changeset
12 using IBBoard.Xml;
216
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
13 using IBBoard.WarFoundry.API.Objects;
214
1b718b67f7f6 Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents: 208
diff changeset
14 using IBBoard.WarFoundry.API.Util;
130
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 namespace IBBoard.WarFoundry.API.Exporters
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 {
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 /// <summary>
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 /// Custom exporter that exports an army as a basic HTML file
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 /// </summary>
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 public class WarFoundryHtmlExporter : IWarFoundryExporter
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 {
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 private static WarFoundryHtmlExporter exporter;
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25 public static WarFoundryHtmlExporter GetDefault()
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 {
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 if (exporter == null)
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 {
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 exporter = new WarFoundryHtmlExporter();
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 }
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 return exporter;
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 }
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35 private WarFoundryHtmlExporter()
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 {
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 //Hide constructor
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38 }
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 public void ExportArmy(Army army, string path)
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 {
164
91f7b8da0b53 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 163
diff changeset
42 XmlDocument doc = new XmlDocument();
91f7b8da0b53 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 163
diff changeset
43 CustomXmlResolver resolver = new CustomXmlResolver();
227
bf4f04f385d0 * Update exporter to look in "schemas" folder to match r429
IBBoard <dev@ibboard.co.uk>
parents: 216
diff changeset
44 resolver.AddMapping("-//W3C//DTD XHTML 1.0 Strict//EN", new Uri("file://" + IBBoard.Constants.ExecutablePath + "/schemas/xhtml1-strict.dtd"));
163
395c8042dc03 Fixes #144: HTML generation may need network connection
IBBoard <dev@ibboard.co.uk>
parents: 154
diff changeset
45 doc.XmlResolver = resolver;
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
46 doc.AppendChild(doc.CreateDocumentType("html", "-//W3C//DTD XHTML 1.0 Strict//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd", null));
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
47 XmlElement html = doc.CreateElement("html");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
48 doc.AppendChild(html);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
49 XmlElement head = doc.CreateElement("head");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
50 html.AppendChild(head);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
51 XmlElement title = doc.CreateElement("title");
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
52 title.InnerXml = army.Name;
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
53 head.AppendChild(title);
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
54 XmlElement style = doc.CreateElement("style");
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
55 style.InnerText = "table, th, td { border: 1px solid #000 }";
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
56 head.AppendChild(style);
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
57 XmlElement body = doc.CreateElement("body");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
58 html.AppendChild(body);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
59 XmlElement header = doc.CreateElement("h1");
143
7f13ffcb8765 Re #164: Show unit cost in army tree
IBBoard <dev@ibboard.co.uk>
parents: 134
diff changeset
60 header.InnerText = Translation.GetTranslation("armyHtmlOutputBodyHeader", "{0} - {1}pts", army.Name, army.Points);
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
61 body.AppendChild(header);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
62
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
63 foreach (XmlElement table in CreateTables(army, doc))
154
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
64 {
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
65 if (!IsTableOnlyHeader(table))
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
66 {
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
67 body.AppendChild(table);
153
dd892567f054 Fixes #174: HTML output can add empty tables for stat lines
IBBoard <dev@ibboard.co.uk>
parents: 143
diff changeset
68 }
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
69 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
70
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
71 StreamWriter writer = new StreamWriter(path, false);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
72
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
73 try
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
74 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
75 writer.Write(doc.OuterXml);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
76 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
77 finally
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
78 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
79 writer.Close();
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
80 }
154
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
81 }
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
82
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
83 private bool IsTableOnlyHeader(XmlElement table)
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
84 {
4a02c07278e7 Re #185: Problems with decimals in race definitions
IBBoard <dev@ibboard.co.uk>
parents: 153
diff changeset
85 return table.ChildNodes.Count == 1;
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
86 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
87
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
88 private XmlElement[] CreateTables(Army army, XmlDocument doc)
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
89 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
90 Dictionary<string, XmlElement> tables = new Dictionary<string, XmlElement>();
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
91
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
92 foreach (SystemStats statSets in army.GameSystem.SystemStats)
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
93 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
94 tables[statSets.ID] = CreateTable(statSets, doc);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
95 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
96
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
97 foreach (Unit unit in army.GetUnits())
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
98 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
99 tables[unit.UnitType.StatsID].AppendChild(CreateUnitRow(unit, doc));
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
100 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
101
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
102 return DictionaryUtils.ToArray(tables);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
103 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
104
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
105 private XmlElement CreateTable(SystemStats stats, XmlDocument doc)
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
106 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
107 XmlElement table = doc.CreateElement("table");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
108 XmlElement headerRow = doc.CreateElement("tr");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
109 table.AppendChild(headerRow);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
110 XmlElement name = doc.CreateElement("th");
228
ece26f6a62f3 Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents: 227
diff changeset
111 name.InnerText = Translation.GetTranslation("armyHtmlOutputTableHeaderUnitName", "name");
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
112 headerRow.AppendChild(name);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
113
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
114 foreach (StatSlot stat in stats.StatSlots)
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
115 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
116 XmlElement statHeader = doc.CreateElement("th");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
117 statHeader.InnerText = stat.Name;
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
118 headerRow.AppendChild(statHeader);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
119 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
120
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
121 XmlElement notes = doc.CreateElement("th");
228
ece26f6a62f3 Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents: 227
diff changeset
122 notes.InnerText = Translation.GetTranslation("armyHtmlOutputTableHeaderUnitNotes", "name");;
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
123 headerRow.AppendChild(notes);
132
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
124
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
125 XmlElement points = doc.CreateElement("th");
228
ece26f6a62f3 Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents: 227
diff changeset
126 points.InnerText = Translation.GetTranslation("armyHtmlOutputTableHeaderUnitPoints", "name");;
132
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
127 headerRow.AppendChild(points);
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
128
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
129 return table;
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
130 }
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
132 private XmlElement CreateUnitRow(Unit unit, XmlDocument doc)
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
133 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
134 XmlElement row = doc.CreateElement("tr");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
135 XmlElement name = doc.CreateElement("td");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
136 name.InnerText = unit.Name;
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
137 row.AppendChild(name);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
138
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
139 foreach (Stat stat in unit.UnitStatsArray)
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
140 {
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
141 XmlElement statCell = doc.CreateElement("td");
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
142 statCell.InnerText = stat.SlotValueString;
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
143 row.AppendChild(statCell);
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
144 }
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
145
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
146 StringBuilder sb = new StringBuilder();
208
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
147 UnitEquipmentItem[] unitEquipment = unit.GetEquipment ();
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
148
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
149 if (unitEquipment.Length > 0)
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
150 {
208
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
151 bool addSeparator = false;
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
152
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
153 foreach (UnitEquipmentItem equip in unitEquipment)
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
154 {
208
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
155 if (!addSeparator)
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
156 {
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
157 addSeparator = true;
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
158 }
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
159 else
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
160 {
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
161 sb.Append(", ");
216
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
162 }
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
163
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
164 string amountString;
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
165 double amount = UnitEquipmentUtil.GetEquipmentAmount(unit, equip);
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
166
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
167 if (UnitEquipmentUtil.GetEquipmentAmountIsRatio(unit, equip))
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
168 {
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
169
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
170 if (amount == 100)
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
171 {
237
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
172 amountString = GetEquipmentAmountAllTranslation(unit);
216
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
173 }
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
174 else
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
175 {
237
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
176 int number = UnitEquipmentUtil.GetEquipmentAmountTaken(unit, equip);
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
177 amountString = GetEquipmentAmountRatioTranslation (amount, number);
216
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
178 }
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
179 }
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
180 else
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
181 {
237
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
182 if (amount == -1)
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
183 {
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
184 amountString = GetEquipmentAmountAllTranslation(unit);
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
185 }
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
186 else
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
187 {
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
188 amountString = GetEquipmentAmountNumberTranslation((int)amount);
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
189 }
216
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
190 }
65553d2c8612 * Line-ending fix
IBBoard <dev@ibboard.co.uk>
parents: 214
diff changeset
191
214
1b718b67f7f6 Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents: 208
diff changeset
192 sb.Append(Translation.GetTranslation("armyHtmlExportEquipAmountRatio", "{0} for {1}", equip.Name, amountString));
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
193 }
208
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
194
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
195 sb.Append(". ");
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
196 }
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
197
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
198 ICollection<Ability> abilities = unit.Abilities;
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
199
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
200 if (abilities.Count > 0)
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
201 {
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
202 bool addSeparator = false;
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
203
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
204 foreach (Ability ability in abilities)
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
205 {
208
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
206 if (!addSeparator)
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
207 {
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
208 addSeparator = true;
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
209 }
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
210 else
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
211 {
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
212 sb.Append(", ");
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
213 }
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
214
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
215 sb.Append(ability.Name);
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
216 }
208
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
217
e8e9026dd4ea Fixes #216: Export unit abilities in to HTML
IBBoard <dev@ibboard.co.uk>
parents: 164
diff changeset
218 sb.Append(". ");
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
219 }
132
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
220
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
221 XmlElement notes = doc.CreateElement("td");
134
57f7b80757ea Re #68: Export army to another format
IBBoard <dev@ibboard.co.uk>
parents: 132
diff changeset
222 notes.InnerText = sb.ToString();
132
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
223 row.AppendChild(notes);
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
224
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
225 XmlElement points = doc.CreateElement("td");
143
7f13ffcb8765 Re #164: Show unit cost in army tree
IBBoard <dev@ibboard.co.uk>
parents: 134
diff changeset
226 points.InnerText = unit.Points.ToString();
132
e9c415839462 Re #68: Add "export" of army
IBBoard <dev@ibboard.co.uk>
parents: 131
diff changeset
227 row.AppendChild(points);
131
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
228
5145b7c61ae0 Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents: 130
diff changeset
229 return row;
130
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
230 }
237
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
231
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
232 private string GetEquipmentAmountRatioTranslation (double amount, int number)
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
233 {
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
234 return Translation.GetTranslation ("armyHtmlExportEquipAmountPercentage", "{0}% ({1})", amount, number);
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
235 }
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
236
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
237 private string GetEquipmentAmountNumberTranslation(int amount)
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
238 {
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
239 return Translation.GetTranslation("armyHtmlExportEquipAmountNumber", "{0}", amount);
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
240 }
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
241
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
242 private string GetEquipmentAmountAllTranslation(Unit unit)
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
243 {
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
244 return Translation.GetTranslation("armyHtmlExportEquipAmountAll", "all ({1})", 100, unit.Size);
ec7fe85116cf Fixes #254: Basic HTML export outputs "-1" for equipment amounts instead of "all"
IBBoard <dev@ibboard.co.uk>
parents: 228
diff changeset
245 }
130
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
246 }
e147a1e9399b Re #68: Add "export army list" function
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
247 }