コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }