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