示例#1
0
        public static ITexture Load(ICoreFactory factory, MetaFontId id, ITexture regular, ITexture bold)
        {
            var texture = (EightBitTexture)(id.IsBold ? bold : regular);
            var bytes   = (byte[])texture.TextureData.Clone();

            if (!Mappings.TryGetValue(id.Color, out var mapping))
            {
                mapping = Mappings[FontColor.White];
            }

            for (int i = 0; i < bytes.Length; i++)
            {
                if (bytes[i] == 0)
                {
                    continue;
                }

                bytes[i] = mapping[bytes[i]];
            }

            return(factory.CreateEightBitTexture(
                       $"Font{id.Color}{(id.IsBold ? "Bold" : "")}",
                       texture.Width, texture.Height,
                       texture.MipLevels, texture.ArrayLayers,
                       bytes, texture.SubImages));
        }
示例#2
0
        public object Process(ICoreFactory factory, AssetKey key, object asset, Func <AssetKey, object> loaderFunc)
        {
            switch (asset)
            {
            case CharacterSheet sheet: ResolveItemProxies(sheet.Inventory, loaderFunc); break;

            case Inventory x: ResolveItemProxies(x, loaderFunc); break;

            case SavedGame save:
                foreach (var sheet in save.PartyMembers.Values)
                {
                    ResolveItemProxies(sheet.Inventory, loaderFunc);
                }
                foreach (var inv in save.Chests.Values)
                {
                    ResolveItemProxies(inv, loaderFunc);
                }
                foreach (var inv in save.Merchants.Values)
                {
                    ResolveItemProxies(inv, loaderFunc);
                }

                break;

            default: throw new InvalidOperationException($"Unexpected asset type in inventory post processor: {asset}");
            }

            return(asset);
        }
 public CommandInterpreter(ICoreFactory coreFactory,
                           IFragmentFactory fragmentFactory, IRepository poweRepository)
 {
     this.coreFactory     = coreFactory;
     this.fragmentFactory = fragmentFactory;
     this.powerPlant      = poweRepository;
 }
        public object Process(ICoreFactory factory, AssetId key, object asset)
        {
            var assets = Resolve <IAssetManager>();

            switch (asset)
            {
            case CharacterSheet sheet: ResolveItemProxies(sheet.Inventory, assets); break;

            case Inventory x: ResolveItemProxies(x, assets); break;

            case SavedGame save:
                foreach (var sheet in save.Sheets.Values)
                {
                    ResolveItemProxies(sheet.Inventory, assets);
                }
                foreach (var inv in save.Inventories.Values)
                {
                    ResolveItemProxies(inv, assets);
                }

                break;

            default: throw new InvalidOperationException($"Unexpected asset type in inventory post processor: {asset}");
            }

            return(asset);
        }
 public VeldridRendererContext(GraphicsDevice graphicsDevice, CommandList commandList, SceneContext sceneContext, ICoreFactory factory)
 {
     GraphicsDevice = graphicsDevice;
     CommandList    = commandList;
     SceneContext   = sceneContext;
     Factory        = factory;
 }
示例#6
0
        public object Process(ICoreFactory factory, AssetKey key, object asset, Func <AssetKey, object> loaderFunc)
        {
            var bitmap = (InterlacedBitmap)asset;

            return(new TrueColorTexture(
                       key.ToString(), (uint)bitmap.Width, (uint)bitmap.Height,
                       bitmap.Palette, bitmap.ImageData));
        }
示例#7
0
        /// <summary>
        /// Creates a view model.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns>A new instance of T.</returns>
        public T CreateViewModel <T>(IWindowService windowService, ICoreFactory coreFactory) where T : IBaseViewModel
        {
            var inst = CustomActivator.CreateInstance <T>();

            inst.WindowService = windowService;
            inst.CoreFactory   = coreFactory;

            return(inst);
        }
示例#8
0
 public CommonColors(ICoreFactory factory)
 {
     BorderTexture = factory.CreateEightBitTexture(
         "CommonColors",
         1, 1, 1, (uint)Palette.Count,
         Palette.OrderBy(x => x.Value).Select(x => (byte)x.Key).ToArray(),
         Palette.OrderBy(x => x.Value)
         .Select(x => new SubImage(Vector2.Zero, Vector2.One, Vector2.One, x.Value))
         .ToArray());
 }
        public PlantController(ICoreIdManager nameManager, ICoreFactory coreFactory, IFragmentFactory fragmentFactory)
        {
            this.idManager       = nameManager;
            this.coreFactory     = coreFactory;
            this.fragmentFactory = fragmentFactory;
            this.coresByName     = new Dictionary <string, ICore>();

            this.RegisterCoreTypes();
            this.RegisterFragmentTypes();
        }
        public object Process(ICoreFactory factory, AssetId key, object asset)
        {
            if (asset == null)
            {
                throw new ArgumentNullException(nameof(asset));
            }
            var bitmap = (InterlacedBitmap)asset;

            return(new TrueColorTexture(key,
                                        key.ToString(), (uint)bitmap.Width, (uint)bitmap.Height,
                                        bitmap.Palette, bitmap.ImageData));
        }
