private void AddActorState(IBuff buff, SkillBuffData buffData) { if (buffData.State != (int)ActorSkillState.None) { var stateData = SkillUtil.GetSkillStateData(buffData.State); int key = stateData.StateType; if (this.stateMap.ContainsKey(key)) { var number = this.stateMap[key]; this.stateMap[key] = number + 1; } else { this.stateMap.Add(key, 1); buff.GetTarget()?.AddState((ActorSkillState)key); } } }
private void RemoveActorState(IBuff buff, SkillBuffData buffData) { if (buffData.State != (int)ActorSkillState.None) { var stateData = SkillUtil.GetSkillStateData(buffData.State); int key = stateData.StateType; if (this.stateMap.ContainsKey(key)) { var number = this.stateMap[key]; var newValue = number - 1; if (newValue <= 0) { this.stateMap.Remove(key); buff.GetTarget()?.RemoveState((ActorSkillState)key); } else { this.stateMap[key] = newValue; } } } }