public Item(FileRecognization aFlag, string aBitmapName, List <ushort> aPositions) { this.Flag = aFlag; this.BitmapName = aBitmapName; this.Positions = aPositions; this.FilePath = String.Empty; }
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); } }
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..."); }
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..."); }