Exemplo n.º 1
0
        public void RegisterAbilityChain(AbilityChain abilityChain)
        {
            if (Main.Product != Product.Premium)
            {
                return;
            }
            if (HotkeysManager.Hotkeys.Any(o => o.Name == "Paws_" + abilityChain.Name))
            {
                return;
            }

            AbilityChains.Add(abilityChain);

            var hotKey = HotkeysManager.Hotkeys.FirstOrDefault(o => o.Name == abilityChain.Name);

            if (hotKey != null)
            {
                HotkeysManager.Unregister(hotKey);
            }

            var registeredHotKey = HotkeysManager.Register("Paws_" + abilityChain.Name, abilityChain.HotKey,
                                                           abilityChain.ModiferKey, KeyIsPressed);

            Log.AbilityChain(string.Format("Ability chain successfully registered ({0}: {1} + {2}).",
                                           registeredHotKey.Name, registeredHotKey.ModifierKeys, registeredHotKey.Key));
        }
Exemplo n.º 2
0
        public void Trigger(AbilityChain abilityChain)
        {
            if (TriggerInAction)
            {
                return;
            }
            foreach (var link in abilityChain.ChainedAbilities.Where(link => link.MustBeReady).Where(link => link.Instance.Spell.CooldownTimeLeft.TotalMilliseconds > 2000))
            {
                Log.AbilityChain(
                    string.Format(
                        "NOTICE: The {0} ability chain has been canceled. {1} is still on cooldown (Time left: {2})",
                        abilityChain.Name, link.Instance.Spell.Name, link.Instance.Spell.CooldownTimeLeft));
                return;
            }

            Log.AbilityChain("The " + abilityChain.Name + " ability chain has been triggered.");

            TriggerInAction       = true;
            TriggeredAbilityChain = abilityChain;
            _abilityQueue         = new Queue <ChainedAbility>(TriggeredAbilityChain.ChainedAbilities);

            TriggerTimerElapsedMs = 2000;
            // give each ability 2 seconds to cast before moving on to the next ability.

            _triggerTimer.Restart();
        }
Exemplo n.º 3
0
        public AddNewAbilityChainForm(AbilityChain abilityChain)
        {
            InitializeComponent();

            HotKey           = Keys.None;
            ChainedAbilities = new List <ChainedAbility>();
            modifierKeyComboBox.SelectedIndex = 0;

            if (abilityChain == null)
            {
                return;
            }
            abilityChainNameTextBox.Text = abilityChain.Name;

            HotKey = abilityChain.HotKey;
            hotKeyTriggerSetKeyButton.Text      = HotKey.ToString();
            hotKeyTriggerSetKeyButton.ForeColor = Color.Green;

            ModifierKey = abilityChain.ModiferKey;

            modifierKeyComboBox.SelectedIndex = ConvertModifierKeyToComboBoxIndex(abilityChain.ModiferKey);

            foreach (var chainedAbility in abilityChain.ChainedAbilities)
            {
                var abilityItem = new ListViewItem(chainedAbility.ToString());
                abilityItem.SubItems.Add(chainedAbility.TargetType == TargetType.Me ? "Me" : "My Current Target");
                abilityItem.SubItems.Add(chainedAbility.MustBeReady ? "Yes" : "No");

                abilityItem.Tag = chainedAbility;

                abilitiesListView.Items.Add(abilityItem);
            }
        }
Exemplo n.º 4
0
        public static List <AbilityChain> CreateAbilityChainsSampleList()
        {
            // Create a default abilities list...
            var sampleChains = new List <AbilityChain>();

            // Ability chain sample: Burst Damage
            var sampleBurstChain = new AbilityChain("Burst Damage");

            sampleBurstChain.Specialization = WoWSpec.DruidFeral;
            sampleBurstChain.HotKey         = Keys.F;
            sampleBurstChain.ModiferKey     = ModifierKeys.Control;
            sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new IncarnationAbility(), TargetType.Me, true));
            sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new BerserkAbility(), TargetType.Me, true));

            sampleChains.Add(sampleBurstChain);

            // Ability chain sample: Burst Damage
            var sampleDefenseChain = new AbilityChain("HotW Defense");

            sampleDefenseChain.Specialization = WoWSpec.DruidFeral;
            sampleDefenseChain.HotKey         = Keys.D;
            sampleDefenseChain.ModiferKey     = ModifierKeys.Control;
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new BearFormPowerShiftAbility(), TargetType.Me,
                                                                       false));
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new HeartOfTheWildAbility(), TargetType.Me, true));
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new CenarionWardAbility(), TargetType.Me, false));
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new SurvivalInstinctsAbility(), TargetType.Me,
                                                                       false));

            sampleChains.Add(sampleDefenseChain);

            // Ability chain sample: Cyclone
            var sampleCycloneChain = new AbilityChain("Cyclone");

            sampleCycloneChain.Specialization = WoWSpec.DruidFeral;
            sampleCycloneChain.HotKey         = Keys.C;
            sampleCycloneChain.ModiferKey     = ModifierKeys.Control;
            sampleCycloneChain.ChainedAbilities.Add(new ChainedAbility(new CycloneAbility(), TargetType.MyCurrentTarget,
                                                                       false));

            sampleChains.Add(sampleCycloneChain);

            // Ability chain sample: Entangling Roots
            var sampleEntanglingRootsChain = new AbilityChain("Entangling Roots");

            sampleEntanglingRootsChain.Specialization = WoWSpec.DruidFeral;
            sampleEntanglingRootsChain.HotKey         = Keys.R;
            sampleEntanglingRootsChain.ModiferKey     = ModifierKeys.Shift;
            sampleEntanglingRootsChain.ChainedAbilities.Add(new ChainedAbility(new EntanglingRootsAbility(),
                                                                               TargetType.MyCurrentTarget, false));

            sampleChains.Add(sampleEntanglingRootsChain);

            return(sampleChains);
        }
