private static List <SaveFileModel> InitCompareFileModel(List <HttpModel> httplist)
        {
            List <SaveFileModel> saveFileModels = new List <SaveFileModel>();

            //httplist to saveFileModels
            ParserServer.Parser(httplist);
            for (int i = 0; i < ParserServer.list.Count; i++)
            {
                SaveFileModel saveFileModel = new SaveFileModel();

                saveFileModel.IP = ParserServer.list[i].Req.IP_SourceAddress.Replace(',', '.');

                saveFileModel.Port = ParserServer.list[i].Req.TCP_SourcePort;

                saveFileModel.CommandType = GetCmdTypeFromHttpModel(ParserServer.list[i]);

                saveFileModel.CommandInterval = GetCmdIntervalFromHttpModel(ParserServer.list[i]);

                saveFileModel.ReqResInterval = GetReqResIntervalFromHttpModel(ParserServer.list[i]);



                saveFileModels.Add(saveFileModel);
            }
            return(saveFileModels);
        }
        public void RunOutputValidTest()
        {
            _manager.Generate();

            SaveFileModel model1 = null, model2 = null;

            try
            {
                model1 = _deserializer.Deserialize(Path.Combine(_outputDir, _opts.Options.PlayerOne.OutputSaveLocation));
                model2 = _deserializer.Deserialize(Path.Combine(_outputDir, _opts.Options.PlayerTwo.OutputSaveLocation));
            }
            catch (Exception e)
            {
                Assert.True(false, $"Failed to parse the output save files: {e}");
            }

            Assert.NotNull(model1);
            Assert.NotNull(model2);

            // Basic checks
            Assert.Equal("Test1", model1.PlayerName);
            Assert.Equal("Test2", model2.PlayerName);
            Assert.Equal(_opts.Configuration.TeamSize, model1.TeamPokemonList.Pokemon.Count());
            Assert.Equal(_opts.Configuration.TeamSize, model2.TeamPokemonList.Pokemon.Count());
            foreach (var pokemon in model1.TeamPokemonList.Pokemon)
            {
                Assert.Equal(100, pokemon.Level);
            }
        }
示例#3
0
        private static SaveFileModel MapFileModel(GetFileResponse response)
        {
            var model = new SaveFileModel
            {
                Version               = response.Data.Version,
                FolderId              = response.Data.FolderId,
                Title                 = response.Data.Title,
                IsArchived            = response.Data.IsArchived,
                PublishedOn           = response.Data.PublishedOn,
                Description           = response.Data.Description,
                OriginalFileName      = response.Data.OriginalFileName,
                OriginalFileExtension = response.Data.OriginalFileExtension,
                FileUri               = response.Data.FileUri,
                PublicUrl             = response.Data.FileUrl,
                FileSize              = response.Data.FileSize,
                IsTemporary           = response.Data.IsTemporary,
                IsUploaded            = response.Data.IsUploaded,
                IsCanceled            = response.Data.IsCanceled,
                Tags = response.Tags != null?response.Tags.Select(t => t.Name).ToList() : null,
                           AccessRules = response.AccessRules,
                           ThumbnailId = response.Data.ThumbnailId,
                           Categories  = response.Data.Categories != null?response.Data.Categories.Select(t => t.Id).ToList() : null,
            };

            return(model);
        }
        public static string GetSaveFileName(SaveFileModel saveFileParams)
        {
            SaveFileDialog dialog = new SaveFileDialog();

            dialog.CheckFileExists  = saveFileParams.CheckFileExists;
            dialog.CheckPathExists  = saveFileParams.CheckPathExists;
            dialog.CreatePrompt     = saveFileParams.CreatePrompt;
            dialog.CustomPlaces     = saveFileParams.CustomPlaces;
            dialog.DefaultExt       = saveFileParams.DefaultExt;
            dialog.DereferenceLinks = saveFileParams.DereferenceLinks;
            dialog.FileName         = saveFileParams.FileName;
            // FileNames not supported!
            dialog.Filter           = saveFileParams.Filter;
            dialog.FilterIndex      = saveFileParams.FilterIndex;
            dialog.InitialDirectory = saveFileParams.InitialDirectory;
            dialog.OverwritePrompt  = saveFileParams.OverWriteprompt;
            dialog.Title            = saveFileParams.Title;
            if (dialog.ShowDialog() == true)
            {
                saveFileParams.FileName      = dialog.FileName;
                saveFileParams.SafeFileName  = dialog.SafeFileName;
                saveFileParams.SafeFileNames = dialog.SafeFileNames;
                return(dialog.FileName);
            }
            return("");
        }
 /// <inheritdoc />
 public void Serialize(Stream stream, SaveFileModel save)
 {
     _bwriter.Open(stream);
     _breader.Open(stream);
     Serialize(save);
     _breader.Close();
     _bwriter.Close();
 }
        private async Task <SaveFileResponse> Save(string fullPath, SaveFileModel model)
        {
            using (var fileStream = new FileStream(fullPath, FileMode.Create))
            {
                await model.Stream.CopyToAsync(fileStream);
            }

            return(new SaveFileResponse(model.FileName, Schema));
        }
 /// <inheritdoc />
 public void Serialize(string fileName, SaveFileModel save)
 {
     using (var stream = File.Open(fileName, FileMode.Open))
     {
         _bwriter.Open(stream);
         _breader.Open(stream);
         Serialize(save);
         _breader.Close();
         _bwriter.Close();
     }
 }
示例#8
0
        public SaveFileRepositoryTests()
        {
            _testFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Gold.sav");
            using (var fileStream = new FileStream(_testFile, FileMode.Open, FileAccess.Read))
            {
                _testStream = new MemoryStream();
                fileStream.CopyTo(_testStream);
                _testStreamShim = new StreamShim(_testStream);
            }

            _saveFileRepository = new SaveFileRepository(new Charset(), new BinaryWriter2(), new BinaryReader2());;
            _expectedModel      = BuildTestModel();
        }
