private string GetAttacker(BattleRoomModel battleModel, BattleRoomModel.BattleReportModel CurrentBattleReport)
 {
     foreach (var item in battleModel.characterList)
     {
         if (item.ID == CurrentBattleReport.Attacker)
         {
             return(item.Name);
         }
     }
     foreach (var item in battleModel.enemyList)
     {
         if (item.ID == CurrentBattleReport.Attacker)
         {
             return(item.Name);
         }
     }
     return(String.Empty);
 }
        private List <BattleRoomModel.BattleEnemyModel> GetTeam(BattleRoomModel battleModle, List <BattleRoomModel.BattleEnemyModel> list, BattleRoomModel.BattleReportModel CurrentBattleReport)
        {
            List <BattleRoomModel.BattleEnemyModel> m_EnemyModelList = list.FindAll(p => p.ID == CurrentBattleReport.AnAttacker);

            if (m_EnemyModelList != null && m_EnemyModelList.Count > 0)
            {
                List <BattleRoomModel.BattleEnemyModel> modle = battleModle.enemyList;
                for (int i = 0; i < m_EnemyModelList.Count; i++)
                {
                    modle.Remove(m_EnemyModelList[i]);
                }

                Debug.Log(modle.Count);
                foreach (var item in modle)
                {
                    Debug.Log(item.Name);
                }
                return(modle);
            }
            return(null);
        }
        private void InitReportInfo(BattleRoomModel battleModel, BattleRoomModel.BattleReportModel CurrentBattleReport)
        {
            switch (CurrentBattleReport.ReportType)
            {
            case BattleRoomModel.ReportType.Attack:
                Debug.Log("攻击战报");
                if (Content_Tra != null)
                {
                    GameObject m_ReportGoParent = ResourcesMgr.GetInstance().LoadResource <GameObject>("Prefab/UI/Battle/AttackReport", false);

                    GameObject m_ReportParent = Instantiate(m_ReportGoParent);
                    Text       m_Report       = UnityHelper.GetTheChildNodeComponetScripts <Text>(m_ReportParent, "AttackReport_Txt");
                    string     m_Info;
                    if (!CurrentBattleReport.IsAOE)
                    {
                        switch (CurrentBattleReport.AttackHandleType)
                        {
                        case BattleRoomModel.AttackHandleType.Dodge:
                            m_Report.text = string.Format(m_NormalAttackInfoTemplete,
                                                          CurrentBattleReport.ReportNum,
                                                          GetAttacker(battleModel, CurrentBattleReport),
                                                          GetAnAttacker(battleModel, CurrentBattleReport)) +
                                            string.Format(m_DodgeInfoTemplete, GetAnAttacker(battleModel, CurrentBattleReport));
                            break;

                        case BattleRoomModel.AttackHandleType.Deathblow:
                            m_Info = string.Format(m_NormalAttackInfoTemplete,
                                                   CurrentBattleReport.ReportNum,
                                                   GetAttacker(battleModel, CurrentBattleReport),
                                                   GetAnAttacker(battleModel, CurrentBattleReport)) +
                                     string.Format(m_DeathblowInfoTemplete) +
                                     string.Format(m_DamageInfoTemplete,
                                                   CurrentBattleReport.Damage);
                            m_Report.text = m_Info;
                            if (CurrentBattleReport.IsDerateDamage)
                            {
                                m_Report.text = m_Info + string.Format(m_DerateDamageInfoTemplete, CurrentBattleReport.DerateDamage);
                            }
                            break;

                        case BattleRoomModel.AttackHandleType.Attack:
                            m_Info = string.Format(m_NormalAttackInfoTemplete,
                                                   CurrentBattleReport.ReportNum,
                                                   GetAttacker(battleModel, CurrentBattleReport),
                                                   GetAnAttacker(battleModel, CurrentBattleReport)) +
                                     string.Format(m_DamageInfoTemplete,
                                                   CurrentBattleReport.Damage);
                            m_Report.text = m_Info;
                            if (CurrentBattleReport.IsDerateDamage)
                            {
                                m_Report.text = m_Info + string.Format(m_DerateDamageInfoTemplete, CurrentBattleReport.DerateDamage);
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
                        switch (CurrentBattleReport.AttackHandleType)
                        {
                        case BattleRoomModel.AttackHandleType.Dodge:
                            m_Report.text = string.Format(m_SkillInfoTemplete,
                                                          CurrentBattleReport.ReportNum,
                                                          GetAttacker(battleModel, CurrentBattleReport),
                                                          CurrentBattleReport.AbilityName,
                                                          GetAnAttacker(battleModel, CurrentBattleReport)) +
                                            string.Format(m_DodgeInfoTemplete, GetAnAttacker(battleModel, CurrentBattleReport));
                            break;

                        case BattleRoomModel.AttackHandleType.Deathblow:

                            sb.Append(string.Format(m_SkillInfoTemplete,
                                                    CurrentBattleReport.ReportNum,
                                                    GetAttacker(battleModel, CurrentBattleReport),
                                                    CurrentBattleReport.AbilityName,
                                                    GetAnAttacker(battleModel, CurrentBattleReport)) +
                                      string.Format(m_DeathblowInfoTemplete) +
                                      string.Format(m_DamageInfoTemplete,
                                                    CurrentBattleReport.Damage));
                            m_Report.text = sb.ToString();
                            if (CurrentBattleReport.IsDerateDamage)
                            {
                                m_Report.text = sb.Append(string.Format(m_DerateDamageInfoTemplete, CurrentBattleReport.DerateDamage)).ToString();
                            }
                            if (CurrentBattleReport.IsGroupAttack)
                            {
                                List <BattleRoomModel.BattleCharacterModel> CharacterModelList = GetTeam(battleModel, battleModel.characterList, CurrentBattleReport);
                                List <BattleRoomModel.BattleEnemyModel>     EnemyModelList     = GetTeam(battleModel, battleModel.enemyList, CurrentBattleReport);
                                if (CharacterModelList.Count > 0 && CharacterModelList != null)
                                {
                                    for (int i = 0; i < CharacterModelList.Count; i++)
                                    {
                                        Debug.Log(CharacterModelList[i].Name);
                                        m_Report.text = sb.Append(
                                            string.Format(m_AOEInfoTemplete, CharacterModelList[i].Name, CurrentBattleReport.Damage)).ToString();
                                    }
                                }
                                else if (EnemyModelList.Count > 0 && EnemyModelList != null)
                                {
                                    for (int i = 0; i < EnemyModelList.Count; i++)
                                    {
                                        m_Report.text = sb.Append(
                                            string.Format(m_AOEInfoTemplete, EnemyModelList[i].Name, CurrentBattleReport.Damage)).ToString();
                                    }
                                }
                            }

                            break;

                        case BattleRoomModel.AttackHandleType.Attack:

                            switch (CurrentBattleReport.AOEType)
                            {
                            case BattleRoomModel.AOEType.Attack:
                                sb.Append(string.Format(m_SkillInfoTemplete,
                                                        CurrentBattleReport.ReportNum,
                                                        GetAttacker(battleModel, CurrentBattleReport),
                                                        CurrentBattleReport.AbilityName,
                                                        GetAnAttacker(battleModel, CurrentBattleReport)) +
                                          string.Format(m_DamageInfoTemplete,
                                                        CurrentBattleReport.Damage));
                                m_Report.text = sb.ToString();
                                if (CurrentBattleReport.IsDerateDamage)
                                {
                                    m_Report.text = sb.Append(string.Format(m_DerateDamageInfoTemplete, CurrentBattleReport.DerateDamage)).ToString();;
                                }
                                if (CurrentBattleReport.IsGroupAttack)
                                {
                                    List <BattleRoomModel.BattleCharacterModel> CharacterModelList = GetTeam(battleModel, battleModel.characterList, CurrentBattleReport);
                                    List <BattleRoomModel.BattleEnemyModel>     EnemyModelList     = GetTeam(battleModel, battleModel.enemyList, CurrentBattleReport);
                                    if (CharacterModelList.Count > 0 && CharacterModelList != null)
                                    {
                                        for (int i = 0; i < CharacterModelList.Count; i++)
                                        {
                                            Debug.Log(CharacterModelList[i].Name);
                                            m_Report.text = sb.Append(
                                                string.Format(m_AOEInfoTemplete, CharacterModelList[i].Name, CurrentBattleReport.Damage)).ToString();
                                        }
                                    }
                                    else if (EnemyModelList.Count > 0 && EnemyModelList != null)
                                    {
                                        for (int i = 0; i < EnemyModelList.Count; i++)
                                        {
                                            m_Report.text = sb.Append(
                                                string.Format(m_AOEInfoTemplete, EnemyModelList[i].Name, CurrentBattleReport.Damage)).ToString();
                                        }
                                    }
                                }
                                break;

                            case BattleRoomModel.AOEType.Recovery:
                                m_Report.text = string.Format(m_RecoveryInfoTemplete,
                                                              CurrentBattleReport.ReportNum,
                                                              GetAttacker(battleModel, CurrentBattleReport),
                                                              CurrentBattleReport.AbilityName,
                                                              CurrentBattleReport.Recovery,
                                                              GetAnAttacker(battleModel, CurrentBattleReport));
                                break;

                            default:
                                break;
                            }

                            break;

                        default:
                            break;
                        }
                    }
                    Text Data = UnityHelper.GetTheChildNodeComponetScripts <Text>(m_ReportParent, "Data_Txt");
                    Data.text = DateTime.Now.ToString();
                    //扣血
                    m_ReportParent.GetComponent <RectTransform>().sizeDelta = new Vector2(m_Report.rectTransform.rect.width, m_Report.preferredHeight + Data.preferredHeight);
                    m_ReportParent.transform.parent = Content_Tra.transform;

                    m_ReportParent.transform.localScale = Content_Tra.transform.localScale;
                    m_ReportParent.transform.SetAsFirstSibling();
                }
                break;

            case BattleRoomModel.ReportType.Result:
                Debug.Log("结束战报");
                if (Content_Tra != null)
                {
                    GameObject m_ReportGoParent = ResourcesMgr.GetInstance().LoadResource <GameObject>("Prefab/UI/Battle/ResultReport", false);
                    GameObject m_ReportParent   = Instantiate(m_ReportGoParent);
                    Text       m_Report         = UnityHelper.GetTheChildNodeComponetScripts <Text>(m_ReportParent, "ResultReport_Txt");
                    if (CurrentBattleReport.IsSussces)
                    {
                        //扣血
                        StringBuilder sb = new StringBuilder();

                        if (CurrentBattleReport.EquipmentList.Count > 0)
                        {
                            for (int i = 0; i < CurrentBattleReport.EquipmentList.Count; i++)
                            {
                                sb.Append(string.Format(m_GetEquipmentInfoTemplete, CurrentBattleReport.EquipmentList[i].name));
                            }
                        }
                        if (CurrentBattleReport.Gold > 0)
                        {
                            sb.Append(string.Format(m_GetGoldInfoTemplete, CurrentBattleReport.Gold));
                        }
                        if (battleModel.characterList != null)
                        {
                            for (int i = 0; i < battleModel.characterList.Count; i++)
                            {
                                sb.Append(string.Format(m_GetEXPInfoTemplete, battleModel.characterList[i].Name, CurrentBattleReport.EXP));
                            }
                        }
                        sb.Append(m_SuccessResultInfoTemplete);
                        m_Report.text = sb.ToString();
                    }
                    else
                    {
                        m_Report.text = string.Format(m_FailureResultInfoTemplete, CurrentBattleReport.TeamName);
                    }
                    Debug.Log("m_Report.rectTransform.rect.height = " + m_Report.preferredHeight);
                    Debug.Log("m_ReportParent.GetComponent<RectTransform>().rect.height) = " + m_ReportParent.GetComponent <RectTransform>().rect.height);

                    m_ReportParent.transform.parent     = Content_Tra.transform;
                    m_ReportParent.transform.localScale = m_ReportParent.transform.parent.transform.localScale;
                    m_ReportParent.GetComponent <RectTransform>().sizeDelta = new Vector2(m_Report.rectTransform.rect.width, m_Report.preferredHeight);
                    m_ReportParent.transform.SetAsFirstSibling();
                    Debug.Log("m_Report.rectTransform.rect.height = " + m_Report.rectTransform.rect.height + m_Report.name);
                    Debug.Log("m_ReportParent.GetComponent<RectTransform>().rect.height) = " + m_ReportParent.GetComponent <RectTransform>().rect.height + m_ReportParent.name);
                }
                break;

            case BattleRoomModel.ReportType.Rest:
                Debug.Log("休息战报");
                if (Content_Tra != null)
                {
                    GameObject m_ReportGoParent = ResourcesMgr.GetInstance().LoadResource <GameObject>("Prefab/UI/Battle/RestReport", false);
                    GameObject m_ReportParent   = Instantiate(m_ReportGoParent);
                    Text       m_Report         = UnityHelper.GetTheChildNodeComponetScripts <Text>(m_ReportParent, "RestReport_Txt");

                    m_Report.text = string.Format(m_RestInfoTemplete, CurrentBattleReport.RestCountdown);

                    //扣血
                    m_ReportParent.GetComponent <RectTransform>().sizeDelta = new Vector2(m_Report.rectTransform.rect.width, m_Report.rectTransform.rect.height);
                    m_ReportParent.transform.parent     = Content_Tra.transform;
                    m_ReportParent.transform.localScale = m_ReportParent.transform.parent.transform.localScale;
                    m_ReportParent.transform.SetAsFirstSibling();
                }
                break;

            default:
                Debug.LogError("战报类型错误:" + CurrentBattleReport.ReportType);
                break;
            }
        }