feat(D): 카드/적 데이터 외부화 (data/*.json)

Cards·시작덱·적 정의를 data/cards.json·data/enemies.json으로 분리, gen-slaydeck가 로드·검증·주입.

- data/cards.json: 카드 정의(name/cost/kind/damage|block/desc) + starterDeck
- data/enemies.json: 적 정의(name/maxHp/intents) + activeEnemy
- 생성기: JSON 로드 + fail-fast 검증(미존재 카드/적 id) + Lua 직렬화 헬퍼
- StartCombat·EnemyMaxHp·카드 미리보기·CombatHud 초기텍스트를 데이터에서 생성
- codeblock 출력은 기존과 동일(순수 리팩터), ui 미리보기는 카드 종류 순환 표시
- 검증: 데이터 1장 수치 변경→재생성 반영 확인, 결정성, fail-fast(exit1), 메이커 Play 정상
- 수치는 임시 placeholder, 추후 메이플 IP대로 카드/적 확장 예정

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-09 01:25:25 +09:00
parent 9550302137
commit 8789330a4e
4 changed files with 99 additions and 46 deletions

View File

@@ -2059,9 +2059,9 @@
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.86,
"g": 0.42,
"b": 0.38,
"r": 0.42,
"g": 0.55,
"b": 0.85,
"a": 1
},
"DropShadow": false,
@@ -2514,7 +2514,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "타격",
"Text": "방어",
"UseOutLine": true,
"Enable": true
}
@@ -2702,7 +2702,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "피해 6",
"Text": "방어도 5",
"UseOutLine": true,
"Enable": true
}
@@ -2811,9 +2811,9 @@
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.42,
"g": 0.55,
"b": 0.85,
"r": 0.86,
"g": 0.42,
"b": 0.38,
"a": 1
},
"DropShadow": false,
@@ -3078,7 +3078,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "1",
"Text": "2",
"UseOutLine": true,
"Enable": true
}
@@ -3266,7 +3266,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "방어",
"Text": "강타",
"UseOutLine": true,
"Enable": true
}
@@ -3454,7 +3454,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "방어도 5",
"Text": "피해 10",
"UseOutLine": true,
"Enable": true
}
@@ -3563,9 +3563,9 @@
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.42,
"g": 0.55,
"b": 0.85,
"r": 0.86,
"g": 0.42,
"b": 0.38,
"a": 1
},
"DropShadow": false,
@@ -4018,7 +4018,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "방어",
"Text": "타격",
"UseOutLine": true,
"Enable": true
}
@@ -4206,7 +4206,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "방어도 5",
"Text": "피해 6",
"UseOutLine": true,
"Enable": true
}
@@ -4315,9 +4315,9 @@
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.86,
"g": 0.42,
"b": 0.38,
"r": 0.42,
"g": 0.55,
"b": 0.85,
"a": 1
},
"DropShadow": false,
@@ -4582,7 +4582,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "2",
"Text": "1",
"UseOutLine": true,
"Enable": true
}
@@ -4770,7 +4770,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "강타",
"Text": "방어",
"UseOutLine": true,
"Enable": true
}
@@ -4958,7 +4958,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "피해 10",
"Text": "방어도 5",
"UseOutLine": true,
"Enable": true
}