示例#1
0
        public static ParamEntry SelectedEntry(List <byte[]> paramEntries, string selectedEntryName)
        {
            ParamEntry pEntry = new ParamEntry();

            string[] bustupNameParts = selectedEntryName.TrimStart('b').Split(' ')[0].Replace(".bin", "").Split('_');

            int paramId = 0;

            int characterId  = Convert.ToInt32(bustupNameParts[0]);
            int expressionId = Convert.ToInt32(bustupNameParts[1]);
            int outfitId     = 0;

            try
            {
                outfitId = Convert.ToInt32(bustupNameParts[2]);
            }
            catch
            {
            }
            bool isAssist = MainForm.pType == BustupParamEditor.ParamEntry.ParamType.Assist;

            paramId = Params.GetEntryIndex(paramEntries, characterId, expressionId, outfitId, isAssist);
            pEntry.Read(paramEntries, paramId);

            return(pEntry);
        }
示例#2
0
        public static int SelectedEntry(List <byte[]> paramEntries, out ParamEntry pEntry)
        {
            pEntry = new ParamEntry();

            bool validEntry = false;
            int  paramId    = 0;

            int characterId  = 0;
            int expressionId = 0;
            int outfitId     = 0;

            while (validEntry == false)
            {
                Console.Write("Character ID: ");
                characterId = Convert.ToInt16(Console.ReadLine());
                Console.Write("Expression ID: ");
                expressionId = Convert.ToInt16(Console.ReadLine());
                Console.Write("Outfit ID: ");
                outfitId = Convert.ToInt16(Console.ReadLine());

                paramId = Params.GetEntryIndex(paramEntries, characterId, expressionId, outfitId);
                try
                {
                    pEntry.Read(paramEntries[paramId]);
                    validEntry = true;
                }
                catch
                {
                    Console.WriteLine("Not a valid bustup. Please try again.");
                }
            }

            return(paramId);
        }
示例#3
0
        static void Main(string[] args)
        {
            //Validate path to param file and add entries to byte array before continuing
            string path = null;

            if (args.Length > 0)
            {
                path = args[0];
            }

            List <byte[]> paramEntries = new List <byte[]>();

            path = Validation.ParamFilePath(path, out paramEntries);

            //Confirm that bustup parameter entry is valid before continuing

            ParamEntry pEntry  = new ParamEntry();
            int        paramId = Validation.SelectedEntry(paramEntries, out pEntry);

            //Lists current values, allows user to pick a value and enter a new one, then refresh list of values
            while (true)
            {
                Console.Clear();
                Console.WriteLine($"Editing parameters for b{pEntry.CharacterId.ToString("D3")}_{pEntry.ExpressionId.ToString("D3")}_{pEntry.OutfitId.ToString("D2")}");
                Console.WriteLine("\nChoose which value to replace:");
                Console.WriteLine($"(1) Offset X: {pEntry.OffsetX}");
                Console.WriteLine($"(2) Offset Y: {pEntry.OffsetY}");
                Console.WriteLine($"(3) Eye Position X: {pEntry.EyePositionX}");
                Console.WriteLine($"(4) Eye Position Y: {pEntry.EyepositionY}");
                Console.WriteLine($"(5) Mouth Position X: {pEntry.MouthPositionX}");
                Console.WriteLine($"(6) Mouth Position Y: {pEntry.MouthPositionY}");
                Console.WriteLine($"(7) Unknown Flag: {pEntry.Unknown}");
                Console.WriteLine($"(0) Save Changes and Exit");
                int selection = 11;
                while (selection > 7 || selection < 0)
                {
                    try
                    {
                        selection = Convert.ToInt32(Console.ReadLine());
                    }
                    catch
                    {
                    }
                }

                float newValue = 0;
                if (selection != 0)
                {
                    Console.Write("\nEnter the new value for your selection: ");
                    try {
                        newValue = Convert.ToSingle(Console.ReadLine());
                    }
                    catch
                    {
                    }
                }

                switch (selection)
                {
                case 0:
                    pEntry.Replace(pEntry.EntryData, paramId, path, pEntry.Type);
                    return;

                case 1:     // Offset X
                    pEntry.Read(ParamEntry.Write(pEntry.EntryData, 8, newValue));
                    break;

                case 2:     // Offset Y
                    if (pEntry.Type == ParamEntry.ParamType.Normal)
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 12, newValue));
                    }
                    break;

                case 3:     // Eye Pos X
                    if (pEntry.Type == ParamEntry.ParamType.Normal)
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 16, newValue));
                    }
                    else
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 12, newValue));
                    }
                    break;

                case 4:     // Eye Pos Y
                    if (pEntry.Type == ParamEntry.ParamType.Normal)
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 20, newValue));
                    }
                    else
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 16, newValue));
                    }
                    break;

                case 5:     // Mouth Pos X
                    if (pEntry.Type == ParamEntry.ParamType.Normal)
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 24, newValue));
                    }
                    else
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 20, newValue));
                    }
                    break;

                case 6:     // Mouth Pos Y
                    if (pEntry.Type == ParamEntry.ParamType.Normal)
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 28, newValue));
                    }
                    else
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 24, newValue));
                    }
                    break;

                case 7:     // Unknown Field
                    if (pEntry.Type == ParamEntry.ParamType.Normal)
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 34, (short)Math.Round(newValue)));
                    }
                    else
                    {
                        pEntry.Read(ParamEntry.Write(pEntry.EntryData, 30, (short)Math.Round(newValue)));
                    }
                    break;
                }
            }
        }