Exemple #1
0
        /// <summary>
        /// Creates a new UserTrackerTab object, adds it to OpenTabs and focuses to it.
        /// Subscribes to its TabClosing and ControlUpdated events.
        /// </summary>
        public void OpenNewTab()
        {
            UserTrackerTab newTab = new UserTrackerTab();

            InsertExistingTab(newTab);

            this.SelectTab(newTab);
        }
Exemple #2
0
        public void InsertExistingTab(UserTrackerTab tab)
        {
            tab.TabClosing += new Interface.TabClosingEventHandler(tabPage_TabClosing);
            tab.TabUpdated += new Interface.ControlUpdatedEventHandler(control_Updated);

            if (!TabStates.OpenTabs.Contains(tab))
            {
                TabStates.OpenTabs.Add(tab);
            }

            SyncTabs();
        }
Exemple #3
0
        private void AltLoad()
        {
            // This (should) have the same result as this.Load().
            // The only difference is AltLoad uses foreach loops instead of LINQ queries.

            if (!File.Exists(this.InterfaceXmlPath))
            {
                return; // nothing to load
            }
            XDocument interfaceXML = XDocument.Load(this.InterfaceXmlPath);

            foreach (var tab in interfaceXML.Elements("InterfaceState").Elements("Tab"))
            {
                UserTrackerTab loadedTab = new UserTrackerTab();
                loadedTab.TrackingPlayer = new Player(tab.Element("Username").Value);

                foreach (var skill in tab.Elements("Skill"))
                {
                    // Build a new Skill object with data from the XElement
                    Skill loadedSkill = new Skill(
                        Skills.Parse(skill.Element("Skillname").Value),
                        long.Parse(skill.Element("CurrentExperience").Value),
                        int.Parse(skill.Element("Rank").Value),
                        long.Parse(skill.Element("GoalExperience").Value));

                    // Create a new tracker bar
                    SkillTrackerBar loadedSkillBar = new SkillTrackerBar(loadedTab.TrackingPlayer, loadedSkill.SkillsName);

                    // Update the skill attached to the tracked player
                    loadedTab.TrackingPlayer.UpdateSkill(loadedSkill, true, false);

                    // Add the SkillTrackerBar to the new (loaded)Tab
                    loadedTab.TrackingSkills.Add(loadedSkillBar);
                }

                // Add the new tab to the list of open tabs
                this.OpenTabs.Add(loadedTab);
            }
        }
