/// <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; } } }