public override bool Execute(List<string> args) { if (args.Count != 1) return false; var imagePath = args[0]; Console.WriteLine("Loading textures.dat..."); var resourceManager = new ResourceDataManager(); resourceManager.LoadCacheFromDirectory(_info.CacheFile.DirectoryName, ResourceLocation.Textures); Console.WriteLine("Importing image..."); var bitmap = new TagStructures.Bitmap { Flags = TagStructures.Bitmap.RuntimeFlags.UseResource, Sequences = new List<TagStructures.Bitmap.Sequence> { new TagStructures.Bitmap.Sequence { FirstBitmapIndex = 0, BitmapCount = 1 } }, Images = new List<TagStructures.Bitmap.Image> { new TagStructures.Bitmap.Image { Signature = new Tag("bitm").Value, Unknown28 = -1, } }, Resources = new List<TagStructures.Bitmap.BitmapResource> { new TagStructures.Bitmap.BitmapResource() } }; using (var imageStream = File.OpenRead(imagePath)) { var injector = new BitmapDdsInjector(resourceManager); injector.InjectDds(_info.Serializer, _info.Deserializer, bitmap, 0, imageStream); } Console.WriteLine("Creating a new tag..."); var tag = _info.Cache.AllocateTag(); using (var tagsStream = _info.OpenCacheReadWrite()) { var tagContext = new TagSerializationContext(tagsStream, _info.Cache, _info.StringIds, tag); _info.Serializer.Serialize(tagContext, bitmap); } Console.WriteLine(); Console.WriteLine("All done! The new bitmap tag is:"); TagPrinter.PrintTagShort(tag); return true; }
public override bool Execute(List<string> args) { if (args.Count != 2) return false; int imageIndex; if (!int.TryParse(args[0], NumberStyles.HexNumber, null, out imageIndex)) return false; if (imageIndex < 0 || imageIndex >= _bitmap.Images.Count) { Console.Error.WriteLine("Invalid image index."); return true; } var imagePath = args[1]; Console.WriteLine("Loading resource caches..."); var resourceManager = new ResourceDataManager(); try { resourceManager.LoadCachesFromDirectory(_info.CacheFile.DirectoryName); } catch { Console.WriteLine("Unable to load the resource .dat files."); Console.WriteLine("Make sure that they all exist and are valid."); return true; } Console.WriteLine("Importing image data..."); try { using (var imageStream = File.OpenRead(imagePath)) { var injector = new BitmapDdsInjector(resourceManager); injector.InjectDds(_info.Serializer, _info.Deserializer, _bitmap, imageIndex, imageStream); } using (var tagsStream = _info.OpenCacheReadWrite()) { var tagContext = new TagSerializationContext(tagsStream, _info.Cache, _tag); _info.Serializer.Serialize(tagContext, _bitmap); } } catch (Exception ex) { Console.WriteLine("Importing image data failed: " + ex.Message); return true; } Console.WriteLine("Done!"); return true; }
public override bool Execute(List<string> args) { if (args.Count != 2) return false; int imageIndex; if (!int.TryParse(args[0], NumberStyles.HexNumber, null, out imageIndex)) return false; if (imageIndex < 0 || imageIndex >= Definition.Images.Count) { Console.WriteLine("Invalid image index."); return true; } var imagePath = args[1]; Console.WriteLine("Loading resource caches..."); var resourceManager = new ResourceDataManager(); try { resourceManager.LoadCachesFromDirectory(Info.CacheFile.DirectoryName); } catch { Console.WriteLine("Unable to load the resource .dat files."); Console.WriteLine("Make sure that they all exist and are valid."); return true; } Console.WriteLine("Importing image data..."); try { Definition = new Bitmap { Flags = Bitmap.RuntimeFlags.UseResource, Sequences = new List<Bitmap.Sequence> { new Bitmap.Sequence { FirstBitmapIndex = 0, BitmapCount = 1 } }, Images = new List<Bitmap.Image> { new Bitmap.Image { Signature = new Tag("bitm").Value, Unknown28 = -1 } }, Resources = new List<Bitmap.BitmapResource> { new Bitmap.BitmapResource() } }; using (var imageStream = File.OpenRead(imagePath)) { var injector = new BitmapDdsInjector(resourceManager); injector.InjectDds(Info.Serializer, Info.Deserializer, Definition, imageIndex, imageStream); } using (var tagsStream = Info.OpenCacheReadWrite()) { var tagContext = new TagSerializationContext(tagsStream, Info.Cache, Info.StringIds, Tag); Info.Serializer.Serialize(tagContext, Definition); } } catch (Exception ex) { Console.WriteLine("Importing image data failed: " + ex.Message); return true; } Console.WriteLine("Done!"); return true; }