// Konstruktor tworzący kompletny obiekt zawierający wszystkie dane dotyczące gracza. Tworzony // jest nowy plik XML (lub nadpisywany istniejący) zawierający informacje o graczu. // // todo: Pliki są tworzone również dla anonimowych użytkowników (niezalogowanych), można // by zrobić mechanizm, który będzie usuwał stare pliki, żeby nie zajmowały miejsca na // serwerze. Dostęp do pliku z poziomu niezalogowanego użytkownika jest obecnie niemożliwy. public CharacterDbModel( Character character, ApplicationUser user = null ) : this(user) { // Tworzenie pliku XML (nadpisuje istniejące pliki) XmlModels.Character characterXml = new XmlModels.Character(character); // Aktualizacja danych w modelu CharacterName = character.Name; ChartID = character.ChartID; CharacterID = character.CharacterID; AvatarImgSrc = character.AvatarImg; CharacterDataSrc = DefaultConstants.Application.DefaultXmlLocalization( CharacterID.ToString(), DefaultConstants.Application.DefaultCharacterXmlFolder ); }
// Konstruktor tworzący gotowy model. Dane pobiera zarówno z bazy danych, jak i z pliku // XML, dlatego warto upewnić się, że plik rzeczywiście istnieje. // // todo: Obsługa wyjątków w przypadku, gdy odczytywanie pliku nie powiedzie się: // * ArgumentNullException - gdy nie zostanie przekazana nazwa pliku (CharacterID) // * FileNotFoundException - gdy plik nie istnieje // * NullReferenceException - następstwo dwóch poprzednich, powstanie pusty obiekt, // z którego będziemy próbowali odczytać dane /// <summary>Tworzy kompletny obiekt gracza zawierający wszystkie informacje</summary> /// <param name="characterDb">Model z danymi z bazy</param> public Character( CharacterDbModel characterDb ) { // Przepisywanie danych do obiektu z bazy danych CharacterID = characterDb.CharacterID; ChartID = characterDb.ChartID; UserID = characterDb.UserID; Name = characterDb.CharacterName; AvatarImg = characterDb.AvatarImgSrc; // Uzupełnianie danych użytkownika, który stworzył gracza if (UserID != null) { UserData = new User(ApplicationDbContext.Create().Users.Find(UserID)); } else UserData = null; // Odczytywanie pliku XML // UWAGA - Nie sprawdza, czy plik istnieje, możliwy wyjątek! XmlModels.Character characterXml = new XmlModels.Character(CharacterID); // Przepisywanie danych do obiektu z pliku XML Data = DefaultMethods.ToDictionary(characterXml.Data); Stats = DefaultMethods.ToDictionary(characterXml.Stat); Attributes = DefaultMethods.ToDictionary(characterXml.Attribute); Skills = DefaultMethods.ToDictionary(characterXml.Skill); if (characterXml.Equipment != null) Equipment = characterXml.Equipment.ToArray(); else Equipment = null; if (characterXml.Description != null) Description = characterXml.Description.ToString(); else Description = null; }