protected override void OnShowPanel(params object[] allParams) { base.OnShowPanel(allParams); m_params = allParams[0] as SelectRoleParams; if (m_params == null || m_params.roleList.Count <= 0) { Debug.LogError("selectRolePanel params is null"); return; } m_params.SetDefaltRole();//如果没有选择 默认选择一个 TitleText_Text.text = m_params.title; ShowBtns(); RefreshScroll(); }
void OnConfirmClick() { SelectRoleParams param = m_params; if (m_params.callback == null) //说明不需要回调 直接刷新面板 { RefreshScroll(); } else { if (m_params.needCloseAfterClickOK) { Jyx2_UIManager.Instance.HideUI("SelectRolePanel"); } param.callback(param); } }
/// <summary> /// 选择角色 /// </summary> /// <param name="roles"></param> /// <param name="callback">如果放弃,则返回null</param> static public void SelectRole(List <RoleInstance> roles, Action <RoleInstance> callback) { //选择使用物品的人 List <string> selectionContent = new List <string>(); foreach (var role in roles) { selectionContent.Add(role.Name); } selectionContent.Add("取消"); var storyEngine = StoryEngine.Instance; storyEngine.BlockPlayerControl = true; //storyEngine.dialogPanel.ShowSelection("主角", "选择使用的人", selectionContent, delegate (int index) //{ // storyEngine.BlockPlayerControl = false; // if (index < 0 || index >= roles.Count) // { // Debug.Log("选择取消"); // callback(null); // return; // } // var selectRole = roles[index]; // callback(selectRole); //}); SelectRoleParams selectParams = new SelectRoleParams(); selectParams.roleList = roles; selectParams.title = "选择使用的人"; selectParams.callback = (cbParam) => { storyEngine.BlockPlayerControl = false; if (cbParam.selectList.Count <= 0) { callback(null); return; } var selectRole = cbParam.selectList[0];//默认只会选择一个 callback(selectRole); }; Jyx2_UIManager.Instance.ShowUI("SelectRolePanel", selectParams); }
protected override void OnHidePanel() { base.OnHidePanel(); m_params = null; HSUnityTools.DestroyChildren(RoleParent_RectTransform); }
//void OnTest() //{ // m_Roles = new List<BattlePosRole>(); // m_Roles.Add(new BattlePosRole() { pos = "1", team = 0, roleKey = "0" }); // m_Roles.Add(new BattlePosRole() { pos = "2", team = 1, roleKey = "1" }); // m_Roles.Add(new BattlePosRole() { pos = "1", team = 1, roleKey = "3" }); // m_Roles.Add(new BattlePosRole() { pos = "1", team = 1, roleKey = "4" }); // m_Roles.Add(new BattlePosRole() { pos = "2", team = 0, roleKey = "5" }); // m_Roles.Add(new BattlePosRole() { pos = "2", team = 0, roleKey = "51" }); // GameRuntimeData.CreateNew(); //选一个没有用过的id // MapRuntimeData.Instance.Clear(); // //测试等级 // runtime.TeamLevel = 10; // InitBattle(null); //} void LoadJyx2Battle(int id, Action <BattleResult> callback) { Debug.Log("-----------BattleLoader.LoadJyx2Battle"); if (GameRuntimeData.Instance == null) { GameRuntimeData.CreateNew(); } #if JYX2_TEST //临时用于测试 var player = runtime.Team[0]; player.MaxHp = 999; player.MaxMp = 999; player.Zuoyouhubo = 1; player.Qinggong = 100; player.Attack = 50; player.Recover(); runtime.AddItem(3, 100);//小还丹 #endif m_Roles = new List <BattlePosRole>(); Jyx2Battle battle = ConfigTable.Get <Jyx2Battle>(id); if (battle == null) { Debug.LogError("载入了未定义的战斗,id=" + id); return; } AudioManager.PlayMusic(battle.Music); //设置了自动战斗人物 if (battle.HasAutoTeamMates()) { foreach (var v in battle.AutoTeamMates) { var roleId = v.Value; if (roleId == -1) { continue; } AddRole(roleId, 0); //TODO IS AUTO } LoadJyx2BattleStep2(battle, null, callback); } else //否则让玩家选择 { //必选人物 Func <RoleInstance, bool> mustRoleFunc = (r) => { return(battle.TeamMates.Exists(t => t.Value.ToString() == r.Key)); }; //弹出选择人物面板 //Jyx2RoleSelector.Create(runtime.Team, mustRoleFunc, (selectRoles) => { // LoadJyx2BattleStep2(battle, selectRoles, callback); //}); SelectRoleParams selectPram = new SelectRoleParams(); selectPram.roleList = runtime.Team; selectPram.mustSelect = mustRoleFunc; selectPram.title = "选择上场角色"; selectPram.maxCount = 5;//TODO 最大上场人数 selectPram.canCancel = false; selectPram.callback = (cb) => { LoadJyx2BattleStep2(battle, cb.selectList, callback); }; Jyx2_UIManager.Instance.ShowUI("SelectRolePanel", selectPram); } }