체력 % 증가라는 Ability가 있는데, 이 Ability가 다양한 아이템과 컨텐츠에 붙어있어서 각 아이템과 컨텐츠가 각각 수치가 다를꺼거든.
아이템의 경우 레벨에 따라 점차 증가할거고, 컨텐츠도 모두 공식이 다를거라서 하나의 공식만 들어있는 Formula를 만들어서 Ability와 붙여놓고,
이걸 관리하는 Manager를 만들어서 공식을 찾아서 결과값을 가져다 쓰는 구조를 만드는 중...
대충 된것 같긴한데, 말이 안되진않은 생각이겠지?..ㄷㄷ
컨텐츠마다 공식이 다른데 어빌리티 자체에 공식이 따로 붙어있을 이유가 뭐냐
무기에 3개의 조각이 붙고, 조각 1개에 3개의 옵션이 붙고 이런 구조다 보니 수치를 최종 산정할때 인벤토리 다 뒤져서 수치를 다 취합해오는 것보다 무기 획득시에 거기에 붙은 어빌리티를 한 곳에 모아놓거든. 그래서 어빌리티 관리 테이블에 가면 체력 증가(무기), 체력 증가(반지), 체력 증가(캐릭터) 이런 식으로 들어가있어. 그래서 체력 증가 최종 합산할때 무기레벨을 체력 증가 어빌리티에 전달하면, 어빌리티가 무기 관련 수치 산정 공식을 반영해서 계산 후 결과값을 도출하고, 반지 레벨을 전달하면, 반지 수치 관련 공식을 사용해서 최종 수치를 도출하고, 이렇게 나온 수치를 다 합해서 최종 체력 증가 x% 이런식으로 계산할려고.
델리게이트 이벤트 걸어서 +, +% 수치만 뽑아서 이벤트 때 결과 값만 업뎃치면 되는거 아닌가? 인벤토리를 왜 뒤져? 그럼 버프 관리는 어케해? 버프가 1000개면 그거 다 체크해봐???
지금 UI에 출력할때는 레벨업하고 나면 변경되는 수치는 이벤트로 받아서 갱신하고 있긴해. 단지 플레이어가 소지한 어빌리티 각각 어떤 컨텐츠를 통해 올라갔는지 내역이라고 해야되나 그걸 테이블로 만들어서 모두 가지고 있긴한데, 어차피 결과값도 그 테이블에 새로 값 들어올때만 갱신해서, 최종 결과값을 계산해놓고 사용하긴할꺼야. 생각해보니 처음에 그냥 합산값 결정해놓고, 변경될때 변경량만큼만 반영하는게 낫나 싶기도 하네. 굳이 어빌리티별로 다 모아놓을 필요는 없을려나...