示例#9
0
        public JsonResult SaveFileToServer()
        {
            try
            {
                _log.Debug("SaveFileToServer Start");

                SaveFileModel model = new SaveFileModel()
                {
                    FileName = CommonHelper.DecodeUrl(Request.Form["FileName"]),
                    Docid    = CommonHelper.DecodeUrl(Request.Form["Docid"]),
                    TokenId  = CommonHelper.GetToken(Request.Form["TokenId"]),
                    Ondup    = Convert.ToInt64(Request.Form["Ondup"])
                };
                _log.Debug($"SaveFileToServer: {model.FileName}");

                try
                {
                    var    postFile   = Request.Files[0];
                    var    fileLength = postFile.ContentLength;
                    byte[] fileBytes  = new byte[fileLength];
                    postFile.InputStream.Read(fileBytes, 0, fileLength);
                    model.Base64Str = fileBytes;
                }
                catch (Exception ex)
                {
                    _log.Debug($"SaveFileToServer Read Exception: {ex.Message}");
                    return(Json(new JsonModel {
                        Success = false, Message = ex.Message
                    }));
                }

                IAS7APIHelper helper        = new AS7APIHelper();
                var           uploadFileRes = helper.UploadFile(model);
                if (uploadFileRes.ErrorCode == 403002039)
                {
                    uploadFileRes.FileName = helper.GetSuggestFileName(model.TokenId, model.Docid, model.FileName);
                }

                _log.Debug("SaveFileToServer End");
                return(Json(new JsonModel {
                    Success = true, StatusCode = uploadFileRes.ErrorCode, Data = JsonConvert.SerializeObject(uploadFileRes)
                }));
            }
            catch (Exception ex)
            {
                _log.Debug($"SaveFileToServer Exception: {ex.Message}");
                return(Json(new JsonModel {
                    Success = false, Message = ex.Message
                }));
            }
        }
示例#10
0
        public JsonResult SaveAttachmentToServer()
        {
            try
            {
                _log.Debug("SaveAttachmentToServer Start");

                var base64Str = GetEmailAttachment();
                if (base64Str != null)
                {
                    SaveFileModel model = new SaveFileModel()
                    {
                        Base64Str = base64Str,
                        FileName  = CommonHelper.DecodeUrl(Request.Form["FileName"]),
                        Docid     = CommonHelper.DecodeUrl(Request.Form["Docid"]),
                        TokenId   = CommonHelper.GetToken(Request.Form["TokenId"]),
                        Ondup     = Convert.ToInt64(Request.Form["Ondup"])
                    };

                    IAS7APIHelper helper        = new AS7APIHelper();
                    var           uploadFileRes = helper.UploadFile(model);
                    if (uploadFileRes.ErrorCode == 403002039)
                    {
                        uploadFileRes.FileName = helper.GetSuggestFileName(model.TokenId, model.Docid, model.FileName);
                    }

                    _log.Debug("SaveAttachmentToServer End");
                    return(Json(new JsonModel {
                        Success = true, StatusCode = uploadFileRes.ErrorCode, Data = JsonConvert.SerializeObject(uploadFileRes)
                    }));
                }
                else
                {
                    _log.Debug("SaveAttachmentToServer No Attachment Content");
                    return(Json(new JsonModel {
                        Success = false
                    }));
                }
            }
            catch (Exception ex)
            {
                _log.Debug($"SaveAttachmentToServer Exception: {ex.Message}");

                return(Json(new JsonModel {
                    Success = false, Message = ex.Message
                }));
            }
        }
示例#11
0
 public void SaveLog()
 {
     var fileSaveParams = new SaveFileModel
     {
         Title            = "Save log file as csv",
         InitialDirectory = Settings.DataPath
     };
     var outputFile = FileIOHelper.GetSaveFileName(fileSaveParams); if (outputFile.Length > 0)
     {
         var allText = LogEntryClass.WriteCsvHeaderLine();
         foreach (var X in LogCollectionManager.LogEvents)
         {
             allText += X.WriteAsCsv();
         }
         File.WriteAllText(outputFile, allText);
     }
 }
        protected virtual void AssertSavModelEqualityThorough(SaveFileModel expectedModel, SaveFileModel actualModel)
        {
            Assert.True(expectedModel.PlayerName.Equals(actualModel.PlayerName), "Player Name");
            Assert.True(expectedModel.RivalName.Equals(actualModel.RivalName), "Player Rival Name");
            Assert.True(expectedModel.TimePlayed.Equals(actualModel.TimePlayed), "Time Played");
            Assert.True(expectedModel.Money.Equals(actualModel.Money), "Money");
            Assert.True(expectedModel.JohtoBadges.Equals(actualModel.JohtoBadges), "Johto Badges");
            Assert.True(expectedModel.TMpocket.TMs.Length.Equals(actualModel.TMpocket.TMs.Length), "TMs");
            Assert.True(expectedModel.TMpocket.HMs.Length.Equals(actualModel.TMpocket.HMs.Length), "HMs");
            Assert.True(expectedModel.PocketItemList.Count.Equals(actualModel.PocketItemList.Count), "Pocket Item List");
            Assert.True(expectedModel.PocketKeyItemList.Count.Equals(actualModel.PocketKeyItemList.Count), "Pocket Key Item List");
            Assert.True(expectedModel.PocketBallItemList.Count.Equals(actualModel.PocketBallItemList.Count), "Pocket Ball Item List");
            Assert.True(expectedModel.PCItemList.Count.Equals(actualModel.PCItemList.Count), "PC Item List");
            Assert.True(expectedModel.CurrentPCBoxNumber.Equals(actualModel.CurrentPCBoxNumber), "Current PC Box Number");
            Assert.True(expectedModel.PCBoxNames.Length.Equals(actualModel.PCBoxNames.Length), "PC Box Names");
            Assert.True(expectedModel.TeamPokemonList.Count.Equals(actualModel.TeamPokemonList.Count), "Team Pokemon List");
            Assert.True(expectedModel.TeamPokemonList.OTNames.Length.Equals(actualModel.TeamPokemonList.OTNames.Length), "Team Pokemon List");
            Assert.True(expectedModel.TeamPokemonList.Names.Length.Equals(actualModel.TeamPokemonList.Names.Length), "Team Pokemon List");
            Assert.True(expectedModel.TeamPokemonList.Pokemon.Length.Equals(actualModel.TeamPokemonList.Pokemon.Length), "Team Pokemon List");
            Assert.True(expectedModel.PokedexOwned.Length.Equals(actualModel.PokedexOwned.Length), "Pokedex Owned");
            Assert.True(expectedModel.PokedexSeen.Length.Equals(actualModel.PokedexSeen.Length), "Pokedex Seen");
            Assert.True(expectedModel.CurrentBoxPokemonlist.Count.Equals(actualModel.CurrentBoxPokemonlist.Count), "Pokedex Seen");
            Assert.True(expectedModel.Boxes[0].Count.Equals(actualModel.Boxes[0].Count), "Box1 Count");
            Assert.True(expectedModel.Boxes[1].Count.Equals(actualModel.Boxes[1].Count), "Box2 Count");

            for (var i = 0; i < expectedModel.TeamPokemonList.Count; i++)
            {
                var pokemonExpected = expectedModel.TeamPokemonList.Pokemon[i];
                var pokemonActual   = actualModel.TeamPokemonList.Pokemon[i];
                AssertPokemonEqualityThorough(pokemonExpected, pokemonActual);
            }

            for (var i = 0; i < expectedModel.PCBoxNames.Length; i++)
            {
                Assert.True(expectedModel.PCBoxNames[i].Equals(actualModel.PCBoxNames[i]), $"PC BOX{i + 1} Name");
            }

            var test = actualModel.CurrentBoxPokemonlist.Pokemon.Cast <Pokemon>().Select(p => p.SpeciesId).ToList();

            for (var i = 0; i < expectedModel.CurrentBoxPokemonlist.Pokemon.Length; i++)
            {
                var pokemonExpected = expectedModel.CurrentBoxPokemonlist.Pokemon[i];
                var pokemonActual   = actualModel.CurrentBoxPokemonlist.Pokemon[i];
                Assert.True(pokemonExpected.SpeciesId.Equals(pokemonActual.SpeciesId), "Pokemon Species");
            }
        }
