Beispiel #1
0
 public string DealMinion(ActionStatus game, MinionCard Minion)
 {
     var Pos = Minion.战场位置;
     if (Pos.本方对方标识)
     {
         if (game.AllRole.MyPrivateInfo.handCards.Count != SystemManager.MaxHandCardCount)
         {
             game.AllRole.MyPrivateInfo.handCards.Add(
                 CardUtility.GetCardInfoBySN(game.AllRole.MyPublicInfo.BattleField.BattleMinions[Pos.位置 - 1].序列号)
             );
         }
         game.AllRole.MyPublicInfo.BattleField.BattleMinions[Pos.位置 - 1] = null;
     }
     else
     {
         if (game.AllRole.YourPrivateInfo.handCards.Count != SystemManager.MaxHandCardCount)
         {
             game.AllRole.YourPrivateInfo.handCards.Add(
                 CardUtility.GetCardInfoBySN(game.AllRole.YourPublicInfo.BattleField.BattleMinions[Pos.位置 - 1].序列号)
             );
         }
         game.AllRole.YourPublicInfo.BattleField.BattleMinions[Pos.位置 - 1] = null;
     }
     return String.Empty;
 }
 /// <summary>
 /// InitByMinion
 /// </summary>
 /// <param name="minion"></param>
 public void Init(MinionCard minion)
 {
     名称 = minion.名称;
     攻击力 = minion.实际攻击值;
     生命值 = minion.生命值;
     使用成本 = minion.使用成本;
     状态列表 = minion.状态;
     能否攻击 = minion.能否攻击;
     描述 = minion.描述;
 }
 public MinionCardEditor(string CardSn)
 {
     InitializeComponent();
     if (string.IsNullOrEmpty(CardSn))
     {
         IsCreateMode = true;
     }
     else
     {
         IsCreateMode = false;
         minion = (MinionCard)Engine.Utility.CardUtility.GetCardInfoBySN(CardSn);
     }
 }
Beispiel #4
0
 /// <summary>
 /// 对随从动作
 /// </summary>
 /// <param name="game"></param>
 /// <param name="Minion"></param>
 /// <returns></returns>
 string IAtomicEffect.DealMinion(ActionStatus game, MinionCard Minion)
 {
     int HealthPoint = ExpressHandler.GetEffectPoint(game, 生命值回复表达式);
     if (Minion.设置被治疗后状态(HealthPoint))
     {
         game.battleEvenetHandler.事件池.Add(new EventCard.全局事件()
         {
             触发事件类型 = EventCard.事件类型枚举.治疗,
             触发位置 = Minion.战场位置
         });
     }
     return Server.ActionCode.strHealth + CardUtility.strSplitMark + Minion.战场位置.ToString() +
                                          CardUtility.strSplitMark + HealthPoint.ToString();
 }
Beispiel #5
0
 /// <summary>
 /// 符合种族条件
 /// </summary>
 /// <param name="minion"></param>
 /// <param name="SelectOpt"></param>
 /// <returns></returns>
 public static bool 符合选择条件(MinionCard minion, string strCondition)
 {
     if (string.IsNullOrEmpty(strCondition) || strCondition == CardUtility.strIgnore) return true;
     foreach (var 种族名称 in Enum.GetNames(typeof(CardUtility.种族枚举)))
     {
         if (种族名称 == strCondition)
         {
             return strCondition == minion.种族.ToString();
         }
         if (("非" + 种族名称) == strCondition)
         {
             return strCondition != minion.种族.ToString();
         }
     }
     switch (strCondition.Substring(1, 1))
     {
         case "+":
             return minion.攻击力 >= int.Parse(strCondition.Substring(0, 1));
         case "-":
             return minion.攻击力 <= int.Parse(strCondition.Substring(0, 1));
     }
     return true;
 }
 /// <summary>
 /// 将对象表示在UI上
 /// </summary>
 /// <param name="card"></param>
 public void GetBasicInfo(MinionCard card)
 {
     numCost.Value = card.使用成本;
     txtName.Text = card.名称;
     txtDescription.Text = card.描述;
 }
