Пример #1
0
            public int Compare(DeckCard cx, DeckCard cy)
            {
                if (cx.BaseId <= 0 && cy.BaseId <= 0)
                {
                    return(0);
                }
                if (cx.BaseId <= 0)
                {
                    return(1);
                }
                if (cy.BaseId <= 0)
                {
                    return(-1);
                }

                var cardX = CardConfigManager.GetCardConfig(cx.BaseId);
                var cardY = CardConfigManager.GetCardConfig(cy.BaseId);

                if (cardX.Type != cardY.Type)
                {
                    return(cardX.Type.CompareTo(cardY.Type));
                }
                if (cardX.Star != cardY.Star)
                {
                    return(cardX.Star.CompareTo(cardY.Star));
                }

                if (cardX.Quality != cardY.Quality)
                {
                    return(cardX.Quality.CompareTo(cardY.Quality));
                }

                return(cx.BaseId.CompareTo(cy.BaseId));
            }
Пример #2
0
        private void MessageBoxEx_Paint(object sender, PaintEventArgs e)
        {
            if (img != null)
            {
                e.Graphics.DrawImage(img, 38, 32, 100, 100);

                var deck = UserProfile.InfoCard.Decks[selectPage];
                for (int i = 0; i < deck.CardIds.Length; i++)
                {
                    int x = i % 6;
                    int y = i / 6;

                    var cardId = deck.CardIds[i];
                    e.Graphics.DrawImage(CardAssistant.GetCardImage(cardId, 100, 100), x * 20 + 150, y * 20 + 35, 20, 20);
                    var cardJob = CardConfigManager.GetCardConfig(cardId).JobId;
                    if (cardJob > 0 && cardJob != UserProfile.InfoBasic.Job)
                    {
                        var brush = new SolidBrush(Color.FromArgb(150, Color.Red));
                        e.Graphics.FillRectangle(brush, x * 20 + 150, y * 20 + 35, 20, 20);
                        brush.Dispose();
                        e.Graphics.DrawRectangle(Pens.Red, x * 20 + 150, y * 20 + 35, 20, 20);
                    }
                }
            }

            Font font = new Font("宋体", 9 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);

            e.Graphics.DrawString(string.Format("地形:{0}", tile == 0 ? "默认" : ConfigDatas.ConfigData.GetTileConfig(tile).Cname), font, Brushes.White, 63, 117);
            font.Dispose();
        }
Пример #3
0
        public static Image GetPreview(int id)
        {
            var powerConfig = ConfigData.GetHeroPowerConfig(id);

            ControlPlus.TipImage tipData = new ControlPlus.TipImage();
            tipData.AddTextNewLine(powerConfig.Name, "White", 20);
            tipData.AddLine();
            tipData.AddTextNewLine("英雄技能", "Red");
            tipData.AddTextLines(powerConfig.Des, "Lime", 15, true);
            tipData.AddLine();
            var cost = CardConfigManager.GetCardConfig(powerConfig.CardId).Cost;

            tipData.AddTextNewLine("消耗:", "White");
            if (powerConfig.Type == (int)CardTypes.Monster)
            {
                tipData.AddText(cost + "LP", "Yellow");
            }
            else if (powerConfig.Type == (int)CardTypes.Weapon)
            {
                tipData.AddText(cost + "PP", "Red");
            }
            else
            {
                tipData.AddText(cost + "MP", "Blue");
            }

            return(tipData.Image);
        }
Пример #4
0
        private Image GetPlayerImage()
        {
            ControlPlus.TipImage tipData = new ControlPlus.TipImage();
            tipData.AddTextNewLine(string.Format("Lv{0}", player.Level), "LightBlue", 20);
            tipData.AddTextNewLine("能量回复比率", "White");
            tipData.AddTextNewLine(string.Format("LP {0}", player.EnergyGenerator.RateLp.ToString().PadLeft(3, ' ')), "Gold");
            tipData.AddBar(100, player.EnergyGenerator.RateLp, Color.Yellow, Color.Gold);
            tipData.AddTextNewLine(string.Format("PP {0}", player.EnergyGenerator.RatePp.ToString().PadLeft(3, ' ')), "Red");
            tipData.AddBar(100, player.EnergyGenerator.RatePp, Color.Pink, Color.Red);
            tipData.AddTextNewLine(string.Format("MP {0}", player.EnergyGenerator.RateMp.ToString().PadLeft(3, ' ')), "Blue");
            tipData.AddBar(100, player.EnergyGenerator.RateMp, Color.Cyan, Color.Blue);

            player.TrapHolder.GenerateImage(tipData, player is HumanPlayer);

            var rival = player.Rival as Player;

            if (rival.HasHolyWord("witcheye"))
            {
                tipData.AddLine();
                tipData.AddTextNewLine("手牌", "White");
                for (int i = 0; i < 10; i++)
                {
                    var card = player.CardManager.GetDeckCardAt(i);
                    if (card.CardId > 0)
                    {
                        var cardConfig = CardConfigManager.GetCardConfig(card.CardId);
                        tipData.AddTextNewLine("-", "White");
                        tipData.AddImage(CardAssistant.GetCardImage(card.CardId, 20, 20));
                        tipData.AddText(string.Format("{0}({1}★)Lv{2}", cardConfig.Name, cardConfig.Star, card.Level), HSTypes.I2QualityColor(cardConfig.Quality));
                    }
                }
            }
            return(tipData.Image);
        }
