Esempio n. 1
0
            /// <summary>
            /// 初始化
            /// </summary>
            /// <param name="card"></param>
            public void Init(CardBasicInfo card)
            {
                序列号  = card.序列号;
                称    = card.称;
                使用成本 = card.使用成本;
                描述   = card.描述;
                switch (card.卡牌种类)
                {
                case CardBasicInfo.资源类型枚举.随从:
                    攻击力 = ((MinionCard)card).攻击力;
                    生命值 = ((MinionCard)card).生命值;
                    break;

                case CardBasicInfo.资源类型枚举.法术:
                    break;

                case CardBasicInfo.资源类型枚举.武器:
                    攻击力 = ((WeaponCard)card).攻击力;
                    生命值 = ((WeaponCard)card).耐久度;
                    break;

                case CardBasicInfo.资源类型枚举.奥秘:
                    break;

                case CardBasicInfo.资源类型枚举.其他:
                    break;

                default:
                    break;
                }
            }
Esempio n. 2
0
        /// <summary>
        /// 获得卡牌信息
        /// </summary>
        /// <param name="CardSn"></param>
        /// <returns></returns>
        public static string GetCardInfo(string CardSn)
        {
            StringBuilder Status = new StringBuilder();

            if (GetCardInfoBySN(CardSn) != null)
            {
                CardBasicInfo info = GetCardInfoBySN(CardSn);
                Status.AppendLine("==============");
                Status.AppendLine("Description" + info.描述);
                Status.AppendLine("StandardCostPoint" + info.使用成本);
                Status.AppendLine("Type:" + info.卡牌种类.ToString());
                switch (info.卡牌种类)
                {
                case CardBasicInfo.资源类型枚举.随从:
                    Status.AppendLine("攻击力:" + ((MinionCard)info).攻击力.ToString());
                    Status.AppendLine("生命值:" + ((MinionCard)info).生命值上限.ToString());
                    break;

                case CardBasicInfo.资源类型枚举.武器:
                    Status.AppendLine("攻击力:" + ((WeaponCard)info).攻击力.ToString());
                    Status.AppendLine("耐久度:" + ((WeaponCard)info).耐久度.ToString());
                    break;
                }
                Status.AppendLine("==============");
            }
            return(Status.ToString());
        }
Esempio n. 3
0
 private static void Combo(ActionStatus actionStatus, CardBasicInfo card, List <string> ActionCodeLst, PublicInfo PlayInfo)
 {
     if ((card.卡牌种类 != CardBasicInfo.资源类型枚举.法术) &&
         PlayInfo.连击状态 && (!string.IsNullOrEmpty(card.连击效果)))
     {
         //初始化 Buff效果等等
         SpellCard ablity = (SpellCard)CardUtility.GetCardInfoBySN(card.连击效果);
         if (ablity != null)
         {
             var ResultArg = ablity.UseSpell(actionStatus);
             if (ResultArg.Count != 0)
             {
                 ActionCodeLst.AddRange(ResultArg);
                 //英雄技能等的时候,不算[本方施法]
                 if (ablity.法术卡牌类型 == CardBasicInfo.法术卡牌类型枚举.普通卡牌)
                 {
                     actionStatus.battleEvenetHandler.事件池.Add(new EventCard.全局事件()
                     {
                         触发事件类型 = EventCard.事件类型枚举.施法,
                         触发位置   = PlayInfo.Hero.战场位置
                     });
                 }
             }
         }
     }
 }
Esempio n. 4
0
        private void btnEdit_Click(object sender, EventArgs e)
        {
            //编辑项目
            if (lstCards.SelectedItems.Count == 1)
            {
                CardBasicInfo EditCard = CardUtility.GetCardInfoBySN(lstCards.SelectedItems[0].Text);
                switch (EditCard.卡牌种类)
                {
                case CardBasicInfo.资源类型枚举.随从:
                    (new MinionCardEditor(EditCard.序列号)).ShowDialog();
                    break;

                case CardBasicInfo.资源类型枚举.法术:
                    break;

                case CardBasicInfo.资源类型枚举.武器:
                    break;

                case CardBasicInfo.资源类型枚举.奥秘:
                    break;

                case CardBasicInfo.资源类型枚举.其他:
                    break;

                default:
                    break;
                }
            }
        }
Esempio n. 5
0
 /// <summary>
 /// 去掉使用过的手牌
 /// </summary>
 /// <param name="CardSn"></param>
 public void RemoveUsedCard(String CardSn)
 {
     Card.CardBasicInfo removeCard = new CardBasicInfo();
     foreach (var Seekcard in MySelfInfo.handCards)
     {
         if (Seekcard.SN == CardSn)
         {
             removeCard = Seekcard;
         }
     }
     MySelfInfo.handCards.Remove(removeCard);
     MyInfo.HandCardCount = MySelfInfo.handCards.Count;
 }
Esempio n. 6
0
        /// <summary>
        /// 去掉使用过的手牌
        /// </summary>
        /// <param name="CardSn"></param>
        public void RemoveUsedCard(string CardSn)
        {
            CardBasicInfo removeCard = new CardBasicInfo();

            foreach (var Seekcard in handCards)
            {
                if (Seekcard.序列号 == CardSn)
                {
                    removeCard = Seekcard;
                }
            }
            handCards.Remove(removeCard);
        }
