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)); }
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(); }
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); } }
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); }
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; }
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); }
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)); }
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); }
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; }
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); } }
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(); }
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); } }