示例#13
0
        public void UploadFile()
        {
            string path   = $"{AppDomain.CurrentDomain.BaseDirectory}\\TestFile\\testfile.docx";
            string base64 = CommonHelper.GetBase64FormPath(path);

            byte[]        base64Bytes = System.Text.Encoding.Default.GetBytes(base64);
            SaveFileModel model       = new SaveFileModel()
            {
                Base64Str = base64Bytes,
                FileName  = TestData.fileName,
                Docid     = TestData.folderId,
                TokenId   = TestData.access_token,
                Ondup     = 2
            };
            var res = helper.UploadFile(model);

            Assert.IsNotNull(res);
        }
        /// <inheritdoc />
        public void Save(string outname, string filename, SaveFileModel save)
        {
            if (!File.Exists(filename))
            {
                throw new FileNotFoundException($"The provided input save file was not found or inaccessible. '{filename}'.");
            }

            if (File.Exists(outname) && !Path.GetFullPath(filename).Equals(Path.GetFullPath(outname)))
            {
                File.Delete(outname);
            }

            if (!Path.GetFullPath(filename).Equals(Path.GetFullPath(outname)))
            {
                File.Copy(filename, outname);
            }

            _saveFileRepository.Serialize(outname, save);
        }
示例#15
0
        public IActionResult CreateTransformFile([FromBody] SaveFileModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            var filename  = model.Filename;
            var extension = Path.GetExtension(filename);

            if (string.IsNullOrEmpty(extension))
            {
                filename = filename + ".json";
            }

            var filePath = Path.Combine(_hostingEnvironment.WebRootPath, "configs", filename);
            var content  = string.Empty;

            // Rename file name
            if (!string.IsNullOrEmpty(model.OriginFilename) && filename != model.OriginFilename)
            {
                if (System.IO.File.Exists(filePath))
                {
                    return(BadRequest("File exist"));
                }

                var originFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "configs", model.OriginFilename);
                System.IO.File.Move(originFilePath, filePath);
                return(Json(new { success = true }));
            }

            if (System.IO.File.Exists(filePath))
            {
                //
            }
            else
            {
                System.IO.File.Create(filePath);
            }

            return(Json(new { success = true }));
        }
示例#16
0
        public JsonResultBO SaveTemplateFile(SaveFileModel saveFileModel, string category)
        {
            var result  = new JsonResultBO(true);
            var saveRes = UploadProvider.SaveFile(saveFileModel.File, saveFileModel.Name.GetFileNameFormart(), saveFileModel.ExtensionList, saveFileModel.MaxSize, saveFileModel.Folder, saveFileModel.Path);

            if (saveRes.status)
            {
                var obj = new TD_QuanLyMauTest();
                obj.FileDirectory = saveRes.path;
                obj.FileName      = string.IsNullOrEmpty(saveFileModel.Name) ? saveFileModel.File.FileName : saveFileModel.Name;
                obj.Category      = category;
                obj.Size          = saveFileModel.File.ContentLength / 1024;
                _quanLyMauTestRepository.Add(obj);
                _quanLyMauTestRepository.Save();
            }
            else
            {
                result.Status  = false;
                result.Message = saveRes.message;
            }
            return(result);
        }
