Fix: Restore unified Topics folder and reorganize specialized category folders
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# 🛠️ CombatSystem: [[Reference|Reference]]Error Re[[Solution|Solution]] Guide
|
||||
|
||||
## 1. Context (배경)
|
||||
전투 시스템(`CombatSystem.ts`) 리팩토링 중, 런타임에서 엔진이 중단되는 치명적인 참조 오류가 발생하였습니다. 본 문서는 해당 오류의 원인과 해결 방법, 그리고 향후 유사 사례 방지를 위한 가이드라인을 기록합니다.
|
||||
|
||||
## 2. Issue Breakdown (오류 분석)
|
||||
- **Error Type**: `ReferenceError: damage is not defined`
|
||||
- **Location**: `CombatSystem.ts` (Collision Detection Loop)
|
||||
- **Root Cause**: 블록 스코프(`if/else`) 내부에서 `damage` 변수를 사용하기 전에 `let` 혹은 `const`를 통한 명시적 선언이 누락됨. 자바스크립트의 비엄격 모드 혹은 리팩토링 과정에서의 선언부 유실이 원인이었습니다.
|
||||
|
||||
## 3. Resolution (해결 방법)
|
||||
탄환의 공격력을 계산하기 전, 명시적으로 스코프 내에 변수를 선언하도록 수정하였습니다.
|
||||
```typescript
|
||||
// Fix [[Logic|Logic]]
|
||||
let damage = bullet.dmg; // 명시적 선언 및 초기화
|
||||
if (isCritical) {
|
||||
damage *= criticalMultiplier;
|
||||
}
|
||||
```
|
||||
|
||||
## 4. Prevention Policy (재발 방지 대책)
|
||||
- **Strict Declaration**: 모든 변수는 반드시 `const` 또는 `let`을 사용하여 선언하며, 선언되지 않은 변수의 암묵적 전역화(Implicit Global)를 철저히 금지한다.
|
||||
- **Linter Integration**: `no-undef` 규칙을 강화하여 빌드 타임에서 미선언 변수 참조를 사전에 차단한다.
|
||||
- **Unit Test**: 충돌 판정 로직에 대한 단위 테스트를 수행하여 데미지 계산 루프의 무결성을 검증한다.
|
||||
|
||||
---
|
||||
**Related Cluster**: Runtime Pipeline
|
||||
**Last Updated**: 2026-04-23
|
||||
Reference in New Issue
Block a user