/// <summary> /// 打印消息内容,待删 /// </summary> /// <param name="msg"></param> public static void showMsg(MsgPack msg) { BattleGroupPack battleGroupPack = msg.GroupPack; foreach (Round r in battleGroupPack.Rounds) { foreach (Step st in r.Steps) { Debug.Log(" " + st.AtkItem.Camp + " VS " + st.DefItem.Camp + ": " + st.StepResList[0].AttrResList[0].ResAttr + " " + st.StepResList[0].AttrResList[0].Value); } } }
/// <summary> /// 打印消息内容,待删 /// </summary> /// <param name="msg"></param> public static void showMsg(BattleGroupPack battleGroupPack) { //BattleGroupPack battleGroupPack = msg.GroupPack; for (int i = 0; i < battleGroupPack.Rounds.Count; i++) { for (int j = 0; j < battleGroupPack.Rounds[i].Steps.Count; j++) { Step st = battleGroupPack.Rounds[i].Steps[j]; Debug.Log(" " + st.AtkItem.Camp + " VS " + st.DefItem.Camp + ": " + st.StepResList[0].AttrResList[0].ResAttr + " " + st.StepResList[0].AttrResList[0].Value); } } }
/// <summary> /// 开始战斗 /// </summary> /// <param name="msg"></param> public void BattleSatrt(MsgPack msg) { this.groupPack = msg.GroupPack; RunByStep(); }
/// <summary> /// 初始化单组对战 /// </summary> /// <param name="playerID"></param> public static MsgPack InitBattlePack(PlayerID playerID) { MsgPack battleMsg = new MsgPack(); if (battleGroupDict.ContainsKey(playerID)) { BattleGroup curBattleGroup = battleGroupDict[playerID]; //创建SpeedItemList,添加在场所有单位 List <SpeedItem> speedItemLists = new List <SpeedItem>(); foreach (CampInfo c in curBattleGroup.campInfo) { foreach (CardMsg card in c.CardItems) { SpeedItem item = new SpeedItem(); item.camp = c.Camp; item.card = card; speedItemLists.Add(item); } } //SpeedItemList中元素依速度降序排序 speedItemLists.Sort((x, y) => { return(y.card.Speed.CompareTo(x.card.Speed)); }); foreach (SpeedItem s in speedItemLists) { Console.WriteLine("camp: " + s.camp + " pos: " + s.card.BornPos + " speed: " + s.card.Speed + " maxHp: " + s.card.MaxHp); } //创建消息包 bool isBattleEnd = false; BattleGroupPack battleGroupPack = new BattleGroupPack(); while (!isBattleEnd) { Round round = new Round(); for (int j = 0; j < speedItemLists.Count; j++) { Console.WriteLine("============================Step start=================== "); Console.WriteLine("camp: " + speedItemLists[j].camp + " selfPos: " + speedItemLists[j].card.BornPos); int targetIndex = Radar.GetTargetIndex(speedItemLists, Radar.RadarType.front_first, speedItemLists[j].camp, speedItemLists[j].card.BornPos); float atk = speedItemLists[j].card.Atk; float def = speedItemLists[targetIndex].card.Def; float damage = Math.Max(10, atk - def); speedItemLists[targetIndex].card.MaxHp = Math.Max(0, speedItemLists[targetIndex].card.MaxHp - damage); //speedItemLists[targetIndex].card.MaxHp = Math.Max(0, speedItemLists[targetIndex].card.MaxHp - 5); #region == Pack Round Msg == AttributeResult attributeRes = new AttributeResult(); attributeRes.Camp = speedItemLists[targetIndex].camp; attributeRes.ResAttr = CardAttribute.CsCardMaxhp; attributeRes.Value = damage; Console.WriteLine("Damage is: " + damage); StepResult stepRes = new StepResult(); stepRes.AttrResList.Add(attributeRes); stepRes.AtkType = AtkType.CsAtktypeAtk; Step step = new Step(); step.AtkItem = new ActiveItem(); step.DefItem = new ActiveItem(); step.AtkItem.Camp = speedItemLists[j].camp; step.AtkItem.Card = speedItemLists[j].card; step.DefItem.Camp = speedItemLists[targetIndex].camp; step.DefItem.Card = speedItemLists[targetIndex].card; step.StepResList.Add(stepRes); round.Steps.Add(step); Console.WriteLine("Camp: " + speedItemLists[targetIndex].camp + " maxHp is: " + speedItemLists[targetIndex].card.MaxHp); #endregion if (speedItemLists[targetIndex].card.MaxHp == 0) { Console.WriteLine("Remove: " + speedItemLists[targetIndex].camp + " " + speedItemLists[targetIndex].card.BornPos); speedItemLists.RemoveAt(targetIndex); } int playerCount = 0; int enemyCount = 0; foreach (var it in speedItemLists) { if (it.camp == Camps.CsCampPlayer) { playerCount++; } if (it.camp == Camps.CsCampEnemy) { enemyCount++; } } Console.WriteLine("playerCount: " + playerCount + " enemyCount: " + enemyCount); if ((playerCount == 0) || (enemyCount == 0)) { isBattleEnd = true; break; } Console.WriteLine("===========Step end========== "); Console.WriteLine(); } battleGroupPack.Rounds.Add(round); } battleMsg.MsgType = MsgType.CsBattlestartRes; battleMsg.MsgFrom = PlayerID.CsServe; battleMsg.MsgTo = playerID; battleMsg.GroupPack = battleGroupPack; } return(battleMsg); }