public void Compile() { ParsedPath stringsFileName = Target.InputFiles.Where(f => f.Extension == ".strings").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); ParsedPath csFileName = Target.OutputFiles.Where(f => f.Extension == ".cs").First(); string className; Target.Properties.GetOptionalValue("ClassName", out className, stringsFileName.File + "Strings"); StringsContent stringsData = CreateStringsData(className, StringsFileReaderV1.ReadFile(stringsFileName)); string[] strings = stringsData.Strings.Select(s => s.Value).ToArray(); if (!Directory.Exists(xnbFileName.VolumeAndDirectory)) { Directory.CreateDirectory(xnbFileName.VolumeAndDirectory); } XnbFileWriterV5.WriteFile(strings, xnbFileName); if (!Directory.Exists(csFileName.VolumeAndDirectory)) { Directory.CreateDirectory(csFileName.VolumeAndDirectory); } using (TextWriter writer = new StreamWriter(csFileName)) { WriteCsOutput(writer, stringsData); } }
public void Compile() { ParsedPath spriteFontFileName = Target.InputFiles.Where(f => f.Extension == ".spritefont").First(); ParsedPath stringsFileName = Target.InputFiles.Where(f => f.Extension == ".strings").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); SpriteFontFile sff = SpriteFontFileReader.ReadFile(spriteFontFileName); StringsFileV1 sf = StringsFileReaderV1.ReadFile(stringsFileName); HashSet <char> hs = new HashSet <char>(); foreach (var item in sf.Strings) { for (int i = 0; i < item.Value.Length; i++) { hs.Add(item.Value[i]); } } foreach (var region in sff.CharacterRegions) { for (char c = region.Start; c <= region.End; c++) { hs.Add(c); } } List <char> fontChars = hs.OrderBy(c => c).ToList(); FontSlant fontSlant = (sff.Style == SpriteFontFile.FontStyle.Italic ? FontSlant.Italic : FontSlant.Normal); FontWeight fontWeight = (sff.Style == SpriteFontFile.FontStyle.Bold ? FontWeight.Bold : FontWeight.Normal); ParsedPath pngFile = xnbFileName.WithExtension(".png"); SpriteFontContent sfc = CreateSpriteFontContent( sff.FontName, sff.Size, fontSlant, fontWeight, sff.Spacing, sff.DefaultCharacter, fontChars, pngFile); if (!Directory.Exists(xnbFileName.VolumeAndDirectory)) { Directory.CreateDirectory(xnbFileName.VolumeAndDirectory); } XnbFileWriterV5.WriteFile(sfc, xnbFileName); }