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();
     }
 }
Example #4
0
 void FFRKProxy_OnCompleteBattle(EventBattleInitiated battle)
 {
     this.BeginInvoke((Action)(() =>
     {
         PopulateActiveBattleListView(null);
         UpdateAllDropsForLastBattle(battle);
     }));
 }
Example #5
0
 void FFRKProxy_OnBattleEngaged(EventBattleInitiated battle)
 {
     this.BeginInvoke((Action)(() => { PopulateActiveBattleListView(battle); }));
 }
Example #6
0
        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();
        }
Example #7
0
        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; }
            }
        }
Example #10
0
 internal void RaiseBattleInitiated(EventBattleInitiated battle)
 {
     if (OnBattleEngaged != null) OnBattleEngaged(battle);
 }
Example #11
0
 internal void RaiseBattleComplete(EventBattleInitiated original_battle)
 {
     if (OnCompleteBattle != null) OnCompleteBattle(original_battle);
 }
 public DbOpRecordBattleEncounter(EventBattleInitiated encounter)
 {
     mEncounter = encounter;
 }