사실 Enum을 제대로 활용한 것인지 잘모르겠습니다. 다만, Enum을 공부했을 때 불변하는 데이터(상수)들에 대해 데이터베이스처럼 사용할 수 있을 것 같다는 생각이 들었습니다. 그리고 무엇보다 개인적으로 사이트를 운영하는 것이라 돈이 청구되는 것은 막고 싶었습니다.
사이트에서 노출될 생산품을 중심으로 한 데이터입니다. 모두 데이터가 비슷했으면 편했겠지만, 최상급의 경우 재료가 다양한 방향으로 들어갈 수 있기 때문에 다소 복잡해진 모습입니다.
category : 재료 아이템의 카테고리 종류
productId : 생산품 Id (최상급 시리즈는 productId가 같습니다.)
produceCost : 생산비
produceQuantity : 생산 수량
energyCost : 활동력 소모량
normalQuantity : 특정 카테고리의 일반 등급 재료 요구 수량
uncommonQuantity : 특정 카테고리의 고급 등급 재료 요구 수량
rareQuantity : 특정 카테고리의 희귀 등급 재료 요구 수량
기본적으로 검색 키워드로써 사용하기 위한 Enum이지만, 이 중 unit은 계산에 사용됩니다.
뒤에 나올 Items Enum 에서 재료 아이템을 특정하기 위해 사용됩니다.
이것도 기본적으로 검색 키워드로써 사용하기 위한 Enum이고, 순서만 보면 됩니다.
3개 단위로 Category가 바뀌는 형태로 만들었습니다.
Category Enum의 unit
normal 재료 : unit x 3 번째 아이템
uncommon 재료 : unit x 3 + 1 번째 아이템
rare 재료 : unit x 3 + 2 번째 아이템
빨간색 박스 부분이 위에서 설명한 부분입니다.
Factory Enum의 Category -> Category Enum의 unit -> 재료 아이템을 특정 지음.
floor: 내림, ceil: 올림, round: 반올림
제작비 = Math.floor(소모골드 x (100 - 영지 골드소모 감소)/100) + 재료값
판매 수수료 = Math.ceil(융화재료 판매 가격 / 20)
매출 = 1.05(대성공) x 제작 수량 x (융화재료 판매 가격 - 판매 수수료)
활동력 소모량 = Math.floor(활동력 소모량 x (100-영지 활동력 소모량 감소) / 100)
일일 제작횟수 = 24 x 6 x 영지의 기운 회복량(10분마다 회복) / 제작 활동력 소모량
순이익 = 매출 - 제작비
하루수익 = Math.round(순수익 x 일일 제작횟수)
하루 유지비 = 1.3(3일 등록 수수료) x 매출 x 융화재료 판매 가격/(융화재료 판매 가격 - 수수료) x 일일제작횟수 + 40 x 제작비(공장은 계속 돌아가니까)
최대 유지비(3일) = Math.round(하루 유지비 x 3 - 2 x 40 x 제작비)
활동력 구매 = 30000(영지의기운(중)10개) x 순수익 / 활동력소모량 - 1.44 x 크리스탈가격 x 20/19(5%수수료)