Пример #1
0
        private void ClearLabels()
        {
            // Bad Cards
            foreach (Label label in BadCardLabels)
            {
                Controls.Remove(label);
            }
            BadCardLabels.Clear();

            // Standard Heroes
            foreach (Label label in StandardHeroLabels)
            {
                Controls.Remove(label);
            }
            StandardHeroLabels.Clear();

            // Player Decks
            foreach (Label label in PlayerDeckLabels)
            {
                Controls.Remove(label);
            }
            PlayerDeckLabels.Clear();

            // Hero Deck
            Controls.Remove(HeroDeckTopCard);

            // Villain Deck
            Controls.Remove(VillainDeckTopCard);

            labelSchemeCard.Text     = "";
            labelBystanderStack.Text = "";
        }
Пример #2
0
        private void UpdateLabels()
        {
            ClearLabels();

            // Scheme //
            labelSchemeCard.Text = Game.Board.Scheme.Title;

            string cards;

            // Bystanders //

            cards = "";
            foreach (Card card in Game.Board.BystanderStack)
            {
                if (card.ID == "BystanderX")
                {
                    cards += "X";
                }
                else if (card.ID == "Bystander")
                {
                    cards += "B";
                }
            }
            labelBystanderStack.Font = new Font(FontFamily.GenericMonospace, STACK_LABEL_FONT_POINT);
            labelBystanderStack.Text = cards;

            // Bad Cards //

            int offsetY = 0;

            foreach (string type in Game.Board.BadCardStacks.Keys)
            {
                cards = "";

                BadCardLabels.Add(new Label
                {
                    AutoSize = true,
                    Location = new Point(COLUMN1_X, BAD_CARD_LABELS_START_Y + offsetY),
                    Name     = $"labelBadCards{type}",
                    TabIndex = 100 + offsetY / LABELS_SPACING_Y,
                    Text     = type
                });

                foreach (Card card in Game.Board.BadCardStacks[type])
                {
                    if (card.ID == "Wound")
                    {
                        cards += "W";
                    }
                    else if (card.ID == "Bindings")
                    {
                        cards += "B";
                    }
                    else if (card.ID == "BadCardX")
                    {
                        cards += "X";
                    }
                }

                BadCardLabels.Add(new Label
                {
                    AutoSize = true,
                    Font     = new Font(FontFamily.GenericMonospace, STACK_LABEL_FONT_POINT),
                    Location = new Point(COLUMN1_X + LABELS_SPACING_X, BAD_CARD_LABELS_START_Y + offsetY),
                    Name     = $"labelBadCards{type}Stack",
                    TabIndex = 200 + offsetY / LABELS_SPACING_Y,
                    Text     = cards
                });

                offsetY += LABELS_SPACING_Y;
            }

            foreach (Label label in BadCardLabels)
            {
                Controls.Add(label);
            }

            // Standard Heroes //

            int standardHeroLabelsStartX = COLUMN1_X;
            int standardHeroLabelsStartY = BAD_CARD_LABELS_START_Y + LABELS_SPACING_Y * (Game.Board.BadCardStacks.Keys.Count);

            labelStandardHeroes.Location = new Point(standardHeroLabelsStartX, standardHeroLabelsStartY);

            offsetY = LABELS_SPACING_Y;
            foreach (string type in Game.Board.StandardHeroStacks.Keys)
            {
                cards = "";

                StandardHeroLabels.Add(new Label
                {
                    AutoSize = true,
                    Location = new Point(standardHeroLabelsStartX, standardHeroLabelsStartY + offsetY),
                    Name     = $"labelStandardHeroes{type}",
                    TabIndex = 300 + offsetY / LABELS_SPACING_Y,
                    Text     = type
                });

                foreach (Card card in Game.Board.StandardHeroStacks[type])
                {
                    if (card.ID == "ShieldOfficer")
                    {
                        cards += "O";
                    }
                    else if (card.ID == "MadameHydra")
                    {
                        cards += "M";
                    }
                    else if (card.ID == "NewRecruits")
                    {
                        cards += "R";
                    }
                    else if (card.ID == "HeroX")
                    {
                        cards += "X";
                    }
                }

                StandardHeroLabels.Add(new Label
                {
                    AutoSize = true,
                    Font     = new Font(FontFamily.GenericMonospace, STACK_LABEL_FONT_POINT),
                    Location = new Point(standardHeroLabelsStartX + LABELS_SPACING_X, standardHeroLabelsStartY + offsetY),
                    Name     = $"labelStandardHeroes{type}Stack",
                    TabIndex = 400 + offsetY / LABELS_SPACING_Y,
                    Text     = cards
                });

                offsetY += LABELS_SPACING_Y;
            }

            foreach (Label label in StandardHeroLabels)
            {
                Controls.Add(label);
            }

            // Player Decks //

            int playerDeckLabelsStartX = COLUMN1_X;
            int playerDeckLabelsStartY = standardHeroLabelsStartY + LABELS_SPACING_Y * (Game.Board.StandardHeroStacks.Keys.Count + 1);

            labelPlayerDecks.Location = new Point(playerDeckLabelsStartX, playerDeckLabelsStartY);

            offsetY = LABELS_SPACING_Y;
            foreach (Player player in Game.Players)
            {
                cards = "";

                PlayerDeckLabels.Add(new Label
                {
                    AutoSize = true,
                    Location = new Point(playerDeckLabelsStartX, playerDeckLabelsStartY + offsetY),
                    Name     = $"labelPlayerDecks{player.Name.Replace(" ", "")}",
                    TabIndex = 500 + offsetY / LABELS_SPACING_Y,
                    Text     = player.Name
                });

                foreach (Card card in player.Deck)
                {
                    if (card.ID == "ShieldAgent")
                    {
                        cards += "A";
                    }
                    else if (card.ID == "ShieldTrooper")
                    {
                        cards += "T";
                    }
                    else if (card.ID == "HydraOperative")
                    {
                        cards += "O";
                    }
                    else if (card.ID == "HydraSoldier")
                    {
                        cards += "S";
                    }
                }

                PlayerDeckLabels.Add(new Label
                {
                    AutoSize = true,
                    Font     = new Font(FontFamily.GenericMonospace, STACK_LABEL_FONT_POINT),
                    Location = new Point(playerDeckLabelsStartX + LABELS_SPACING_X, playerDeckLabelsStartY + offsetY),
                    Name     = $"label{player.Name.Replace(" ", "")}Deck",
                    TabIndex = 600 + offsetY / LABELS_SPACING_Y,
                    Text     = cards
                });

                offsetY += LABELS_SPACING_Y;
            }

            foreach (Label label in PlayerDeckLabels)
            {
                Controls.Add(label);
            }

            // Hero Deck //

            int heroDeckLabelsStartX = COLUMN1_X;
            int heroDeckLabelsStartY = playerDeckLabelsStartY + LABELS_SPACING_Y * (Game.Players.Count + 2);

            labelHeroDeck.Location = new Point(heroDeckLabelsStartX, heroDeckLabelsStartY);

            Card heroCard = Game.Board.HeroDeck[0];

            Controls.Remove(HeroDeckTopCard);
            if (heroCard is Hero hero)
            {
                HeroDeckTopCard = new HeroCard(hero)
                {
                    AutoSize = true,
                    Location = new Point(heroDeckLabelsStartX, heroDeckLabelsStartY + LABELS_SPACING_Y),
                    Name     = $"heroDeckTopCard",
                    TabIndex = 700 + offsetY / LABELS_SPACING_Y
                };
            }

            HeroDeckTopCard.Click += new EventHandler(HeroDeckTopCard_Click);

            Controls.Add(HeroDeckTopCard);

            // Villain Deck //

            int villainDeckLabelsStartX = COLUMN2_X;
            int villainDeckLabelsStartY = heroDeckLabelsStartY;

            labelVillainDeck.Location = new Point(villainDeckLabelsStartX, villainDeckLabelsStartY);

            Card villainCard = Game.Board.VillainDeck[0];

            Controls.Remove(VillainDeckTopCard);
            if (villainCard is Villain villain)
            {
                VillainDeckTopCard = new VillainCard(villain)
                {
                    AutoSize = true,
                    Location = new Point(villainDeckLabelsStartX, villainDeckLabelsStartY + LABELS_SPACING_Y),
                    Name     = $"villainDeckTopCard",
                    TabIndex = 700 + offsetY / LABELS_SPACING_Y
                };
            }
            else if (villainCard is Bystander bystander)
            {
                VillainDeckTopCard = new BystanderCard(bystander)
                {
                    AutoSize = true,
                    Location = new Point(villainDeckLabelsStartX, villainDeckLabelsStartY + LABELS_SPACING_Y),
                    Name     = $"villainDeckTopCard",
                    TabIndex = 700 + offsetY / LABELS_SPACING_Y
                };
            }
            else if (villainCard is Twist twist)
            {
                VillainDeckTopCard = new TwistCard(twist)
                {
                    AutoSize = true,
                    Location = new Point(villainDeckLabelsStartX, villainDeckLabelsStartY + LABELS_SPACING_Y),
                    Name     = $"villainDeckTopCard",
                    TabIndex = 700 + offsetY / LABELS_SPACING_Y
                };
            }

            VillainDeckTopCard.Click += new EventHandler(VillainDeckTopCard_Click);

            Controls.Add(VillainDeckTopCard);
        }