Esempio n. 7
0
        /// <summary>
        /// 开始一个动作
        /// </summary>
        /// <param name="actionStatus">
        /// 在调用这个过程之前,actionStatus里面的本方和对方都应该已经设定好了
        /// 在这里不进行任何的方向判断,默认这个方法是由MyInfo发起的
        /// </param>
        /// <param name="CardSn"></param>
        /// <returns></returns>
        public static List <string> StartAction(ActionStatus actionStatus, string CardSn)
        {
            //清除事件池,注意,事件将在动作结束后整体结算
            actionStatus.battleEvenetHandler.事件池.Clear();
            CardBasicInfo card          = CardUtility.GetCardInfoBySN(CardSn);
            List <string> ActionCodeLst = new List <string>();

            //未知的异常,卡牌资料缺失
            if (card == null)
            {
                return(ActionCodeLst);
            }
            PublicInfo PlayInfo = actionStatus.AllRole.MyPublicInfo;

            switch (card.卡牌种类)
            {
            case CardBasicInfo.资源类型枚举.法术:
                actionStatus.ActionName = "USESPELLCARD";
                UseSpellAction.RunBS(actionStatus, CardSn);
                break;

            case CardBasicInfo.资源类型枚举.随从:
                actionStatus.ActionName = "USEMINIONCARD";
                UseMinionAction.RunBS(actionStatus, CardSn);
                break;

            case CardBasicInfo.资源类型枚举.武器:
                ActionCodeLst.Add(ActionCode.strWeapon + CardUtility.strSplitMark + CardSn);
                PlayInfo.Hero.Weapon = (WeaponCard)card;
                break;

            case CardBasicInfo.资源类型枚举.奥秘:
                ActionCodeLst.Add(ActionCode.strSecret + CardUtility.strSplitMark + CardSn);
                actionStatus.AllRole.MyPrivateInfo.奥秘列表.Add((SecretCard)card);
                PlayInfo.Hero.SecretCount = actionStatus.AllRole.MyPrivateInfo.奥秘列表.Count;
                break;

            default:
                break;
            }
            //随从卡牌的连击效果启动
            Combo(actionStatus, card, ActionCodeLst, PlayInfo);
            if (ActionCodeLst.Count != 0)
            {
                PlayInfo.连击状态 = true;
                ActionCodeLst.AddRange(actionStatus.battleEvenetHandler.事件处理(actionStatus));
            }
            return(ActionCodeLst);
        }
Esempio n. 8
0
        /// <summary>
        /// 使用手牌
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUseHandCard_Click(object sender, EventArgs e)
        {
            CardBasicInfo UseHandCard;

            if ((sender.GetType()) == typeof(Button))
            {
                UseHandCard = (CardBasicInfo)((ctlHandCard)(((Button)sender).Parent)).Tag;
            }
            else
            {
                UseHandCard = (CardBasicInfo)(((ctlHeroAbility)sender).Tag);
            }
            GameManager.MyClientManager.CurrentActiveCard = UseHandCard;
            var msg = CardBasicInfo.CheckCondition(UseHandCard, GameManager.MyClientManager.actionStatus.AllRole.MyPublicInfo);

            if (!string.IsNullOrEmpty(msg))
            {
                MessageBox.Show(msg);
                return;
            }
            var actionlst = RunAction.StartAction(GameManager.MyClientManager.actionStatus, UseHandCard.序列号);

            if (actionlst.Count != 0)
            {
                if ((sender.GetType()) == typeof(Button))
                {
                    actionlst.Insert(0, ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strMe);
                    GameManager.MyClientManager.actionStatus.AllRole.MyPublicInfo.crystal.CurrentRemainPoint -= UseHandCard.使用成本;
                    GameManager.MyClientManager.actionStatus.AllRole.MyPublicInfo.HandCardCount--;
                    GameManager.MyClientManager.actionStatus.AllRole.MyPrivateInfo.RemoveUsedCard(UseHandCard.序列号);
                }
                else
                {
                    GameManager.MyClientManager.actionStatus.AllRole.MyPublicInfo.crystal.CurrentRemainPoint -= UseHandCard.使用成本;
                    GameManager.MyClientManager.actionStatus.AllRole.MyPublicInfo.Hero.IsUsedHeroAbility      = true;
                }
                actionlst.Add(ActionCode.strCrystal + CardUtility.strSplitMark + CardUtility.strMe + CardUtility.strSplitMark +
                              GameManager.MyClientManager.actionStatus.AllRole.MyPublicInfo.crystal.CurrentRemainPoint + CardUtility.strSplitMark + GameManager.MyClientManager.actionStatus.AllRole.MyPublicInfo.crystal.CurrentFullPoint);
                //奥秘计算
                actionlst.AddRange(SecretCard.奥秘计算(actionlst, GameManager.MyClientManager.actionStatus, GameManager.MyClientManager.GameId));
                GameManager.MyClientManager.actionStatus.AllRole.MyPrivateInfo.ResetHandCardCost(GameManager.MyClientManager.actionStatus);
                if (SystemManager.游戏类型 != SystemManager.GameType.单机版)
                {
                    ClientRequest.WriteAction(GameManager.MyClientManager.GameId.ToString(GameServer.GameIdFormat), actionlst);
                }
                DisplayMyInfo();
            }
        }
 /// <summary>
 /// 将UI数据设定到对象上
 /// </summary>
 /// <param name="card"></param>
 public void SetBasicInfo(CardBasicInfo card)
 {
     card.使用成本 = (int)numCost.Value;
     card.称    = txtName.Text;
     card.描述   = txtDescription.Text;
 }
Esempio n. 10
0
        /// <summary>
        /// 卡牌入战场
        /// </summary>
        /// <param name="Position"></param>
        /// <param name="CardSn"></param>
        public void PutToBattle(int Position, string CardSn)
        {
            CardBasicInfo card = CardUtility.GetCardInfoBySN(CardSn);

            PutToBattle(Position, (MinionCard)card);
        }