/// <summary> /// Loads characters from the default save file location /// </summary> public IEnumerable <CharacterModel> LoadCharacters(IEnumerable <BackgroundModel> backgrounds, IEnumerable <ClassModel> classes, IEnumerable <ConditionModel> conditions, IEnumerable <FeatModel> feats, IEnumerable <ItemModel> items, IEnumerable <LanguageModel> languages, IEnumerable <MonsterModel> monsters, IEnumerable <RaceModel> races, IEnumerable <SpellModel> spells) { List <CharacterModel> characters = new List <CharacterModel>(); string path = Path.Combine(_saveDataFolder, _characterSaveFileName); if (File.Exists(path)) { ICharacterPersister characterPersister = null; byte[] characterBytes = File.ReadAllBytes(path); int version = BitConverter.ToInt32(characterBytes.Take(4).ToArray(), 0); if (version == 1) { characterPersister = DependencyResolver.Resolve <Version1.CharacterPersister>(); } else if (version == 2) { characterPersister = DependencyResolver.Resolve <Version2.CharacterPersister>(); } if (characterPersister != null) { characters = characterPersister.GetCharacters(characterBytes, backgrounds, classes, conditions, feats, items, languages, monsters, races, spells).ToList(); } } return(characters); }
/// <summary> /// Gets character bytes /// </summary> public byte[] GetCharacterBytes(CharacterModel character) { byte[] characterBytes = null; ICharacterPersister characterPersister = DependencyResolver.Resolve <Version2.CharacterPersister>(); characterBytes = characterPersister.GetBytes(new CharacterModel[] { character }); return(characterBytes); }
/// <summary> /// Saves characters to the default save file location /// </summary> public void SaveCharacters(IEnumerable <CharacterModel> characters) { string path = Path.Combine(_saveDataFolder, _characterSaveFileName); ICharacterPersister characterPersister = DependencyResolver.Resolve <Version2.CharacterPersister>(); byte[] characterBytes = characterPersister.GetBytes(characters); File.WriteAllBytes(path, characterBytes); }
/// <summary> /// Gets a character from the byte array using selected resources /// </summary> public CharacterModel GetCharacter(byte[] characterBytes, IEnumerable <BackgroundModel> backgrounds, IEnumerable <ClassModel> classes, IEnumerable <ConditionModel> conditions, IEnumerable <FeatModel> feats, IEnumerable <ItemModel> items, IEnumerable <LanguageModel> languages, IEnumerable <MonsterModel> monsters, IEnumerable <RaceModel> races, IEnumerable <SpellModel> spells) { CharacterModel character = null; ICharacterPersister characterPersister = null; int version = BitConverter.ToInt32(characterBytes.Take(4).ToArray(), 0); if (version == 1) { characterPersister = DependencyResolver.Resolve <Version1.CharacterPersister>(); } else if (version == 2) { characterPersister = DependencyResolver.Resolve <Version2.CharacterPersister>(); } if (characterPersister != null) { character = characterPersister.GetCharacters(characterBytes, backgrounds, classes, conditions, feats, items, languages, monsters, races, spells).First(); } return(character); }