Пример #1
0
        public void SetInitialRoles(object[] rawCharacters, uint seriesId, GameData.SchemaConstants.AbilityCategory nightmareCategory)
        {
            GameData.DataBuddyInformation[]      characters    = (GameData.DataBuddyInformation[])rawCharacters;
            List <GameData.DataBuddyInformation> atkCharacters = new List <GameData.DataBuddyInformation>();
            var charactersWithMultiHitSoulBreaksAndLifesiphon  = characters.Where(character =>
                                                                                  character != null && character.UsableSoulBreaks.Any(sb => sb.NumberOfHits > 1 && sb.Formula == GameData.SchemaConstants.Formulas.Physical) &&
                                                                                  character.CanUseAbility(new GameData.Abilities.Lifesiphon()))
                                                                 .OrderByDescending(character => character.UsableSoulBreaks.DefaultIfEmpty().Max(sb => sb != null ? sb.Multiplier * sb.NumberOfHits : 0));

            atkCharacters.AddRange(charactersWithMultiHitSoulBreaksAndLifesiphon);
            var otherCharacters         = characters.Except(charactersWithMultiHitSoulBreaksAndLifesiphon);
            var otherPhysicalCharacters = otherCharacters.Where(character => character != null && character.Atk > character.Mag && character.Atk > character.Mnd)
                                          .OrderByDescending(character => character.UsableSoulBreaks.DefaultIfEmpty().Max(sb => sb != null ? (sb.Multiplier * sb.NumberOfHits) : 0));

            atkCharacters.AddRange(otherPhysicalCharacters);
            otherCharacters = characters.Except(atkCharacters);
            var magCharacters = otherCharacters.Where(character => character != null && character.Mag > character.Atk && character.Mag > character.Mnd)
                                .OrderByDescending(character => character.UsableSoulBreaks.DefaultIfEmpty().Max(sb => sb != null ? sb.Multiplier * sb.NumberOfHits : 0));
            List <GameData.DataBuddyInformation> mndCharacters = otherCharacters.Except(magCharacters).ToList();

            if (mndCharacters.Count == 0)
            {
                GameData.DataBuddyInformation healer = atkCharacters.Where(character => character != null && character.AbilityUsage.Any(ab => ab.Category == GameData.SchemaConstants.AbilityCategory.WhiteMagic))
                                                       .OrderBy(character => character.AbilityUsage.Where(ab => ab.Category == GameData.SchemaConstants.AbilityCategory.WhiteMagic).First().Rarity)
                                                       .ThenBy(character => character.StatWithSynergy("Mnd", (character.SeriesId == seriesId ||
                                                                                                              character.EligibleForNightmareShift(nightmareCategory)))).Last();
                atkCharacters.Remove(healer);
                mndCharacters.Add(healer);
            }

            for (int i = 0; i < 5; i++)
            {
                if (characters[i] == null)
                {
                    nameLabels[i].Text         = "";
                    roleBoxes[i].Text          = "";
                    roleBoxes[i].SelectedIndex = -1;
                    continue;
                }

                nameLabels[i].Text = characters[i].ToString();

                if (mndCharacters.Any(character => character != null && character.BuddyId == characters[i].BuddyId))
                {
                    roleBoxes[i].SelectedItem = Roles.Healer;
                    continue;
                }

                if (magCharacters.Any(character => character != null && character.BuddyId == characters[i].BuddyId))
                {
                    roleBoxes[i].SelectedItem = Roles.Magical;
                    continue;
                }

                roleBoxes[i].SelectedItem = Roles.Physical;
            }
        }