Пример #5
0
        private void PeopleDeckViewForm_Click(object sender, EventArgs e)
        {
            if (tar != -1)
            {
                sel = tar;
                PeopleConfig peopleConfig = ConfigData.GetPeopleConfig(people[tar]);
                cardDetail.SetInfo(-1);

                DeckCard[] cards = DeckBook.GetDeckByName(peopleConfig.Emethod, peopleConfig.Level);
                nlClickLabel1.ClearLabel();
                foreach (DeckCard card in cards)
                {
                    CardConfigData ccd = CardConfigManager.GetCardConfig(card.BaseId);
                    if (ccd.Id == 0)
                    {
                        continue;
                    }
                    var    name    = CardConfigManager.GetCardConfig(card.BaseId).Name;
                    string cardstr = string.Format("{0}", name);
                    nlClickLabel1.AddLabel(cardstr, card);
                }

                Invalidate(new Rectangle(65, 35, cardWidth * xCount + 200, 630));
                nlClickLabel1.Invalidate();
            }
        }
Пример #6
0
        public void Draw(Graphics g)
        {
            Image back = PicLoader.Read("System", "CardBack2.JPG");

            g.DrawImage(back, x, y, width - 1, height - 1);
            back.Dispose();

            if (show)
            {
                //   g.FillRectangle(PaintTool.GetBrushByAttribute(CardConfigManager.GetCardConfig(product.Cid).Attr), x + 10, y + 12, 70 - 2, 90 - 2);

                virtualRegion.Draw(g);

                CardAssistant.DrawBase(g, product.Cid, x + 12, y + 14, 64, 84);

                if (coverEffect != null)
                {
                    coverEffect.Draw(g);
                }

                if ((CardProductMarkTypes)product.Mark != CardProductMarkTypes.Null)
                {
                    Image marker = PicLoader.Read("System", string.Format("Mark{0}.PNG", (int)product.Mark));
                    g.DrawImage(marker, x + 28, y + 12, 50, 51);
                    marker.Dispose();
                }

                var cardConfigData = CardConfigManager.GetCardConfig(product.Cid);
                var quality        = cardConfigData.Quality + 1;
                g.DrawImage(HSIcons.GetIconsByEName("gem" + quality), x + width / 2 - 8, y + height - 44, 16, 16);
            }
        }
Пример #7
0
        public CardProductMarkTypes GetSellMark()
        {
            CardProductMarkTypes mark = CardProductMarkTypes.Null;
            var cardData = CardConfigManager.GetCardConfig(WeaponConfig.Id);

            if (cardData.Quality == CardQualityTypes.Legend)
            {
                mark = CardProductMarkTypes.Only;
            }
            else if (cardData.Quality < CardQualityTypes.Excel && MathTool.GetRandom(10) > 7)
            {
                mark = CardProductMarkTypes.Sale;
            }
            else
            {
                int roll = MathTool.GetRandom(10);
                if (roll == 0)
                {
                    mark = CardProductMarkTypes.Hot;
                }
                else if (roll == 1)
                {
                    mark = CardProductMarkTypes.Gold;
                }
            }
            return(mark);
        }
Пример #8
0
        private void DrawOnCardView(Graphics g, int cid, int x, int y, bool isSelected)
        {
            CardAssistant.DrawBase(g, cid, x, y, cardWidth, cardHeight);
            if (isSelected)
            {
                var brushes = new SolidBrush(Color.FromArgb(130, Color.Yellow));
                g.FillRectangle(brushes, x, y, cardWidth, cardHeight);
                brushes.Dispose();
            }

            var  cardConfigData = CardConfigManager.GetCardConfig(cid);
            Font font           = new Font("宋体", 5 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);

            g.DrawString(("★★★★★★★★★★").Substring(10 - cardConfigData.Star), font, Brushes.Yellow, x + 3, y + 3);
            font.Dispose();

            var quality = cardConfigData.Quality + 1;

            g.DrawImage(HSIcons.GetIconsByEName("gem" + quality), x + cardWidth / 2 - 8, y + cardHeight - 20, 16, 16);

            var jobId = cardConfigData.JobId;

            if (jobId > 0)
            {
                var   jobConfig = ConfigData.GetJobConfig(jobId);
                Brush brush     = new SolidBrush(Color.FromName(jobConfig.Color));
                g.FillRectangle(brush, x + cardWidth - 24, y + 4, 20, 20);
                g.DrawImage(HSIcons.GetIconsByEName("job" + jobConfig.JobIndex), x + cardWidth - 24, y + 4, 20, 20);
                brush.Dispose();
            }
        }
Пример #9
0
        private void panelBattle_MouseClick(object sender, MouseEventArgs e)
        {
            if (BattleManager.Instance.PlayerManager.LeftPlayer == null)
            {
                return;
            }

            if (isGamePaused)
            {
                return;
            }

            int cardSize = BattleManager.Instance.MemMap.CardSize;

            if (e.Button == MouseButtons.Left)
            {
                if (leftSelectCard != null && (myCursor.Name == "summon" || myCursor.Name == "equip" || myCursor.Name == "cast" || myCursor.Name == "sidekick"))
                {
                    int result;
                    if ((result = BattleManager.Instance.PlayerManager.LeftPlayer.CheckUseCard(leftSelectCard, BattleManager.Instance.PlayerManager.LeftPlayer, BattleManager.Instance.PlayerManager.RightPlayer)) != HSErrorTypes.OK)
                    {
                        BattleManager.Instance.FlowWordQueue.Add(new FlowErrInfo(result, new Point(mouseX, mouseY), 0, 0), false);
                        return;
                    }

                    LiveMonster lm = BattleLocationManager.GetPlaceMonster(mouseX, mouseY);
                    if (myCursor.Name == "summon" && lm == null)
                    {
                        var pos = new Point(mouseX / cardSize * cardSize, mouseY / cardSize * cardSize);
                        BattleManager.Instance.PlayerManager.LeftPlayer.UseMonster(leftSelectCard, pos);
                    }
                    else if (myCursor.Name == "equip" && lm != null)
                    {
                        BattleManager.Instance.PlayerManager.LeftPlayer.UseWeapon(lm, leftSelectCard);
                    }
                    else if (myCursor.Name == "sidekick" && lm != null)
                    {
                        BattleManager.Instance.PlayerManager.LeftPlayer.UseSideKick(lm, leftSelectCard);
                    }
                    else if (myCursor.Name == "cast")
                    {
                        BattleManager.Instance.PlayerManager.LeftPlayer.DoSpell(lm, leftSelectCard, e.Location);
                    }

                    var cardData = CardConfigManager.GetCardConfig(leftSelectCard.CardId);
                    UserProfile.Profile.OnUseCard(cardData.Star, 0, cardData.TypeSub);

                    cardsArray1.DisSelectCard();
                }
            }
            else if (e.Button == MouseButtons.Right)
            {
                leftSelectCard = null;
                cardsArray1.DisSelectCard();
            }
        }