示例#17
0
        public void SaveFileModelTest()
        {
            SaveFileModel saveFileModel = new SaveFileModel()
            {
                Docid     = "Docid",
                Base64Str = null,
                FileName  = "FileName",
                Ondup     = 1,
                TokenId   = "TokenId",
            };

            var Docid     = saveFileModel.Docid;
            var FileName  = saveFileModel.FileName;
            var TokenId   = saveFileModel.TokenId;
            var Ondup     = saveFileModel.Ondup;
            var Base64Str = saveFileModel.Base64Str;

            Assert.IsTrue(Docid == "Docid");
            Assert.IsTrue(FileName == "FileName");
            Assert.IsTrue(TokenId == "TokenId");
            Assert.IsTrue(Ondup == 1);
            Assert.IsTrue(Base64Str == null);
        }
        protected virtual SaveFileModel BuildTestModel()
        {
            var model = new SaveFileModel
            {
                PlayerName  = "Justin",
                RivalName   = "ASSBITE",
                TimePlayed  = 10755348,
                Money       = 20271,
                JohtoBadges = 6,
                TMpocket    = new TMPocket
                {
                    TMs = new byte[50],
                    HMs = new byte[7]
                },
                PocketItemList     = new ItemList(19),
                PocketKeyItemList  = new ItemList(6),
                PocketBallItemList = new ItemList(3),
                PCItemList         = new ItemList(6),
                CurrentPCBoxNumber = 0,
                PCBoxNames         = new string[14] {
                    "BOX1",
                    "BOX2",
                    "BOX3",
                    "BOX4",
                    "BOX5",
                    "BOX6",
                    "BOX7",
                    "BOX8",
                    "BOX9",
                    "BOX10",
                    "BOX11",
                    "BOX12",
                    "BOX13",
                    "BOX14",
                },
                PokedexOwned          = new bool[256],
                PokedexSeen           = new bool[256],
                CurrentBoxPokemonlist = new PokeList(20)
                {
                    Pokemon = new Pokemon[20]
                    {
                        new Pokemon {
                            SpeciesId = 180, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 72, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 128, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 234, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 132, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 96, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 27, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 201, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 179, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 95, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 175, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 185, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 75, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 160, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 133, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 33, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 64, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 241, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 82, OTName = "Empty", Name = "Empty"
                        },
                        new Pokemon {
                            SpeciesId = 213, OTName = "Empty", Name = "Empty"
                        }
                    }
                },
                Boxes = new PokeList[14]
                {
                    new PokeList(20),
                    new PokeList(3),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0),
                    new PokeList(0)
                },
                Checksum1       = 4902,
                TeamPokemonList = new PokeList(6)
                {
                    Pokemon = new Pokemon[6]
                    {
                        new Pokemon
                        {
                            SpeciesId               = 149,
                            HeldItem                = 80,
                            MoveIndex1              = 87,
                            MoveIndex2              = 126,
                            MoveIndex3              = 8,
                            MoveIndex4              = 95,
                            TrainerId               = 3370,
                            Experience              = 35000,
                            HitPointsEV             = 65535,
                            AttackEV                = 65535,
                            DefenseEV               = 65535,
                            SpeedEV                 = 65535,
                            SpecialEV               = 65535,
                            AttackIV                = 15,
                            DefenseIV               = 15,
                            SpeedIV                 = 15,
                            SpecialIV               = 15,
                            Move1PowerPointsUps     = 3,
                            Move1PowerPointsCurrent = 16,
                            Move2PowerPointsUps     = 3,
                            Move2PowerPointsCurrent = 8,
                            Move3PowerPointsUps     = 3,
                            Move3PowerPointsCurrent = 24,
                            Move4PowerPointsUps     = 3,
                            Move4PowerPointsCurrent = 32,
                            Friendship              = 255,
                            PokerusStrain           = 0,
                            PokerusDuration         = 0,
                            CaughtTime              = 2,
                            CaughtLevel             = 5,
                            OTGender                = 0,
                            CaughtLocation          = 18,
                            Level     = 30,
                            Status    = 0,
                            Unused    = 0,
                            CurrentHp = 122,
                            MaxHp     = 122,
                            Attack    = 113,
                            Defense   = 90,
                            Speed     = 81,
                            SpAttack  = 93,
                            SpDefense = 93,
                            OTName    = "Justin",
                            Name      = "DRAGONITE"
                        },
                        new Pokemon
                        {
                            SpeciesId               = 83,
                            HeldItem                = 77,
                            MoveIndex1              = 64,
                            MoveIndex2              = 28,
                            MoveIndex3              = 31,
                            MoveIndex4              = 19,
                            TrainerId               = 3370,
                            Experience              = 10700,
                            HitPointsEV             = 3613,
                            AttackEV                = 2863,
                            DefenseEV               = 3311,
                            SpeedEV                 = 3451,
                            SpecialEV               = 2477,
                            AttackIV                = 4,
                            DefenseIV               = 9,
                            SpeedIV                 = 5,
                            SpecialIV               = 15,
                            Move1PowerPointsUps     = 0,
                            Move1PowerPointsCurrent = 35,
                            Move2PowerPointsUps     = 0,
                            Move2PowerPointsCurrent = 15,
                            Move3PowerPointsUps     = 0,
                            Move3PowerPointsCurrent = 20,
                            Move4PowerPointsUps     = 0,
                            Move4PowerPointsCurrent = 15,
                            Friendship              = 119,
                            PokerusStrain           = 0,
                            PokerusDuration         = 0,
                            CaughtTime              = 0,
                            CaughtLevel             = 0,
                            OTGender                = 0,
                            CaughtLocation          = 0,
                            Level     = 22,
                            Status    = 0,
                            Unused    = 0,
                            CurrentHp = 61,
                            MaxHp     = 61,
                            Attack    = 38,
                            Defense   = 36,
                            Speed     = 36,
                            SpAttack  = 39,
                            SpDefense = 41,
                            OTName    = "Justin",
                            Name      = "FARFETCH'D"
                        },
                        new Pokemon
                        {
                            SpeciesId               = 58,
                            HeldItem                = 49,
                            MoveIndex1              = 44,
                            MoveIndex2              = 36,
                            MoveIndex3              = 52,
                            MoveIndex4              = 43,
                            TrainerId               = 3370,
                            Experience              = 24580,
                            HitPointsEV             = 4316,
                            AttackEV                = 4799,
                            DefenseEV               = 4535,
                            SpeedEV                 = 4538,
                            SpecialEV               = 3616,
                            AttackIV                = 0,
                            DefenseIV               = 8,
                            SpeedIV                 = 5,
                            SpecialIV               = 14,
                            Move1PowerPointsUps     = 0,
                            Move1PowerPointsCurrent = 25,
                            Move2PowerPointsUps     = 0,
                            Move2PowerPointsCurrent = 20,
                            Move3PowerPointsUps     = 0,
                            Move3PowerPointsCurrent = 25,
                            Move4PowerPointsUps     = 0,
                            Move4PowerPointsCurrent = 30,
                            Friendship              = 142,
                            PokerusStrain           = 0,
                            PokerusDuration         = 0,
                            CaughtTime              = 0,
                            CaughtLevel             = 0,
                            OTGender                = 0,
                            CaughtLocation          = 0,
                            Level     = 26,
                            Status    = 0,
                            Unused    = 0,
                            CurrentHp = 69,
                            MaxHp     = 69,
                            Attack    = 45,
                            Defense   = 36,
                            Speed     = 43,
                            SpAttack  = 52,
                            SpDefense = 42,
                            OTName    = "Justin",
                            Name      = "GROWLITH",
                        },
                        new Pokemon
                        {
                            SpeciesId               = 147,
                            HeldItem                = 0,
                            MoveIndex1              = 82,
                            MoveIndex2              = 57,
                            MoveIndex3              = 86,
                            MoveIndex4              = 239,
                            TrainerId               = 3370,
                            Experience              = 19953,
                            HitPointsEV             = 6146,
                            AttackEV                = 7681,
                            DefenseEV               = 6816,
                            SpeedEV                 = 7558,
                            SpecialEV               = 5838,
                            AttackIV                = 6,
                            DefenseIV               = 9,
                            SpeedIV                 = 15,
                            SpecialIV               = 4,
                            Move1PowerPointsUps     = 0,
                            Move1PowerPointsCurrent = 10,
                            Move2PowerPointsUps     = 0,
                            Move2PowerPointsCurrent = 15,
                            Move3PowerPointsUps     = 0,
                            Move3PowerPointsCurrent = 20,
                            Move4PowerPointsUps     = 0,
                            Move4PowerPointsCurrent = 20,
                            Friendship              = 138,
                            PokerusStrain           = 0,
                            PokerusDuration         = 0,
                            CaughtTime              = 0,
                            CaughtLevel             = 0,
                            OTGender                = 0,
                            CaughtLocation          = 0,
                            Level     = 25,
                            Status    = 0,
                            Unused    = 0,
                            CurrentHp = 63,
                            MaxHp     = 63,
                            Attack    = 45,
                            Defense   = 37,
                            Speed     = 42,
                            SpAttack  = 36,
                            SpDefense = 36,
                            OTName    = "Justin",
                            Name      = "DRATINI",
                        },
                        new Pokemon
                        {
                            SpeciesId               = 100,
                            HeldItem                = 0,
                            MoveIndex1              = 33,
                            MoveIndex2              = 103,
                            MoveIndex3              = 49,
                            MoveIndex4              = 120,
                            TrainerId               = 3370,
                            Experience              = 12651,
                            HitPointsEV             = 112,
                            AttackEV                = 146,
                            DefenseEV               = 95,
                            SpeedEV                 = 129,
                            SpecialEV               = 136,
                            AttackIV                = 12,
                            DefenseIV               = 6,
                            SpeedIV                 = 3,
                            SpecialIV               = 2,
                            Move1PowerPointsUps     = 0,
                            Move1PowerPointsCurrent = 35,
                            Move2PowerPointsUps     = 0,
                            Move2PowerPointsCurrent = 40,
                            Move3PowerPointsUps     = 0,
                            Move3PowerPointsCurrent = 20,
                            Move4PowerPointsUps     = 0,
                            Move4PowerPointsCurrent = 5,
                            Friendship              = 86,
                            PokerusStrain           = 0,
                            PokerusDuration         = 0,
                            CaughtTime              = 0,
                            CaughtLevel             = 0,
                            OTGender                = 0,
                            CaughtLocation          = 0,
                            Level     = 23,
                            Status    = 0,
                            Unused    = 0,
                            CurrentHp = 52,
                            MaxHp     = 52,
                            Attack    = 25,
                            Defense   = 31,
                            Speed     = 53,
                            SpAttack  = 31,
                            SpDefense = 31,
                            OTName    = "Justin",
                            Name      = "VOLTORB",
                        },
                        new Pokemon
                        {
                            SpeciesId               = 30,
                            HeldItem                = 0,
                            MoveIndex1              = 10,
                            MoveIndex2              = 33,
                            MoveIndex3              = 40,
                            MoveIndex4              = 24,
                            TrainerId               = 3370,
                            Experience              = 7896,
                            HitPointsEV             = 4028,
                            AttackEV                = 4394,
                            DefenseEV               = 4143,
                            SpeedEV                 = 4293,
                            SpecialEV               = 3202,
                            AttackIV                = 5,
                            DefenseIV               = 15,
                            SpeedIV                 = 8,
                            SpecialIV               = 12,
                            Move1PowerPointsUps     = 0,
                            Move1PowerPointsCurrent = 35,
                            Move2PowerPointsUps     = 0,
                            Move2PowerPointsCurrent = 35,
                            Move3PowerPointsUps     = 0,
                            Move3PowerPointsCurrent = 35,
                            Move4PowerPointsUps     = 0,
                            Move4PowerPointsCurrent = 30,
                            Friendship              = 135,
                            PokerusStrain           = 0,
                            PokerusDuration         = 0,
                            CaughtTime              = 0,
                            CaughtLevel             = 0,
                            OTGender                = 0,
                            CaughtLocation          = 0,
                            Level     = 22,
                            Status    = 0,
                            Unused    = 0,
                            CurrentHp = 71,
                            MaxHp     = 71,
                            Attack    = 38,
                            Defense   = 44,
                            Speed     = 36,
                            SpAttack  = 37,
                            SpDefense = 37,
                            OTName    = "Justin",
                            Name      = "NIDORINA",
                        }
                    }
                }
            };

            return(model);
        }
