Example #1
0
        public SavedMacroState(PlayerMacroState macroState)
        {
            if (macroState == null)
            throw new ArgumentNullException("macroState");

              CharacterName = macroState.Client.Name;

              if (macroState.Client.HasHotkey)
              {
            HotkeyModifiers = macroState.Client.Hotkey.Modifiers;
            HotkeyKey = macroState.Client.Hotkey.Key;
              }

              UseLyliacVineyard = macroState.UseLyliacVineyard;
              FlowerAlternateCharacters = macroState.FlowerAlternateCharacters;

              foreach (var skillName in macroState.Client.Skillbook.ActiveSkills)
            skills.Add(new SavedSkillState(skillName));

              foreach (var spell in macroState.QueuedSpells)
            spells.Add(new SavedSpellState(spell));

              foreach (var flower in macroState.FlowerTargets)
            flowers.Add(new SavedFlowerState(flower));
        }
Example #2
0
        public PlayerMacroState GetMacroState(Player player)
        {
            if (isLockedDown)
            throw new InvalidOperationException("Macro virtual machine is currently locked down.");

              if (clientMacros.ContainsKey(player.Process.ProcessId))
            return clientMacros[player.Process.ProcessId];

              var state = new PlayerMacroState(player);
              clientMacros[player.Process.ProcessId] = state;

              return state;
        }
Example #3
0
        void clientListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var listBox = sender as ListBox;
              if (listBox == null)
              {
            if (selectedMacro != null)
              selectedMacro.PropertyChanged -= SelectedMacro_PropertyChanged;

            this.Title = "SleepHunter";
            selectedMacro = null;
            ToggleSpellQueue(false);
            ToggleSkills(false);
            ToggleSpells(false);
            ToggleFlower();
            return;
              }

              var player = listBox.SelectedItem as Player;
              if (player == null)
              {
            if (selectedMacro != null)
              selectedMacro.PropertyChanged -= SelectedMacro_PropertyChanged;

            this.Title = "SleepHunter";
            selectedMacro = null;
            ToggleSpellQueue(false);
            ToggleSkills(false);
            ToggleSpells(false);
            ToggleFlower();
            return;
              }

              var macroState = MacroManager.Instance.GetMacroState(player);

              if (player.IsLoggedIn)
            this.Title = string.Format("SleepHunter - {0}", player.Name);
              else
            this.Title = "SleepHunter";

              if (macroState == null)
              {
            if (selectedMacro != null)
              selectedMacro.PropertyChanged -= SelectedMacro_PropertyChanged;

            selectedMacro = null;

            startMacroButton.IsEnabled = pauseMacroButton.IsEnabled = stopMacroButton.IsEnabled = false;
            return;
              }

              if (selectedMacro != null)
              {
            selectedMacro.PropertyChanged -= SelectedMacro_PropertyChanged;

            selectedMacro.SpellAdded -= selectedMacro_SpellQueueChanged;
            selectedMacro.SpellUpdated -= selectedMacro_SpellQueueChanged;
            selectedMacro.SpellRemoved -= selectedMacro_SpellQueueChanged;

            selectedMacro.FlowerTargetAdded -= selectedMacro_FlowerQueueChanged;
            selectedMacro.FlowerTargetUpdated -= selectedMacro_FlowerQueueChanged;
            selectedMacro.FlowerTargetRemoved -= selectedMacro_FlowerQueueChanged;
              }

              selectedMacro = macroState;

              if (selectedMacro != null)
              {
            selectedMacro.PropertyChanged += SelectedMacro_PropertyChanged;

            selectedMacro.SpellAdded += selectedMacro_SpellQueueChanged;
            selectedMacro.SpellUpdated += selectedMacro_SpellQueueChanged;
            selectedMacro.SpellRemoved += selectedMacro_SpellQueueChanged;

            selectedMacro.FlowerTargetAdded += selectedMacro_FlowerQueueChanged;
            selectedMacro.FlowerTargetUpdated += selectedMacro_FlowerQueueChanged;
            selectedMacro.FlowerTargetRemoved += selectedMacro_FlowerQueueChanged;
              }

              tabControl.SelectedIndex = selectedMacro.Client.SelectedTabIndex;

              ToggleSkills(player.IsLoggedIn);
              ToggleSpells(player.IsLoggedIn);
              ToggleFlower(player.HasLyliacPlant, player.HasLyliacVineyard);

              UpdateUIForMacroStatus(selectedMacro.Status);

              if (selectedMacro != null)
              {
            ToggleSpellQueue(tabControl.SelectedIndex == SpellsTabIndex && selectedMacro.TotalSpellsCount > 0);
            spellQueueListBox.ItemsSource = selectedMacro.QueuedSpells;
            flowerListBox.ItemsSource = selectedMacro.FlowerTargets;

            flowerVineyardCheckBox.IsChecked = selectedMacro.UseLyliacVineyard && player.HasLyliacVineyard;
            flowerAlternateCharactersCheckBox.IsChecked = selectedMacro.FlowerAlternateCharacters && player.HasLyliacPlant;

            foreach (var spell in selectedMacro.QueuedSpells)
              spell.IsUndefined = !SpellMetadataManager.Instance.ContainsSpell(spell.Name);
              }
        }
Example #4
0
        void SaveMacroState(PlayerMacroState macro)
        {
            if (macro == null)
            throw new ArgumentNullException("macro");

              var filename = Path.Combine("saves", string.Format("{0}.xml", macro.Client.Name.Trim()));
              var state = new SavedMacroState(macro);

              state.SaveToFile(filename);
        }