28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
# 54. 접두사 테이블 리팩토링 (Prefix Table Refactoring)
|
|
|
|
## 1. 목표 (Goal)
|
|
- `ItemTable`에 하드코딩되어 있던 Normal 등급 접두사 로직(이름, 배율, 확률)을 `ItemPrefixTable`로 이동하여 데이터 기반으로 관리합니다.
|
|
- `ItemModifier` 클래스를 확장하여 스탯 배율(`multiplier`)과 가중치(`weight`)를 지원하도록 개선합니다.
|
|
|
|
## 2. 구현 상세 (Implementation Details)
|
|
|
|
### `ItemPrefixTable` 개선
|
|
- **`ItemModifier` 구조 변경:**
|
|
- `multiplier`: 퍼센트 기반 스탯 변경을 위한 필드 추가 (기본값 1.0).
|
|
- `weight`: 랜덤 선택 가중치를 위한 필드 추가 (기본값 1).
|
|
- **`normalPrefixes` 데이터 추가:**
|
|
- Crude (0.9, weight 25)
|
|
- Old (0.95, weight 25)
|
|
- Standard (1.0, weight 25, empty prefix)
|
|
- High-quality (1.1, weight 25)
|
|
|
|
### `ItemTable` 로직 수정
|
|
- **`createItem` 메서드:**
|
|
- 하드코딩된 `if-else` 확률 로직을 제거.
|
|
- `ItemPrefixTable.normalPrefixes`를 사용하여 가중치 기반 랜덤 선택(Weighted Random Selection) 알고리즘 구현.
|
|
- 선택된 Modifier의 `multiplier`를 적용하여 스탯 계산.
|
|
|
|
## 3. 결과 (Result)
|
|
- 접두사 데이터 추가 및 밸런스 조정이 `ItemPrefixTable` 수정만으로 가능해졌습니다.
|
|
- 코드 중복이 줄어들고 확장성이 향상되었습니다.
|