Пример #10
0
        public void SetInfo(DeckCard dcard)
        {
            cid      = dcard.BaseId;
            level    = dcard.Level;
            lastCell = -1;
            skills   = new List <MonsterSkill>();
            string effectName = "";

            if (cid > 0)
            {
                card = CardAssistant.GetCard(cid);
                virtualRegion.SetRegionKey(3, CardConfigManager.GetCardConfig(cid).Quality + 1);
                var jobId = CardConfigManager.GetCardConfig(cid).JobId;
                if (jobId > 0)
                {
                    jobId = ConfigData.GetJobConfig(jobId).JobIndex;
                }
                virtualRegion.SetRegionKey(4, jobId);
                card.SetData(dcard);
                if (card.GetCardType() == CardTypes.Monster)
                {
                    MonsterCard monsterCard = card as MonsterCard;
                    if (monsterCard != null)
                    {
                        CheckMonster(monsterCard, ref effectName);
                    }
                }
            }

            string nowEffectName = "";

            if (coverEffect != null)
            {
                nowEffectName = coverEffect.Name;
            }

            if (effectName != nowEffectName)
            {
                if (effectName == "")
                {
                    coverEffect = null;
                }
                else
                {
                    coverEffect = new CoverEffect(EffectBook.GetEffect(effectName), new Point(X + 20, Y + 20), new Size(160, 180));
                }
            }

            tooltip.Hide(parent);

            if (Invalidate != null)
            {
                Invalidate();
            }
        }
Пример #11
0
        private static void MakeLoad(string name, int level)
        {
            int cardLevel = ConfigData.GetLevelExpConfig(level).TowerLevel;

            var          deck = new List <DeckCard>();
            StreamReader sr   = new StreamReader(DataLoader.Read("Deck", string.Format("{0}.txt", name)));

            int[] starCount = { 0, 0, 0, 0, 0, 0, 0, 0 }; //1-7
            for (int i = 0; i < GameConstants.DeckCardCount; i++)
            {
                var line = sr.ReadLine();
                if (line == null)
                {
                    break;
                }
                if (line.Contains("//"))
                {
                    int index = line.IndexOf("//"); //去除注释
                    line = line.Substring(0, index);
                }

                string[] datas  = line.Split('=');
                int      cardId = 0;

                string tpStr  = datas[0].Trim();
                string valStr = datas[1].Trim();
                if (tpStr == "Id")
                {
                    cardId = int.Parse(valStr);
                }
                else if (tpStr == "Rand")
                {
                    var    infos      = valStr.Split('|');
                    string catalog    = infos[0];
                    var    keyId      = int.Parse(infos[1]);
                    string pickMethod = "atwill";
                    if (infos.Length > 2)
                    {
                        pickMethod = infos[2];
                    }
                    cardId = CheckRandom(catalog, keyId, pickMethod, starCount);
                }
                else
                {
                    throw new ApplicationException("card type error " + tpStr + "@" + name);
                }

                starCount[CardConfigManager.GetCardConfig(cardId).Star]++;
                var card = new DeckCard(cardId, (byte)cardLevel, 0);
                deck.Add(card);
            }
            sr.Close();
            deckCacheDict[name] = deck.ToArray();
        }
Пример #12
0
        public void SummonRandomAttr(string type, int attr)
        {
            int cardId;

            while (true)
            {
                cardId = CardConfigManager.GetRandomAttrCard(attr);
                if (CardConfigManager.GetCardConfig(cardId).Type == CardTypes.Monster)
                {
                    break;
                }
            }
            Summon(type, cardId, 1);
        }
