public DeckLeaderAbility Clone()
    {
        DeckLeaderAbilityFactory deckLeaderAbilityFactory = new DeckLeaderAbilityFactory();
        DeckLeaderAbility        clonedDeckLeaderAbility  = deckLeaderAbilityFactory.GetDeckLeaderAbility(this.Index, this.Bytes);

        return(clonedDeckLeaderAbility);
    }
    private void createAbilityLabelAndButton(int abilityIndex, DeckLeaderAbility ability, int xstartpos, int ypos)
    {
        int labelLength        = 280;
        int labelButtonSpacing = 20;
        int labelStart         = xstartpos;
        int labelEnd           = labelStart + labelLength;
        int buttonStart        = labelEnd + labelButtonSpacing;

        Label abilityLabel = new Label();

        abilityLabel.Location = new System.Drawing.Point(labelStart, ypos);
        abilityLabel.Name     = $"abilityLabel{abilityIndex}";
        abilityLabel.Size     = new System.Drawing.Size(labelLength, 23);
        abilityLabel.Padding  = new Padding(4);
        abilityLabel.Text     = ability.ToString();

        if (ability.Enabled)
        {
            abilityLabel.BackColor = Color.LightGreen;
        }

        Button abilityEditButton = new Button();

        abilityEditButton.Name     = abilityIndex.ToString();
        abilityEditButton.Text     = "Edit";
        abilityEditButton.Location = new System.Drawing.Point(buttonStart, ypos);
        abilityEditButton.Click   += this.handleEditButtonClick;

        this.Controls.Add(abilityLabel);
        this.Controls.Add(abilityEditButton);
    }
    private void handleEditButtonClick(object sender, EventArgs e)
    {
        Button                    abilityEditButton = (Button)sender;
        int                       abilityIndex      = Int32.Parse(abilityEditButton.Name);
        DeckLeaderAbility         ability           = (DeckLeaderAbility)this.deckLeaderAbilities[abilityIndex][0];
        EditDeckLeaderAbilityForm editForm;
        Type                      abilityType = ability.GetType();

        if (abilityType == typeof(FlagDeckLeaderAbility))
        {
            editForm = new EditFlagDeckLeaderAbilityForm(ability);
        }
        else if (DeckLeaderAbility.RankRequirementNoAdditionalInformationList.Contains(ability.AbilityType))
        {
            editForm = new EditRankRequirementDeckLeaderAbilityForm(ability);
        }
        else if (abilityType == typeof(StrengthModifierDeckLeaderAbility))
        {
            editForm = new EditStrengthModifierDeckLeaderAbilityForm(ability);
        }
        else
        {
            editForm = new EditRankRequirementDeckLeaderAbilityForm(ability);
        }

        editForm.StartPosition = FormStartPosition.CenterParent;
        DialogResult dialogResult = editForm.ShowDialog();

        if (dialogResult.Equals(DialogResult.OK))
        {
            this.deckLeaderAbilities[abilityIndex][0] = editForm.DeckLeaderAbility;
            this.deckLeaderAbilities[abilityIndex][1] = true;
            this.Controls.Find($"abilityLabel{abilityIndex}", false)[0].BackColor = Color.Yellow;
        }
    }
    private void populateDeckLeaderAbilities()
    {
        DeckLeaderAbility[] deckLeaderAbilityList = this.selectedCardDeckLeaderAbilityList[0].deckLeaderAbilityList;
        this.deckLeaderAbilities = new Object[deckLeaderAbilityList.Length][];

        for (int i = 0; i < deckLeaderAbilityList.Length; i++)
        {
            DeckLeaderAbility firstCardDeckLeaderAbility = deckLeaderAbilityList[i].Clone();

            bool allCardsHaveSameAbilityValue = true;

            for (int scai = 0; scai < selectedCardDeckLeaderAbilityList.Count; scai++)
            {
                DeckLeaderAbility selectedCardAbility = this.selectedCardDeckLeaderAbilityList[scai].deckLeaderAbilityList[i];

                if (!selectedCardAbility.Bytes.SequenceEqual(firstCardDeckLeaderAbility.Bytes))
                {
                    allCardsHaveSameAbilityValue = false;
                    break;
                }
            }

            if (allCardsHaveSameAbilityValue)
            {
                this.deckLeaderAbilities[i] = new Object[] { firstCardDeckLeaderAbility, false };
            }
            else
            {
                firstCardDeckLeaderAbility.Enabled = false;
                this.deckLeaderAbilities[i]        = new Object[] { firstCardDeckLeaderAbility, false };
            }
        }
    }
    private void applyAbilityChangesToCards()
    {
        for (int abilityIndex = 0; abilityIndex < this.deckLeaderAbilities.Length; abilityIndex++)
        {
            bool deckLeaderAbilityHasChanged = (bool)this.deckLeaderAbilities[abilityIndex][1];

            if (!deckLeaderAbilityHasChanged)
            {
                continue;
            }

            DeckLeaderAbility deckLeaderAbility = (DeckLeaderAbility)this.deckLeaderAbilities[abilityIndex][0];

            for (int cardIndex = 0; cardIndex < this.selectedCardDeckLeaderAbilityList.Count; cardIndex++)
            {
                CardDeckLeaderAbility cardDeckLeaderAbility = this.selectedCardDeckLeaderAbilityList[cardIndex];
                this.allCardDeckLeaderAbilities.List[cardDeckLeaderAbility.Index].deckLeaderAbilityList[abilityIndex] = deckLeaderAbility;
            }
        }
    }
    private void createAbilityInputs()
    {
        int startX                = 220;
        int startY                = 30;
        int rowSpacing            = 40;
        int numberOfRowsGenerated = 0;

        for (int i = 0; i < this.deckLeaderAbilities.Length; i++)
        {
            DeckLeaderAbility deckLeaderAbility = (DeckLeaderAbility)this.deckLeaderAbilities[i][0];

            if (deckLeaderAbility.IsUnusedAbility)
            {
                continue;
            }

            int xpos = startX;
            int ypos = startY + (numberOfRowsGenerated * rowSpacing);
            this.createAbilityLabelAndButton(i, deckLeaderAbility, xpos, ypos);
            numberOfRowsGenerated++;
        }
    }
Esempio n. 7
0
 public EditFlagDeckLeaderAbilityForm(DeckLeaderAbility deckLeaderAbility) : base(deckLeaderAbility)
 {
 }
Esempio n. 8
0
 public EditRankRequirementDeckLeaderAbilityForm(DeckLeaderAbility deckLeaderAbility) : base(deckLeaderAbility)
 {
     InitializeComponent();
     setupForm();
 }
Esempio n. 9
0
 public EditStrengthModifierDeckLeaderAbilityForm(DeckLeaderAbility deckLeaderAbility) : base(deckLeaderAbility)
 {
     InitializeComponent();
     setupForm();
 }
Esempio n. 10
0
 public EditDeckLeaderAbilityForm(DeckLeaderAbility deckLeaderAbility)
 {
     this.DeckLeaderAbility = deckLeaderAbility;
     InitializeComponent();
     this.loadForm();
 }