Beispiel #1
0
 public Item(FileRecognization aFlag, string aBitmapName, List <ushort> aPositions)
 {
     this.Flag       = aFlag;
     this.BitmapName = aBitmapName;
     this.Positions  = aPositions;
     this.FilePath   = String.Empty;
 }
Beispiel #2
0
 public ConfigItem(Bitmap aUOBitmap, FileRecognization aFlag, ConfigMode aConfigFlag, List <ushort> aUOPositions)
 {
     this.UOBitmap    = new Bitmap(aUOBitmap);
     this.Flag        = aFlag;
     this.ConfigFlag  = aConfigFlag;
     this.UOPositions = new List <ushort>();
     foreach (ushort lValue in aUOPositions)
     {
         this.UOPositions.Add(lValue);
     }
 }
Beispiel #3
0
        public static void PatchDragAndDropPatch(ref List <VMulPatch> aItems)
        {
            Console.WriteLine("Patching loaded patch...");

            foreach (VMulPatch lItem in aItems)
            {
                Bitmap lImage = new Bitmap(lItem.UOBitmap);
                lImage.MakeTransparent(lImage.GetPixel(1, 1));

                FileRecognization lFileRec = (FileRecognization)lItem.PatchHeader.Flag;

                foreach (ushort lPosition in lItem.FilePositions)
                {
                    int lPosIndex = (int)lPosition;
                    switch (lFileRec)
                    {
                    case FileRecognization.Art:
                        Art.ReplaceStatic(lPosIndex, lImage);
                        Console.WriteLine(" -> Replaced [Art] position: 0x" + lPosIndex.ToString("X4"));
                        break;

                    case FileRecognization.ArtLand:
                        Art.ReplaceLand(lPosIndex, lImage);
                        Console.WriteLine(" -> Replaced [Land] position: 0x" + lPosIndex.ToString("X4"));
                        break;

                    case FileRecognization.Gump:
                        Gumps.ReplaceGump(lPosIndex, lImage);
                        Console.WriteLine(" -> Replaced [Gump] position: 0x" + lPosIndex.ToString("X4"));
                        break;

                    case FileRecognization.Texture:
                        Textures.Replace(lPosIndex, lImage);
                        Console.WriteLine(" -> Replaced [Texture] position: 0x" + lPosIndex.ToString("X4"));
                        break;
                    }
                }
            }
            Console.WriteLine("Patching loaded patch done...");
        }
Beispiel #4
0
        public void LoadVMulPatch(string aFilename)
        {
            Console.WriteLine("Loading patch " + Path.GetFileName(aFilename));
            BinaryReader lBinReader = new BinaryReader(File.Open(aFilename, FileMode.Open));

            lBinReader.BaseStream.Position = 0;
            while (lBinReader.BaseStream.Position != lBinReader.BaseStream.Length)
            {
                VMulPatch lPatch = new VMulPatch();
                lPatch.PatchHeader.Flag          = lBinReader.ReadByte();
                lPatch.PatchHeader.ConfigFlag    = lBinReader.ReadByte();
                lPatch.PatchHeader.PositionCount = lBinReader.ReadUInt16();
                lPatch.PatchHeader.UOBitmapSize  = lBinReader.ReadInt32();

                for (int i = 0; i < lPatch.PatchHeader.PositionCount; i++)
                {
                    lPatch.FilePositions.Add(lBinReader.ReadUInt16());
                }

                byte[]       lBitmapBytes = lBinReader.ReadBytes(lPatch.PatchHeader.UOBitmapSize);
                MemoryStream lBitmapMS    = new MemoryStream(lBitmapBytes);
                lPatch.UOBitmap = new Bitmap(lBitmapMS);

                FileRecognization lFileRec = (FileRecognization)lPatch.PatchHeader.Flag;
                if (!this.ContainsFlags.Contains(lFileRec))
                {
                    this.ContainsFlags.Add(lFileRec);
                }

                FVMulPatches.Add(lPatch);
            }
            Console.WriteLine("Patch loaded...");
            Console.WriteLine("Patch contains:");
            foreach (FileRecognization lValue in this.ContainsFlags)
            {
                Console.WriteLine(lValue.ToString() + " file format.");
            }
            Console.WriteLine(FVMulPatches.Count() + " bitmaps to patch.");
        }
        public static void LoadPath(FileRecognization aFileRecognization, ref List <Item> aItems, string aFolderPath)
        {
            switch (aFileRecognization)
            {
            case FileRecognization.Art:
                Console.WriteLine("Loading images in Arts folder...");
                break;

            case FileRecognization.Gump:
                Console.WriteLine("Loading images in Gumps folder...");
                break;

            case FileRecognization.Texture:
                Console.WriteLine("Loading images in Textures folder...");
                break;
            }
            int lCounter = 0;

            foreach (string lFilePath in Directory.GetFiles(aFolderPath, "*.bmp", SearchOption.AllDirectories))
            {
                IEnumerable <Item> lItem = aItems.Where(x => x.BitmapName + ".bmp" == Path.GetFileName(lFilePath));
                if (lItem != null && lItem.Count() > 0)
                {
                    Item lFoundItem = lItem.First();

                    if (aFileRecognization == FileRecognization.Art)
                    {
                        if (lFoundItem.Flag == FileRecognization.Unknown)
                        {
                            if (lFilePath.Contains("Lands"))
                            {
                                lFoundItem.Flag = FileRecognization.ArtLand;
                            }
                            else
                            {
                                lFoundItem.Flag = FileRecognization.Art;
                            }
                        }
                    }
                    else if (aFileRecognization == FileRecognization.Gump)
                    {
                        lFoundItem.Flag = FileRecognization.Gump;
                    }
                    else if (aFileRecognization == FileRecognization.Texture)
                    {
                        lFoundItem.Flag = FileRecognization.Texture;
                    }

                    lFoundItem.FilePath = lFilePath;
                }
                else
                {
                    // check name of bitmap if bitmap name is hex number add as item...
                    string lFileName        = Path.GetFileName(lFilePath);
                    string lFileNameSplited = lFileName.Split('.')[0];
                    lFileNameSplited = lFileNameSplited.Trim().Remove(0, 2);
                    ushort lValue;
                    if (ushort.TryParse(lFileNameSplited, System.Globalization.NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out lValue))
                    {
                        Item lNewItem = new Item(lFileName.Split('.')[0], new List <ushort>()
                        {
                            lValue
                        });

                        if (aFileRecognization == FileRecognization.Art)
                        {
                            if (lFilePath.Contains("Lands"))
                            {
                                lNewItem.Flag = FileRecognization.ArtLand;
                            }
                            else
                            {
                                lNewItem.Flag = FileRecognization.Art;
                            }
                        }
                        else if (aFileRecognization == FileRecognization.Gump)
                        {
                            lNewItem.Flag = FileRecognization.Gump;
                        }
                        else if (lNewItem.Flag == FileRecognization.Texture)
                        {
                            lNewItem.Flag = FileRecognization.Texture;
                        }

                        lNewItem.FilePath = lFilePath;
                        aItems.Add(lNewItem);
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine(" -> " + lFileName + " is not correct format or missing in config file.");
                        Console.ResetColor();
                        lCounter--;
                    }
                }
                lCounter++;
            }
            Console.WriteLine("Loaded " + lCounter.ToString() + " images...");
        }