Пример #13
0
        private static int CheckRandom(string catalog, int keyId, string pickMethod, int[] starCount)
        {
            CardConfigManager.RandomCardSelectorDelegate randMethod = null;
            if (catalog == "race")
            {
                randMethod = CardConfigManager.GetRandomRaceCard;
            }
            else if (catalog == "attr")
            {
                randMethod = CardConfigManager.GetRandomAttrCard;
            }
            else if (catalog == "type")
            {
                randMethod = CardConfigManager.GetRandomTypeCard;
            }
            else
            {
                randMethod = CardConfigManager.GetRandomCard;
            }

            var toPick = new List <CardConfigData>();

            for (int i = 0; i < 3; i++)//每次从3张牌选
            {
                toPick.Add(CardConfigManager.GetCardConfig(randMethod(keyId, -1)));
            }
            if (pickMethod == "small")
            {
                toPick.Sort((a, b) => a.Star - b.Star);
                return(toPick[0].Id);
            }
            else if (pickMethod == "big")
            {
                toPick.Sort((a, b) => b.Star - a.Star);
                return(toPick[0].Id);
            }
            else if (pickMethod == "fitb")
            {
                toPick.Sort((a, b) => (starCount[a.Star] - FitBigDesire[a.Star]) / (FitBigDesire[a.Star] * 10 + 1) -
                            (starCount[b.Star] - FitBigDesire[b.Star]) / (FitBigDesire[b.Star] * 10 + 1));
                return(toPick[0].Id);
            }
            else if (pickMethod == "fits")
            {
                toPick.Sort((a, b) => (starCount[a.Star] - FitSmallDesire[a.Star]) / (FitSmallDesire[a.Star] * 10 + 1) -
                            (starCount[b.Star] - FitSmallDesire[b.Star]) / (FitSmallDesire[b.Star] * 10 + 1));
                return(toPick[0].Id);
            }
            return(toPick[0].Id);
        }
Пример #14
0
        public int AddCard(DeckCard card)
        {
            int firstBlank = -1;
            int count      = 0;
            var cardConfig = CardConfigManager.GetCardConfig(card.BaseId);
            int newCardJob = cardConfig.JobId;

            for (int i = 0; i < GameConstants.DeckCardCount; i++)
            {
                var dcard = CardIds[i];

                if (dcard == -1 && firstBlank == -1)
                {
                    firstBlank = i;
                }
                else if (dcard != -1)
                {
                    var tCard = UserProfile.InfoCard.GetDeckCardById(dcard);
                    if (tCard.BaseId == card.BaseId)
                    {
                        count++;
                    }

                    int cardJob = CardConfigManager.GetCardConfig(tCard.BaseId).JobId;
                    if (newCardJob > 0 && cardJob > 0 && newCardJob != cardJob)
                    {
                        return(HSErrorTypes.CardJobTwice);
                    }
                }
            }

            if (cardConfig.Quality == CardQualityTypes.Legend && count >= GameConstants.CardLimitLegend)
            {
                return(HSErrorTypes.DeckCardTypeLimitLegend);
            }
            if (cardConfig.Quality != CardQualityTypes.Legend && count >= GameConstants.CardLimit)
            {
                return(HSErrorTypes.DeckCardTypeLimit);
            }
            if (firstBlank == -1)
            {
                return(HSErrorTypes.DeckIsFull);
            }
            SetCardAt(firstBlank, card.BaseId);

            return(HSErrorTypes.OK);
        }
Пример #15
0
        public static void DrawBase(Graphics g, int cid, int x, int y, int width, int height)
        {
            int   xDiff    = width / 15;
            int   yDiff    = height / 15;
            Image img      = GetCardImage(cid, width, height);
            var   cardData = CardConfigManager.GetCardConfig(cid);
            int   attr     = cardData.Attr;//属性决定包边颜色

            g.FillRectangle(PaintTool.GetBrushByAttribute(attr), x + 1, y + 1, width - 2, height - 2);
            g.DrawImage(img, x + 2 + xDiff, y + 2 + yDiff, width - 4 - xDiff * 2, height - 4 - yDiff * 2);

            string cardBorder = GetCardBorder(cardData);
            var    imgBack    = PicLoader.Read("Border", cardBorder);

            g.DrawImage(imgBack, x + 2, y + 2, width - 4, height - 4);
            imgBack.Dispose();
        }
Пример #16
0
        private void MessageBoxEx_Paint(object sender, PaintEventArgs e)
        {
            if (sel >= 0)
            {
                DeckCard card = new DeckCard(UserProfile.InfoCard.GetDeckCardById(activeCids[sel]));
                e.Graphics.DrawImage(CardAssistant.GetCardImage(card.BaseId, 100, 100), 38, 62, 100, 100);

                Font         font  = new Font("Arial", 7 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);
                const string stars = "★★★★★★★★★★";
                int          star  = CardConfigManager.GetCardConfig(card.BaseId).Star;
                e.Graphics.DrawString(stars.Substring(10 - star), font, Brushes.Yellow, 38, 62);

                e.Graphics.DrawString(string.Format("{0:00}", card.Level), font, Brushes.Gold, 38, 150);
                e.Graphics.FillRectangle(Brushes.Wheat, 53, 153, card.Exp * 80 / ExpTree.GetNextRequiredCard(card.Level), 5);
                e.Graphics.DrawRectangle(Pens.WhiteSmoke, 53, 153, 80, 5);
                font.Dispose();
            }
        }
Пример #17
0
        public void Update(DeckCard[] dcards)
        {
            int[]    starCount = new [] { 0, 0, 0, 0, 0, 0, 0 };
            string[] typeArray = new string[] { "直伤", "范围", "控制", "辅助", "铺场", "防御" };
            int[]    typeCount = new[] { 0, 0, 0, 0, 0, 0 };
            foreach (var deckCard in dcards)
            {
                if (deckCard.BaseId == 0)
                {
                    continue;
                }
                starCount[deckCard.Star - 1]++;

                var cardData = CardConfigManager.GetCardConfig(deckCard.BaseId);
                if (cardData.Remark.Contains("直伤"))
                {
                    typeCount[0]++;
                }
                if (cardData.Remark.Contains("范围"))
                {
                    typeCount[1]++;
                }
                if (cardData.Remark.Contains("状态"))
                {
                    typeCount[2]++;
                }
                if (cardData.Remark.Contains("治疗") || cardData.Remark.Contains("能量") || cardData.Remark.Contains("手牌"))
                {
                    typeCount[3]++;
                }
                if (cardData.Remark.Contains("召唤"))
                {
                    typeCount[4]++;
                }
                if (cardData.Remark.Contains("防御"))
                {
                    typeCount[5]++;
                }
            }
            chartStar.SetData(new[] { "1", "2", "3", "4", "5", "6", "7" }, starCount);
            chartType.SetData(typeArray, typeCount);
        }
