void FFRKProxy_OnBattleEngaged(EventBattleInitiated battle) { this.BeginInvoke((Action)(() => { //PopulateActiveBattleListView(battle); BeginPopulateAllDropsListView(battle); PopulateEnemyInfoListView(battle); PopulateDropInfoListView(battle); })); }
void FFRKProxy_OnCompleteBattle(EventBattleInitiated battle) { this.BeginInvoke((Action)(() => { PopulateEnemyInfoListView(null); PopulateDropInfoListView(null); BeginPopulateAllDropsListView(null); //PopulateDropInfoListView(null); //UpdateAllDropsForLastBattle(battle); })); }
void BeginPopulateAllDropsListView(EventBattleInitiated battle) { if (battle != null) { DbOpFilterDrops op = new DbOpFilterDrops(FFRKProxy.Instance.Database); op.Battles.AddValue(battle.Battle.BattleId); op.OnRequestComplete += RequestBattleDrops_OnRequestComplete; FFRKProxy.Instance.Database.BeginExecuteRequest(op); } else { listViewPrevDrops.VirtualListSize = 0; mAllPrevItems.Clear(); mFilteredPrevItems.Collection.Clear(); } }
void FFRKProxy_OnCompleteBattle(EventBattleInitiated battle) { this.BeginInvoke((Action)(() => { PopulateActiveBattleListView(null); UpdateAllDropsForLastBattle(battle); })); }
void FFRKProxy_OnBattleEngaged(EventBattleInitiated battle) { this.BeginInvoke((Action)(() => { PopulateActiveBattleListView(battle); })); }
void UpdateAllDropsForLastBattle(EventBattleInitiated battle) { if (battle == null) { listViewAllDrops.VirtualListSize = 0; mAllItems.Clear(); mFilteredItems.Collection.Clear(); return; } foreach (BasicItemDropStats stats in mAllItems.Where(x => x.BattleId == battle.Battle.BattleId)) { // Update the times_run field of every item that matches the last battle. If we don't do // this here in a separate loop, it will only happen for items that actually dropped in // the following loop. stats.TimesRun++; stats.TimesRunWithHistogram++; } lock(FFRKProxy.Instance.Cache.SyncRoot) { foreach (DropEvent drop in battle.Battle.Drops) { if (drop.ItemType == DataEnemyDropItem.DropItemType.Gold) continue; BasicItemDropStats match = mAllItems.Find(x => (x.BattleId == battle.Battle.BattleId) && (x.ItemId == drop.ItemId)); if (match != null) { ++match.TotalDrops; continue; } EventListBattles this_battle_list = FFRKProxy.Instance.GameState.ActiveDungeon; if (this_battle_list == null) continue; DataBattle this_battle = this_battle_list.Battles.Find(x => x.Id == battle.Battle.BattleId); if (this_battle == null) continue; uint times_run = 1; uint histo_times_run = 1; string item_name = drop.ItemId.ToString(); DataCache.Items.Data item_data; DataCache.Battles.Data battle_data; if (FFRKProxy.Instance.Cache.Items.TryGetValue(new DataCache.Items.Key { ItemId = drop.ItemId }, out item_data)) item_name = item_data.Name; if (FFRKProxy.Instance.Cache.Battles.TryGetValue(new DataCache.Battles.Key { BattleId = battle.Battle.BattleId }, out battle_data)) { // Get the times_run from the cache, and add 1 to it. times_run = battle_data.Samples; histo_times_run = battle_data.HistoSamples; } mAllItems.Add( new BasicItemDropStats { BattleId = battle.Battle.BattleId, BattleName = this_battle.Name, BattleStamina = this_battle.Stamina, ItemId = drop.ItemId, ItemName = item_name, TimesRun = times_run, TotalDrops = 1, }); } } RebuildFilteredDropListAndInvalidate(); }
private void PopulateActiveBattleListView(EventBattleInitiated battle) { listViewActiveBattle.Items.Clear(); if (battle == null) { labelActiveBattleNotice.Visible = true; labelNoDrops.Visible = false; return; } listViewActiveBattle.View = View.Details; List<DropEvent> drops = battle.Battle.Drops.ToList(); labelActiveBattleNotice.Visible = false; if (drops.Count == 0) { labelNoDrops.Visible = true; return; } lock(FFRKProxy.Instance.Cache.SyncRoot) { foreach (DropEvent drop in battle.Battle.Drops) { string Item; DataCache.Items.Key ItemKey = new DataCache.Items.Key { ItemId = drop.ItemId }; DataCache.Items.Data ItemData = null; if (drop.ItemType == DataEnemyDropItem.DropItemType.Gold) Item = String.Format("{0} gold", drop.GoldAmount); else if (FFRKProxy.Instance.Cache.Items.TryGetValue(ItemKey, out ItemData)) Item = ItemData.Name; else Item = drop.ItemId.ToString(); if (drop.NumberOfItems > 1) Item += String.Format(" x{0}", drop.NumberOfItems); string[] row = { Item, drop.Rarity.ToString(), drop.Round.ToString(), drop.EnemyName, "", "" }; listViewActiveBattle.Items.Add(new ListViewItem(row)); } } }
private void PopulateEnemyInfoListView(EventBattleInitiated battle) { listViewEnemyInfo.Items.Clear(); if (battle == null) { return; } else { listViewEnemyInfo.View = View.Details; List<BasicEnemyInfo> enemies = battle.Battle.Enemies.ToList(); if (enemies.Count == 0) { return; } else { lock (FFRKProxy.Instance.Cache.SyncRoot) { foreach (BasicEnemyInfo enemy in battle.Battle.Enemies) { //The below is the "full" list of status effects, however I removed Haste, Shell, Protect, Reflect, and a few other //positive buffs, and also the status effects not yet implemented such as Zombie, Toad, Mini. List<string> AllStatusEffects = new List<String>() { "Poison","Silence","Paralyze","Confuse","Slow","Stop", "Blind","Sleep","Petrify","Doom","Instant_KO","Beserk", "Sap","Stun" //,"Haste","Shell","Protect","Regen","Reflect" }; //Calculate difference between above set of status effects and the status immunities of enemy. List<string> EnemyStatusWeakness = AllStatusEffects.Except(enemy.EnemyStatusImmunity).ToList(); string[] row = { enemy.EnemyName, enemy.EnemyMaxHp.ToString("N0"), //string.Join(", ",enemy.EnemyElemWeakness.ToArray()), //"test2", //"test3" string.Join(", ",EnemyStatusWeakness.ToArray()), string.Join(", ",enemy.EnemyElemWeakness.ToArray()), string.Join(", ",enemy.EnemyElemResist.ToArray()), string.Join(", ",enemy.EnemyElemNull.ToArray()), string.Join(", ",enemy.EnemyElemAbsorb.ToArray()) }; listViewEnemyInfo.Items.Add(new ListViewItem(row)); } } foreach (ColumnHeader column in listViewEnemyInfo.Columns) { column.Width = -2; } } } }
private void PopulateDropInfoListView(EventBattleInitiated battle) { listViewDropInfo.Items.Clear(); if (battle == null) { return; } else { listViewDropInfo.View = View.Details; List<DropEvent> drops = battle.Battle.Drops.ToList(); //labelActiveBattleNotice.Visible = false; if (drops.Count == 0) { return; } else { lock (FFRKProxy.Instance.Cache.SyncRoot) { foreach (DropEvent drop in battle.Battle.Drops) { string Item; DataCache.Items.Key ItemKey = new DataCache.Items.Key { ItemId = drop.ItemId }; DataCache.Items.Data ItemData = null; if (drop.ItemType == DataEnemyDropItem.DropItemType.Gold) Item = String.Format("{0} gold", drop.GoldAmount); else if (drop.ItemType == DataEnemyDropItem.DropItemType.Materia) Item = drop.MateriaName; else if (drop.ItemType == DataEnemyDropItem.DropItemType.Potion) Item = drop.PotionName; else if (FFRKProxy.Instance.Cache.Items.TryGetValue(ItemKey, out ItemData)) Item = ItemData.Name; else Item = drop.ItemId.ToString(); if (drop.NumberOfItems > 1) Item += String.Format(" x{0}", drop.NumberOfItems); string[] row = { Item, drop.Rarity.ToString(), drop.Round.ToString(), drop.EnemyName }; listViewDropInfo.Items.Add(new ListViewItem(row)); } } } foreach (ColumnHeader column in listViewDropInfo.Columns) { column.Width = -2; } } }
internal void RaiseBattleInitiated(EventBattleInitiated battle) { if (OnBattleEngaged != null) OnBattleEngaged(battle); }
internal void RaiseBattleComplete(EventBattleInitiated original_battle) { if (OnCompleteBattle != null) OnCompleteBattle(original_battle); }
public DbOpRecordBattleEncounter(EventBattleInitiated encounter) { mEncounter = encounter; }