Exemple #4
0
        // I started implementing the save/load methods in a really stupid way.
        // It eventually clicked that I could use LINQ queries to handle transforming
        // objects into XML.

        // The (bad) code below uses stupid intermediary classes to go between Player and XML.
        // I also thought I'd have to make this.OpenTabs readonly, and that the intermediary
        // classes would have to be kept up to date by obscuring the Add method of the List.
        // This all becomes unnecessary when transforming OpenTabs directly into XElements with LINQ.

        /* The stupid way...
         *
         * [Obsolete]
         * private void Update()
         * {
         *  //trackedPlayers.Clear();
         *
         *  foreach(UserTrackerTab tab in this.OpenTabs)
         *  {
         *      List<SkillPackage> trackingSkills = new List<SkillPackage>();
         *
         *      foreach(SkillTrackerBar skill in tab.TrackingSkills)
         *      {
         *          trackingSkills.Add(new SkillPackage
         *          {
         *              Skillname = skill.TrackingSkill.SkillName.ToString(),
         *              CurrentExperience = skill.TrackingSkill.CurrentExperience,
         *              GoalExperience = skill.TrackingSkill.GoalExperience,
         *              Rank = skill.TrackingSkill.Rank
         *          });
         *      }
         *
         *      trackedPlayers.Add(new PlayerPackage
         *      {
         *          Username = tab.TrackingPlayer.Username,
         *          TrackingSkills = trackingSkills
         *      });
         *  }
         * }
         *
         * [Obsolete]
         * public void AddTab(UserTrackerTab tab)
         * {
         *  //openTabs.Add(tab);
         *  this.Save();
         * }
         *
         * [Obsolete]
         * public void AddTab(Player player, List<SkillTrackerBar> skillTrackingList)
         * {
         *  UserTrackerTab nTab = new UserTrackerTab();
         *  nTab.TrackingPlayer = player;
         *  nTab.TrackingSkills = skillTrackingList;
         *
         *  this.AddTab(nTab);
         * }
         *
         * [Obsolete]
         * public void CloseTab(UserTrackerTab tab)
         * {
         *  //openTabs.Remove(tab);
         *  //this.Save();
         * }
         *
         * [Obsolete]
         * private XDocument BaseDocument()
         * {
         *  XDocument doc = new XDocument(
         *      new XDeclaration("1.0", "utf-8", "yes"),
         *      new XComment(" RS Tracker Interface Data "),
         *      new XComment(" Don't edit this unless you're familiar with XML "),
         *      new XElement("InterfaceState")
         *  );
         *
         *  return doc;
         * }
         *
         * [Obsolete]
         * private class PlayerPackage
         * {
         *  public string Username { get; set; }
         *  public List<SkillPackage> TrackingSkills { get; set; }
         * }
         *
         * [Obsolete]
         * private class SkillPackage
         * {
         *  public string Skillname { get; set; }
         *  public long CurrentExperience { get; set; }
         *  public int Rank { get; set; }
         *  public long GoalExperience { get; set; }
         * }
         */
        #endregion

        public static void TestHarness()
        {
            #region [Obsolete] tests

            /*
             * Tracking t = new Tracking();
             * UserTrackerTab nTab = new UserTrackerTab();
             * nTab.TrackingPlayer = new Player("patrick");
             * t.AddTab(nTab);
             *
             * Debug.WriteLine("Tabs: ");
             * foreach (UserTrackerTab tab in t.OpenTabs)
             *  Debug.WriteLine(tab.TrackingPlayer.ToString());
             *
             * Debug.WriteLine("\nAttempting to change this.OpenTabs...");
             * try
             * {
             *  t.OpenTabs.Add(new UserTrackerTab());
             * }
             * catch (Exception e)
             * {
             *  Debug.WriteLine(e.Message);
             * }
             *
             * Debug.WriteLine("\nAttempting to change a /tab/ in this.OpenTabs");
             * try { t.OpenTabs[0].TrackingPlayer = new Player("not patrick"); }
             * catch (Exception e) { Debug.WriteLine(e.Message); }
             *
             * foreach (UserTrackerTab tab in t.OpenTabs)
             *  Debug.WriteLine(tab.TrackingPlayer.ToString());
             */
            #endregion

            // ---- Save

            TrackingState interfaceState = new TrackingState();

            UserTrackerTab tab1 = new UserTrackerTab();
            tab1.TrackingPlayer = new Player("p atrick");
            tab1.TrackingPlayer.DEBUG_DummyFill();
            tab1.TrackingSkills.Add(new SkillTrackerBar(tab1.TrackingPlayer, Skills.Agility));
            tab1.TrackingSkills.Add(new SkillTrackerBar(tab1.TrackingPlayer, Skills.Cooking));

            UserTrackerTab tab2 = new UserTrackerTab();
            tab2.TrackingPlayer = new Player("p atrick");
            tab2.TrackingPlayer.DEBUG_DummyFill();
            tab2.TrackingSkills.Add(new SkillTrackerBar(tab2.TrackingPlayer, Skills.Strength));
            tab2.TrackingSkills.Add(new SkillTrackerBar(tab2.TrackingPlayer, Skills.Attack));

            interfaceState.OpenTabs.Clear();
            interfaceState.OpenTabs.Add(tab1);
            interfaceState.OpenTabs.Add(tab2);

            interfaceState.Save();

            // ---- Load

            TrackingState interfaceState2 = new TrackingState();
            foreach (UserTrackerTab tab in interfaceState2.OpenTabs)
            {
                Debug.WriteLine("(" + tab.TrackingPlayer.Username + ")");
                foreach (SkillTrackerBar skillBar in tab.TrackingSkills)
                {
                    Debug.WriteLine("    " + skillBar.TrackingSkill.SkillsName.ToString() + " " +
                                    skillBar.TrackingSkill.CurrentExperience + " " +
                                    skillBar.TrackingSkill.Rank + " " +
                                    skillBar.TrackingSkill.GoalExperience);
                }
            }
        }