Commit Graph

20 Commits

Author SHA1 Message Date
c0cbea42a2 Merge pull request 'Add deck pile inspector UI' (#24) from feature/deck-pile-inspector into main
Reviewed-on: #24
2026-06-10 00:24:38 +09:00
de6e12c765 Add deck pile inspector UI 2026-06-10 00:17:00 +09:00
62e76f7db2 feat(map01): 주황버섯 추격 몬스터 배치 + 카메라 시점 미세조정
- map01: StaticMonsterTemplate → 주황버섯(ChaseMonster 모델) 교체
  (애니메이션 move/stand/jump/hit/die·히트박스·위치 x 5.2 갱신, 이동은 턴전투용 정지)
- 타일맵 TemplateRUID 변경
- 카메라 cameraOffsetY -1 → -0.83 (data/camera.json + MapCamera.codeblock)
- 메이커 저장 재직렬화 포함: common.gamelogic 수치 표기(0→0.0), map02~11 컴포넌트 순서, ui/DefaultGroup.ui

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 00:14:43 +09:00
861442e2c1 Merge main into feature/slay-deck-controller — B~E6a 카드시스템 통합 + 메인 메뉴 이식
main의 35커밋(B 전투통합~E6a 멀티act)을 브랜치에 통합. 충돌 해결:
- tools/gen-slaydeck.mjs: main(B~E6a) 생성기 채택 + 브랜치 메인 메뉴(MainMenu UI·ShowMainMenu/BindMenuButtons/StartNewGame/SetEntityEnabled·OnBeginPlay→메뉴) 이식
- ui/DefaultGroup.ui·SlayDeckController.codeblock: 통합 생성기로 재생성
- map10·모델: main 채택 후 freeze 도구(freeze-turn-monsters/player) 재적용
정적 검증: 문법·JSON 유효·생성기 결정적·메뉴/B~E6a 양쪽 유지·freeze 적용.
⚠️ Maker 연결 해제로 메뉴→게임 런타임 검증은 미수행(사용자 메이커 확인 필요).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 13:29:28 +09:00
5ebc781f81 feat(E5): 유물 시스템 — 훅 패시브 + 3획득경로
훅 기반 유물(패시브) + 시작/엘리트/상점 획득.

- data/relics.json: 유물 4종(강철심장 combatStart 방어+6, 에너지코어 turnStart 에너지+1, 흡혈 cardPlayed HP+1, 황금우상 combatReward 골드+10) + startingRelic + relicPool
- ApplyRelics(hook): RunRelics 순회·effect 적용. 4지점 연결(StartCombat/StartPlayerTurn/PlayCard Attack/CheckCombatEnd)
- 획득: AddRelic 공용 — StartRun 시작 유물(C), 엘리트 승리 무작위(A), 상점 BuyRelic 골드-60(B)
- UI: CombatHud 유물 바(RenderRelics)·ShopHud 유물 슬롯
- 생성기: relics.json 로드/검증/luaRelicsTable, RELIC_PRICE=60
- 메이커 Play 검증: 방어+6·에너지4·공격HP+1·승리골드+25·엘리트/상점 유물 획득
- 범위 밖: 부정 유물·조건부 효과·유물 제거·보스 유물

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 03:53:37 +09:00
0400291939 feat(E4): 상점/휴식 노드 — 골드 소비·HP 회복
맵에 상점/휴식 노드 추가, 진입 시 전투 대신 상호작용 UI로 분기.

- data/map.json: 4행 맵에 rest(휴식)·shop(상점) 노드 추가(enemy 없음)
- 생성기: enemy 선택적 검증/직렬화, MapHud 노드 y 행수 비례 중앙정렬, TYPE_KO에 상점/휴식
- PickNode 타입 분기: shop→ShowShop, rest→ShowRest, 그 외→StartCombat
- 상점: ShowShop(카드3 무작위)·RenderShop·BuyCard(골드-30·RunDeck+1·재구매/부족 가드)
- 휴식: ShowRest(HP+30 상한 클램프)
- LeaveNode(상점/휴식 공용 나가기→ShowMap)
- UI: ShopHud(카드3·가격·골드·나가기)·RestHud(회복 정보·나가기), 상수 CARD_PRICE=30·REST_HEAL=30
- 메이커 Play 검증: 상점 구매(부족/재구매 무시 포함)·휴식 회복·맵 분기 정상
- 알려진 튜닝: 골드/승리 15 < 카드값 30 → 경제 밸런싱 필요(sim-balance 활용)
- 범위 밖: 카드 제거(덱 보기 UI)·유물(E5)·저장(E6)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 03:35:05 +09:00
15975d7f51 feat(E3): 분기 맵 노드 진행 — 경로 선택·적 차등·보스 클리어
단일 경로 자동 진행을 분기 맵 네비게이션으로 확장.

- data/map.json: 분기 DAG(start + nodes: type/enemy/row/col/next). A,B→C,D,E→BOSS
- data/enemies.json: slime_elite(HP70)·slime_boss(HP120) 추가
- SlayDeckController: Enemies(전체 적)·MapNodes·MapStart·CurrentNodeId·CurrentEnemyId 속성
- StartRun→맵 빌드·ShowMap, PickNode(도달성 검증)→StartCombat(적은 self.Enemies에서)
- ShowMap/IsReachable(boolean)/RenderMap(도달 가능 노드만 활성·강조)/PickNode
- 승리→보상→ShowMap 복귀, 보스 노드 승리 시 '런 클리어!'
- MapHud UI: 노드 버튼(행=y/col=x), 타입+적 라벨, 모달 배경
- 생성기: method() returnType 파라미터, 다중 적/맵 Lua 직렬화 헬퍼
- 메이커 Play 검증: 맵→A→보상→C(엘리트)→보스→런 클리어, 도달불가 노드 무시
- 범위 밖(후속): 상점/휴식(E4)·유물(E5)·저장(E6)·절차적 맵·연결선

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 03:18:49 +09:00
e9b6d9c6c0 feat(E1+E2): 런 루프 코어 — 연속 전투·카드 보상·덱 성장
단일 전투를 N전투 런으로 확장(로그라이크 메타 첫 조각).

- 런 상태: RunDeck(보유 카드)·Gold·Floor·RunLength·RewardChoices·RunActive (SlayDeckController 확장)
- StartRun(영속 초기화·버튼 1회 바인딩) vs StartCombat(전투별 초기화·RunDeck에서 드로·Floor++) 분리
- 플레이어 HP 전투 간 유지, BindButtons를 StartRun 1회 호출로 이동(핸들러 중첩 버그 예방)
- 승리: 골드 +15 → Floor<RunLength면 OfferReward(카드 3택1), 아니면 '런 클리어!'
- PickReward: 선택 카드 RunDeck 추가(건너뛰기=추가 안 함)→다음 전투. 입력잠금 가드
- UI: CombatHud 층/골드 표시, RewardHud(보상 카드 3+건너뛰기) 생성
- 런 파라미터(RUN_LENGTH=3·GOLD_PER_WIN=15)는 생성기 상수(향후 외부화)
- 메이커 Play 검증: 전투→보상→덱+1→다음전투→3전투 런 클리어, 패배·입력잠금 정상

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 02:27:38 +09:00
8789330a4e 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>
2026-06-09 01:25:25 +09:00
788167b1ae carddeck(B): CombatHud 적 패널 정렬·정수 표기 수정
런타임 검증에서 발견된 시각 결함 2건 수정.

- 적 텍스트(이름/HP/방어/의도)를 EnemyBg 패널(y=300) 위로 정렬 (기존 center 배치로 패널과 분리됨)
- HP/방어/에너지 등 codeblock number Property를 string.format("%d")로 정수 표기 (Lua tostring의 .0 제거)

생성기 단일 소스에서 재생성. 메이커 Play로 정렬·정수 갱신 확인.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 01:02:56 +09:00
bd02865f4f carddeck(B): 카드 전투 통합 — 적/플레이어 전투 상태·의도·승패
PlayCard가 토스트 대신 실제 효과를 적용하도록 통합.

- 카드 데이터에 damage/block 수치 필드 추가 (desc 파싱 폐기)
- 전투 상태: 플레이어 HP/Block, 적 HP/Block/의도(결정적 사이클)
- PlayCard: Attack→적 HP 감소(방어 우선 차감), Skill→플레이어 Block 증가
- EndPlayerTurn→적 턴(의도 실행)→다음 플레이어 턴, 승패 판정
- CombatHud UI: 적 패널(이름/HP/방어/의도)·플레이어 패널(HP/방어)·결과 텍스트
- 수치(플레이어80/적45/의도10·6·방8)는 임시 placeholder (D에서 캐릭터/몬스터별 외부화)

생성기 단일 소스(tools/gen-slaydeck.mjs)에서 생성. 결정적 출력 확인.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 00:04:26 +09:00
b1921ee843 gen-slaydeck: 유효한 GUID 생성으로 수정 (DeckHud·카드 자식 entity id)
기존 guid() prefix+4hex는 8-4-4-4-12 형식이 아니어서 Maker가 적용 거부(LEA-3054).
네임스페이스 바이트 기반 hex GUID로 변경하고, 기존 자식 id도 재생성 시 정규화.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 01:11:44 +09:00
f508952960 재생성: 카드 클릭 사용·균일 카드·핸들러 클로저 반영
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 01:08:40 +09:00
maple
8eab9a75ac Fix generated UI GUIDs 2026-06-07 23:33:44 +09:00
maple
8c397cbc09 Add main menu flow 2026-06-07 23:27:44 +09:00
maple
cfc41ac3d9 Add slay deck controller UI 2026-06-07 22:35:00 +09:00
d1e8723954 5번 카드에 리부트 프로토콜 이미지 카드 적용 (로컬 워크스페이스 스프라이트)
invincible belief.png를 Maker 로컬 워크스페이스 스프라이트로 임포트해
Card5 SpriteGUIRenderer의 ImageRUID로 지정. 클라우드 계정 리소스는
로컬 워크스페이스 플레이에서 로드되지 않아 로컬 임포트 RUID 사용.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 11:54:33 +09:00
c9c761db04 카드 손패를 화면 하단에 배치 (AlignmentOption BottomCenter 교정) + 단색 카드 배경
MSW가 AlignmentOption으로 앵커를 결정하는 점을 반영해 컨테이너를 BottomCenter(6)로,
카드 내부 텍스트는 Center 기준 오프셋으로 교정. 카드 배경은 단색 채움으로 변경.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 05:58:25 +09:00
700e3ee373 전투 화면 하단에 카드 손패 5장 목업 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 05:49:34 +09:00
0b576aa3b5 Initial commit: SlayMaple 로컬 워크스페이스 + Gitea 연동
- MSW 로컬 워크스페이스 데이터(Global/RootDesk/map/ui) 형상관리 시작
- Slay the Spire 풍 덱빌더 전투 프레임워크 초안 포함
- README.md: 협업(로컬 워크스페이스+git) 방식·구조·프레임워크 현황 문서화
- .gitignore: Authorization 토큰 포함된 .mcp.json/.codex 제외

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 00:59:27 +09:00