Пример #18
0
        private void DropItemViewerForm_Click(object sender, EventArgs e)
        {
            if (tar != -1)
            {
                sel = tar;

                HItemConfig  itemConfig = ConfigData.GetHItemConfig(items[tar]);
                const string stars      = "★★★★★★★★★★";
                itemDesStr = string.Format("{0}({2}){1}", itemConfig.Name, itemConfig.Descript, stars.Substring(10 - itemConfig.Rare));
                Invalidate(new Rectangle(65, cardHeight * yCount + 37 + 21, 500, 20));

                nlClickLabel1.ClearLabel();
                int[] cardIds = CardPieceBook.GetCardIdsByItemId(items[tar]);
                foreach (int cid in cardIds)
                {
                    var name = CardConfigManager.GetCardConfig(cid).Name;
                    nlClickLabel1.AddLabel(name, cid);
                }
                nlClickLabel1.Invalidate();
            }
        }
Пример #19
0
        private void CreateCards()
        {
            DeckCard[] cds   = DeckBook.GetDeckByName("rookie", 1);
            int        index = 0;

            foreach (DeckCard cd in cds)
            {
                if (CardConfigManager.GetCardConfig(cd.BaseId).Id == 0)
                {
                    continue;
                }
                var dcard = UserProfile.InfoCard.AddCard(cd.BaseId);
                UserProfile.InfoCard.SelectedDeck.SetCardAt(index++, dcard.BaseId);
            }
            #region 把所有基础卡牌都给玩家

            foreach (var cd in ConfigData.MonsterDict.Values)
            {
                if (cd.Remark.Contains("基本") && UserProfile.InfoCard.GetCardCount(cd.Id) == 0)
                {
                    UserProfile.InfoCard.AddCard(cd.Id);
                }
            }
            foreach (var cd in ConfigData.WeaponDict.Values)
            {
                if (cd.Remark.Contains("基本") && UserProfile.InfoCard.GetCardCount(cd.Id) == 0)
                {
                    UserProfile.InfoCard.AddCard(cd.Id);
                }
            }
            foreach (var cd in ConfigData.SpellDict.Values)
            {
                if (cd.Remark.Contains("基本") && UserProfile.InfoCard.GetCardCount(cd.Id) == 0)
                {
                    UserProfile.InfoCard.AddCard(cd.Id);
                }
            }

            #endregion
        }
Пример #20
0
        private void CardBagForm_Paint(object sender, PaintEventArgs e)
        {
            BorderPainter.Draw(e.Graphics, "", Width, Height);

            for (int i = 0; i < cardCount; i++)
            {
                var pickCardId = cardOpenArray[i];
                int tx         = cardPos[i * 2];
                int ty         = cardPos[i * 2 + 1];
                if (pickCardId > 0)
                {
                    CardAssistant.DrawBase(e.Graphics, pickCardId, tx, ty, 120, 150);

                    var  cardConfigData = CardConfigManager.GetCardConfig(pickCardId);
                    Font fontStar       = new Font("宋体", 10 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);
                    e.Graphics.DrawString(("★★★★★★★★★★").Substring(10 - cardConfigData.Star), fontStar, Brushes.Yellow, tx + 5, ty + 10);
                    fontStar.Dispose();
                    var quality = cardConfigData.Quality + 1;
                    e.Graphics.DrawImage(HSIcons.GetIconsByEName("gem" + quality), tx + 50, ty + 125, 20, 20);
                }
                else
                {
                    var imgBack = PicLoader.Read("System", "CardBack.JPG");
                    e.Graphics.DrawImage(imgBack, tx, ty, 120, 150);
                }

                if (coverEffect[i] != null)
                {
                    coverEffect[i].Draw(e.Graphics);
                }
            }

            vRegion.Draw(e.Graphics);

            Font font = new Font("黑体", 12 * 1.33f, FontStyle.Bold, GraphicsUnit.Pixel);

            e.Graphics.DrawString("卡 包", font, Brushes.White, Width / 2 - 40, 8);
            font.Dispose();
        }
Пример #21
0
        public void RemoveCardPiece(int id, bool returnResource)
        {
            DbDeckCard dc;

            if (Cards.TryGetValue(id, out dc))
            {
                if (dc.Exp == 0)
                {
                    return;
                }

                if (returnResource)
                {
                    var cardData = CardConfigManager.GetCardConfig(dc.BaseId);
                    MainTipManager.AddTip(string.Format("|分解卡片-|{0}|{1}", HSTypes.I2QualityColor(cardData.Quality), cardData.Name), "White");
                    int qual = CardConfigManager.GetCardConfig(dc.BaseId).Quality + 1;
                    UserProfile.Profile.InfoBag.AddResource(GameResourceType.Gem, GameResourceBook.OutGemCardDecompose(qual));
                }

                dc.Exp--;
            }
        }
Пример #22
0
 public void ChangeDeck(DeckCard[] decks)
 {
     dcards = decks;
     Array.Sort(dcards, new CompareDeckCardByStar());
     monsterCount = weaponCount = spellCount = 0;
     foreach (var deckCard in decks)
     {
         var cardX = CardConfigManager.GetCardConfig(deckCard.BaseId);
         if (cardX.Type == CardTypes.Monster)
         {
             monsterCount++;
         }
         if (cardX.Type == CardTypes.Weapon)
         {
             weaponCount++;
         }
         if (cardX.Type == CardTypes.Spell)
         {
             spellCount++;
         }
     }
 }