示例#19
0
 public SaveGame(SaveFileModel dataModel)
 {
     _dataModel = dataModel;
     PartyPokemon = new List<Pokemon>();
 }
        /// <summary>
        /// 文件上传
        /// </summary>
        /// <param name="model">SaveFileModel</param>
        public UploadFileRes UploadFile(SaveFileModel model)
        {
            UploadFileRes uploadFileRes = new UploadFileRes();

            try
            {
                var handler = new WebRequestHandler();
                handler.ServerCertificateValidationCallback = delegate { return(true); };
                using (var httpClient = new HttpClient(handler))
                {
                    httpClient.DefaultRequestHeaders.Add("Authorization", model.TokenId);

                    // 文件body
                    byte[] body = model.Base64Str;
                    var    json = "{\"docid\":\"" + model.Docid + "\",\"name\":\"" + model.FileName.Trim() + "\",\"length\":" + body.Length + ",\"ondup\":" + model.Ondup + "}";

                    var content = new StringContent(json, Encoding.UTF8, "application/json");
                    var res     = httpClient.PostAsync($"{Constant.OAuth2Url}/api/efast/v1/file/osbeginupload", content).Result;
                    var resStr  = res.Content.ReadAsStringAsync().Result;

                    int resCode = (int)res.StatusCode;
                    // 若为错误返回码则抛出异常
                    if (resCode < 200 || resCode >= 300)
                    {
                        var errModel = JsonConvert.DeserializeObject <ErrorModel>(resStr);
                        _log.Debug($"UploadFile Osbeginupload Exception: {errModel.cause}, Code: {errModel.code}");
                        uploadFileRes.ErrorDetail = JsonConvert.SerializeObject(errModel.detail);
                        uploadFileRes.ErrorCode   = errModel.code;
                        return(uploadFileRes);
                    }

                    var    dynamicObj = JsonConvert.DeserializeObject <dynamic>(resStr);
                    string method     = dynamicObj["authrequest"][0].Value;
                    string url        = dynamicObj["authrequest"][1].Value;
                    string rev        = dynamicObj["rev"].Value;
                    string docid      = dynamicObj["docid"].Value;
                    uploadFileRes.FileId   = docid;
                    uploadFileRes.FileName = model.FileName.Trim();

                    List <string> headers = new List <string>();
                    for (int i = 2; i < dynamicObj["authrequest"].Count; ++i)
                    {
                        headers.Add(dynamicObj["authrequest"][i].Value);
                    }

                    OSSAPIHelper    ossHttpHelper = new OSSAPIHelper();
                    HttpWebResponse ossResult     = ossHttpHelper.SendReqToOSS(method, url, headers, body);
                    int             oosCode       = (int)ossResult.StatusCode;

                    // 若为错误返回码则抛出异常
                    if (oosCode < 200 || oosCode >= 300)
                    {
                        Stream resStream = ossResult.GetResponseStream();
                        string errBody   = string.Empty;
                        using (StreamReader reader = new StreamReader(resStream, Encoding.UTF8))
                        {
                            errBody = reader.ReadToEnd();
                        }
                        var errModel = JsonConvert.DeserializeObject <ErrorModel>(errBody);
                        _log.Debug($"UploadFile SendReqToOSS Exception: {errModel.cause}");
                        uploadFileRes.ErrorDetail = JsonConvert.SerializeObject(errModel.detail);
                        uploadFileRes.ErrorCode   = errModel.code;
                        ossResult.Close();
                        return(uploadFileRes);
                    }
                    ossResult.Close();

                    string sendJson    = "{\"docid\":\"" + docid + "\",\"rev\":\"" + rev + "\"}";
                    var    sendContent = new StringContent(sendJson, Encoding.UTF8, "application/json");
                    var    sendRes     = httpClient.PostAsync($"{Constant.OAuth2Url}/api/efast/v1/file/osendupload", sendContent).Result;
                    var    sendResStr  = sendRes.Content.ReadAsStringAsync().Result;

                    int sendCode = (int)sendRes.StatusCode;
                    // 若为错误返回码则抛出异常
                    if (sendCode < 200 || sendCode >= 300)
                    {
                        var errModel = JsonConvert.DeserializeObject <ErrorModel>(sendResStr);
                        _log.Debug($"UploadFile Oosendupload Exception: {errModel.cause}");
                        uploadFileRes.ErrorDetail = JsonConvert.SerializeObject(errModel.detail);
                        uploadFileRes.ErrorCode   = errModel.code;
                        return(uploadFileRes);
                    }
                }
                return(uploadFileRes);
            }
            catch (Exception ex)
            {
                _log.Debug($"UploadFile Exception: {ex.Message}");
                throw ex;
            }
        }
