コード例 #1
0
        protected override object IGetObject(MemoryStream bytes)
        {
            long aux;
            long longitud = default;

            byte[] data = default;
            switch (unidad)
            {
            case LongitudBinaria.UInt: longitud = Serializar.ToUInt(bytes.Read(sizeof(uint))); break;

            case LongitudBinaria.UShort: longitud = Serializar.ToUShort(bytes.Read(sizeof(ushort))); break;

            case LongitudBinaria.Byte: longitud = bytes.ReadByte(); break;

            case LongitudBinaria.MarcaFin:
                aux  = bytes.Position;
                data = new byte[bytes.Length - bytes.Position];
                bytes.Read(data, 0, data.Length);
                longitud       = data.SearchArray(marcaFin) - aux;
                data           = data.SubArray((int)longitud);
                bytes.Position = aux + longitud;
                break;
            }
            if (data == null)
            {
                data = new byte[longitud];
                bytes.Read(data, 0, data.Length);
            }
            return(data);
        }
コード例 #2
0
        public static void Load(Proyecto proyecto, RomGba rom)
        {
            PokemonGBAFrameWork.AtaqueCompleto[] ataques = PokemonGBAFrameWork.AtaqueCompleto.GetAtaques(rom);
            Frame.Ataque ataque;
            int          lastItemNoAtack = -1;
            ushort       combo;

            for (int i = 0; i < ataques.Length; i++)
            {
                ataque             = new Frame.Ataque();
                ataque.Descripcion = ataques[i].Descripcion.Texto;
                ataque.Nombre      = ataques[i].Nombre.Texto;

                ataque.Concurso1.Efecto    = Serializar.ToUShort(ataques[i].Concursos.DatosConcursosHoenn.SubArray(0, 2));
                ataque.Concurso1.Categoria = Serializar.ToUShort(ataques[i].Concursos.DatosConcursosHoenn.SubArray(2, 2));

                ataque.Efecto1.Accuracy               = ataques[i].Datos.Accuracy;
                ataque.Efecto1.BasePower              = ataques[i].Datos.BasePower;
                ataque.Efecto1.Category               = (Frame.Ataque.Efecto.Categoria)ataques[i].Datos.Category;
                ataque.Efecto1.Effect                 = ataques[i].Datos.Effect;
                ataque.Efecto1.EffectAccuracy         = ataques[i].Datos.EffectAccuracy;
                ataque.Efecto1.IsAffectedByKingsRock  = ataques[i].Datos.IsAffectedByKingsRock;
                ataque.Efecto1.IsAffectedByMagicCoat  = ataques[i].Datos.IsAffectedByMagicCoat;
                ataque.Efecto1.IsAffectedByMirrorMove = ataques[i].Datos.IsAffectedByMirrorMove;
                ataque.Efecto1.IsAffectedByProtect    = ataques[i].Datos.IsAffectedByProtect;
                ataque.Efecto1.IsAffectedBySnatch     = ataques[i].Datos.IsAffectedBySnatch;
                ataque.Efecto1.MakesContact           = ataques[i].Datos.MakesContact;
                ataque.Efecto1.PP       = ataques[i].Datos.PP;
                ataque.Efecto1.Priority = ataques[i].Datos.Priority;
                ataque.Efecto1.Target   = ataques[i].Datos.Target;
                ataque.Efecto1.Type     = proyecto.Tipos[ataques[i].Datos.Type];

                ataque.Coleccion1 = Frame.Ataque.Coleccion.Sin;

                proyecto.Ataques.Add(ataque);
            }
            //ahora que tengo los ataques cargados los vinculo
            for (int i = 0; i < proyecto.Ataques.Count; i++)
            {
                ataque = proyecto.Ataques[i];
                ataque.Concurso1.ComboStarter = proyecto.Ataques[Serializar.ToUShort(ataques[i].Concursos.DatosConcursosHoenn.SubArray(4, 2))];
                for (int j = 6, fJ = j + 8; j < fJ; j += 2)
                {
                    combo = Serializar.ToUShort(ataques[i].Concursos.DatosConcursosHoenn.SubArray(j, 2));
                    ataque.Concurso1.ComboMovimientos.Add(proyecto.Ataques[combo]);
                }
            }
            //acabo poniendo si es una MT/MO
            for (int i = 0; i < proyecto.Items.Count; i++)
            {
                if (proyecto.Items[i].Bolsillo == Frame.Item.BolsilloObjetos.MTMO)
                {
                    if (lastItemNoAtack < 0)
                    {
                        lastItemNoAtack = i - 1;
                    }

                    if (((EdicionPokemon)rom.Edicion).Idioma == Idioma.Español && proyecto.Items[i].Nombre.StartsWith("MT") || ((EdicionPokemon)rom.Edicion).Idioma == Idioma.Ingles && proyecto.Items[i].Nombre.StartsWith("TM"))
                    {
                        proyecto.Ataques[proyecto.Items[i].Index - lastItemNoAtack].Coleccion1 = Frame.Ataque.Coleccion.MT;
                    }
                    else
                    {
                        proyecto.Ataques[proyecto.Items[i].Index - lastItemNoAtack].Coleccion1 = Frame.Ataque.Coleccion.MO;
                    }
                }
            }
        }