Пример #23
0
        public ActiveCard GetNextCard()
        {
            if (cards.Count == 0)
            {
                return(NoneCard);
            }

            int rt = index;

            if (rt >= cards.Count)
            {
                return(NoneCard);
            }
            index++;

            if (CardConfigManager.GetCardConfig(cards[rt].CardId).Id == 0)
            {//卡牌配置可能已经过期,用下一个卡
                NarlonLib.Log.NLog.Warn(string.Format("card is outofdate id={0}", cards[rt].CardId));
                return(GetNextCard());
            }

            return(cards[rt]);
        }
Пример #24
0
            public int Compare(DeckCard cx, DeckCard cy)
            {
                if (cx.BaseId == cy.BaseId && cy.BaseId == 0)
                {
                    return(0);
                }
                if (cy.BaseId == 0)
                {
                    return(-1);
                }
                if (cx.BaseId == 0)
                {
                    return(1);
                }
                int typex = CardConfigManager.GetCardConfig(cx.BaseId).Attr;
                int typey = CardConfigManager.GetCardConfig(cy.BaseId).Attr;

                if (typex != typey)
                {
                    return(typex.CompareTo(typey));
                }

                return(cx.BaseId.CompareTo(cy.BaseId));
            }
Пример #25
0
        /// <summary>
        /// 添加卡牌,外层都会检查cid的合法性,所以里面不用在判断了
        /// </summary>
        /// <param name="cid">卡牌id</param>
        public DbDeckCard AddCard(int cid)
        {
            DbDeckCard card     = new DbDeckCard(cid, 1, 0);
            var        cardData = CardConfigManager.GetCardConfig(cid);

            if (GetCardCount(cid) >= 1) //每张卡其实只能有一份
            {
                var myCard = GetDeckCardById(cid);
                myCard.AddExp(1); //多余的卡转化为经验值
                return(myCard);   //每种卡牌只能拥有1张
            }

            Cards.Add(card.BaseId, card);
            Newcards.Add(card.BaseId);
            if (Newcards.Count > 10)
            {
                Newcards.RemoveAt(0);
            }

            AchieveBook.CheckByCheckType("card");
            MainTipManager.AddTip(string.Format("|获得卡片-|{0}|{1}", HSTypes.I2QualityColor(cardData.Quality), cardData.Name), "White");

            return(card);
        }
Пример #26
0
        private void DrawOnDeckView(Graphics g, DeckCard card, int x, int y, bool isSelected, string attr)
        {
            CardAssistant.DrawBase(g, card.BaseId, x, y, cardWidth, cardHeight);
            if (isSelected)
            {
                var brushes = new SolidBrush(Color.FromArgb(130, Color.Yellow));
                g.FillRectangle(brushes, x, y, cardWidth, cardHeight);
                brushes.Dispose();
            }

            if (card.BaseId <= 0)
            {
                return;
            }

            var  cardConfigData = CardConfigManager.GetCardConfig(card.BaseId);
            Font font           = new Font("宋体", 5 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);

            g.DrawString(("★★★★★★★★★★").Substring(10 - cardConfigData.Star), font, Brushes.Yellow, x + 3, y + 3);
            font.Dispose();

            var quality = cardConfigData.Quality + 1;

            g.DrawImage(HSIcons.GetIconsByEName("gem" + quality), x + cardWidth / 2 - 8, y + cardHeight - 20, 16, 16);

            var jobId = cardConfigData.JobId;

            if (jobId > 0)
            {
                var   jobConfig = ConfigData.GetJobConfig(jobId);
                Brush brush     = new SolidBrush(Color.FromName(jobConfig.Color));
                g.FillRectangle(brush, x + cardWidth - 24, y + 4, 20, 20);
                g.DrawImage(HSIcons.GetIconsByEName("job" + jobConfig.JobIndex), x + cardWidth - 24, y + 4, 20, 20);
                brush.Dispose();
            }

            if (attr.Contains("D"))
            {
                Image mark = PicLoader.Read("System", "MarkSelect.PNG");
                g.DrawImage(mark, x + cardWidth - 21, y + cardHeight - 25, 21, 25);
                if (attr.Contains("DD"))//2张出战
                {
                    g.DrawImage(mark, x + cardWidth - 21, y + cardHeight - 25 - 15, 21, 25);
                }
                mark.Dispose();
            }
            if (attr.Contains("N"))
            {
                Image mark = PicLoader.Read("System", "MarkNew.PNG");
                g.DrawImage(mark, x, y, 30, 30);
                mark.Dispose();
            }

            g.FillEllipse(Brushes.Black, x + 3, y + 4 + cardHeight - 26, 16, 16);
            Font   fontsong = new Font("宋体", 9 * 1.33f, FontStyle.Bold, GraphicsUnit.Pixel);
            string text     = string.Format("{0:00}", card.Level);

            g.DrawString(text, fontsong, Brushes.Yellow, x + 4, y + 4 + cardHeight - 23);
            if (card.Exp >= ConfigData.GetLevelExpConfig(card.Level).CardExp)//可以升级
            {
                g.DrawString(text, fontsong, Brushes.Lime, x + 4, y + 4 + cardHeight - 23);
                Image mark = PicLoader.Read("System", "ArrowU.PNG");
                g.DrawImage(mark, x + 2, y + 4 + cardHeight - 43, 18, 16);
                mark.Dispose();
            }
            fontsong.Dispose();
        }