示例#21
0
 public SaveGame(SaveFileModel dataModel)
 {
     _dataModel   = dataModel;
     PartyPokemon = new List <Pokemon>();
 }
示例#22
0
        /// <summary>
        /// Contains all logic needed to parse data from a pokemon Gold/Silver sav file.
        ///
        /// See information available here for a detailed explaination:
        /// http://bulbapedia.bulbagarden.net/wiki/Save_data_structure_in_Generation_II
        /// http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_data_structure_in_Generation_II
        /// </summary>
        private SaveFileModel Deserialize()
        {
            var sav = new SaveFileModel();

            _breader.Seek(0x2000, SeekOrigin.Begin);
            sav.Options = _breader.ReadUInt64();

            _breader.Seek(0x2009, SeekOrigin.Begin);
            sav.PlayerTrainerID = _breader.ReadUInt16();

            _breader.Seek(0x200B, SeekOrigin.Begin);
            sav.PlayerName = _breader.ReadString(11, _charset);

            _breader.Seek(0x2021, SeekOrigin.Begin);
            sav.RivalName = _breader.ReadString(11, _charset);

            _breader.Seek(0x2037, SeekOrigin.Begin);
            sav.Daylightsavings = (_breader.ReadByte() & 0x80) == 1;

            _breader.Seek(0x2053, SeekOrigin.Begin);
            sav.TimePlayed = _breader.ReadUInt32();

            _breader.Seek(0x206B, SeekOrigin.Begin);
            sav.Playerpalette = _breader.ReadByte();

            _breader.Seek(0x23DB, SeekOrigin.Begin);
            sav.Money = _breader.ReadUInt24();

            _breader.Seek(0x23E4, SeekOrigin.Begin);
            sav.JohtoBadges = _breader.ReadByte();

            var arr = new BitArray(new[] { sav.JohtoBadges });

            sav.JohtoBadges = (byte)arr.Cast <bool>().Count(b => b);

            _breader.Seek(0x23E6, SeekOrigin.Begin);
            sav.TMpocket = ParseTMPocket();

            _breader.Seek(0x241F, SeekOrigin.Begin);
            sav.PocketItemList = ParseItemList(20);

            _breader.Seek(0x2449, SeekOrigin.Begin);
            sav.PocketKeyItemList = ParseItemList(26, true);

            _breader.Seek(0x2464, SeekOrigin.Begin);
            sav.PocketBallItemList = ParseItemList(12);

            _breader.Seek(0x247E, SeekOrigin.Begin);
            sav.PCItemList = ParseItemList(50);

            _breader.Seek(0x2724, SeekOrigin.Begin);
            sav.CurrentPCBoxNumber = _breader.ReadByte();

            // Boxes
            _breader.Seek(0x2727, SeekOrigin.Begin);
            sav.PCBoxNames = new string[14];
            for (var i = 0; i < 14; i++)
            {
                sav.PCBoxNames[i] = _breader.ReadString(9, _charset);
            }

            // Team
            _breader.Seek(0x288A, SeekOrigin.Begin);
            sav.TeamPokemonList = ParsePokeList(true, 6);

            // Pokedex
            _breader.Seek(0x2A4C, SeekOrigin.Begin);
            sav.PokedexOwned = new bool[32 * 8];
            var pokedex = _breader.ReadBytes(32);

            arr = new BitArray(pokedex);
            arr.CopyTo(sav.PokedexOwned, 0);

            _breader.Seek(0x2A6C, SeekOrigin.Begin);
            sav.PokedexSeen = new bool[32 * 8];
            pokedex         = _breader.ReadBytes(32);
            arr             = new BitArray(pokedex);
            arr.CopyTo(sav.PokedexSeen, 0);

            // Current Box List
            _breader.Seek(0x2D6C, SeekOrigin.Begin);
            sav.CurrentBoxPokemonlist = ParsePokeList(false, 20);

            // GET 1-7 boxes
            sav.Boxes = new PokeList[14];

            for (var i = 0; i < 7; i++)
            {
                _breader.Seek(0x4000 + 0x450 * i, SeekOrigin.Begin);
                sav.Boxes[i] = ParsePokeList(false, 20);
            }

            // GET 8-14 boxes
            for (var i = 7; i < 14; i++)
            {
                _breader.Seek(0x6000 + 0x450 * (i - 7), SeekOrigin.Begin);
                sav.Boxes[i] = ParsePokeList(false, 20);
            }

            // Checksum 0x2009 - 0x2D68
            _breader.Seek(0x2D69, SeekOrigin.Begin);
            sav.Checksum1 = _breader.ReadUInt16LittleEndian();

            // Calculate checksum
            _breader.Seek(0x2009, SeekOrigin.Begin);
            ushort checksum = 0;

            while (_breader.Position <= 0x2D68)
            {
                checksum += _breader.ReadByte();
            }

            if (checksum != sav.Checksum1)
            {
                throw new InvalidDataException("Checksum doesn't match. Data possibly corrupt.");
            }

            return(sav);
        }
