public void TestWriteWithoutChanges(string filePath) => File.OpenRead(filePath).Using(stream => { var mem = new MemoryStream((int)stream.Length); SaveKh3.Read(stream).Write(mem); AssertSaveGame(SaveKh3.Read(mem.SetPosition(0))); });
public void TestIsValid(string filePath) { using (var stream = File.OpenRead(filePath)) { Assert.True(SaveKh3.IsValid(stream)); } }
public void TestWriteWithChanges(string filePath) { MemoryStream mem = null; File.OpenRead(filePath).Using(stream => { var tempSave = SaveKh3.Read(stream); tempSave.TotalExp = 1234; tempSave.Difficulty = DifficultyType.Normal; tempSave.GameTime = new TimeSpan(12, 34, 56); tempSave.MapPath = "TestPath"; tempSave.Shortcuts[0].Triangle = CommandType.SeaBlizzard; tempSave.Magics[0] = CommandType.SeaFire; mem = new MemoryStream((int)stream.Length); tempSave.Write(mem); }); var save = SaveKh3.Read(mem.SetPosition(0)); Assert.Equal(1234, save.TotalExp); Assert.Equal(DifficultyType.Normal, save.Difficulty); Assert.Equal(new TimeSpan(12, 34, 56), save.GameTime); Assert.Equal("TestPath", save.MapPath); Assert.Equal(CommandType.SeaBlizzard, save.Shortcuts[0].Triangle); Assert.Equal(CommandType.SeaFire, save.Magics[0]); }
public StorySimpleViewModel(SaveKh3 save) { Save = save; NewGamePlusCommand = new StoryCommand(save, "New Game+ (simulated)", "/Game/Levels/ew/ew_01/ew_01", new Dictionary <StoryFlagType, int>() { [StoryFlagType.TheFinalWorld] = 0, [StoryFlagType.Story33] = 2000, [StoryFlagType.Story34] = 0, [StoryFlagType.Story35] = 0, [StoryFlagType.Story36] = 0, [StoryFlagType.Story37] = 0, [StoryFlagType.Story38] = 0, [StoryFlagType.Story39] = 0, [StoryFlagType.Story3A] = 0, [StoryFlagType.Story3B] = 0, [StoryFlagType.Story3C] = 0, }, true); NewGamePlusGlitchyCommand = new StoryCommand(save, "New Game+ (but with story complete)", "/Game/Levels/ew/ew_01/ew_01", CompleteSave(new Dictionary <StoryFlagType, int>() { [StoryFlagType.TheFinalWorld] = 0, }), false); CompleteGameCommand = new StoryCommand(save, "Complete game", "/Game/Levels/bt/bt_01/bt_01", CompleteSave(), false); LandOfDepartureCommand = new StoryCommand(save, "Back to Land of Departure (before Vanitas fight)", "/Game/Levels/dp/dp_01/dp_01", new Dictionary <StoryFlagType, int>() { [StoryFlagType.LandOfDeparture] = 0, [StoryFlagType.Story33] = 2000, [StoryFlagType.Story34] = 2000, [StoryFlagType.Story35] = 2000, [StoryFlagType.Story36] = 2000, [StoryFlagType.Story37] = 2000, [StoryFlagType.Story38] = 2000, [StoryFlagType.Story39] = 2000, [StoryFlagType.Story3A] = 0, [StoryFlagType.Story3B] = 0, [StoryFlagType.Story3C] = 0, }, false); KgBattleGameCommand = new StoryCommand(save, "Keyblade Graveyard, before 1000 Heartless", "/Game/Levels/kg/kg_01/kg_01", CompleteSave(new Dictionary <StoryFlagType, int>() { [StoryFlagType.ScalaAdCaelum] = 0, [StoryFlagType.Story03] = 900, [StoryFlagType.Story04] = 100, [StoryFlagType.Story05] = 382, [StoryFlagType.TheFinalWorld] = 2300, [StoryFlagType.Story0D] = 0, [StoryFlagType.Story0E] = 0, [StoryFlagType.Story0F] = 0, [StoryFlagType.Story10] = 0, [StoryFlagType.Story11] = 0, [StoryFlagType.Story12] = 0, [StoryFlagType.Story1A] = 10, [StoryFlagType.Story1E] = 0, [StoryFlagType.KeybladeGraveyard] = 50, [StoryFlagType.KG_Riku_Xigbar] = 0, [StoryFlagType.KG_Luxord_Marluxia_Larxene] = 0, [StoryFlagType.KG_Vanitas_Terra] = 0, [StoryFlagType.KG_Xion_Saix] = 0, [StoryFlagType.Story31] = 100, [StoryFlagType.Story32] = 0, }), false); }
public Kh3Test() { using (var stream = File.OpenRead(FilePath)) { save = SaveKh3.Read(stream); } }
public void ReadDlcFieldsFor109() { var save = File.OpenRead(File109Path).Using(stream => SaveKh3.Read(stream)); Assert.Equal("/Game/Levels/rg_DLC/rg_03/rg_03", save.DlcMapPath); Assert.Equal("rg_03_Lv_Start_01", save.DlcSpawnPoint); }
public void IgnoreDlcFieldsFor100() { var save = File.OpenRead(FilePath).Using(stream => SaveKh3.Read(stream)); save.DlcMapPath = "DlcMapPath"; save.DlcSpawnPoint = "DlcSpawnPoint"; Assert.Equal(string.Empty, save.DlcMapPath); Assert.Equal(string.Empty, save.DlcSpawnPoint); }
public void TestWriteWithoutChanges() { var mem = new MemoryStream(9758960); save.Write(mem); mem.Position = 0; save = SaveKh3.Read(mem); TestRead(); }
public SystemViewModel(SaveKh3 save) { this.save = save; Difficulty = new KhEnumListModel <DifficultyType>(() => save.Difficulty, x => save.Difficulty = x); WorldIcon = new KhEnumListModel <WorldType>(() => save.WorldLogo, x => save.WorldLogo = x); Location = new KhEnumListModel <LocationType>(() => save.LocationName, x => save.LocationName = x); CharacterIcon = new KhEnumListModel <CharacterIconType>(() => save.MySaveIcon, x => save.MySaveIcon = x); RoomWorld = new KhEnumListModel <GenericEntryModel <string, string>, WorldType, string>( () => RoomWorldId, x => RoomWorldId = x, x => WorldAttribute.GetWorldId(x)); DesireChoice = new KhEnumListModel <DesireChoice>(() => save.DesireChoice, x => save.DesireChoice = x); PowerChoice = new KhEnumListModel <PowerChoice>(() => save.PowerChoice, x => save.PowerChoice = x); }
public ShortcutsViewModel(SaveKh3 save) { _save = save; Shortcut1 = new ShortcutGroupViewModel(_save, 0); Shortcut2 = new ShortcutGroupViewModel(_save, 1); Shortcut3 = new ShortcutGroupViewModel(_save, 2); Magic1 = new ItemComboBoxModel <CommandType>(() => save.Magics[0], x => save.Magics[0] = x); Magic2 = new ItemComboBoxModel <CommandType>(() => save.Magics[1], x => save.Magics[1] = x); Magic3 = new ItemComboBoxModel <CommandType>(() => save.Magics[2], x => save.Magics[2] = x); Magic4 = new ItemComboBoxModel <CommandType>(() => save.Magics[3], x => save.Magics[3] = x); Magic5 = new ItemComboBoxModel <CommandType>(() => save.Magics[4], x => save.Magics[4] = x); Magic6 = new ItemComboBoxModel <CommandType>(() => save.Magics[5], x => save.Magics[5] = x); Link1 = new ItemComboBoxModel <CommandType>(() => save.Links[0], x => save.Links[0] = x); Link2 = new ItemComboBoxModel <CommandType>(() => save.Links[1], x => save.Links[1] = x); Link3 = new ItemComboBoxModel <CommandType>(() => save.Links[2], x => save.Links[2] = x); Link4 = new ItemComboBoxModel <CommandType>(() => save.Links[3], x => save.Links[3] = x); Link5 = new ItemComboBoxModel <CommandType>(() => save.Links[4], x => save.Links[4] = x); }
public ShortcutGroupViewModel(SaveKh3 save, int groupIndex) { _save = save; Circle = new ItemComboBoxModel <CommandType>( () => save.Shortcuts[groupIndex].Circle, x => save.Shortcuts[groupIndex].Circle = x); Triangle = new ItemComboBoxModel <CommandType>( () => save.Shortcuts[groupIndex].Triangle, x => save.Shortcuts[groupIndex].Triangle = x); Square = new ItemComboBoxModel <CommandType>( () => save.Shortcuts[groupIndex].Square, x => save.Shortcuts[groupIndex].Square = x); Cross = new ItemComboBoxModel <CommandType>( () => save.Shortcuts[groupIndex].Cross, x => save.Shortcuts[groupIndex].Cross = x); }
public StoryCommand( SaveKh3 save, string name, string map, Dictionary <StoryFlagType, int> flags, bool zeroEverything = false) : base(x => { if (!ThrowConfirmationMessage(name)) { return; } if (!string.IsNullOrEmpty(map)) { save.MapPath = map; save.MapSpawn = "default"; } if (zeroEverything) { for (var i = 0; i < save.Storyflags.Count; i++) { save.Storyflags[i] = 0; } } for (var i = 0; i < save.Storyflags.Count; i++) { if (flags.TryGetValue((StoryFlagType)i, out var newFlag)) { save.Storyflags[i] = newFlag; } } }) { Name = name; }
public void TestWriteWithChanges() { save.TotalExp = 1234; save.Difficulty = DifficultyType.Normal; save.GameTime = new TimeSpan(12, 34, 56); save.MapPath = "TestPath"; save.Shortcuts[0].Triangle = CommandType.SeaBlizzard; save.Magics[0] = CommandType.SeaFire; var mem = new MemoryStream(9758960); save.Write(mem); mem.Position = 0; var save2 = SaveKh3.Read(mem); Assert.Equal(1234, save2.TotalExp); Assert.Equal(DifficultyType.Normal, save2.Difficulty); Assert.Equal(new TimeSpan(12, 34, 56), save2.GameTime); Assert.Equal("TestPath", save2.MapPath); Assert.Equal(CommandType.SeaBlizzard, save2.Shortcuts[0].Triangle); Assert.Equal(CommandType.SeaFire, save2.Magics[0]); }
public MaterialModel(SaveKh3 save, int index) { this.save = save; this.index = index; }
public StoryViewModel(SaveKh3 save) { Advanced = new StoryAdvancedViewModel(save.Storyflags); Simple = new StorySimpleViewModel(save); }
public void TestChecksum() { File.OpenRead(FilePath).Using(stream => Assert.Equal(0xE5783B63, SaveKh3.CalculateChecksum(stream))); }
public void ReadSaveTest(string filePath) => File.OpenRead(filePath).Using(stream => AssertSaveGame(SaveKh3.Read(stream)));
public Kh3ViewModel(Stream stream) { Save = SaveKh3.Read(stream); RefreshUi(); }
public void OpenStream(Stream stream) { Save = SaveKh3.Read(stream); RefreshUi(); }
public MaterialsViewModel(SaveKh3 save) : base(save.MaterialsCount .Where((_, i) => Global.CanDisplay((MaterialType)i)) .Select((_, i) => new MaterialModel(save, i))) { }