Ejemplo n.º 1
0
        static ColorData GetColoredData(Color[] data, Color color, int width, int height)
        {
            var pixels = data.Clone() as Color[];

            for (var i = 0; i < pixels.Length; i++)
            {
                // Linear burn gives best coloring results
                //
                Tools.ColorBlend(ref pixels[i].r, color.r);
                Tools.ColorBlend(ref pixels[i].g, color.g);
                Tools.ColorBlend(ref pixels[i].b, color.b);
            }

            return(new ColorData(width, height, pixels));
        }
Ejemplo n.º 2
0
        static GraphicsDatabase()
        {
            LoadSkinColors();

            AllZombieImagesAsPath().Do(path =>
            {
                var key         = path.Replace('\\', '/');
                var filePath    = textureRoot + path.Replace('/', Path.DirectorySeparatorChar) + pngSuffix;
                var rootTexture = new Texture2D(2, 2, TextureFormat.ARGB32, true)
                {
                    wrapMode = TextureWrapMode.Clamp
                };
                if (rootTexture.LoadImage(File.ReadAllBytes(filePath)) == false)
                {
                    throw new System.Exception("Cannot load texture " + filePath);
                }
                var width          = rootTexture.width;
                var height         = rootTexture.height;
                var originalPixels = rootTexture.GetPixels();

                if (key.StartsWith("Zombie/"))
                {
                    ZombieRGBSkinColors.Do(hex =>
                    {
                        var pixels = originalPixels.Clone() as Color[];
                        var color  = hex.HexColor();
                        for (int i = 0; i < pixels.Length; i++)
                        {
                            // Linear burn gives best coloring results
                            //
                            Tools.ColorBlend(ref pixels[i].r, color.r);
                            Tools.ColorBlend(ref pixels[i].g, color.g);
                            Tools.ColorBlend(ref pixels[i].b, color.b);
                        }

                        var data = new ColorData(width, height, pixels);
                        database.Add(key + "#" + hex, data);
                    });
                }
                else
                {
                    var data = new ColorData(width, height, originalPixels);
                    database.Add(key, data);
                }
            });
        }