Exemple #1
0
    /// <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);
            }
        }
    }
Exemple #2
0
    /// <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);
            }
        }
    }
Exemple #3
0
    /// <summary>
    /// 开始战斗
    /// </summary>
    /// <param name="msg"></param>
    public void BattleSatrt(MsgPack msg)
    {
        this.groupPack = msg.GroupPack;

        RunByStep();
    }
Exemple #4
0
        /// <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);
        }