-
- private void GenerateMapHTML()
- {
- string mapFilename = Path.Combine(path, "Automap.html");
-
- int TopNorth = chunkTopMetadata.North_mostChunk;
- int TopSouth = chunkTopMetadata.South_mostChunk;
- int TopEast = chunkTopMetadata.East_mostChunk;
- int TopWest = chunkTopMetadata.West_mostChunk;
-
- using (StreamWriter outputText = new StreamWriter(File.Open(mapFilename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)))
- {
- using (HtmlTextWriter tableWriter = new HtmlTextWriter(outputText))
- {
- tableWriter.BeginRender();
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Html);
-
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Head);
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Title);
- tableWriter.WriteEncodedText("Generated Automap");
- tableWriter.RenderEndTag();
- //CSS style here
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Style);
- tableWriter.Write(stylesFile.ToText());
- tableWriter.RenderEndTag();//</style>
-
- tableWriter.RenderEndTag();
-
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Body);
- tableWriter.RenderBeginTag(HtmlTextWriterTag.P);
- tableWriter.WriteEncodedText($"Created {DateTimeOffset.UtcNow.ToString("u")}");
- tableWriter.RenderEndTag();
- tableWriter.RenderBeginTag(HtmlTextWriterTag.P);
- tableWriter.WriteEncodedText($"W:{TopWest}, E: {TopEast}, N:{TopNorth}, S:{TopSouth} ");
- tableWriter.RenderEndTag();
- tableWriter.WriteLine();
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Table);
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Caption);
- tableWriter.WriteEncodedText($"Start: {startChunkColumn}, Seed: {ClientAPI.World.Seed}\n");
- tableWriter.RenderEndTag();
-
- //################ X-Axis <thead> #######################
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Thead);
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
-
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Th);
- tableWriter.Write("N, W");
- tableWriter.RenderEndTag();
-
- for (int xAxisT = TopWest; xAxisT <= TopEast; xAxisT++)
- {
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Th);
- tableWriter.Write(xAxisT);
- tableWriter.RenderEndTag();
- }
-
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Th);
- tableWriter.Write("N, E");
- tableWriter.RenderEndTag();
-
- tableWriter.RenderEndTag();
- tableWriter.RenderEndTag();
- //###### </thead> ################################
-
- //###### <tbody> - Chunk rows & Y-axis cols
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Tbody);
-
- //######## <tr> for every vertical row
- for (int yAxis = TopNorth; yAxis <= TopSouth; yAxis++)
- {
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Td);
- tableWriter.Write(yAxis);//legend: Y-axis
- tableWriter.RenderEndTag();
-
- for (int xAxis = TopWest; xAxis <= TopEast; xAxis++)
- {
- //###### <td> #### for chunk shard
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Td);
- var colLoc = new Vec2i(xAxis, yAxis);
- if (chunkTopMetadata.Contains(colLoc))
- {
- ColumnMeta meta = chunkTopMetadata[colLoc];
- //Tooltip first
- tableWriter.AddAttribute(HtmlTextWriterAttribute.Class, "tooltip");
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Div);
-
- tableWriter.AddAttribute(HtmlTextWriterAttribute.Src, $"{xAxis}_{yAxis}.png");
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Img);
- tableWriter.RenderEndTag();
- // <span class="tooltiptext">Tooltip text
- tableWriter.AddAttribute(HtmlTextWriterAttribute.Class, "tooltiptext");
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Span);
-
- StringBuilder tooltipText = new StringBuilder();
- tooltipText.Append($"{meta.Location.PrettyCoords(ClientAPI)} ");
- tooltipText.Append($" Max-Height: {meta.YMax}, Temp: {meta.Temperature.ToString("F1")} ");
- tooltipText.Append($" Rainfall: {meta.Rainfall.ToString("F1")}, ");
- tooltipText.Append($" Shrubs: {meta.ShrubDensity.ToString("F1")}, ");
- tooltipText.Append($" Forest: {meta.ForestDensity.ToString("F1")}, ");
- tooltipText.Append($" Fertility: {meta.Fertility.ToString("F1")}, ");
-
- if (meta.RockRatio != null)
- {
- foreach (KeyValuePair<int, uint> blockID in meta.RockRatio)
- {
- var block = ClientAPI.World.GetBlock(blockID.Key);
- tooltipText.AppendFormat(" {0} × {1},\t", block.Code.GetName(), meta.RockRatio[blockID.Key]);
- }
- }
-
- tableWriter.WriteEncodedText(tooltipText.ToString());
-
- tableWriter.RenderEndTag();//</span>
-
-
- tableWriter.RenderEndTag();//</div> --tooltip enclosure
- }
- else
- {
- tableWriter.Write("?");
- }
-
- tableWriter.RenderEndTag();
- }//############ </td> ###########
-
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Td);
- tableWriter.Write(yAxis);//legend: Y-axis
- tableWriter.RenderEndTag();
-
- tableWriter.RenderEndTag();
-
- }
- tableWriter.RenderEndTag();
-
- //################ X-Axis <tfoot> #######################
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Tfoot);
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
-
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Td);
- tableWriter.Write("S, W");
- tableWriter.RenderEndTag();
-
- for (int xAxisB = TopWest; xAxisB <= TopEast; xAxisB++)
- {
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Td);
- tableWriter.Write(xAxisB);
- tableWriter.RenderEndTag();
- }
-
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Td);
- tableWriter.Write("S, E");
- tableWriter.RenderEndTag();
-
- tableWriter.RenderEndTag();
- tableWriter.RenderEndTag();
- //###### </tfoot> ################################
-
-
- tableWriter.RenderEndTag();//</table>
-
- //############## POI list #####################
- tableWriter.RenderBeginTag(HtmlTextWriterTag.P);
- tableWriter.WriteLine("Points of Interest");
- tableWriter.RenderEndTag();
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Ul);
- foreach (var poi in this.POIs)
- {
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Li);
- tableWriter.WriteEncodedText(poi.Location.PrettyCoords(this.ClientAPI) + "\t");
- tableWriter.WriteEncodedText(poi.Notes + "\t");
- tableWriter.WriteEncodedText(poi.Timestamp.ToString("u"));
- tableWriter.RenderEndTag();
- }
-
- foreach (var eoi in this.EOIs.PointsList)
- {
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Li);
- tableWriter.WriteEncodedText(eoi.Location.PrettyCoords(this.ClientAPI) + "\t");
- tableWriter.WriteEncodedText(eoi.Notes + "\t");
- tableWriter.WriteEncodedText(eoi.Timestamp.ToString("u"));
- tableWriter.RenderEndTag();
- }
-
- tableWriter.RenderEndTag();
-
-
-
-
- tableWriter.RenderEndTag();//### </BODY> ###
-
- tableWriter.EndRender();
- tableWriter.Flush();
- }
- outputText.Flush();
- }
-
- Logger.VerboseDebug("Generated HTML map");
- }
-