Beispiel #7
0
 /// <summary>
 /// 卡牌入战场
 /// </summary>
 /// <param name="CardSn"></param>
 public void AppendToBattle(MinionCard Minion)
 {
     int Position = MinionCount + 1;
     PutToBattle(Position, Minion);
 }
Beispiel #8
0
 /// <summary>
 /// 去除死去随从
 /// </summary>
 /// <param name="evt"></param>
 /// <param name="本方对方标识"></param>
 /// <returns></returns>
 public List<MinionCard> ClearDead(BattleEventHandler evt, bool 本方对方标识)
 {
     //必须是当前的随从,不能使编号
     //如果是沉默状态的随从,无亡语效果!
     List<MinionCard> DeadList = new List<MinionCard>();
     var CloneMinions = new MinionCard[SystemManager.MaxMinionCount];
     int ALive = 0;
     for (int i = 0; i < SystemManager.MaxMinionCount; i++)
     {
         if (BattleMinions[i] != null)
         {
             if (BattleMinions[i].生命值 > 0)
             {
                 CloneMinions[ALive] = BattleMinions[i];
                 ALive++;
             }
             else
             {
                 DeadList.Add(BattleMinions[i]);
                 evt.事件池.Add(new EventCard.全局事件()
                 {
                     触发事件类型 = EventCard.事件类型枚举.死亡,
                     触发位置 = BattleMinions[i].战场位置,
                 });
             }
         }
     }
     BattleMinions = CloneMinions;
     for (int i = 0; i < MinionCount; i++)
     {
         BattleMinions[i].战场位置.位置 = i + 1;
         BattleMinions[i].战场位置.本方对方标识 = 本方对方标识;
     }
     return DeadList;
 }
Beispiel #9
0
 /// <summary>
 /// 卡牌入战场
 /// </summary>
 /// <param name="Position">从1开始的位置</param>
 /// <param name="Minion">随从</param>
 /// <remarks>不涉及到战吼等计算</remarks>
 public void PutToBattle(int Position, MinionCard Minion)
 {
     //战场满了
     if (MinionCount == SystemManager.MaxMinionCount) return;
     //无效的位置
     if ((Position < 1) || (Position > MinionCount + 1) || Position > SystemManager.MaxMinionCount) return;
     //插入操作
     if (BattleMinions[Position - 1] == null)
     {
         //添加到最右边
         BattleMinions[Position - 1] = Minion;
     }
     else
     {
         //Position右边的全体移位,腾出地方
         for (int i = SystemManager.MaxMinionCount - 1; i >= Position; i--)
         {
             BattleMinions[i] = BattleMinions[i - 1];
         }
         BattleMinions[Position - 1] = Minion;
     }
     for (int i = 0; i < MinionCount; i++)
     {
         BattleMinions[i].战场位置.位置 = i + 1;
         BattleMinions[i].战场位置.本方对方标识 = 本方对方标识;
     }
 }
