示例#1
0
 /// <summary>
 /// 定时处理战斗逻辑
 /// </summary>
 public void _solve_battle_logic(List <RoomRole> targetNoCurrentTimeRoomRoles)
 {
     if (!IsMyTime || this.battleTimeType == BattleTimeType.OVER)
     {
         return;
     }
     // 能到我的回合,说明我还没有死!
     //依次执行,回合操作,战斗结束,死亡判断
     if (roleType == RoleType.NPC)
     {
         Console.WriteLine("处理NPC:" + this.id + "角色的战斗逻辑...");
         List <BaseRoleAction> targets = new List <BaseRoleAction>();
         //TODO需要删选,不能aoe呀
         foreach (var item in targetNoCurrentTimeRoomRoles)
         {
             targets.Add(item.role);
         }
         //做一些定时任务,每次执行指令应该需要时间,或者说?立刻返回
         // NPC应该只能调用技能。
         //TODO 判断如果血量超过阶段,触发方法
         Console.WriteLine("" + this.id + "开始随机使用技能。。。");
         //TODO 从技能中随机挑选一个使用以及随机判定卡牌使用不使用
         if (this.cardList != null && this.cardList.Count > 0)
         {
             Random rd        = new Random();
             int    cardIndex = rd.Next() % this.cardList.Count;
             var    args      = new UseCardEventArgs();
             args.targets = targets;//TODO 设置使用对象!
             this.cardList[cardIndex].useCard(this.role, args);
         }
         if (this.skillList != null && this.skillList.Count > 0)
         {
             Random rd         = new Random();
             int    skillIndex = rd.Next() % this.skillList.Count;
             var    args       = new UseSkillEventArgs();
             args.targets = targets;//TODO 设置使用对象!
             this.skillList[skillIndex].useSkill(this.role, args);
         }
         //发送回合结束的信息
         //this.isMyTime = false;
         this.battleTimeType = BattleTimeType.OVER;
         Console.WriteLine("" + this.id + "随机使用技能结束。。。");
         //TODO 发送NPC回合结束的触发
     }
     else if (roleType == RoleType.PLAYER && this.isActive)
     {
         //等待玩家输入指令
         Console.WriteLine("等待" + this.id + "玩家的输入");
         // var str = Console.ReadLine();
         // 说明输入了使用技能或卡牌
         if (_wantToUseCardSkill != null)
         {
             timesNoAction = 0;
             lock (_wantToUseCardSkill)
             {
                 if (_wantToUseCardSkill is UseCardEventArgs)
                 {
                     var      args    = (UseCardEventArgs)_wantToUseCardSkill;
                     BaseCard useCard = null;
                     if (this.cardList != null && this.cardList.Count > 0)
                     {
                         foreach (var item in this.cardList)
                         {
                             if (item.Id == args.UseCardId)
                             {
                                 useCard = item;
                                 break;
                             }
                         }
                         if (useCard != null)
                         {
                             UseCardEventArgs newargs = new UseCardEventArgs();
                             newargs.targets   = args.targets;
                             newargs.UseCardId = args.UseCardId;
                             useCard.useCard(this.role, newargs);
                         }
                     }
                 }
                 else if (_wantToUseCardSkill is UseSkillEventArgs)
                 {
                     var       args      = (UseSkillEventArgs)_wantToUseCardSkill;
                     BaseSkill baseSkill = null;
                     if (this.skillList != null && this.skillList.Count > 0)
                     {
                         foreach (var item in this.skillList)
                         {
                             if (item.Id == args.UseSkillId)
                             {
                                 baseSkill = item;
                                 break;
                             }
                         }
                         if (baseSkill != null)
                         {
                             UseSkillEventArgs newargs = new UseSkillEventArgs();
                             newargs.targets    = args.targets;
                             newargs.UseSkillId = args.UseSkillId;
                             baseSkill.useSkill(this.role, newargs);
                         }
                     }
                 }
                 //找不到的话,丢弃
                 this._wantToUseCardSkill = null;
             }
         }
         else
         {
             if (timesNoAction <= 1000)
             {
                 timesNoAction++;
             }
         }
         if (timesNoAction >= 10)
         {
             this.isActive = false;
         }
         else
         {
             this.isActive = true;
         }
     }
 }