/// <summary>
        /// 初始化战斗信息
        /// </summary>
        /// <param name="viewModel"></param>
        private void InitBattleInfo(object viewModel)
        {
            if (viewModel == null)
            {
                return;
            }
            BattleRoomModel BattleModel = (BattleRoomModel)viewModel;

            BattleRoomModel.BattleReportModel CurrentBattleReport;

            if (IsInit)
            {
                Debug.Log("已经初始化");
                if (BattleModel.ReportQueue != null && BattleModel.ReportQueue.Count > 0)
                {
                    Debug.Log("战报不等于空");
                    CurrentBattleReport = BattleModel.ReportQueue.Dequeue();
                    InitReportInfo(BattleModel, CurrentBattleReport);
                }
                else
                {
                    return;
                }
            }
            else
            {
                Debug.Log("第一次初始化");
                MapName_Txt.text  = BattleModel.MapName;
                RoomName_Txt.text = BattleModel.RoomName;

                InitCharcterInfo(BattleModel);
                InitEnemyInfo(BattleModel);
            }
        }
 /// <summary>
 /// 敌人初始化
 /// </summary>
 /// <param name="model"></param>
 private void InitEnemyInfo(BattleRoomModel model)
 {
     if (model == null || model.enemyList.Count <= 0)
     {
         return;
     }
     for (int i = 0; i < model.enemyList.Count; i++)
     {
         EnemyUIInfoList[i].Name_Txt.text      = model.enemyList[i].Name;
         EnemyUIInfoList[i].Level_Txt.text     = model.enemyList[i].Level.ToString();
         EnemyUIInfoList[i].HP_Sli.value       = Mathf.Clamp(model.enemyList[i].CurrentHP, 0, model.enemyList[i].MaxHP) / (float)model.enemyList[i].MaxHP;;
         EnemyUIInfoList[i].CurrentHP_Txt.text = model.enemyList[i].CurrentHP.ToString();
         EnemyUIInfoList[i].MaxHP_Txt.text     = model.enemyList[i].MaxHP.ToString();
         EnemyUIInfoList[i].Ability_Img.sprite = model.enemyList[i].Ability_sprite;
     }
     IsInit = true;
 }
 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);
 }
        /// <summary>
        /// 角色初始化
        /// </summary>
        /// <param name="model"></param>
        private void InitCharcterInfo(BattleRoomModel model)
        {
            #region
            //CharacterOneName_Txt.text = model.characterList[0].Name;
            //CharacterOneRocaName_Txt.text = model.characterList[0].RocaName;
            //CharacterOneCareer_Txt.text = model.characterList[0].Career;
            //CharacterOneLevel_Txt.text = model.characterList[0].Level.ToString();
            //CharacterOneHP_Txt.text = model.characterList[0].HP.ToString();
            //CharacterOneHP_Sli.value = 1;
            //CharacterOneMP_Sli.value = 1;

            //CharacterTwoName_Txt.text = model.characterList[1].Name;
            //CharacterTwoRocaName_Txt.text = model.characterList[1].RocaName;
            //CharacterTwoCareer_Txt.text = model.characterList[1].Career;
            //CharacterTwoLevel_Txt.text = model.characterList[1].Level.ToString();
            //CharacterTwoHP_Txt.text = model.characterList[1].HP.ToString();
            //CharacterTwoHP_Sli.value = 1;
            //CharacterTwoMP_Sli.value = 1;

            //CharacterThreeName_Txt.text = model.characterList[2].Name;
            //CharacterThreeRocaName_Txt.text = model.characterList[2].RocaName;
            //CharacterThreeCareer_Txt.text = model.characterList[2].Career;
            //CharacterThreeLevel_Txt.text = model.characterList[2].Level.ToString();
            //CharacterThreeHP_Txt.text = model.characterList[2].HP.ToString();
            //CharacterThreeHP_Sli.value = 1;
            //CharacterThreeMP_Sli.value = 1;
            #endregion
            if (model == null || model.characterList.Count <= 0)
            {
                return;
            }
            for (int i = 0; i < model.characterList.Count; i++)
            {
                CharacterUIInfoList[i].Name_Txt.text      = model.characterList[i].Name;
                CharacterUIInfoList[i].RocaName_Txt.text  = model.characterList[i].RocaName;
                CharacterUIInfoList[i].Career_Txt.text    = model.characterList[i].Career;
                CharacterUIInfoList[i].Level_Txt.text     = model.characterList[i].Level.ToString();
                CharacterUIInfoList[i].HP_Sli.value       = Mathf.Clamp(model.characterList[i].CurrentHP, 0, model.characterList[i].MaxHP) / (float)model.characterList[i].MaxHP;
                CharacterUIInfoList[i].MP_Sli.value       = Mathf.Clamp(model.characterList[i].CurrentMP_Txt, 0, model.characterList[i].MaxMP_Txt) / (float)model.characterList[i].MaxMP_Txt;
                CharacterUIInfoList[i].CurrentHP_Txt.text = model.characterList[i].CurrentHP.ToString();
                CharacterUIInfoList[i].MaxHP_Txt.text     = model.characterList[i].MaxHP.ToString();
            }
            IsInit = true;
        }
        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);
        }
 public override void UpdatePanel(object viewModel)
 {
     battleRoomModel = (BattleRoomModel)viewModel;
     InitBattleInfo(viewModel);
 }
        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;
            }
        }