Example #1
0
 /// <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();
 }
Example #2
0
 /// <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);
 }
Example #3
0
        /// <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);
        }
Example #4
0
 /// <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);
 }
Example #5
0
 /// <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);
 }
Example #6
0
        /// <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();
        }
Example #7
0
 /// <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);
 }
Example #8
0
 /// <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);
 }
Example #9
0
 /// <summary>Writes the current scene history to disk.</summary>
 internal static void WriteSceneHistory() => JSONInteraction.WriteSceneHistory(History, CurrentHero.Name);
Example #10
0
        /// <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);
        }
Example #11
0
 /// <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);
 }
Example #12
0
 /// <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();
 }
Example #13
0
 /// <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();
 }
Example #14
0
 /// <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();
 }
Example #15
0
 /// <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();
 }