Beispiel #10
0
        /// <summary>
        /// 随从的导入
        /// </summary>
        /// <param name="target"></param>
        /// <param name="workbook"></param>
        private void Minion(dynamic workbook)
        {
            if (Directory.Exists(XmlFolderPicker.SelectedPathOrFileName + "\\Minion\\"))
            {
                Directory.Delete(XmlFolderPicker.SelectedPathOrFileName + "\\Minion\\", true);
            }
            Directory.CreateDirectory(XmlFolderPicker.SelectedPathOrFileName + "\\Minion\\");
            //随从的导入
            dynamic worksheet = workbook.Sheets(1);
            int rowCount = 4;
            while (!String.IsNullOrEmpty(worksheet.Cells(rowCount, 2).Text))
            {
                Engine.Card.MinionCard Minion = new Engine.Card.MinionCard();
                Minion.序列号 = worksheet.Cells(rowCount, 2).Text;
                Minion.名称 = worksheet.Cells(rowCount, 3).Text;
                Minion.描述 = worksheet.Cells(rowCount, 4).Text;
                Minion.职业 = CardUtility.GetEnum<Engine.Utility.CardUtility.ClassEnum>(worksheet.Cells(rowCount, 5).Text, Engine.Utility.CardUtility.ClassEnum.中立);
                Minion.种族 = CardUtility.GetEnum<Engine.Utility.CardUtility.种族Enum>(worksheet.Cells(rowCount, 6).Text, Engine.Utility.CardUtility.种族Enum.无);
                Minion.使用成本 = CardUtility.GetInt(worksheet.Cells(rowCount, 7).Text);

                Minion.攻击力 = CardUtility.GetInt(worksheet.Cells(rowCount, 8).Text);
                Minion.生命值上限 = CardUtility.GetInt(worksheet.Cells(rowCount, 9).Text);
                Minion.Rare = CardUtility.GetEnum<Engine.Card.CardBasicInfo.稀有程度>(worksheet.Cells(rowCount, 12).Text, CardBasicInfo.稀有程度.白色);
                Minion.是否启用 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 13).Text);

                Minion.嘲讽特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 14).Text);
                Minion.冲锋特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 15).Text);
                Minion.无法攻击特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 16).Text);
                Minion.风怒特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 17).Text);
                Minion.潜行特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 18).Text);
                Minion.圣盾特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 19).Text);
                Minion.法术免疫特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 20).Text);
                Minion.英雄技能免疫特性 = !String.IsNullOrEmpty(worksheet.Cells(rowCount, 21).Text);

                Boolean HasBuff = false;
                for (int i = 22; i < 25; i++)
                {
                    if (!String.IsNullOrEmpty(worksheet.Cells(rowCount, i).Text))
                    {
                        HasBuff = true;
                        break;
                    }
                }
                if (HasBuff)
                {
                    Minion.光环效果.Name = Minion.名称;
                    Minion.光环效果.Scope = CardUtility.GetEnum<Engine.Card.MinionCard.光环范围>(worksheet.Cells(rowCount, 22).Text, Engine.Card.MinionCard.光环范围.随从全体);
                    Minion.光环效果.EffectType = CardUtility.GetEnum<Engine.Card.MinionCard.光环类型>(worksheet.Cells(rowCount, 23).Text, Engine.Card.MinionCard.光环类型.增加攻防);
                    Minion.光环效果.BuffInfo = worksheet.Cells(rowCount, 24).Text;
                }
                Minion.战吼效果 = worksheet.Cells(rowCount, 25).Text;
                Minion.战吼类型 = CardUtility.GetEnum<Engine.Card.MinionCard.战吼类型列表>(worksheet.Cells(rowCount, 26).Text, Engine.Card.MinionCard.战吼类型列表.默认);

                Minion.亡语效果 = worksheet.Cells(rowCount, 27).Text;
                Minion.激怒效果 = worksheet.Cells(rowCount, 28).Text;
                Minion.连击效果 = worksheet.Cells(rowCount, 29).Text;
                Minion.回合开始效果 = worksheet.Cells(rowCount, 30).Text;
                Minion.回合结束效果 = worksheet.Cells(rowCount, 31).Text;
                Minion.过载 = CardUtility.GetInt(worksheet.Cells(rowCount, 32).Text);
                Minion.自身事件效果.触发效果事件类型 = CardUtility.GetEnum<Engine.Utility.CardUtility.事件类型列表>(worksheet.Cells(rowCount, 33).Text, Engine.Utility.CardUtility.事件类型列表.无);
                Minion.自身事件效果.效果编号 = worksheet.Cells(rowCount, 34).Text;
                Minion.自身事件效果.触发效果事件方向 = CardUtility.GetEnum<Engine.Utility.CardUtility.TargetSelectDirectEnum>(worksheet.Cells(rowCount, 35).Text, Engine.Utility.CardUtility.TargetSelectDirectEnum.本方);
                Minion.自身事件效果.限制信息 = worksheet.Cells(rowCount, 36).Text;
                Minion.特殊效果 = CardUtility.GetEnum<Engine.Card.MinionCard.特殊效果列表>(worksheet.Cells(rowCount, 37).Text, Engine.Card.MinionCard.特殊效果列表.无效果);

                XmlSerializer xml = new XmlSerializer(typeof(Engine.Card.MinionCard));
                String XmlFilename = XmlFolderPicker.SelectedPathOrFileName + "\\Minion\\" + Minion.序列号 + ".xml";
                xml.Serialize(new StreamWriter(XmlFilename), Minion);
                rowCount++;
            }
        }