示例#11
0
 public CommonColors(ICoreFactory factory)
 {
     if (factory == null)
     {
         throw new ArgumentNullException(nameof(factory));
     }
     BorderTexture = factory.CreateEightBitTexture(
         AssetId.None,
         "CommonColors",
         1, 1, 1, (uint)Palette.Count,
         Palette.OrderBy(x => x.Value).Select(x => (byte)x.Key).ToArray(),
         Palette.OrderBy(x => x.Value)
         .Select(x => new SubImage(Vector2.Zero, Vector2.One, Vector2.One, x.Value))
         .ToArray());
 }
示例#12
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                ICoreFactory factory = CoreService.Container.GetExportedValue <ICoreFactory>();

                IPersonService proxy = factory.CreateClient <IPersonService>();
                Persons = proxy.GetPersons();
                Logger.Log("persons loaded", Logger.Level.Info);
            }
            catch (Exception ex)
            {
                Logger.Log(ex.Message + Environment.NewLine + ex.StackTrace, Logger.Level.Error);
                MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine.ToString());
            }
        }
示例#13
0
        public object Process(ICoreFactory factory, AssetId key, object asset)
        {
            if (asset == null)
            {
                throw new ArgumentNullException(nameof(asset));
            }
            var dict     = (IDictionary <(int, GameLanguage), string>)asset;
            var result   = new Dictionary <int, string>();
            var settings = Resolve <IGameplaySettings>();

            foreach (var kvp in dict)
            {
                if (kvp.Key.Item2 == settings.Language)
                {
                    result[kvp.Key.Item1] = kvp.Value;
                }
            }
            return(result);
        }
示例#14
0
        object LoadAssetInternal(AssetKey key)
        {
            var name = $"{key.Type}.{key.Id}";

            try
            {
                ICoreFactory  factory = Resolve <ICoreFactory>();
                IAssetLocator locator = GetLocator(key.Type);
                var           asset   = locator.LoadAsset(key, name, LoadAssetCached);

                if (asset != null && _postProcessors.TryGetValue(asset.GetType(), out var processor))
                {
                    asset = processor.Process(factory, key, asset, LoadAssetCached);
                }
                return(asset);
            }
            catch (Exception e)
            {
                Raise(new LogEvent(LogEvent.Level.Error, $"Could not load asset {name}: {e}"));
                return(e);
            }
        }
示例#15
0
        private void AddPerson_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            using (TransactionScope ts = new TransactionScope())
            {
                try
                {
                    Person person = new Person()
                    {
                        Name = txtName.Text
                    };
                    ICoreFactory   factory = CoreService.Container.GetExportedValue <ICoreFactory>();
                    IPersonService proxy   = factory.CreateClient <IPersonService>();

                    int value = proxy.AddPerson(person);
                    ts.Complete();
                }
                catch (Exception ex)
                {
                    ts.Dispose();
                    MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
                }
            }
        }
示例#16
0
 public object Process(ICoreFactory factory, AssetKey key, object asset, Func <AssetKey, object> loaderFunc)
 => new ImageSharpTrueColorTexture(key.ToString(), (Image <Rgba32>)asset);
示例#17
0
 public TileMap(string name, DrawLayer renderOrder, Vector3 tileSize, uint width, uint height, ICoreFactory factory, IPaletteManager paletteManager)
 {
     RenderOrder = renderOrder;
     TileSize    = tileSize;
     Width       = width;
     Height      = height;
     Tiles       = new Tile[width * height];
     Floors      = factory.CreateMultiTexture("FloorTiles:" + name, paletteManager);
     Walls       = factory.CreateMultiTexture("WallTiles:" + name, paletteManager);
 }
示例#18
0
 public MetafontBuilder(ICoreFactory factory) => _factory = factory ?? throw new ArgumentNullException(nameof(factory));
 public object Process(ICoreFactory factory, AssetId key, object asset)
 => new ImageSharpTrueColorTexture(key, key.ToString(), (Image <Rgba32>)asset);
示例#20
0
 public MetaFontLocator(ICoreFactory factory)
 {
     _factory = factory;
 }
