public static string WriteMTilesets(string objFolder, string outputDir, GisPosition gisPosition, bool merge = false) { var tileConverter = new TilesConverter(objFolder, outputDir, gisPosition) { MergeTileJsonFiles = merge }; return(tileConverter.Run()); //var objFiles = Directory.GetFiles(objFolder, "*.obj"); //var tilesetJson = Utility.CombineTilesets(outputDir, gisPosition, objFiles); //return tilesetJson; }
public static (FileStream, string) getNewProblem(string suit = "s") { var dirChar = Path.DirectorySeparatorChar; var outputDirPath = string.Join(dirChar, Assembly.GetExecutingAssembly().Location.Split(dirChar).SkipLast(1).Append(resourcesDirName).Append(outputDirName)); var offset = 0; if (suit == "s") { offset = 18; } else if (suit == "p") { offset = 9; } var rd = new Random(); int[] hand; string handStr = ""; int shanten = 7; bool handAlreadyExist = true; var nbIter = 0; var shantenCalc = new ShantenCalculator(); var availableTiles = new List <int>(); for (int i = 0; i <= 8; i++) { availableTiles.Add(i); availableTiles.Add(i); availableTiles.Add(i); availableTiles.Add(i); } while (shanten != 0 || handAlreadyExist) { hand = new int[34]; for (int i = 1; i <= 13; i++) { var roll = rd.Next(0, availableTiles.Count); var value = availableTiles[roll]; hand[offset + value]++; availableTiles.RemoveAt(roll); } shanten = shantenCalc.Calculate_shanten(hand); nbIter++; var hand136 = TilesConverter.to_136_array(hand.ToList()); handStr = TilesConverter.to_one_line_string(hand136); var outputFileName = $"{hand}.png"; var outputFilePath = string.Join(dirChar, new string[] { outputDirPath, outputFileName }); handAlreadyExist = File.Exists(outputFilePath); } return(GetImageFromTiles(handStr), handStr); }
static int fromEmojiToTile34(DiscordEmoji emoji) { var emojiSplit = emoji.ToString().Split(':'); var array = TilesConverter.one_line_string_to_34_array(emojiSplit[1]); for (int i = 0; i < array.Length; i++) { if (array[i] > 0) { return(i); } } return(-1); }
public void Test_WriteTileset() { CheckObjFiles(); var outputDir = "tileset"; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var gisPosition = new GisPosition(); TilesConverter.WriteTilesetFile(TestObjFile, outputDir, gisPosition); Assert.True(File.Exists(Path.Combine(outputDir, "tileset.json"))); }
public void Test_WriteTileset2() { CheckObjFiles(); var outputDir = "tileset2"; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var objParser = new Obj2Gltf.WaveFront.ObjParser(TestObjFile); var objModel = objParser.GetModel(); var gisPosition = new GisPosition(); TilesConverter.WriteTilesetFile(objModel, Path.GetDirectoryName(TestObjFile), outputDir, gisPosition); Assert.True(File.Exists(Path.Combine(outputDir, "tileset.json"))); }
public async Task Hand( CommandContext ctx, [Description("The hand to display. Circles: [0-9]p, Chars: [0-9]m, Bamboo: [0-9]s, Honnors: [1-7]z, Dragons: [R,W,G]d, Winds: [ESWN]w")] string hand, [Description("The options people can vote for, can be empty, \"all\", or be another hand format")] string options = "" ) { try { var basicHand = HandParser.GetSimpleHand(hand); var handEmoji = HandParser.GetHandEmojiCodes(hand, ctx.Client); var optionsEmoji = options == "all" ? handEmoji : HandParser.GetHandEmojiCodes(options, ctx.Client); try { //await ctx.Message.DeleteAsync(); } catch { // do nothing } var hand34 = TilesConverter.one_line_string_to_34_array(basicHand); var shantenCalc = new ShantenCalculator(); int shanten = -2; var nbTiles = hand34.Sum(); if (nbTiles == 13 || nbTiles == 14) { shanten = shantenCalc.Calculate_shanten(hand34); } var message = await ctx.Channel.SendMessageAsync($"<@!{ctx.User.Id}>: {GetHandMessage(handEmoji)} {getShanten(shanten)}"); { foreach (var emoji in optionsEmoji) { await message.CreateReactionAsync(emoji); } } } catch (Exception e) { await ctx.RespondAsync(e.Message); } }
public void Test_MergeTilesets() { var name = "mergetest"; var objFolder = MOfficeFolder; Assert.True(Directory.Exists(objFolder), "Input Folder does not exist!"); var outputDir = name; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var gisPosition = new GisPosition(); var lod = true; var tileConverter = new TilesConverter(objFolder, outputDir, gisPosition); var tilesetJson = tileConverter.Run(lod); Assert.True(File.Exists(tilesetJson)); }
public void Test_CombineTilesets() { var name = "test"; var objFolder = MOfficeFolder; Assert.True(Directory.Exists(objFolder), "Input Folder does not exist!"); var outputDir = name; //"mtileset"; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var gisPosition = new GisPosition(); var tileConverter = new TilesConverter(objFolder, outputDir, gisPosition) { MergeTileJsonFiles = false }; var tilesetJson = tileConverter.Run(); Assert.True(File.Exists(tilesetJson)); }
public static string SplitObjAndMergeMTilesetsWithZip(string objZipFile, string outputDir, GisPosition gisPosition, int splitLevel = 2) { var name = Path.GetFileNameWithoutExtension(objZipFile); var unzipDir = Path.Combine(Path.GetDirectoryName(objZipFile), name); if (Directory.Exists(unzipDir)) { Directory.Delete(unzipDir, true); } Directory.CreateDirectory(unzipDir); try { ExtractZipFile(objZipFile, unzipDir); var objFile = Path.Combine(unzipDir, "model.obj"); if (!File.Exists(objFile)) { objFile = Path.Combine(unzipDir, name + ".obj"); } if (!File.Exists(objFile)) { throw new FileNotFoundException("Obj file not found", objFile); } var tilesOpts = new TilesOptions { MergeTileJsonFiles = true, OutputFolder = outputDir, WriteChildTileJson = false }; using (var objParser = new Obj2Gltf.WaveFront.ObjParser(objFile)) { var objModel = objParser.GetModel(); var objModels = objModel.Split(splitLevel); var tilesConverter = new TilesConverter(unzipDir, objModels, gisPosition, tilesOpts); return(tilesConverter.Run()); } } finally { Directory.Delete(unzipDir, true); } }