Beispiel #11
0
 /// <summary>
 /// 去除死去随从
 /// </summary>
 /// <param name="game"></param>
 /// <param name="本方对方标识"></param>
 /// <returns></returns>
 public List<MinionCard> ClearDead(GameManager game, Boolean 本方对方标识)
 {
     //必须是当前的随从,不能使编号
     //如果是沉默状态的随从,无亡语效果!
     List<MinionCard> DeadList = new List<MinionCard>();
     var CloneMinions = new MinionCard[BattleFieldInfo.MaxMinionCount];
     int ALive = 0;
     for (int i = 0; i < BattleFieldInfo.MaxMinionCount; i++)
     {
         if (BattleMinions[i] != null)
         {
             if (BattleMinions[i].生命值 > 0)
             {
                 CloneMinions[ALive] = BattleMinions[i];
                 ALive++;
             }
             else
             {
                 DeadList.Add(BattleMinions[i]);
                 game.事件处理组件.事件池.Add(new Engine.Utility.CardUtility.全局事件()
                 {
                     触发事件类型 = CardUtility.事件类型列表.死亡,
                     触发位置 = BattleMinions[i].战场位置,
                 });
             }
         }
     }
     BattleMinions = CloneMinions;
     for (int i = 0; i < MinionCount; i++)
     {
         BattleMinions[i].战场位置.Postion = i + 1;
         BattleMinions[i].战场位置.本方对方标识 = 本方对方标识;
     }
     return DeadList;
 }
