Пример #1
0
    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();
    }
Пример #2
0
    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);
        }
    }
Пример #3
0
    /// <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);
    }
Пример #4
0
 protected override void OnHidePanel()
 {
     base.OnHidePanel();
     m_params = null;
     HSUnityTools.DestroyChildren(RoleParent_RectTransform);
 }
Пример #5
0
    //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);
        }
    }