private void enableFont() { SpriteCategory category = new SpriteCategory("customfonts", UIResourceManager.SpriteData, 1); category.SheetSizes = new Vec2i[1] { new Vec2i(8192, 8192) }; category.Load(UIResourceManager.ResourceContext, UIResourceManager.UIResourceDepot); SpritePart spritePart = new SpritePart("sim1", category, 8192, 8192) { SheetID = 1 }; string currentModulePath = ModuleInfo.GetPath("SettlementExtend"); string currentModuleDirPath = currentModulePath.Substring(0, currentModulePath.LastIndexOf("/")); string fontPath = currentModuleDirPath + "/GUI/GauntletUI/Fonts"; string fontFilePath = fontPath + "/simkai/"; UIResourceManager.FontFactory.AddFontDefinition(fontFilePath, "simkai2", UIResourceManager.SpriteData); Font font = UIResourceManager.FontFactory.GetFont("simkai2"); font.GetType().GetProperty("FontSprite").SetValue((object)font, (object)spritePart); TaleWorlds.Engine.Texture engineTexture = TaleWorlds.Engine.Texture.LoadTextureFromPath("Galahad.png", fontPath); font.FontSprite.Category.SpriteSheets[font.FontSprite.SheetID - 1] = new Texture(new EngineTexture(engineTexture)); UIResourceManager.FontFactory.DefaultFont = font; }
public static void LoadFontFromModule() { var licence = true; if (licence) { //load texture GameTex texture = new GameTex((ITexture) new EngineTexture(EngineTex.CreateTextureFromPath($"../../Modules/{ModuleName}/Font", $"{FontName}.png"))); //set temporary sprite data SpriteData spriteData = new SpriteData("Font Atlas"); SpriteCategory category = new SpriteCategory($"{FontName}", spriteData, 1); SpritePart spritePart = new SpritePart($"{FontName}", category, texture.Width, texture.Height); SpriteGeneric spriteGeneric = new SpriteGeneric($"{FontName}", spritePart); // set sprite part data. (sheetid = 1 is chinise font.) category.Load((IResourceContext) new TextureLoader(texture), (ResourceDepot)null); spritePart.SheetID = 1; spritePart.SheetX = 0; spritePart.SheetY = 0; spriteData.SpriteNames.Add($"{FontName}", (Sprite)spriteGeneric); Font font = new Font($"{FontName}", $"../../Modules/{ModuleName}/Font/{FontName}.fnt", spriteData); /* reflection font factory */ Dictionary <string, Font> _bitmapFont = typeof(FontFactory).GetField("_bitmapFonts", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Font>; Dictionary <string, Dictionary <string, Font> > _localizationMap = typeof(FontFactory).GetField("_fontLocalizationMap", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Dictionary <string, Font> >; _bitmapFont[CoverFontName] = font; Dictionary <string, Font> _defaultFontMap = typeof(FontFactory).GetField("_fontLocalizationMap", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Font>; LocalizationMap = _localizationMap; /* cover font data. */ foreach (string index in new List <string>((IEnumerable <string>)_localizationMap[XMLKey].Keys)) { _localizationMap[XMLKey][index] = font; } /* apply */ UIResourceManager.FontFactory.DefaultFont = font; FontLoaded = true; } else { InformationManager.ShowInquiry(new InquiryData("Module Load Faile!", "failed load module.", true, false, ":(", null, null, null)); } }