Beispiel #12
0
        /// <summary>
        /// 随从的导入
        /// </summary>
        /// <param name="target"></param>
        /// <param name="workbook"></param>
        private void Minion(dynamic workbook)
        {
            if (Directory.Exists(ExportFolderPicker.SelectedPathOrFileName + "\\Minion\\"))
            {
                Directory.Delete(ExportFolderPicker.SelectedPathOrFileName + "\\Minion\\", true);
            }
            Directory.CreateDirectory(ExportFolderPicker.SelectedPathOrFileName + "\\Minion\\");
            //随从的导入
            dynamic worksheet = workbook.Sheets(1);
            int rowCount = 4;
            while (!string.IsNullOrEmpty(worksheet.Cells(rowCount, 2).Text))
            {
                MinionCard Minion = new MinionCard();
                Minion.序列号 = worksheet.Cells(rowCount, 2).Text;
                Minion.名称 = worksheet.Cells(rowCount, 3).Text;
                Minion.描述 = worksheet.Cells(rowCount, 4).Text;
                Minion.职业 = CSharpUtility.GetEnum<CardUtility.职业枚举>(worksheet.Cells(rowCount, 5).Text, CardUtility.职业枚举.中立);
                Minion.种族 = CSharpUtility.GetEnum<CardUtility.种族枚举>(worksheet.Cells(rowCount, 6).Text, CardUtility.种族枚举.无);
                Minion.使用成本 = CSharpUtility.GetInt(worksheet.Cells(rowCount, 7).Text);

                Minion.攻击力 = CSharpUtility.GetInt(worksheet.Cells(rowCount, 8).Text);
                Minion.生命值上限 = CSharpUtility.GetInt(worksheet.Cells(rowCount, 9).Text);
                Minion.稀有程度 = CSharpUtility.GetEnum<CardBasicInfo.稀有程度枚举>(worksheet.Cells(rowCount, 12).Text, CardBasicInfo.稀有程度枚举.白色);
                Minion.是否启用 = !string.IsNullOrEmpty(worksheet.Cells(rowCount, 13).Text);

                Minion.嘲讽特性 = !string.IsNullOrEmpty(worksheet.Cells(rowCount, 14).Text);
                Minion.冲锋特性 = !string.IsNullOrEmpty(worksheet.Cells(rowCount, 15).Text);
                Minion.风怒特性 = !string.IsNullOrEmpty(worksheet.Cells(rowCount, 17).Text);
                Minion.潜行特性 = !string.IsNullOrEmpty(worksheet.Cells(rowCount, 18).Text);
                Minion.圣盾特性 = !string.IsNullOrEmpty(worksheet.Cells(rowCount, 19).Text);

                bool HasBuff = false;
                for (int i = 22; i < 25; i++)
                {
                    if (!string.IsNullOrEmpty(worksheet.Cells(rowCount, i).Text))
                    {
                        HasBuff = true;
                        break;
                    }
                }
                if (HasBuff)
                {
                    Minion.光环效果.来源 = Minion.名称;
                    //Minion.光环效果.范围 = CSharpUtility.GetEnum<Buff.光环范围枚举>(worksheet.Cells(rowCount, 22).Text, Buff.光环范围枚举.随从全体);
                    Minion.光环效果.类型 = CSharpUtility.GetEnum<Buff.光环类型枚举>(worksheet.Cells(rowCount, 23).Text, Buff.光环类型枚举.增加攻防);
                    Minion.光环效果.信息 = worksheet.Cells(rowCount, 24).Text;
                }
                Minion.战吼效果 = worksheet.Cells(rowCount, 25).Text;
                Minion.亡语效果 = worksheet.Cells(rowCount, 27).Text;
                Minion.激怒效果 = worksheet.Cells(rowCount, 28).Text;
                Minion.连击效果 = worksheet.Cells(rowCount, 29).Text;
                Minion.回合开始效果 = worksheet.Cells(rowCount, 30).Text;
                Minion.回合结束效果 = worksheet.Cells(rowCount, 31).Text;
                Minion.过载 = CSharpUtility.GetInt(worksheet.Cells(rowCount, 32).Text);
                //Minion.自身事件效果.触发效果事件类型 = CSharpUtility.GetEnum<CardUtility.事件类型枚举>(worksheet.Cells(rowCount, 33).Text, CardUtility.事件类型枚举.无);
                Minion.自身事件效果.效果编号 = worksheet.Cells(rowCount, 34).Text;
                Minion.自身事件效果.触发效果事件方向 = CSharpUtility.GetEnum<CardUtility.目标选择方向枚举>(worksheet.Cells(rowCount, 35).Text, CardUtility.目标选择方向枚举.本方);
                Minion.自身事件效果.限制信息 = worksheet.Cells(rowCount, 36).Text;
                Minion.特殊效果 = CSharpUtility.GetEnum<MinionCard.特殊效果枚举>(worksheet.Cells(rowCount, 37).Text, MinionCard.特殊效果枚举.无效果);
                switch (exportType)
                {
                    case SystemManager.ExportType.XML:
                        XmlSerializer xml = new XmlSerializer(typeof(MinionCard));
                        string XmlFilename = ExportFolderPicker.SelectedPathOrFileName + "\\Minion\\" + Minion.序列号 + ".xml";
                        xml.Serialize(new StreamWriter(XmlFilename), Minion);
                        break;
                    case SystemManager.ExportType.JSON:
                        string JSonFilename = ExportFolderPicker.SelectedPathOrFileName + "\\Minion\\" + Minion.序列号 + ".json";
                        StreamWriter json = new StreamWriter(JSonFilename);
                        json.Write(Minion.ToJson());
                        json.Close();
                        break;
                    default:
                        break;
                }
                rowCount++;
            }
        }