Exemplo n.º 5
0
        public static List<AbilityChain> CreateAbilityChainsSampleList()
        {
            // Create a default abilities list...
            var sampleChains = new List<AbilityChain>();

            // Ability chain sample: Burst Damage
            var sampleBurstChain = new AbilityChain("Burst Damage");

            sampleBurstChain.Specialization = WoWSpec.DruidFeral;
            sampleBurstChain.HotKey = Keys.F;
            sampleBurstChain.ModiferKey = ModifierKeys.Control;
            sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new IncarnationAbility(), TargetType.Me, true));
            sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new BerserkAbility(), TargetType.Me, true));

            sampleChains.Add(sampleBurstChain);

            // Ability chain sample: Burst Damage
            var sampleDefenseChain = new AbilityChain("HotW Defense");

            sampleDefenseChain.Specialization = WoWSpec.DruidFeral;
            sampleDefenseChain.HotKey = Keys.D;
            sampleDefenseChain.ModiferKey = ModifierKeys.Control;
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new BearFormPowerShiftAbility(), TargetType.Me,
                false));
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new HeartOfTheWildAbility(), TargetType.Me, true));
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new CenarionWardAbility(), TargetType.Me, false));
            sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new SurvivalInstinctsAbility(), TargetType.Me,
                false));

            sampleChains.Add(sampleDefenseChain);

            // Ability chain sample: Cyclone
            var sampleCycloneChain = new AbilityChain("Cyclone");

            sampleCycloneChain.Specialization = WoWSpec.DruidFeral;
            sampleCycloneChain.HotKey = Keys.C;
            sampleCycloneChain.ModiferKey = ModifierKeys.Control;
            sampleCycloneChain.ChainedAbilities.Add(new ChainedAbility(new CycloneAbility(), TargetType.MyCurrentTarget,
                false));

            sampleChains.Add(sampleCycloneChain);

            // Ability chain sample: Entangling Roots
            var sampleEntanglingRootsChain = new AbilityChain("Entangling Roots");

            sampleEntanglingRootsChain.Specialization = WoWSpec.DruidFeral;
            sampleEntanglingRootsChain.HotKey = Keys.R;
            sampleEntanglingRootsChain.ModiferKey = ModifierKeys.Shift;
            sampleEntanglingRootsChain.ChainedAbilities.Add(new ChainedAbility(new EntanglingRootsAbility(),
                TargetType.MyCurrentTarget, false));

            sampleChains.Add(sampleEntanglingRootsChain);

            return sampleChains;
        }
Exemplo n.º 6
0
        private void AddAbilityChainToListView(AbilityChain abilityChain)
        {
            var abilitiesStr = abilityChain.ChainedAbilities.Aggregate(string.Empty,
                                                                       (current, ability) =>
                                                                       current +
                                                                       (abilityChain.ChainedAbilities.Last() == ability
                        ? ability.FriendlyName
                        : ability.FriendlyName + "; "));

            var lvItem = new ListViewItem(abilityChain.Name);

            lvItem.SubItems.Add(Properties.Resources.AbilityChainsControl_editItemToolStripMenuItem_Click_Feral);
            lvItem.SubItems.Add(string.Format("{0} + {1}", abilityChain.ModiferKey, abilityChain.HotKey));
            lvItem.SubItems.Add(abilitiesStr);
            lvItem.Tag = abilityChain;

            abilityChainsListView.Items.Add(lvItem);
        }