示例#21
0
 public SimulationInitializer(Random seed, ICoreFactory coreFactory, ISectionFactory sectionFactory)
 {
     this.coreFactory    = coreFactory;
     this.sectionFactory = sectionFactory;
 }
        public object Process(ICoreFactory factory, AssetId key, object asset)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            if (asset == null)
            {
                throw new ArgumentNullException(nameof(asset));
            }
            var sprite = (AlbionSprite)asset;

            SubImage[] subImages;

            // TODO: Put exemptions into assets.json
            if (key.Type == AssetType.Font || key.Type == AssetType.AutomapGraphics || sprite.UniformFrames && sprite.Frames.Count >= 256)
            {
                const int buffer = 1;
                // For things like tilemaps etc we repack into a texture atlas with buffer pixels.
                int srcTileWidth   = sprite.Width;
                int srcTileHeight  = sprite.Height / sprite.Frames.Count;
                int destTileWidth  = srcTileWidth + buffer * 2;
                int destTileHeight = srcTileHeight + buffer * 2;
                var(width, height) = GetAtlasSize(destTileWidth, destTileHeight, sprite.Frames.Count);
                byte[] pixelData = new byte[width * height];
                subImages = new SubImage[sprite.Frames.Count];

                int curX = 0;
                int curY = 0;
                for (int n = 0; n < sprite.Frames.Count; n++)
                {
                    for (int j = 0; j < destTileHeight; j++)
                    {
                        for (int i = 0; i < destTileWidth; i++)
                        {
                            var sourceX = Math.Clamp(i - buffer, 0, srcTileWidth - buffer);
                            var sourceY = Math.Clamp(j - buffer, 0, srcTileHeight - buffer) + n * srcTileHeight;
                            var destX   = curX + i;
                            var destY   = curY + j;
                            pixelData[destY * width + destX] = sprite.PixelData[sourceX + sourceY * srcTileWidth];
                        }
                    }

                    subImages[n] = new SubImage(
                        new Vector2(curX + buffer, curY + buffer),
                        new Vector2(sprite.Frames[n].Width, sprite.Frames[n].Height),
                        new Vector2(width, height),
                        0);

                    curX += destTileWidth;
                    if (curX + destTileWidth > width)
                    {
                        curX  = 0;
                        curY += destTileHeight;
                    }
                }

                return(factory.CreateEightBitTexture(
                           key,
                           sprite.Name,
                           (uint)width,
                           (uint)height,
                           1,
                           1,
                           pixelData,
                           subImages));
            }

            /*
             * else if (sprite.UniformFrames) // For reasonably sized uniform sprites use layers to simplify mip mapping / tiling etc
             * {
             *  int tileWidth = sprite.Width;
             *  int tileHeight = sprite.Height / sprite.Frames.Count;
             *  subImages = sprite.Frames
             *      .Select((x, i) => new EightBitTexture.SubImage(0, 0, x.Width, x.Height, i))
             *      .ToArray();
             *
             *  return new EightBitTexture(
             *      sprite.Name,
             *      (uint)tileWidth,
             *      (uint)tileHeight,
             *      1,
             *      (uint)subImages.Length,
             *       sprite.PixelData, subImages);
             * }*/
            else // For non-uniforms just use the on-disk packing
            {
                subImages = sprite.Frames
                            .Select(x => new SubImage(
                                        new Vector2(x.X, x.Y),
                                        new Vector2(x.Width, x.Height),
                                        new Vector2(sprite.Width, sprite.Height),
                                        0))
                            .ToArray();

                return(factory.CreateEightBitTexture(
                           key,
                           sprite.Name,
                           (uint)sprite.Width,
                           (uint)sprite.Height,
                           1,
                           1,
                           sprite.PixelData,
                           subImages));
            }
        }
示例#23
0
 public CoreFactoryHandler(ICoreFactory coreFactory)
 {
     this.coreFactory = coreFactory;
 }
示例#24
0
 public DungeonTileMap(ITextureId id, string name, DrawLayer renderOrder, Vector3 tileSize, uint width, uint height, ICoreFactory factory, IPaletteManager paletteManager)
 {
     if (factory == null)
     {
         throw new ArgumentNullException(nameof(factory));
     }
     if (paletteManager == null)
     {
         throw new ArgumentNullException(nameof(paletteManager));
     }
     RenderOrder = renderOrder;
     TileSize    = tileSize;
     Width       = width;
     Height      = height;
     _tiles      = new DungeonTile[width * height];
     Floors      = factory.CreateMultiTexture(id, "FloorTiles:" + name, paletteManager);
     Walls       = factory.CreateMultiTexture(id, "WallTiles:" + name, paletteManager);
 }