Пример #1
0
        public static SDataSave ReadSave(byte[] saveFile)
        {
            var save     = new DataBuffer(saveFile, Game.XB2, 0);
            var saveData = new SDataSave(save);

            return(saveData);
        }
Пример #2
0
        public void ReadSave(string filename)
        {
            var file = File.ReadAllBytes(filename);
            var save = new SDataSave(new DataBuffer(file, Game.XB2, 0));

            SaveFile     = save;
            SaveFilename = filename;
        }
Пример #3
0
        public static byte[] WriteSave(SDataSave saveFile)
        {
            var saveBytes = new byte[0x1176A0];
            var save      = new DataBuffer(saveBytes, Game.XB2, 0);

            saveFile.WriteSave(save);

            return(saveBytes);
        }
Пример #4
0
        public MainViewModel()
        {
            ReadSaveCommand  = new RelayCommand(ReadSaveDialog);
            WriteSaveCommand = new RelayCommand(WriteSave);
            LoadBdatsCommand = new RelayCommand(LoadBdats);

            if (IsInDesignModeStatic)
            {
                using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SaveEditor.bf2savefile.sav.gz"))
                {
                    if (stream == null)
                    {
                        return;
                    }
                    using (var decompressionStream = new GZipStream(stream, CompressionMode.Decompress))
                    {
                        var file = new byte[0x1176A0];
                        decompressionStream.Read(file, 0, file.Length);
                        SaveFile = new SDataSave(new DataBuffer(file, Game.XB2, 0));
                    }
                }
            }

            using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SaveEditor.bdats.gz"))
            {
                if (stream == null)
                {
                    return;
                }
                using (var decompressionStream = new GZipStream(stream, CompressionMode.Decompress))
                {
                    var file = new byte[7394040];
                    decompressionStream.Read(file, 0, file.Length);
                    var bdats = new BdatTables(file, Game.XB2, false);
                    Tables = Deserialize.DeserializeTables(bdats);
                }
            }

            var s = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            s.AddRange(Tables.ITM_PcEquip.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Acc = s.ToArray();
        }
Пример #5
0
        public static string PrintSave(SDataSave save, BdatCollection tables)
        {
            var sb    = new StringBuilder();
            var delim = new string('=', 25);

            var blades = save.GameSave.CommonBladeIds.Where(x => x > 0).Select(x => save.GameSave.Blades[x - 1001])
                         .OrderBy(x => x.GetName(tables));

            foreach (SDataBlade blade in blades)
            {
                if (blade.BladeId < 1)
                {
                    continue;
                }

                sb.AppendLine();
                PrintBlade(blade, tables, sb);
                sb.AppendLine(delim);
            }

            return(sb.ToString());
        }
Пример #6
0
        private static void ReadSave(Options options)
        {
            if (options.Input == null)
            {
                throw new NullReferenceException("No input file was specified.");
            }
            if (options.Output == null)
            {
                throw new NullReferenceException("No output file was specified.");
            }

            byte[]    saveFile = File.ReadAllBytes(options.Input);
            SDataSave saveData = Read.ReadSave(saveFile);
            var       newSave  = Write.WriteSave(saveData);

            File.WriteAllBytes(options.Input + "_new.sav", newSave);

            BdatCollection tables   = GetBdatCollection(options);
            string         printout = Print.PrintSave(saveData, tables);

            File.WriteAllText(options.Output, printout);
        }
Пример #7
0
        public MainViewModel()
        {
            ReadSaveCommand  = new RelayCommand(ReadSaveDialog);
            WriteSaveCommand = new RelayCommand(WriteSave);
            LoadBdatsCommand = new RelayCommand(LoadBdats);

            if (IsInDesignModeStatic)
            {
                using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SaveEditor.bf2savefile.sav.gz"))
                {
                    if (stream == null)
                    {
                        return;
                    }
                    using (var decompressionStream = new GZipStream(stream, CompressionMode.Decompress))
                    {
                        var file = new byte[0x1176A0];
                        decompressionStream.Read(file, 0, file.Length);
                        SaveFile = new SDataSave(new DataBuffer(file, Game.XB2, 0));
                    }
                }
            }

            using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SaveEditor.bdats.gz"))
            {
                if (stream == null)
                {
                    return;
                }
                using (var decompressionStream = new GZipStream(stream, CompressionMode.Decompress))
                {
                    var file = new byte[7394040];
                    decompressionStream.Read(file, 0, file.Length);
                    var bdats = new BdatTables(file, Game.XB2, false);
                    Tables = Deserialize.DeserializeTables(bdats);
                }
            }

            var s = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            s.AddRange(Tables.ITM_PcEquip.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Acc = s.ToArray();

            var t = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            t.AddRange(Tables.ITM_CrystalList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            CorCrt = t.ToArray();

            var u = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            u.AddRange(Tables.ITM_SalvageList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Cyl = u.ToArray();

            var v = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            v.AddRange(Tables.ITM_PreciousList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Key = v.ToArray();

            var w = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            w.AddRange(Tables.ITM_InfoList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Info = w.ToArray();

            var xa = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xa.AddRange(Tables.ITM_HanaAssist.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            SkRam = xa.ToArray();

            var xb = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xb.AddRange(Tables.ITM_HanaNArtsSet.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Art = xb.ToArray();

            var xc = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xc.AddRange(Tables.ITM_HanaArtsEnh.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            EnRam = xc.ToArray();

            var xd = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xd.AddRange(Tables.ITM_HanaAtr.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            ElCore = xd.ToArray();

            var xe = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xe.AddRange(Tables.ITM_HanaRole.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            RCPU = xe.ToArray();

            var xf = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xf.AddRange(Tables.ITM_BoosterList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Boost = xf.ToArray();

            var xg = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xg.AddRange(Tables.ITM_Orb.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            ACore = xg.ToArray();

            var xh = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xh.AddRange(Tables.ITM_FavoriteList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            PItem = xh.ToArray();

            var xi = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xi.AddRange(Tables.ITM_TresureList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Trs = xi.ToArray();

            var xj = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xj.AddRange(Tables.ITM_CollectionList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            Col = xj.ToArray();

            var xl = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xl.AddRange(Tables.ITM_PreciousList.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            KItem = xl.ToArray();

            var xm = new List <ItemDesc> {
                new ItemDesc {
                    Id = 0, Name = ""
                }
            };

            xm.AddRange(Tables.ITM_PcWpnChip.Select(x => new ItemDesc {
                Id = x.Id, Name = x._Name?.name
            }));
            PcWpn = xm.ToArray();
        }