Exemplo n.º 1
0
        static void Main(string[] args)
        {
            if (args.Length < 4)
            {
                Console.Error.WriteLine("Error: No se han especificado parámetros.");
                Console.Error.WriteLine("El formato es: EliminaCodigoDeArchivoBin.exe [tabla de códigos] [archivo de entrada] [archivo de salida] [código a eliminar]");
                Console.Error.WriteLine("Ejemplo: EliminaCodigoDeArchivoBin.exe digiBCA.Tab.xml 29091711.bin salida.bin 201");
                return;
            }

            try
            {
                DigiTab dt = DigiTab.Load(args[0]);
                using (Bin archivoEntrada = new Bin(dt, args[1], 2, new Point3D(0.0, 0.0, 0.0), true, false))
                {
                    using (Bin archivoSalida = new Bin(dt, args[2], 2, new Point3D(0.0, 0.0, 0.0), false, true))
                    {
                        foreach (Entity entidad in archivoEntrada)
                        {
                            Entity clonada = entidad.Clone();

                            // Eliminamos todos los códigos de la entidad clonada
                            clonada.Codes.Clear();

                            // Añadimos únicamente los códigos cuyo nombre no coincida con el pasado por parámetros
                            foreach (var código in entidad.Codes)
                            {
                                if (código.Name == args[3])
                                    continue;

                                clonada.Codes.Add(código);
                            }

                            if (entidad.Codes.Count == 0)
                                continue; // No almacenamos la entidad, pues al quitarle el código indicado por parámetros se ha quedado sin códigos. Era el único que tenía.

                            archivoSalida.Add(clonada);
                            Console.Write("*");
                        }
                    }
                }
            }
            catch (Exception excepción)
            {
                Console.Error.WriteLine("Se localizó el siguiente error:");
                Console.Error.WriteLine(excepción.Message);
                return;
            }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            if (args.Length < 3)
            {
                Console.Error.WriteLine("Error, no has indicado suficientes parámetros.");
                Console.Error.WriteLine("El formato es el siguiente: ExtraerEntidadesDeArchivos [archivo .bin a generar] [Digi.tab] [codigo 1]...[código n].");
                return;
            }

            DirectoryInfo di = new DirectoryInfo(Directory.GetCurrentDirectory());
            FileInfo[] archivos = di.GetFiles("*.bin");

            DigiTab dt;

            try {
                dt = DigiTab.Load(args[1]);
            }
            catch(Exception excepción)
            {
                Console.Error.WriteLine("Se ha localizado un error al cargar la tabla de códigos.");
                Console.Error.WriteLine(excepción.Message);
                return;
            }

            using (Bin archivoSalida = new Bin(dt, args[0], 2, new Point3D(0,0,0), false, true) )
            {
                foreach (var archivo in archivos)
                {
                    using (Bin archivoEntrada = new Bin(dt, archivo.Name, 2, new Point3D(0, 0, 0), true, false))
                    {
                        Console.WriteLine(string.Format("Analizando el archivo: {0}", archivo.Name));

                        var entidades = from entidad in archivoEntrada
                                        where entidad.TieneAlgúnCódigo(args.Skip(2))
                                        select entidad;

                        foreach (var entidad in entidades)
                        {
                            Entity clonada = entidad.Clone();
                            archivoSalida.Add(clonada);
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
 private void GetCastSound(MultiBuffClass buff) => Bin.Add("CastSound", CastSound = buff.CastSound);
Exemplo n.º 4
0
 private void GetExpirySound(MultiBuffClass buff) => Bin.Add("ExpiredSound", ExpiredSound = buff.ExpiredSound);
Exemplo n.º 5
0
 private void GetCritOnly(MultiBuffClass buff) => Bin.Add("CritOnly", CritOnly = buff.CriticalHitOnly);
Exemplo n.º 6
0
 private void GetDuration(MultiBuffClass buff) => Bin.Add("Duration", Duration = Math.Round(buff.FDuration, 6));
Exemplo n.º 7
0
 private void GetDurMode(MultiBuffClass buff) => Bin.Add("DurMode", DurMode = buff.DurationMode.ToString());
Exemplo n.º 8
0
 private void GetDebuffBuffChance(MultiBuffClass buff) => Bin.Add("DebuffBuffChance", DebuffBuffChance = buff.DebuffBuffChance);
Exemplo n.º 9
0
 private void GetRequires(MultiBuffClass buff) => Bin.Add("Requires", Requires = buff.Requires?.ToList());
Exemplo n.º 10
0
 private void GetIsBlock(ItemClass item) => Bin.Add("IsBlock", IsBlock = item.IsBlock());
Exemplo n.º 11
0
 private void GetMaterial(ItemClass item) => Bin.Add("Material", Material = item.MadeOfMaterial?.id);
Exemplo n.º 12
0
 private void GetStackNumber(ItemClass item) => Bin.Add("StackNumber", StackNumber = item.Stacknumber.Value);
Exemplo n.º 13
0
 private void GetIcon(ItemClass item) => Bin.Add("Icon", Icon = item.GetIconName());
Exemplo n.º 14
0
 private void GetIconTint(ItemClass item) => Bin.Add("IconTint", IconTint = item.GetIconTint().ToStringRgbHex(hash: false));
Exemplo n.º 15
0
 private void GetCanSpawn(ItemClass item) => Bin.Add("CanSpawn", CanSpawn = item.CreativeMode != "None");
Exemplo n.º 16
0
 private void GetType(Recipe recipe) => Bin.Add("Type", Type = recipe.itemValueType);
Exemplo n.º 17
0
 private void GetActions(MultiBuffClass buff) => Bin.Add("Actions", Actions = buff.Actions?.ToList());
Exemplo n.º 18
0
 private void GetLocal(ItemClass item) => Bin.Add("Local", Local = item.GetLocalizedItemName() ?? item.GetItemName());
Exemplo n.º 19
0
 private void GetExpiryBuffChance(MultiBuffClass buff) => Bin.Add("ExpiryBuffChance", ExpiryBuffChance = buff.ExpiryBuffChance);
Exemplo n.º 20
0
 private void GetName(ItemClass itemClass) => Bin.Add("Name", Name = itemClass.Name);
Exemplo n.º 21
0
 private void GetStackMode(MultiBuffClass buff) => Bin.Add("StackMode", StackMode = buff.StackMode.ToString());
Exemplo n.º 22
0
 private void GetId(ItemClass itemClass) => Bin.Add("Id", Id = itemClass.Id);
Exemplo n.º 23
0
 private void GetStackMax(MultiBuffClass buff) => Bin.Add("StackMax", StackMax = buff.StackMax);
Exemplo n.º 24
0
        public override void GetData(object obj)
        {
            if (!(obj is ItemClass item))
            {
                return;
            }

            if (IsOption("filter"))
            {
                foreach (var f in StrFilter)
                {
                    switch (f)
                    {
                    case StrFilters.Id:
                        GetId(item);
                        break;

                    case StrFilters.Name:
                        GetName(item);
                        break;

                    case StrFilters.Local:
                        GetLocal(item);
                        break;

                    case StrFilters.IsBlock:
                        GetIsBlock(item);
                        break;

                    case StrFilters.Material:
                        GetMaterial(item);
                        break;

                    case StrFilters.StackNumber:
                        GetStackNumber(item);
                        break;

                    case StrFilters.Icon:
                        GetIcon(item);
                        break;

                    case StrFilters.IconTint:
                        GetIconTint(item);
                        break;

                    case StrFilters.CanSpawn:
                        GetCanSpawn(item);
                        break;

                    default:
                        Log.Out($"{Config.ModPrefix} Unknown filter {f}");
                        break;
                    }
                }
            }
            else
            {
                GetId(item);
                GetName(item);
                GetLocal(item);
                GetIsBlock(item);
                GetMaterial(item);
                GetStackNumber(item);
                GetIcon(item);
                GetIconTint(item);
                GetCanSpawn(item);

                if (Options.ContainsKey("properties"))
                {
                    Bin.Add("Properties.Values", item.Properties.Values);
                    Bin.Add("Properties.Params1", item.Properties.Params1);
                    Bin.Add("Properties.Params2", item.Properties.Params2);
                    Bin.Add("Properties.Classes", item.Properties.Classes);
                }
            }
        }
Exemplo n.º 25
0
 private void GetFFCheck(MultiBuffClass buff) => Bin.Add("FFCheck", FFCheck = buff.FriendlyFireCheck);
Exemplo n.º 26
0
 private void GetCauses(MultiBuffClass buff) => Bin.Add("Causes", Causes = buff.Causes);
Exemplo n.º 27
0
 private void GetSmell(MultiBuffClass buff) => Bin.Add("Smell", Smell = buff.SmellName);
Exemplo n.º 28
0
 private void GetCures(MultiBuffClass buff) => Bin.Add("Cures", Cures = buff.Cures);
Exemplo n.º 29
0
 private void GetDebuffSound(MultiBuffClass buff) => Bin.Add("DebuffSound", DebuffSound = buff.DebuffSound);
Exemplo n.º 30
0
 private void GetMutex(MultiBuffClass buff) => Bin.Add("Mutex", Mutex = buff.Mutex?.ToList());
Exemplo n.º 31
0
 private void GetExpiryBuff(MultiBuffClass buff) => Bin.Add("ExpiryBuff", ExpiryBuff = buff.ExpiryBuff);
Exemplo n.º 32
0
 private void GetDebuffActions(MultiBuffClass buff) => Bin.Add("DebuffActions", DebuffActions = buff.DebuffActions?.ToList());