- 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>
-
- //## JSON map-state data ######################
- tableWriter.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript");
- tableWriter.RenderBeginTag(HtmlTextWriterTag.Script);
-
- tableWriter.Write("var available_images = [");
-
- foreach (var shard in this.chunkTopMetadata) {
- tableWriter.Write("{{X:{0},Y:{1} }}, ", shard.Location.X, shard.Location.Y);
- }
-
- tableWriter.Write(" ];\n");
-
- tableWriter.RenderEndTag( );
-
- 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( );
- }