Пример #27
0
        private int GetSellRate(int cid)
        {
            int qual = CardConfigManager.GetCardConfig(cid).Quality;

            return(11 - qual * 2);
        }
Пример #28
0
        private void Draw(Graphics g, CardMouseState mouse)
        {
            if (Card is SpecialCard)
            {
                //   Image img2 = Card.GetCardImage(120, 120);
                //   g.DrawImage(img2, new Rectangle(Location.X, 10, 120, 120), 0, 0, img2.Width, img2.Height, GraphicsUnit.Pixel);
                return;
            }

            int        x       = Location.X;
            int        y       = Location.Y;
            Color      bgColor = IsSelected ? Color.LightGreen : BgColor;
            SolidBrush sb      = new SolidBrush(bgColor);

            g.FillRectangle(sb, new Rectangle(x, y, Size.Width, Size.Height));
            sb.Dispose();
            if (mouse != CardMouseState.MouseOn)
            {
                y += 10;
            }
            CardAssistant.DrawBase(g, Card.CardId, x, y, Size.Width, 120);

            if (mouse == CardMouseState.Disable)
            {
                var sbrush = new SolidBrush(Color.FromArgb(150, Color.Black));
                g.FillRectangle(sbrush, x, y, Size.Width, 120);
                sbrush.Dispose();
            }
            if (ACard.Combo && CardConfigManager.GetCardConfig(ACard.CardId).Remark.Contains("连击"))
            {
                Image img = PicLoader.Read("System", "CardEff1.PNG");
                g.DrawImage(img, x + 2, y + 2, Size.Width - 4, 120 - 4);
                img.Dispose();
            }

            Font font = new Font("Arial", 7 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);

            for (int i = 0; i < Card.Star; i++)
            {
                g.DrawString("★", font, Brushes.Black, x + Size.Width - 16, y + 2 + i * 10);
                g.DrawString("★", font, Brushes.Yellow, x + Size.Width - 15, y + 1 + i * 10);
            }
            font.Dispose();

            var cardData = CardConfigManager.GetCardConfig(Card.CardId);

            if (Card.GetCardType() == CardTypes.Monster)
            {
                g.DrawImage(HSIcons.GetIconsByEName("rac" + cardData.TypeSub), x + Size.Width / 2 - 18, y + 90, 16, 16);
            }
            else if (Card.GetCardType() == CardTypes.Weapon)
            {
                g.DrawImage(HSIcons.GetIconsByEName("wep" + (cardData.TypeSub - 100 + 1)), x + Size.Width / 2 - 18, y + 90, 16, 16);
            }
            else if (Card.GetCardType() == CardTypes.Spell)
            {
                g.DrawImage(HSIcons.GetIconsByEName("spl" + (cardData.TypeSub - 200 + 1)), x + Size.Width / 2 - 18, y + 90, 16, 16);
            }
            g.DrawImage(HSIcons.GetIconsByEName("atr" + cardData.Attr), x + Size.Width / 2 + 2, y + 90, 16, 16);

            font = new Font("宋体", 9 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);
            var cardName  = string.Format("{0}Lv{1}", Card.Name, ACard.Level);
            var cardQual  = Config.CardConfigManager.GetCardConfig(Card.CardId).Quality;
            var cardColor = Color.FromName(HSTypes.I2QualityColor(cardQual));
            var brush     = new SolidBrush(cardColor);

            g.DrawString(cardName, font, Brushes.Black, x + 1, mouse != CardMouseState.MouseOn ? y + 107 : y + 112);
            g.DrawString(cardName, font, brush, x, mouse != CardMouseState.MouseOn ? y + 106 :y + 111);
            font.Dispose();
            brush.Dispose();

            int index = 0;

            foreach (var manaType in ACard.CostList)
            {
                var imgIcon = HSIcons.GetIconsByEName("mix" + (int)manaType);
                g.DrawImage(imgIcon, x + index * 10, y + 1, 16, 16);
                index++;
            }
            if (index == 0)//无消耗
            {
                font = new Font("宋体", 9 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);
                g.DrawString("无消耗", font, Brushes.White, x + index * 10 + 2, y + 1 + 2);
                font.Dispose();
            }
        }
