commit e3d083e530a03c99f80d6626ec7352661ce754f4 Author: Aaron Yarborough Date: Thu Oct 4 21:49:16 2018 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..150691a --- /dev/null +++ b/.gitignore @@ -0,0 +1,217 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions diff --git a/GraalGmapGenerator.sln b/GraalGmapGenerator.sln new file mode 100644 index 0000000..75a4a75 --- /dev/null +++ b/GraalGmapGenerator.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2043 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraalGmapGenerator", "GraalGmapGenerator\GraalGmapGenerator.csproj", "{C7C953DE-6E2D-4876-8252-B85431CB85DC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C7C953DE-6E2D-4876-8252-B85431CB85DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C7C953DE-6E2D-4876-8252-B85431CB85DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C7C953DE-6E2D-4876-8252-B85431CB85DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C7C953DE-6E2D-4876-8252-B85431CB85DC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9A36089A-CB6F-4648-8C44-DA69AA898EC1} + EndGlobalSection +EndGlobal diff --git a/GraalGmapGenerator/Enums/LevelType.cs b/GraalGmapGenerator/Enums/LevelType.cs new file mode 100644 index 0000000..d9c2547 --- /dev/null +++ b/GraalGmapGenerator/Enums/LevelType.cs @@ -0,0 +1,8 @@ +namespace GraalGmapGenerator.Enums +{ + public enum LevelType + { + Graal, + Nw + } +} diff --git a/GraalGmapGenerator/Gmap.cs b/GraalGmapGenerator/Gmap.cs new file mode 100644 index 0000000..18fd532 --- /dev/null +++ b/GraalGmapGenerator/Gmap.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace GraalGmapGenerator +{ + public class Gmap + { + public string Name { get; set; } + + public int Width { get; set; } + + public int Height { get; set; } + + public bool NoAutomapping { get; set; } + + public bool LoadFullMap { get; set; } + + #region Constructors + + public Gmap() + { + } + + public Gmap( + string name, + int width, + int height, + bool noAutomapping = false, + bool loadFullMap = false) + : this() + { + Name = name; + Width = width; + Height = height; + NoAutomapping = noAutomapping; + LoadFullMap = loadFullMap; + } + + #endregion + + + } +} diff --git a/GraalGmapGenerator/GmapBuilder.cs b/GraalGmapGenerator/GmapBuilder.cs new file mode 100644 index 0000000..c4c8ab6 --- /dev/null +++ b/GraalGmapGenerator/GmapBuilder.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace GraalGmapGenerator +{ + public class GmapBuilder + { + private string _name; + private int _width; + private int _height; + private bool _noAutomapping; + private bool _loadFullMap; + + public GmapBuilder SetName(string name) + { + _name = name; + return this; + } + + public GmapBuilder SetDimensions(int width, int height) + { + _width = width; + _height = height; + + return this; + } + + public GmapBuilder NoAutomapping() + { + _noAutomapping = true; + return this; + } + + public GmapBuilder LoadFullMap() + { + _loadFullMap = true; + return this; + } + + /// + /// Builds the gmap + /// + public Gmap Build() + { + return new Gmap(_name, _width, _height, _noAutomapping, _loadFullMap); + } + } +} diff --git a/GraalGmapGenerator/GmapContentGenerator.cs b/GraalGmapGenerator/GmapContentGenerator.cs new file mode 100644 index 0000000..726203b --- /dev/null +++ b/GraalGmapGenerator/GmapContentGenerator.cs @@ -0,0 +1,102 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using GraalGmapGenerator.Enums; + +namespace GraalGmapGenerator +{ + public class GmapContentGenerator + { + private LevelType _levelType = LevelType.Nw; + + public GmapContentGenerator() + { + } + + public GmapContentGenerator(LevelType levelType) + { + _levelType = levelType; + } + + /// + /// Returns the gmap file contents + /// + /// + public string Generate(Gmap gmap) + { + var stringBuilder = new StringBuilder(); + + stringBuilder.AppendLine("GRMAP001"); + stringBuilder.AppendLine($"WIDTH {gmap.Width}"); + stringBuilder.AppendLine($"HEIGHT {gmap.Height}"); + + if (gmap.NoAutomapping) + stringBuilder.AppendLine("NOAUTOMAPPING"); + + if (gmap.LoadFullMap) + stringBuilder.AppendLine("LOADFULLMAP"); + + stringBuilder.AppendLine("LEVELNAMES"); + + var levelNames = GetLevelNames(gmap); + for (var i = 0; i < levelNames.Count(); i++) + { + // Start a new line once the current line has + // hit the width of the gmap + if (i > 0 && i % gmap.Width == 0) + stringBuilder.AppendLine(); + + var levelName = GetLevelName(i, gmap.Name, _levelType); + stringBuilder.Append($"\"{levelName}\""); + + // If at the end of the row + + // lol hmmm no + // oh maybe + // we'll see 0.0)>[::] + + // Only append a comma if its NOT the end of the row + if (i % gmap.Width < (gmap.Width - 1)) + { + stringBuilder.Append(','); + } + } + + stringBuilder.AppendLine(); + stringBuilder.Append("LEVELNAMESEND"); + + return stringBuilder.ToString(); + } + + public IEnumerable GetLevelNames(Gmap gmap) + { + var levelNames = new List(); + + for (var i = 0; i < (gmap.Width * gmap.Height); i++) + { + levelNames.Add(GetLevelName(i, gmap.Name, _levelType)); + } + + return levelNames; + } + + private string GetLevelName(int index, string name, LevelType levelType) + { + string extension; + + switch (levelType) + { + default: + case LevelType.Nw: + extension = ".nw"; + break; + + case LevelType.Graal: + extension = ".graal"; + break; + } + + return $"{name}_{index}{extension}"; + } + } +} diff --git a/GraalGmapGenerator/GraalGmapGenerator.csproj b/GraalGmapGenerator/GraalGmapGenerator.csproj new file mode 100644 index 0000000..d6d982e --- /dev/null +++ b/GraalGmapGenerator/GraalGmapGenerator.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp2.0 + + + + + Always + + + + diff --git a/GraalGmapGenerator/Program.cs b/GraalGmapGenerator/Program.cs new file mode 100644 index 0000000..5d420a6 --- /dev/null +++ b/GraalGmapGenerator/Program.cs @@ -0,0 +1,93 @@ +using GraalGmapGenerator.Enums; +using System; +using System.IO; + +namespace GraalGmapGenerator +{ + class Program + { + const string TemplateFile = "template.nw"; + + static void Main(string[] args) + { + var mapBuilder = new GmapBuilder(); + + Console.WriteLine("Gmap name..."); + mapBuilder.SetName(Console.ReadLine()); + + Console.WriteLine("Gmap width (in levels, for example: 8)..."); + // need to handle errors + int width = 0; + do + { + var isValid = int.TryParse(Console.ReadLine(), out width); + if (!isValid) + { + Console.WriteLine("Please enter a valid gmap width!"); + } + } while (width == 0); + + Console.WriteLine("Gmap height (in levels, for example: 5)..."); + int height = 0; + do + { + var isValid = int.TryParse(Console.ReadLine(), out height); + if (!isValid) + { + Console.WriteLine("Please enter a valid gmap height!"); + } + } while (width == 0); + + mapBuilder.SetDimensions(width, height); + + Console.WriteLine("Load full map? (y/n)..."); + if (Console.ReadLine() == "y") + { + mapBuilder.LoadFullMap(); + } + + Console.WriteLine("No automapping? (y/n)..."); + if (Console.ReadLine() == "y") + { + mapBuilder.NoAutomapping(); + } + + Console.WriteLine("Generating gmap..."); + var gmap = mapBuilder.Build(); + + Console.WriteLine("Saving gmap..."); + SaveGmap(gmap); + + Console.WriteLine("Done!"); + Console.ReadLine(); + } + + static void SaveGmap(Gmap gmap) + { + const string OutputDirRoot = "gmaps"; + var outputDir = $"{OutputDirRoot}/{gmap.Name}"; + + // Create output directory if it doesn't exist + if (!Directory.Exists(OutputDirRoot)) + { + Directory.CreateDirectory(OutputDirRoot); + } + + // Create gmap output directory + Directory.CreateDirectory(outputDir); + + var gmapContentGen = new GmapContentGenerator(LevelType.Nw); + + // Create a new level file for each level + var levelNames = gmapContentGen.GetLevelNames(gmap); + foreach (var level in levelNames) + { + File.Copy(TemplateFile, $"{outputDir}/{level}"); + } + + // Create the gmap file + var gmapContent = gmapContentGen.Generate(gmap); + File.AppendAllText($"{outputDir}/{gmap.Name}.gmap", gmapContent); + } + } +} diff --git a/GraalGmapGenerator/template.nw b/GraalGmapGenerator/template.nw new file mode 100644 index 0000000..ab5ecbf --- /dev/null +++ b/GraalGmapGenerator/template.nw @@ -0,0 +1,65 @@ +GLEVNW01 +BOARD 0 0 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 1 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 2 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 3 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 4 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 5 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 6 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 7 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 8 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 9 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 10 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 11 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 12 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 13 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 14 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 15 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 16 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 17 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 18 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 19 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 20 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 21 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 22 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 23 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 24 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 25 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 26 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 27 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 28 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 29 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 30 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 31 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 32 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 33 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 34 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 35 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 36 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 37 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 38 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 39 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 40 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 41 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 42 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 43 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 44 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 45 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 46 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 47 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 48 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 49 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 50 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 51 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 52 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 53 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 54 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 55 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 56 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 57 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 58 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 59 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 60 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 61 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 62 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ +BOARD 0 63 64 0 H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..0082a48 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +GraalGmapGenerator