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)); }
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(); }
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); }
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); }
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(); } }
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); } }
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); }
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(); } }
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(); } }
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(); } }
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(); }
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); }
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); }
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); }
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(); }
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(); } }
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); }
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(); } }
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 }
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(); }
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--; } }
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++; } } }
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]); }
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)); }
/// <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); }
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(); }
private int GetSellRate(int cid) { int qual = CardConfigManager.GetCardConfig(cid).Quality; return(11 - qual * 2); }
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(); } }
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); } }
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(); }