Esempio n. 1
0
    public void StartBattle(BattleStartParams customParams)
    {
        Debug.Log("StartBattle called");
        if (IsInBattle)
        {
            return;
        }
        if (!BattleboxHelper.Instance.CanEnterBattle(_player.View.transform.position))
        {
            return;
        }

        IsInBattle     = true;
        m_battleParams = customParams;
        //初始化战斗model
        BattleModel = new BattleFieldModel();
        //初始化范围逻辑
        rangeLogic = new RangeLogic(BattleboxHelper.Instance.IsBlockExists, BattleModel.BlockHasRole);

        //状态初始化
        HSUtilsEx.CallWithDelay(this, () =>
        {
            Debug.Log("-----------HSUtilsEx.CallWithDelay");
            BattleboxHelper.Instance.EnterBattle(_player.View.transform.position);

            //地图上所有单位进入战斗
            foreach (var item in m_battleParams.roles)
            {
                if (item.View.m_Behavior == MapRoleBehavior.Enemy)
                {
                    item.EnterBattle(1);
                }
                else
                {
                    item.EnterBattle(0);
                }
            }
            BattleModel.InitBattleModel();                              //战场初始化 行动顺序排序这些
            BattleStateMechine.Instance.StartStateMechine(OnBattleEnd); //交给战场状态机接管 状态机完成会回调回来
            //提示UI
            Jyx2_UIManager.Instance.ShowUI("CommonTipsUIPanel", TipsType.MiddleTop, "战斗开始");
            Jyx2_UIManager.Instance.ShowUI("BattleMainUIPanel", BattleMainUIState.ShowHUD);//展示角色血条
        }, 0.5f);

        var brain = Camera.main.GetComponent <CinemachineBrain>();

        if (brain != null)
        {
            brain.m_DefaultBlend = new CinemachineBlendDefinition(CinemachineBlendDefinition.Style.Cut, 0);
        }
    }
Esempio n. 2
0
    //清扫战场
    public void EndBattle()
    {
        IsInBattle = false;
        Jyx2_UIManager.Instance.HideUI("BattleMainUIPanel");

        //临时,需要调整
        foreach (var role in BattleModel.Roles)
        {
            //role.LeaveBattle();
            //非KeyRole死亡2秒后尸体消失
            if (role.IsDead() && role.View != null && role.View.gameObject != null && !role.View.m_IsKeyRole)
            {
                role.View.gameObject.SetActive(false);
            }
        }
        rangeLogic = null;
        BattleModel.Roles.Clear();
    }