Exemplo n.º 7
0
        public void RegisterAbilityChain(AbilityChain abilityChain)
        {
            if (Main.Product != Product.Premium) return;
            if (HotkeysManager.Hotkeys.Any(o => o.Name == "Paws_" + abilityChain.Name))
                return;

            AbilityChains.Add(abilityChain);

            var hotKey = HotkeysManager.Hotkeys.FirstOrDefault(o => o.Name == abilityChain.Name);
            if (hotKey != null)
            {
                HotkeysManager.Unregister(hotKey);
            }

            var registeredHotKey = HotkeysManager.Register("Paws_" + abilityChain.Name, abilityChain.HotKey,
                abilityChain.ModiferKey, KeyIsPressed);

            Log.AbilityChain(string.Format("Ability chain successfully registered ({0}: {1} + {2}).",
                registeredHotKey.Name, registeredHotKey.ModifierKeys, registeredHotKey.Key));
        }
Exemplo n.º 8
0
        private void abilityChainsAddNewAbilityChainButton_Click(object sender, EventArgs e)
        {
            var newForm = new AddNewAbilityChainForm(null);

            if (newForm.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            var abilityChain = new AbilityChain
            {
                Name             = newForm.abilityChainNameTextBox.Text,
                Specialization   = WoWSpec.DruidFeral,
                HotKey           = newForm.HotKey,
                ModiferKey       = newForm.ModifierKey,
                ChainedAbilities = newForm.ChainedAbilities
            };


            AddAbilityChainToListView(abilityChain);
        }
Exemplo n.º 9
0
        private void editItemToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (abilityChainsListView.SelectedItems.Count <= 0)
            {
                return;
            }
            var lvItem = abilityChainsListView.SelectedItems[0];

            var editForm = new AddNewAbilityChainForm(lvItem.Tag as AbilityChain);

            if (editForm.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            var abilityChain = new AbilityChain
            {
                Name             = editForm.abilityChainNameTextBox.Text,
                Specialization   = WoWSpec.DruidFeral,
                HotKey           = editForm.HotKey,
                ModiferKey       = editForm.ModifierKey,
                ChainedAbilities = editForm.ChainedAbilities
            };


            var abilitiesStr = abilityChain.ChainedAbilities.Aggregate(string.Empty,
                                                                       (current, ability) =>
                                                                       current +
                                                                       (abilityChain.ChainedAbilities.Last() == ability
                        ? ability.FriendlyName
                        : ability.FriendlyName + "; "));

            lvItem.Text             = editForm.abilityChainNameTextBox.Text;
            lvItem.SubItems[1].Text = Properties.Resources.AbilityChainsControl_editItemToolStripMenuItem_Click_Feral;
            lvItem.SubItems[2].Text = string.Format("{0} + {1}", abilityChain.ModiferKey, abilityChain.HotKey);
            lvItem.SubItems[3].Text = abilitiesStr;
            lvItem.Tag = abilityChain;
        }
Exemplo n.º 10
0
        public static void LoadDataSet()
        {
            List<AbilityChain> listOfAbilityChains;

            var pathToFile = Path.Combine(Styx.Helpers.Settings.CharacterSettingsDirectory, "Paws-AbilityChains.xml");

            if (!File.Exists(pathToFile))
            {
                // Create a default abilities list...
                var defaultChains = new List<AbilityChain>();

                // Ability chain sample: Burst Damage
                var sampleBurstChain = new AbilityChain("Burst Damage")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey = Keys.F,
                    ModiferKey = ModifierKeys.Control
                };

                sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new IncarnationAbility(), TargetType.Me, true));
                sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new BerserkAbility(), TargetType.Me, true));

                defaultChains.Add(sampleBurstChain);

                // Ability chain sample: Burst Damage
                var sampleDefenseChain = new AbilityChain("HotW Defense")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey = Keys.D,
                    ModiferKey = ModifierKeys.Control
                };

                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new BearFormPowerShiftAbility(),
                    TargetType.Me, false));
                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new HeartOfTheWildAbility(), TargetType.Me,
                    true));
                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new CenarionWardAbility(), TargetType.Me,
                    false));
                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new SurvivalInstinctsAbility(), TargetType.Me,
                    false));

                defaultChains.Add(sampleDefenseChain);

                // Ability chain sample: Cyclone
                var sampleCycloneChain = new AbilityChain("Cyclone")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey = Keys.C,
                    ModiferKey = ModifierKeys.Control
                };

                sampleCycloneChain.ChainedAbilities.Add(new ChainedAbility(new CycloneAbility(),
                    TargetType.MyCurrentTarget, false));

                defaultChains.Add(sampleCycloneChain);

                // Ability chain sample: Entangling Roots
                var sampleEntanglingRootsChain = new AbilityChain("Entangling Roots")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey = Keys.R,
                    ModiferKey = ModifierKeys.Shift
                };

                sampleEntanglingRootsChain.ChainedAbilities.Add(new ChainedAbility(new EntanglingRootsAbility(),
                    TargetType.MyCurrentTarget, false));

                defaultChains.Add(sampleEntanglingRootsChain);

                SaveDataSet(defaultChains);
                LoadDataSet();
            }

            var serializer = new XmlSerializer(typeof (List<AbilityChain>));

            using (var reader = new StreamReader(pathToFile))
            {
                listOfAbilityChains = (List<AbilityChain>) serializer.Deserialize(reader);
                reader.Close();
            }

            foreach (var chain in listOfAbilityChains)
            {
                Instance.RegisterAbilityChain(chain);
            }
        }
