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