/// <summary>Loads all necessary items from disk.</summary> public static void LoadAll() { FileManagement(); AllClasses = JSONInteraction.LoadClasses(); AllCourses = JSONInteraction.LoadCourses(); AllStudents = JSONInteraction.LoadStudents(); AllTeachers = JSONInteraction.LoadTeachers(); }
/// <summary>Modifies a passed <see cref="Student"/> on disk.</summary> /// <param name="oldStudent">Old <see cref="Student"/></param> /// <param name="newStudent">New <see cref="Student"/></param> public static void ModifyStudent(Student oldStudent, Student newStudent) { if (oldStudent.Id != newStudent.Id) { JSONInteraction.DeleteStudent(oldStudent); } JSONInteraction.WriteStudent(newStudent); AllStudents.Replace <Student>(oldStudent, newStudent); }
/// <summary>Saves Hero to database.</summary> /// <param name="saveHero">Hero to be saved</param> /// <returns>Returns true if successfully saved</returns> internal static bool SaveHero(Hero saveHero) { JSONInteraction.SaveHero(saveHero); int index = AllHeroes.FindIndex(hero => hero.Name == saveHero.Name); AllHeroes[index] = saveHero; return(true); }
/// <summary>Deletes a <see cref="Teacher"/>.</summary> /// <param name="deleteTeacher"><see cref="Teacher"/> to be deleted</param> public static void DeleteTeacher(Teacher deleteTeacher) { JSONInteraction.DeleteTeacher(deleteTeacher); foreach (SchoolClass cls in AllClasses) { if (cls.Teacher.Equals(deleteTeacher.Id, StringComparison.OrdinalIgnoreCase)) { cls.Teacher = ""; JSONInteraction.WriteClass(cls); } } AllTeachers.Remove(deleteTeacher); }
/// <summary>Deletes a <see cref="SchoolClass"/>.</summary> /// <param name="deleteClass"><see cref="SchoolClass"/> to be deleted</param> public static void DeleteClass(SchoolClass deleteClass) { JSONInteraction.DeleteClass(deleteClass); foreach (Teacher teacher in AllTeachers) { teacher.ClassesTaught.RemoveAll(clsTaught => clsTaught.Equals(deleteClass.Id, StringComparison.OrdinalIgnoreCase)); } foreach (Student student in AllStudents) { student.EnrolledClasses.RemoveAll(clsTaught => clsTaught.Equals(deleteClass.Id, StringComparison.OrdinalIgnoreCase)); } AllClasses.Remove(deleteClass); }
/// <summary>Loads almost everything from the database.</summary> internal static void LoadAll() { AllClasses = JSONInteraction.LoadClasses().OrderBy(o => o.Name).ToList(); AllHeadArmor = JSONInteraction.LoadArmor <Item>("head").OrderBy(o => o.Value).ToList(); AllBodyArmor = JSONInteraction.LoadArmor <Item>("body").OrderBy(o => o.Value).ToList(); AllHandArmor = JSONInteraction.LoadArmor <Item>("hand").OrderBy(o => o.Value).ToList(); AllLegArmor = JSONInteraction.LoadArmor <Item>("leg").OrderBy(o => o.Value).ToList(); AllFeetArmor = JSONInteraction.LoadArmor <Item>("feet").OrderBy(o => o.Value).ToList(); AllRings = JSONInteraction.LoadRings().OrderBy(o => o.Value).ToList(); AllWeapons = JSONInteraction.LoadWeapons().OrderBy(o => o.Type).ThenBy(o => o.Value).ToList(); AllDrinks = JSONInteraction.LoadDrinks().OrderBy(o => o.Value).ToList(); AllFood = JSONInteraction.LoadFood().OrderBy(o => o.Value).ToList(); AllPotions = JSONInteraction.LoadPotions().OrderBy(o => o.Cures).ThenBy(o => o.RestoreHealth).ThenBy(o => o.RestoreMagic).ToList(); AllSpells = JSONInteraction.LoadSpells().OrderBy(o => o.Value).ToList(); AllEnemies = JSONInteraction.LoadEnemies().OrderBy(o => o.Name).ToList(); //foreach (Enemy enemy in AllEnemies) //{ // if (enemy.Equipment.Weapon != new Item()) // enemy.Equipment.Weapon = AllWeapons.Find(itm => itm.Name == enemy.Equipment.Weapon.Name); // if (enemy.Equipment.Head != new Item()) // enemy.Equipment.Head = AllHeadArmor.Find(itm => itm.Name == enemy.Equipment.Head.Name); // if (enemy.Equipment.Body != new Item()) // enemy.Equipment.Body = AllBodyArmor.Find(itm => itm.Name == enemy.Equipment.Body.Name); // if (enemy.Equipment.Hands != new Item()) // enemy.Equipment.Hands = AllHandArmor.Find(itm => itm.Name == enemy.Equipment.Hands.Name); // if (enemy.Equipment.Legs != new Item()) // enemy.Equipment.Legs = AllLegArmor.Find(itm => itm.Name == enemy.Equipment.Legs.Name); // if (enemy.Equipment.Feet != new Item()) // enemy.Equipment.Feet = AllFeetArmor.Find(itm => itm.Name == enemy.Equipment.Feet.Name); // if (enemy.Equipment.LeftRing != new Item()) // enemy.Equipment.LeftRing = AllRings.Find(itm => itm.Name == enemy.Equipment.LeftRing.Name); // if (enemy.Equipment.RightRing != new Item()) // enemy.Equipment.RightRing = AllRings.Find(itm => itm.Name == enemy.Equipment.RightRing.Name); //} //JSONInteraction.WriteAll(AllClasses, AllHeadArmor, AllBodyArmor, AllHandArmor, AllLegArmor, AllFeetArmor, AllRings, AllWeapons, AllDrinks, AllFood, AllPotions, AllSpells, AllEnemies); // TODO Save scene history on application exit and load back when the same player logs in. AllItems.AddRanges(AllHeadArmor, AllBodyArmor, AllHandArmor, AllLegArmor, AllFeetArmor, AllRings, AllFood, AllDrinks, AllPotions, AllWeapons); DefaultWeapon = AllWeapons.Find(weapon => weapon.Name == "Fists"); DefaultHead = AllHeadArmor.Find(armor => armor.Name == "Cloth Helmet"); DefaultBody = AllBodyArmor.Find(armor => armor.Name == "Cloth Shirt"); DefaultHands = AllHandArmor.Find(armor => armor.Name == "Cloth Gloves"); DefaultLegs = AllLegArmor.Find(armor => armor.Name == "Cloth Pants"); DefaultFeet = AllFeetArmor.Find(armor => armor.Name == "Cloth Shoes"); AllHeroes = JSONInteraction.LoadHeroes().OrderBy(o => o.Name).ToList(); }
/// <summary>Deletes a <see cref="Course"/>.</summary> /// <param name="deleteCourse"><see cref="Course"/> to be deleted</param> public static void DeleteCourse(Course deleteCourse) { // if a course is deleted, all classes that teach it need to be deleted // all teachers who teach a class with that course need to have that class deleted // all students enrolled in a class with that course need to have that class deleted JSONInteraction.DeleteCourse(deleteCourse); foreach (SchoolClass cls in AllClasses) { if (cls.Course == deleteCourse) { DeleteClass(cls); } } AllCourses.Remove(deleteCourse); }
/// <summary>Deletes a <see cref="Student"/>.</summary> /// <param name="deleteStudent"><see cref="Student"/> to be deleted</param> public static void DeleteStudent(Student deleteStudent) { JSONInteraction.DeleteStudent(deleteStudent); foreach (SchoolClass cls in AllClasses) { if (cls.Students.Any(std => std.Equals(deleteStudent.Id, StringComparison.OrdinalIgnoreCase))) { cls.Students.RemoveAll(std => std.Equals(deleteStudent.Id, StringComparison.OrdinalIgnoreCase)); foreach (Assignment assignment in cls.Gradebook) { assignment.Grades.Remove(deleteStudent.Id); } JSONInteraction.WriteClass(cls); } } AllStudents.Remove(deleteStudent); }
/// <summary>Writes the current scene history to disk.</summary> internal static void WriteSceneHistory() => JSONInteraction.WriteSceneHistory(History, CurrentHero.Name);
/// <summary>Creates a new Hero and adds it to the database.</summary> /// <param name="newHero">New Hero</param> internal static void NewHero(Hero newHero) { if (newHero.Equipment.Head == null || newHero.Equipment.Head == new Item()) { newHero.Equipment.Head = AllHeadArmor.Find(armor => armor.Name == DefaultHead.Name); } if (newHero.Equipment.Body == null || newHero.Equipment.Body == new Item()) { newHero.Equipment.Body = AllBodyArmor.Find(armor => armor.Name == DefaultBody.Name); } if (newHero.Equipment.Hands == null || newHero.Equipment.Hands == new Item()) { newHero.Equipment.Hands = AllHandArmor.Find(armor => armor.Name == DefaultHands.Name); } if (newHero.Equipment.Legs == null || newHero.Equipment.Legs == new Item()) { newHero.Equipment.Legs = AllLegArmor.Find(armor => armor.Name == DefaultLegs.Name); } if (newHero.Equipment.Feet == null || newHero.Equipment.Feet == new Item()) { newHero.Equipment.Feet = AllFeetArmor.Find(armor => armor.Name == DefaultFeet.Name); } if (newHero.Equipment.Weapon == null || newHero.Equipment.Weapon == new Item()) { switch (newHero.Class.Name) { case "Wizard": newHero.Equipment.Weapon = AllWeapons.Find(wpn => wpn.Name == "Starter Staff"); if (newHero.Spellbook == null || newHero.Spellbook == new Spellbook()) { newHero.Spellbook?.LearnSpell(AllSpells.Find(spell => spell.Name == "Fire Bolt")); } break; case "Cleric": newHero.Equipment.Weapon = AllWeapons.Find(wpn => wpn.Name == "Starter Staff"); if (newHero.Spellbook == null || newHero.Spellbook == new Spellbook()) { newHero.Spellbook?.LearnSpell(AllSpells.Find(spell => spell.Name == "Heal Self")); } break; case "Warrior": newHero.Equipment.Weapon = AllWeapons.Find(wpn => wpn.Name == "Stone Dagger"); break; case "Rogue": newHero.Equipment.Weapon = AllWeapons.Find(wpn => wpn.Name == "Starter Bow"); break; default: newHero.Equipment.Weapon = AllWeapons.Find(wpn => wpn.Name == "Stone Dagger"); break; } } newHero.Gold = 250; for (int i = 0; i < 3; i++) { newHero.AddItem(AllPotions.Find(itm => itm.Name == "Minor Healing Potion")); } JSONInteraction.SaveHero(newHero); AllHeroes.Add(newHero); }
/// <summary>Deletes a Hero from the game and database.</summary> /// <param name="deleteHero">Hero to be deleted</param> /// <returns>Whether deletion was successful</returns> internal static void DeleteHero(Hero deleteHero) { JSONInteraction.DeleteHero(deleteHero); AllHeroes.Remove(deleteHero); }
/// <summary>Saves a <see cref="Teacher"/> to disk.</summary> /// <param name="newTeacher"><see cref="Teacher"/> to be saved to disk</param> public static void NewTeacher(Teacher newTeacher) { JSONInteraction.NewTeacher(newTeacher); AllTeachers.Add(newTeacher); AllTeachers = AllTeachers.OrderBy(course => course.Id).ToList(); }
/// <summary>Saves a <see cref="Student"/> to disk.</summary> /// <param name="newStudent"><see cref="Student"/> to be saved to disk</param> public static void NewStudent(Student newStudent) { JSONInteraction.WriteStudent(newStudent); AllStudents.Add(newStudent); AllStudents = AllStudents.OrderBy(student => student.Id).ToList(); }
/// <summary>Saves a <see cref="Course"/> to disk.</summary> /// <param name="newCourse"><see cref="Course"/> to be saved to disk</param> public static void NewCourse(Course newCourse) { JSONInteraction.WriteCourse(newCourse); AllCourses.Add(newCourse); AllCourses = AllCourses.OrderBy(course => course.Number).ToList(); }
/// <summary>Saves a <see cref="SchoolClass"/> to disk.</summary> /// <param name="newClass"><see cref="SchoolClass"/> to be saved to disk</param> public static void NewClass(SchoolClass newClass) { JSONInteraction.WriteClass(newClass); AllClasses.Add(newClass); AllClasses = AllClasses.OrderBy(cls => cls.Id).ToList(); }