static void Process(BatchOption option) { var ft = new FileTool(); var now = DateTime.Now; var folder = option.Directory; var dataFile = "_data.csv"; var dataFileGA = "_dataGA.csv"; var files = Directory.GetFiles(folder, "*.txt"); var fileCount = files.Count(); var finders = option.Finder.ToArray(); var heuristics = option.Heuristic.ToArray(); var Mutation = option.Mutate.ToArray(); var Crossover = option.Crossover.ToArray(); var Fitness = option.Fitness.ToArray(); var Selection = option.Selection.Cast <SelectionEnum>().ToArray(); var newdatafile = !File.Exists(dataFile); var newdatafileGA = !File.Exists(dataFileGA); StreamWriter csvFile; StreamWriter csvGAFile; if (newdatafile) { csvFile = File.CreateText(dataFile); } else { csvFile = File.AppendText(dataFile); } if (newdatafileGA) { csvGAFile = File.CreateText(dataFileGA); } else { csvGAFile = File.AppendText(dataFileGA); } //csvFile = new StreamWriter(File.Open(dataFile, FileMode.OpenOrCreate), Encoding.UTF8, 4096, false); //csvGAFile = new StreamWriter(File.Open(dataFileGA, FileMode.OpenOrCreate), Encoding.UTF8, 4096, false); if (newdatafile) { csvFile.Write(new TextWrapper().GetHeader()); } if (newdatafileGA) { csvGAFile.Write(new TextGAWrapper().GetHeader()); } for (int i = 0; i < fileCount; i++) { var map = FileTool.ReadMapFromFile(files[i]); foreach (var _finder in finders) { foreach (var _h in heuristics) { var h = new HeuristicFactory().GetImplementation(_h); var finder = new FinderFactory().GetImplementation(_finder); if (finder is IGeneticAlgorithm) { for (int cross = 0; cross < Crossover.Count(); cross++) { for (int mut = 0; mut < Mutation.Count(); mut++) { for (int fit = 0; fit < Fitness.Count(); fit++) { for (int sel = 0; sel < Selection.Count(); sel++) { for (int j = 0; j < option.GaTimes; j++) { GC.Collect(); GC.WaitForPendingFinalizers(); var GAFinder = (IGeneticAlgorithm) new FinderFactory().GetImplementation(_finder); GAFinder.Crossover = new CrossoverFactory().GetImplementation(Crossover[cross]); GAFinder.Mutate = new MutateFactory().GetImplementation(Mutation[mut]); GAFinder.Fitness = new FitnessFactory().GetImplementation(Fitness[fit]); GAFinder.Selection = new SelectionFactory().GetImplementation(Selection[sel]); var helper = $"\n n:{j},cx:{GAFinder.Crossover.GetType().Name},m:{GAFinder.Mutate.GetType().Name},f:{GAFinder.Fitness.GetType().Name},s:{GAFinder.Selection.GetType().Name}"; var csv = new TextWrapper(); csv = RunStep(csv, i, fileCount, map, h, GAFinder, option.Directory, Path.GetFileName(files[i]), helper); csvFile.Write(csv.ToString()); var csvGA = new TextGAWrapper { Alg = csv.Alg, MapNumber = csv.MapNumber, Heuristic = csv.Heuristic, MapTypeGenerate = csv.MapTypeGenerate, MapDiagonal = csv.MapDiagonal, MapSize = csv.MapSize, Solution = csv.Solution, Time = csv.Time, MaxNodes = csv.MaxNodes, PathLength = csv.PathLength, Crossover = GAFinder.Crossover.GetType().Name, Mutation = GAFinder.Mutate.GetType().Name, Fitness = GAFinder.Fitness.GetType().Name, Selection = GAFinder.Selection.GetType().Name, Generations = GAFinder.Generations.ToString(), }; csvGAFile.Write(csvGA.ToString()); } } } } } } else { var csv = new TextWrapper(); csv = RunStep(csv, i, fileCount, map, h, finder, option.Directory, Path.GetFileName(files[i])); csvFile.Write(csv.ToString()); } csvFile.Flush(); csvGAFile.Flush(); } } } DrawTextProgressBar(fileCount, fileCount); csvFile.Dispose(); csvGAFile.Dispose(); }
/** * <summary>Scans a content level looking for text.</summary> */ /* * NOTE: Page contents are represented by a sequence of content objects, * possibly nested into multiple levels. */ private void Extract(ContentScanner level, PrimitiveComposer composer) { if (level == null) { return; } while (level.MoveNext()) { ContentObject content = level.Current; if (content is Text) { TextWrapper text = (TextWrapper)level.CurrentWrapper; int colorIndex = 0; foreach (TextStringWrapper textString in text.TextStrings) { SKRect textStringBox = textString.Box.Value; Console.WriteLine( "Text [" + "x:" + Math.Round(textStringBox.Left) + "," + "y:" + Math.Round(textStringBox.Top) + "," + "w:" + Math.Round(textStringBox.Width) + "," + "h:" + Math.Round(textStringBox.Height) + "] [font size:" + Math.Round(textString.Style.FontSize) + "]: " + textString.Text ); // Drawing text character bounding boxes... colorIndex = (colorIndex + 1) % textCharBoxColors.Length; composer.SetStrokeColor(textCharBoxColors[colorIndex]); foreach (TextChar textChar in textString.TextChars) { /* * NOTE: You can get further text information * (font, font size, text color, text rendering mode) * through textChar.style. */ composer.DrawPolygon(textChar.Quad.GetPoints()); composer.Stroke(); } // Drawing text string bounding box... composer.BeginLocalState(); composer.SetLineDash(new LineDash(new float[] { 5 })); composer.SetStrokeColor(textStringBoxColor); composer.DrawRectangle(textString.Box.Value); composer.Stroke(); composer.End(); } } else if (content is XObject) { // Scan the external level! Extract(((XObject)content).GetScanner(level), composer); } else if (content is ContainerObject) { // Scan the inner level! Extract(level.ChildLevel, composer); } } }
static TextWrapper RunStep(TextWrapper baseScv, int i, int fileCount, IMap map, IHeuristic h, IFinder finder, string path, string mapName, string plus = "") { var csv = baseScv; csv.MapNumber = i.ToString(); csv.MapTypeGenerate = map.MapType.ToString(); csv.Alg = finder.Name; csv.Heuristic = h.GetType().Name; csv.MapDiagonal = map.Diagonal.ToString(); csv.MapSize = $"{map.Width}x{map.Height}"; Console.CursorLeft = 0; if (Console.CursorTop > 0) { Console.Write(new string(' ', 80)); Console.CursorLeft = 0; } Console.WriteLine($" ({i}) {csv.Alg} - { csv.Heuristic } - {csv.MapDiagonal} ({csv.MapSize}/{csv.MapTypeGenerate})"); DrawTextProgressBar(i, fileCount); if (finder.Find(map, h)) { csv.PathLength = map.GetPath().OrderBy(x => x.G).Last().G.ToString(); Console.ForegroundColor = ConsoleColor.Green; csv.Solution = "Yes"; } else { csv.Solution = "No"; csv.PathLength = "-1"; Console.ForegroundColor = ConsoleColor.Red; } map.Clear(); csv.Time = finder.GetProcessedTime().ToString(); csv.MaxNodes = map.GetMaxExpandedNodes().ToString(); Console.CursorTop -= 1; Console.CursorLeft = 0; Console.WriteLine($"{csv.Solution}-{csv.Time}ms"); Console.ForegroundColor = ConsoleColor.White; // save solutions var solutionPath = Path.Combine(path, "solutions", map.MapType.ToString(), finder.GetType().Name, h.GetType().Name); var fileName = mapName; if (finder is IGeneticAlgorithm ga) { solutionPath = Path.Combine(solutionPath, ga.Fitness.GetType().Name, ga.Selection.GetType().Name); fileName = $"{Path.GetFileNameWithoutExtension(fileName)}_{ga.Mutate.GetType().Name}_{ga.Crossover.GetType().Name}_{i}.txt"; } if (!Directory.Exists(solutionPath)) { Directory.CreateDirectory(solutionPath); } var text = FileTool.GetTextRepresentation(map, false, map.GetPath()); File.WriteAllText(Path.Combine(solutionPath, fileName), text); return(csv); }
void OnValidate() { textLabel = new TextWrapper(gameObject); }
void OnValidate() { textLabel = new TextWrapper(gameObject); rt = GetComponent<RectTransform>(); PartialValidate(); }
public void Init() { fontDescription = new FontDescription(ContentLoader.Load<Font>("Verdana12").Data); textWrapper = new TextWrapper(fontDescription.GlyphDictionary, ' ', fontDescription.PixelLineHeight); }
public static string GetText( CharacterStats data, string hpStatsFormat, string mpStatsFormat, string armorStatsFormat, string accuracyStatsFormat, string evasionStatsFormat, string criRateStatsFormat, string criDmgRateStatsFormat, string blockRateStatsFormat, string blockDmgRateStatsFormat, string moveSpeedStatsFormat, string atkSpeedStatsFormat, string weightLimitStatsFormat, string staminaStatsFormat, string foodStatsFormat, string waterStatsFormat, TextWrapper uiTextHp = null, TextWrapper uiTextMp = null, TextWrapper uiTextArmor = null, TextWrapper uiTextAccuracy = null, TextWrapper uiTextEvasion = null, TextWrapper uiTextCriRate = null, TextWrapper uiTextCriDmgRate = null, TextWrapper uiTextBlockRate = null, TextWrapper uiTextBlockDmgRate = null, TextWrapper uiTextMoveSpeed = null, TextWrapper uiTextAtkSpeed = null, TextWrapper uiTextWeightLimit = null, TextWrapper uiTextStamina = null, TextWrapper uiTextFood = null, TextWrapper uiTextWater = null) { string statsString = string.Empty; string statsStringPart = string.Empty; // Hp statsStringPart = string.Format( LanguageManager.GetText(hpStatsFormat), data.hp.ToString("N0")); if (data.hp != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextHp != null) { uiTextHp.text = statsStringPart; } // Mp statsStringPart = string.Format( LanguageManager.GetText(mpStatsFormat), data.mp.ToString("N0")); if (data.mp != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextMp != null) { uiTextMp.text = statsStringPart; } // Armor statsStringPart = string.Format( LanguageManager.GetText(armorStatsFormat), data.armor.ToString("N0")); if (data.armor != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextArmor != null) { uiTextArmor.text = statsStringPart; } // Accuracy statsStringPart = string.Format( LanguageManager.GetText(accuracyStatsFormat), data.accuracy.ToString("N0")); if (data.accuracy != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextAccuracy != null) { uiTextAccuracy.text = statsStringPart; } // Evasion statsStringPart = string.Format( LanguageManager.GetText(evasionStatsFormat), data.evasion.ToString("N0")); if (data.evasion != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextEvasion != null) { uiTextEvasion.text = statsStringPart; } // Cri Rate statsStringPart = string.Format( LanguageManager.GetText(criRateStatsFormat), (data.criRate * 100).ToString("N2")); if (data.criRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextCriRate != null) { uiTextCriRate.text = statsStringPart; } // Cri Dmg Rate statsStringPart = string.Format( LanguageManager.GetText(criDmgRateStatsFormat), (data.criDmgRate * 100).ToString("N2")); if (data.criDmgRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextCriDmgRate != null) { uiTextCriDmgRate.text = statsStringPart; } // Block Rate statsStringPart = string.Format( LanguageManager.GetText(blockRateStatsFormat), (data.blockRate * 100).ToString("N2")); if (data.blockRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextBlockRate != null) { uiTextBlockRate.text = statsStringPart; } // Block Dmg Rate statsStringPart = string.Format( LanguageManager.GetText(blockDmgRateStatsFormat), (data.blockDmgRate * 100).ToString("N2")); if (data.blockDmgRate != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextBlockDmgRate != null) { uiTextBlockDmgRate.text = statsStringPart; } // Weight statsStringPart = string.Format( LanguageManager.GetText(weightLimitStatsFormat), data.weightLimit.ToString("N2")); if (data.weightLimit != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextWeightLimit != null) { uiTextWeightLimit.text = statsStringPart; } // Move Speed statsStringPart = string.Format( LanguageManager.GetText(moveSpeedStatsFormat), data.moveSpeed.ToString("N2")); if (data.moveSpeed != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextMoveSpeed != null) { uiTextMoveSpeed.text = statsStringPart; } // Attack Speed statsStringPart = string.Format( LanguageManager.GetText(atkSpeedStatsFormat), data.atkSpeed.ToString("N2")); if (data.atkSpeed != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextAtkSpeed != null) { uiTextAtkSpeed.text = statsStringPart; } // Stamina statsStringPart = string.Format( LanguageManager.GetText(staminaStatsFormat), data.stamina.ToString("N0")); if (data.stamina != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextStamina != null) { uiTextStamina.text = statsStringPart; } // Food statsStringPart = string.Format( LanguageManager.GetText(foodStatsFormat), data.food.ToString("N0")); if (data.food != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextFood != null) { uiTextFood.text = statsStringPart; } // Water statsStringPart = string.Format( LanguageManager.GetText(waterStatsFormat), data.water.ToString("N0")); if (data.water != 0) { if (!string.IsNullOrEmpty(statsString)) { statsString += "\n"; } statsString += statsStringPart; } if (uiTextWater != null) { uiTextWater.text = statsStringPart; } return(statsString); }
public void Init() { fontDescription = new FontDescription(ContentLoader.Load <Font>("Verdana12").Data); textWrapper = new TextWrapper(fontDescription.GlyphDictionary, ' ', fontDescription.PixelLineHeight); }
public Score(SpriteFont spriteFont, Rectangle container) { _textWrapper = new TextWrapper(spriteFont, container, "Score: 0"); LastScore = 0; }
public WidgetBase GetWidget(QuestionUnit unit, TextWrapper typeWrapper) { unit.InitialiseValue(typeWrapper); return(new TextWidget(unit)); }