///// <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); }
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); }); }
// ------------------------------------------------------------------------------------ // public void setUnitState(UnitStateBase unitState) { if (state != null) { state.destroyState(); } state = unitState; state.initialize(this); }