Exemplo n.º 11
0
        public void Trigger(AbilityChain abilityChain)
        {
            if (TriggerInAction) return;
            foreach (var link in abilityChain.ChainedAbilities.Where(link => link.MustBeReady).Where(link => link.Instance.Spell.CooldownTimeLeft.TotalMilliseconds > 2000))
            {
                Log.AbilityChain(
                    string.Format(
                        "NOTICE: The {0} ability chain has been canceled. {1} is still on cooldown (Time left: {2})",
                        abilityChain.Name, link.Instance.Spell.Name, link.Instance.Spell.CooldownTimeLeft));
                return;
            }

            Log.AbilityChain("The " + abilityChain.Name + " ability chain has been triggered.");

            TriggerInAction = true;
            TriggeredAbilityChain = abilityChain;
            _abilityQueue = new Queue<ChainedAbility>(TriggeredAbilityChain.ChainedAbilities);

            TriggerTimerElapsedMs = 2000;
            // give each ability 2 seconds to cast before moving on to the next ability.

            _triggerTimer.Restart();
        }
Exemplo n.º 12
0
        public static void LoadDataSet()
        {
            List <AbilityChain> listOfAbilityChains;

            var pathToFile = Path.Combine(Styx.Helpers.Settings.CharacterSettingsDirectory, "Paws-AbilityChains.xml");

            if (!File.Exists(pathToFile))
            {
                // Create a default abilities list...
                var defaultChains = new List <AbilityChain>();

                // Ability chain sample: Burst Damage
                var sampleBurstChain = new AbilityChain("Burst Damage")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey         = Keys.F,
                    ModiferKey     = ModifierKeys.Control
                };

                sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new IncarnationAbility(), TargetType.Me, true));
                sampleBurstChain.ChainedAbilities.Add(new ChainedAbility(new BerserkAbility(), TargetType.Me, true));

                defaultChains.Add(sampleBurstChain);

                // Ability chain sample: Burst Damage
                var sampleDefenseChain = new AbilityChain("HotW Defense")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey         = Keys.D,
                    ModiferKey     = ModifierKeys.Control
                };

                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new BearFormPowerShiftAbility(),
                                                                           TargetType.Me, false));
                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new HeartOfTheWildAbility(), TargetType.Me,
                                                                           true));
                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new CenarionWardAbility(), TargetType.Me,
                                                                           false));
                sampleDefenseChain.ChainedAbilities.Add(new ChainedAbility(new SurvivalInstinctsAbility(), TargetType.Me,
                                                                           false));

                defaultChains.Add(sampleDefenseChain);

                // Ability chain sample: Cyclone
                var sampleCycloneChain = new AbilityChain("Cyclone")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey         = Keys.C,
                    ModiferKey     = ModifierKeys.Control
                };

                sampleCycloneChain.ChainedAbilities.Add(new ChainedAbility(new CycloneAbility(),
                                                                           TargetType.MyCurrentTarget, false));

                defaultChains.Add(sampleCycloneChain);

                // Ability chain sample: Entangling Roots
                var sampleEntanglingRootsChain = new AbilityChain("Entangling Roots")
                {
                    Specialization = WoWSpec.DruidFeral,
                    HotKey         = Keys.R,
                    ModiferKey     = ModifierKeys.Shift
                };

                sampleEntanglingRootsChain.ChainedAbilities.Add(new ChainedAbility(new EntanglingRootsAbility(),
                                                                                   TargetType.MyCurrentTarget, false));

                defaultChains.Add(sampleEntanglingRootsChain);

                SaveDataSet(defaultChains);
                LoadDataSet();
            }

            var serializer = new XmlSerializer(typeof(List <AbilityChain>));

            using (var reader = new StreamReader(pathToFile))
            {
                listOfAbilityChains = (List <AbilityChain>)serializer.Deserialize(reader);
                reader.Close();
            }

            foreach (var chain in listOfAbilityChains)
            {
                Instance.RegisterAbilityChain(chain);
            }
        }