BitmapFontWriter.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Microsoft.Xna.Framework.Content.Pipeline;
  2. using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler;
  3. using MonoGame.Extended.BitmapFonts;
  4. using MonoGame.Extended.Content.ContentReaders;
  5. namespace MonoGame.Extended.Content.Pipeline.BitmapFonts
  6. {
  7. [ContentTypeWriter]
  8. public class BitmapFontWriter : ContentTypeWriter<BitmapFontProcessorResult>
  9. {
  10. protected override void Write(ContentWriter writer, BitmapFontProcessorResult result)
  11. {
  12. writer.Write(result.TextureAssets.Count);
  13. foreach (var textureAsset in result.TextureAssets)
  14. writer.Write(textureAsset);
  15. var fontFile = result.FontFile;
  16. writer.Write(fontFile.FontName);
  17. writer.Write(fontFile.Info.FontSize);
  18. writer.Write(fontFile.Common.LineHeight);
  19. writer.Write(fontFile.Characters.Count);
  20. foreach (var c in fontFile.Characters)
  21. {
  22. writer.Write(c.ID);
  23. writer.Write(c.Page);
  24. writer.Write(c.X);
  25. writer.Write(c.Y);
  26. writer.Write(c.Width);
  27. writer.Write(c.Height);
  28. writer.Write(c.XOffset);
  29. writer.Write(c.YOffset);
  30. writer.Write(c.XAdvance);
  31. }
  32. writer.Write(fontFile.Kernings.Count);
  33. foreach(var k in fontFile.Kernings)
  34. {
  35. writer.Write(k.First);
  36. writer.Write(k.Second);
  37. writer.Write(k.Amount);
  38. }
  39. }
  40. public override string GetRuntimeType(TargetPlatform targetPlatform)
  41. {
  42. return typeof(BitmapFont).AssemblyQualifiedName;
  43. }
  44. public override string GetRuntimeReader(TargetPlatform targetPlatform)
  45. {
  46. return typeof(BitmapFontContentReader).AssemblyQualifiedName;
  47. }
  48. }
  49. }