示例#23
0
        /// <summary>
        /// creates a temporary save until we get full load/save management done.
        /// </summary>
        public static SaveGame CreateTempSave()
        {
            var dataModel = new SaveFileModel
            {
                PlayerData = new PlayerModel(),
                GameMode = "TestGM",
                Items = new[]
                {
                    new InventoryItemModel
                    {
                        Amount = 2,
                        Id = "Potion"
                    }
                },
                Pokedexes = new[]
                {
                    new PokedexSaveModel
                    {
                        PokedexId = "National",
                        Entries = new[]
                        {
                            new PokedexEntrySaveModel
                            {
                                EntryType = PokedexEntryType.Caught,
                                Forms = new[]
                                {
                                    "Default",
                                    "Shiny"
                                },
                                Id = "Bulbasaur"
                            }
                        }
                    }
                },
                Pokemon = new[]
                {
                    new PokemonSaveModel
                    {
                        Id = "Charizard",
                        HP = 1,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 21,
                            Atk = 20,
                            Def = 11,
                            SpAtk = 15,
                            SpDef = 30,
                            Speed = 1
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 50,
                            Atk = 255,
                            Def = 128,
                            SpAtk = 255,
                            SpDef = 255,
                            Speed = 0
                        },
                        Experience = 10000
                    },
                    new PokemonSaveModel
                    {
                        Id = "Bulbasaur",
                        HP = 5,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        }
                    },
                    new PokemonSaveModel
                    {
                        Id = "Charizard",
                        HP = 12,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        },
                        IsShiny = true
                    },
                    new PokemonSaveModel
                    {
                        Id = "Bulbasaur",
                        HP = 2,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        }
                    },
                    new PokemonSaveModel
                    {
                        Id = "Bulbasaur",
                        HP = 11,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        },
                        IsShiny = true
                    },
                    new PokemonSaveModel
                    {
                        Id = "Bulbasaur",
                        HP = 8,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        }
                    }
                }
            };

            return new SaveGame(dataModel);
        }
示例#24
0
        /// <summary>
        /// creates a temporary save until we get full load/save management done.
        /// </summary>
        public static SaveGame CreateTempSave()
        {
            var dataModel = new SaveFileModel
            {
                PlayerData = new PlayerModel(),
                GameMode   = "TestGM",
                Items      = new[]
                {
                    new InventoryItemModel
                    {
                        Amount = 2,
                        Id     = "Potion"
                    }
                },
                Pokedexes = new[]
                {
                    new PokedexSaveModel
                    {
                        PokedexId = "National",
                        Entries   = new[]
                        {
                            new PokedexEntrySaveModel
                            {
                                EntryType = PokedexEntryType.Caught,
                                Forms     = new[]
                                {
                                    "Default",
                                    "Shiny"
                                },
                                Id = "Bulbasaur"
                            }
                        }
                    }
                },
                Pokemon = new[]
                {
                    new PokemonSaveModel
                    {
                        Id  = "Charizard",
                        HP  = 1,
                        IVs = new PokemonStatSetModel
                        {
                            HP    = 21,
                            Atk   = 20,
                            Def   = 11,
                            SpAtk = 15,
                            SpDef = 30,
                            Speed = 1
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP    = 50,
                            Atk   = 255,
                            Def   = 128,
                            SpAtk = 255,
                            SpDef = 255,
                            Speed = 0
                        },
                        Experience = 10000
                    },
                    new PokemonSaveModel
                    {
                        Id  = "Bulbasaur",
                        HP  = 5,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        }
                    },
                    new PokemonSaveModel
                    {
                        Id  = "Charizard",
                        HP  = 12,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        },
                        IsShiny = true
                    },
                    new PokemonSaveModel
                    {
                        Id  = "Bulbasaur",
                        HP  = 2,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        }
                    },
                    new PokemonSaveModel
                    {
                        Id  = "Bulbasaur",
                        HP  = 11,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        },
                        IsShiny = true
                    },
                    new PokemonSaveModel
                    {
                        Id  = "Bulbasaur",
                        HP  = 8,
                        IVs = new PokemonStatSetModel
                        {
                            HP = 10
                        },
                        EVs = new PokemonStatSetModel
                        {
                            HP = 0
                        }
                    }
                }
            };

            return(new SaveGame(dataModel));
        }
