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