Пример #2
0
        public void UpdateEquipmentGrid(object character, ComboBox equipmentList, List <uint> equippedItems, FFRKViewPartyPlanner.Synergy realmSynergy)
        {
            mCharacter     = (GameData.DataBuddyInformation)character;
            mEquipmentList = equipmentList;
            mEquippedItems = equippedItems;
            bool characterHasSynergy = mCharacter != null && (mCharacter.SeriesId == realmSynergy.SeriesId ||
                                                              mCharacter.EligibleForNightmareShift(realmSynergy.NightmareCategory));

            for (int i = 0; i < comboBoxRealmSynergy.Items.Count; i++)
            {
                if (((FFRKViewPartyPlanner.Synergy)comboBoxRealmSynergy.Items[i]).SeriesId == realmSynergy.SeriesId)
                {
                    comboBoxRealmSynergy.SelectedIndex = i;
                    break;
                }
            }
            dataGridViewEquipment.Rows.Clear();
            foreach (GameData.Party.DataEquipmentInformation item in equipmentList.Items)
            {
                bool itemHasSynergy = item.SeriesId == realmSynergy.SeriesId ||
                                      mCharacter.EligibleForNightmareShift(realmSynergy.NightmareCategory);
                bool            itemEquippedElsewhere = equippedItems.Any(equippedItemId => equippedItemId == item.InstanceId);
                DataGridViewRow row = new DataGridViewRow();
                row.Tag = item;

                DataGridViewCell cell = new DataGridViewButtonCell();
                cell.Value = item.Name;
                cell.Tag   = item.InstanceId;
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Atk", itemHasSynergy);
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Mag", itemHasSynergy);
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Mnd", itemHasSynergy);
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Def", itemHasSynergy);
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Res", itemHasSynergy);
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Acc", itemHasSynergy);
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Eva", itemHasSynergy);
                row.Cells.Add(cell);

                cell       = new DataGridViewTextBoxCell();
                cell.Value = item.StatWithSynergy("Spd", itemHasSynergy);
                row.Cells.Add(cell);

                if (itemEquippedElsewhere)
                {
                    row.DefaultCellStyle.BackColor = System.Drawing.Color.Red;
                }
                else if (itemHasSynergy)
                {
                    row.DefaultCellStyle.BackColor = System.Drawing.Color.Aqua;
                }
                else
                {
                    row.DefaultCellStyle.BackColor = System.Drawing.Color.Empty;
                }

                dataGridViewEquipment.Rows.Add(row);
            }
            if (dataGridViewEquipment.SortedColumn != null)
            {
                ListSortDirection sortDirection = dataGridViewEquipment.SortOrder == SortOrder.Descending ?
                                                  ListSortDirection.Descending : ListSortDirection.Ascending;
                dataGridViewEquipment.Sort(dataGridViewEquipment.SortedColumn, sortDirection);
            }
        }
Пример #3
0
        private void UpdateDropdowns()
        {
            DataPartyDetails party = FFRKProxy.Instance.GameState.PartyDetails;

            GameData.DataBuddyInformation[] selectedCharacters = new GameData.DataBuddyInformation[5];
            int[] selectedCharacterIndices = new int[5];
            for (int i = 0; i < 5; i++)
            {
                selectedCharacters[i] = (GameData.DataBuddyInformation)characterBoxes[i].SelectedItem;
                selectedCharacterIndices[i] = -1;
                characterBoxes[i].Items.Clear();
            }

            int tempIndex;
            foreach (GameData.DataBuddyInformation buddy in party.Buddies.OrderBy(buddy => buddy.Name))
            {
                for (int i = 0; i < 5; i++)
                {
                    tempIndex = characterBoxes[i].Items.Add(buddy);
                    if (selectedCharacters[i] != null && selectedCharacters[i].BuddyId == buddy.BuddyId)
                    {
                        selectedCharacterIndices[i] = tempIndex;
                    }
                }
            }

            for (int i = 0; i < 5; i++)
            {
                if (selectedCharacterIndices[i] > -1)
                {
                    characterBoxes[i].SelectedIndex = selectedCharacterIndices[i];
                }
                else
                {
                    characterBoxes[i].Text = "Character";
                }
                UpdateDropdownsForCharacter(i);
            }

            abilityCounts.Clear();
            var groupedAbilities = party.Abilities.GroupBy(ability => ability.AbilityId, ability => ability.Name);
            foreach (var group in groupedAbilities)
            {
                abilityCounts[group.Key] = group.Count();
            }
        }