示例#25
0
        public JsonResult SaveEmailToServer(SaveEmailModel model)
        {
            try
            {
                _log.Debug("SaveEmailToServer Start");
                var fileName = CommonHelper.DecodeUrl(model.FileName);
                var tokenId  = CommonHelper.GetToken(model.TokenId);
                var docId    = CommonHelper.DecodeUrl(model.Docid);
                var ewsUrl   = CommonHelper.DecodeUrl(model.EwsUrl);
                var ewsId    = CommonHelper.DecodeUrl(model.EwsId);
                var ewsToken = CommonHelper.DecodeUrl(model.EwsToken);
                _log.Debug($"SaveEmailToServer: {fileName}");

                _log.Debug($"SaveEmailToServer ExchangeService Start,  EWSUrl: {ewsUrl}");
                ExchangeService service = new ExchangeService();
                service.Url         = new Uri(ewsUrl);
                service.Credentials = new OAuthCredentials("Bearer " + ewsToken);
                service.Timeout     = 360 * 1000;

                List <ItemId> itemIds = new List <ItemId>()
                {
                    ewsId
                };
                var items       = service.BindToItems(itemIds, new PropertySet());
                var itemMessage = items.FirstOrDefault().Item;

                itemMessage.Load(new PropertySet(ItemSchema.MimeContent));
                MimeContent mimconm = itemMessage.MimeContent;
                _log.Debug($"SaveEmailToServer ExchangeService End");

                _log.Debug($"SaveEmailToServer UploadFile Start");
                SaveFileModel uploadModel = new SaveFileModel()
                {
                    Base64Str = mimconm.Content,
                    FileName  = fileName,
                    Docid     = docId,
                    TokenId   = tokenId,
                    Ondup     = model.Ondup
                };

                IAS7APIHelper helper        = new AS7APIHelper();
                var           uploadFileRes = helper.UploadFile(uploadModel);
                _log.Debug($"SaveEmailToServer UploadFile End");

                if (uploadFileRes.ErrorCode == 403002039)
                {
                    uploadFileRes.FileName = helper.GetSuggestFileName(tokenId, docId, fileName);
                }
                _log.Debug("SaveEmailToServer End");
                return(Json(new JsonModel {
                    Success = true, StatusCode = uploadFileRes.ErrorCode, Data = JsonConvert.SerializeObject(uploadFileRes)
                }));
            }
            catch (Exception ex)
            {
                _log.Debug($"SaveEmailToServer Exception: {ex.Message}");
                return(Json(new JsonModel {
                    Success = false, Message = ex.Message
                }));
            }
        }
        public async Task <SaveFileResponse> SaveChunk(SaveFileModel model)
        {
            var path = CreateTempFileLocation(model.FileName);

            return(await Save(path, model));
        }
示例#27
0
        private void Serialize(SaveFileModel save)
        {
            _bwriter.Seek(0x2000, SeekOrigin.Begin);
            _bwriter.WriteUInt64(save.Options);

            _bwriter.Seek(0x2009, SeekOrigin.Begin);
            _bwriter.WriteUInt16((ushort)save.PlayerTrainerID);

            _bwriter.Seek(0x200B, SeekOrigin.Begin);
            _bwriter.WriteString(save.PlayerName, 11, _charset);

            _bwriter.Seek(0x2021, SeekOrigin.Begin);
            _bwriter.WriteString(save.RivalName, 11, _charset);

            _bwriter.Seek(0x2037, SeekOrigin.Begin);
            _bwriter.Write((byte)(save.Daylightsavings ? 0x80 : 0));

            _bwriter.Seek(0x2053, SeekOrigin.Begin);
            _bwriter.WriteUInt32(save.TimePlayed);

            _bwriter.Seek(0x206B, SeekOrigin.Begin);
            _bwriter.Write(save.Playerpalette);

            _bwriter.Seek(0x23DB, SeekOrigin.Begin);
            _bwriter.WriteUInt24(save.Money);

            _bwriter.Seek(0x23E4, SeekOrigin.Begin);

            // Johnto Badges
            var arr    = new BitArray(Enumerable.Repeat(true, save.JohtoBadges).ToArray());
            var buffer = new byte[1];

            arr.CopyTo(buffer, 0);
            _bwriter.Write(buffer[0]);

            _bwriter.Seek(0x23E6, SeekOrigin.Begin);
            SerializeTmPocket(save.TMpocket);

            _bwriter.Seek(0x241F, SeekOrigin.Begin);
            SerializeItemList(20, save.PocketItemList);

            _bwriter.Seek(0x2449, SeekOrigin.Begin);
            SerializeItemList(26, save.PocketKeyItemList, true);

            _bwriter.Seek(0x2464, SeekOrigin.Begin);
            SerializeItemList(12, save.PocketBallItemList);

            _bwriter.Seek(0x247E, SeekOrigin.Begin);
            SerializeItemList(50, save.PCItemList);

            _bwriter.Seek(0x2724, SeekOrigin.Begin);
            _bwriter.Write(save.CurrentPCBoxNumber);

            // Boxes
            _bwriter.Seek(0x2727, SeekOrigin.Begin);
            for (var i = 0; i < 14; i++)
            {
                _bwriter.WriteString(save.PCBoxNames[i], 9, _charset);
            }

            // Team
            _bwriter.Seek(0x288A, SeekOrigin.Begin);
            SerializePokeList(true, 6, save.TeamPokemonList);

            // Pokedex
            _bwriter.Seek(0x2A4C, SeekOrigin.Begin);
            arr    = new BitArray(save.PokedexOwned);
            buffer = new byte[32];
            arr.CopyTo(buffer, 0);
            foreach (var b in buffer)
            {
                _bwriter.Write(b);
            }

            _bwriter.Seek(0x2A6C, SeekOrigin.Begin);
            arr    = new BitArray(save.PokedexSeen);
            buffer = new byte[32];
            arr.CopyTo(buffer, 0);
            foreach (var b in buffer)
            {
                _bwriter.Write(b);
            }

            // Current Box List
            _bwriter.Seek(0x2D6C, SeekOrigin.Begin);
            SerializePokeList(false, 20, save.CurrentBoxPokemonlist);

            // GET 1-7 boxes
            for (var i = 0; i < 7; i++)
            {
                _bwriter.Seek(0x4000 + 0x450 * i, SeekOrigin.Begin);
                SerializePokeList(false, 20, save.Boxes[i]);
            }

            // GET 8-14 boxes
            for (var i = 7; i < 14; i++)
            {
                _bwriter.Seek(0x6000 + 0x450 * (i - 7), SeekOrigin.Begin);
                SerializePokeList(false, 20, save.Boxes[i]);
            }

            // Calculate checksum
            ushort checksum = 0;

            _breader.Seek(0x2009, SeekOrigin.Begin);
            while (_breader.Position <= 0x2D68)
            {
                checksum += _breader.ReadByte();
            }

            // Write Checksum 1 (0x2009 - 0x2D68)
            _bwriter.Seek(0x2D69, SeekOrigin.Begin);
            _bwriter.WriteInt16LittleEndian(checksum);
        }