Пример #29
0
        public override void Draw(Graphics g)
        {
            if (nid > 0)
            {
                Image            img    = null;
                HsActionCallback action = null;
                if (type == PictureRegionCellType.Npc)
                {
                    img = SceneBook.GetSceneNpcImage(nid);
                }
                else if (type == PictureRegionCellType.Item)
                {
                    img    = DataType.Items.HItemBook.GetHItemImage(nid);
                    action = () =>
                    {
                        var itemConfig = ConfigData.GetHItemConfig(nid);
                        var pen        = new Pen(Color.FromName(HSTypes.I2RareColor(itemConfig.Rare)), 2);
                        g.DrawRectangle(pen, X, Y, Width, Height);
                        pen.Dispose();
                    };
                }
                else if (type == PictureRegionCellType.Equip)
                {
                    img    = DataType.Equips.EquipBook.GetEquipImage(nid);
                    action = () =>
                    {
                        var equipConfig = ConfigData.GetEquipConfig(nid);
                        var pen         = new Pen(Color.FromName(HSTypes.I2QualityColor(equipConfig.Quality)), 2);
                        g.DrawRectangle(pen, X, Y, Width, Height);
                        pen.Dispose();
                    };
                }
                else if (type == PictureRegionCellType.Card)
                {
                    img    = DataType.Cards.CardAssistant.GetCardImage(nid, 60, 60);
                    action = () =>
                    {
                        var    cardData   = CardConfigManager.GetCardConfig(nid);
                        string cardBorder = DataType.Cards.CardAssistant.GetCardBorder(cardData);
                        g.DrawImage(PicLoader.Read("Border", cardBorder), X, Y, Width, Height);
                    };
                }
                else if (type == PictureRegionCellType.SkillAttr)
                {
                    img = DataType.HeroSkills.HeroSkillAttrBook.GetHeroSkillAttrImage(nid);
                }
                else if (type == PictureRegionCellType.Achieve)
                {
                    img = DataType.Achieves.AchieveBook.GetAchieveImage(nid);
                }
                else if (type == PictureRegionCellType.People)
                {
                    img = DataType.Peoples.PeopleBook.GetPersonImage(nid);
                }
                else if (type == PictureRegionCellType.HeroSkill)
                {
                    img = DataType.HeroSkills.HeroPowerBook.GetImage(nid);
                }
                else if (type == PictureRegionCellType.CardQual)
                {
                    img = HSIcons.GetIconsByEName("gem" + nid);
                }
                else if (type == PictureRegionCellType.Job)
                {
                    img    = HSIcons.GetIconsByEName("job" + nid);
                    action = () =>
                    {
                        var jobConfig = ConfigData.GetJobConfig(nid + JobConfig.Indexer.NewBie);
                        Pen pen       = new Pen(Color.FromName(jobConfig.Color));
                        g.DrawRectangle(pen, X, Y, Width, Height);
                        pen.Dispose();
                    };
                }
                else if (type == PictureRegionCellType.Bless)
                {
                    img = DataType.Blesses.BlessBook.GetBlessImage(nid);
                }
                else if (type == PictureRegionCellType.SceneQuest)
                {
                    img = SceneBook.GetSceneQuestImage(nid);
                }
                if (img != null)
                {
                    if (Scale == 1)
                    {
                        g.DrawImage(img, X, Y, Width, Height);
                    }
                    else
                    {
                        int realWidth  = (int)(Width * Scale);
                        int realHeight = (int)(Height * Scale);
                        g.DrawImage(img, X + (Width - realWidth) / 2, Y + (Height - realHeight) / 2, realWidth, realHeight);
                    }
                }
                if (action != null)
                {
                    action();
                }
            }

            foreach (IRegionDecorator decorator in decorators)
            {
                decorator.Draw(g, X, Y, Width, Height);
            }
        }
Пример #30
0
        public void Draw(Graphics eg)
        {
            eg.DrawRectangle(Pens.White, X, Y, Width, Height);

            Font fontsong = new Font("宋体", 11 * 1.33f, FontStyle.Regular, GraphicsUnit.Pixel);
            Font fontBold = new Font("宋体", 11 * 1.33f, FontStyle.Bold, GraphicsUnit.Pixel);

            for (int i = 0; i < dcards.Length; i++)
            {
                int yoff = i * cellHeight;
                if (dcards[i].BaseId <= 0)
                {//如果没有卡
                    eg.DrawRectangle(Pens.DimGray, X, Y + yoff, Width, cellHeight);
                    continue;
                }

                if (tar == i)
                {
                    eg.FillRectangle(Brushes.DarkBlue, X, Y + yoff, Width, cellHeight);
                }
                var cardConfigData = CardConfigManager.GetCardConfig(dcards[i].BaseId);
                var cardImg        = CardAssistant.GetCardImage(dcards[i].BaseId, 30, 30);
                eg.DrawImage(cardImg, new Rectangle(X, Y + yoff, 30, cellHeight), 0, 6, 30, cellHeight, GraphicsUnit.Pixel);
                if (cardConfigData.JobId > 0)
                {
                    var   jobConfig = ConfigData.GetJobConfig(cardConfigData.JobId);
                    Brush brush     = new SolidBrush(Color.FromName(jobConfig.Color));
                    eg.FillRectangle(brush, X + Width - cellHeight, Y + yoff, cellHeight, cellHeight);
                    eg.DrawImage(HSIcons.GetIconsByEName("job" + jobConfig.JobIndex), X + Width - cellHeight, Y + yoff, cellHeight, cellHeight);
                    brush.Dispose();
                }
                eg.DrawString(cardConfigData.Star.ToString(), fontBold, Brushes.Gold, X - 1, Y + yoff);
                Color color      = Color.FromName(HSTypes.I2QualityColor(cardConfigData.Quality));
                Brush colorBrush = new SolidBrush(color);
                var   cardName   = cardConfigData.Name;
                if (cardName.Length > 4)
                {
                    cardName = cardName.Substring(0, 4);
                }
                eg.DrawString(string.Format("{0}({1})", cardName, dcards[i].Level), fontsong, colorBrush, X + 30, Y + yoff);
                colorBrush.Dispose();
            }

            if (monsterCount > 0)
            {
                Pen p = new Pen(Color.Yellow, 2);
                eg.DrawRectangle(p, X, Y, Width - 1, monsterCount * cellHeight - 1);
                p.Dispose();
            }
            if (weaponCount > 0)
            {
                Pen p = new Pen(Color.Red, 2);
                eg.DrawRectangle(p, X, Y + monsterCount * cellHeight, Width - 1, weaponCount * cellHeight - 1);
                p.Dispose();
            }
            if (spellCount > 0)
            {
                Pen p = new Pen(Color.Blue, 2);
                eg.DrawRectangle(p, X, Y + (monsterCount + weaponCount) * cellHeight, Width - 1, spellCount * cellHeight - 1);
                p.Dispose();
            }
            fontsong.Dispose();
            fontBold.Dispose();
        }