예제 #1
0
        ///// <summary>
        ///// 상태에 UI오픈을 전달.
        ///// </summary>
        //public void OnOpenUI()
        //{
        //    StateMap[Current_State].OnOpenUI();
        //}

        ///// <summary>
        ///// 상태에 UI 클로즈를 전달.
        ///// </summary>
        //public void OnCloseUI()
        //{
        //    StateMap[Current_State].OnCloseUI();
        //}

        public bool GetState(STATE _STATE, out UnitStateBase state)
        {
            if (StateMap.ContainsKey(_STATE))
            {
                state = StateMap[_STATE] as UnitStateBase;
                return(true);
            }

            state = null;
            return(false);
        }
예제 #2
0
    public void OnAttach(BuffController _controller, Unit _Caster, Unit _Target, SkillTables.BuffInfo _buffInfo, float _affectValue, BuffDurationType _Type, float _BuffDuration)
    {
        controller = _controller;
        buffInfo   = _buffInfo;
        //ability = _ability;
        BuffDurType  = _Type;
        BuffDuration = _BuffDuration;
        Caster       = _Caster;
        Target       = _Target;

        byte overLapCount = _buffInfo.overLapCount;

        if (overLapCount == 0)
        {
            overLapCount = 1;
        }

        //< 중첩 카운트 체크
        if (overLapCount <= AccrueCount)
        {
            //BuffController.BuffInfoStringShow(_Caster, _Target, buffInfo, "(Max)");
            return;
        }

        //< 능력치부터 적용
        AffectBuff(_affectValue, (type) =>
        {
            if (!type)
            {
                //< 적용부터 실패했다면 바로 버프를 삭제시켜줌
                controller.DetachBuff(this, true);
                BuffController.BuffInfoStringShow(_Caster, _Target, buffInfo, "抵抗");
                return;
            }

            //< 머리위에 띄워주기위함
            BuffController.BuffInfoStringShow(_Caster, _Target, buffInfo, "");

            //< 값 누적
            affectedValue += _affectValue;

            //< 데이터 적용
            AccrueCount++;
            affectValue = _affectValue;

            //< 무적관련 버프일경우에는 이미 버프중에 무적이 걸려있을때에 이전 이펙트를 삭제시켜준다.
            switch ((BuffType)_buffInfo.buffType)
            {
            case BuffType.AllImmune:
            case BuffType.AttackImmune:
            case BuffType.SkillImmune:
                controller.SetImmuneEffect(false);
                break;
            }

            Live = true;

            //< 버프에따른 이펙트를 붙인다
            SetEffect(true);

            //< 버프 아이콘 이름 대입
            if (BuffIcon == "")
            {
                UnitStateBase _UnitStateBase = null;
                if (Caster != null && Caster.FSM.GetState(UnitState.Skill, out _UnitStateBase) && _UnitStateBase is SkillState && (_UnitStateBase as SkillState).actionData != null)
                {
                    BuffIcon = _LowDataMgr.instance.GetLowDataIcon((_UnitStateBase as SkillState).actionData.Icon);
                }
                else
                {
                    BuffIcon = buffInfo.icon;
                }
            }

            //< 버프 유지시간 대입
            LifeTime = _BuffDuration;

            //< 틱 시간 대입
            TickTime = buffInfo.tic;

            //if (SkillAbility.SkillDebugMode && _Caster.UnitType == UnitType.Unit && SimulationGameInfo.SimulationGameCheck)
            //    Debug.Log("버프 생성 : " + (BuffType)_buffInfo.buffType + " , LifeTime " + LifeTime + " , TickTime" + TickTime, Target.gameObject);
        });
    }
예제 #3
0
 // ------------------------------------------------------------------------------------ //
 public void setUnitState(UnitStateBase unitState)
 {
     if (state != null) {
         state.destroyState();
     }
     state = unitState;
     state.initialize(this);
 }