Dev Log - dopple

  • Date: 2025-12-05

Start Log

  • 20251205 (시작 시간 기록 없음)

Agent Info

  • Worker: dopple
  • Model: Claude Sonnet 4.5
  • Session: UI 시스템 개선 작업

To Do

  1. ✅ TutorMessage 시스템 구현 (자동 Hide 기능 포함)
  2. ✅ AutoDespawnItem 시스템 구현 (HorizontalBox 자동 정렬)
  3. ⬜ UMG 블루프린트 설정 및 테스트

Compact Log 1

  • 20251205 (현재 시간)

작업 요약

1. TutorMessage 자동 Hide 시스템 구현

  • MainWidget에 3초 타이머 기반 자동 숨김 기능 추가
  • 메시지 연속 호출 시 타이머 초기화 로직 구현
  • Show/Hide 애니메이션 연동 및 펜딩 메시지 처리

2. AutoDespawnItem 시스템 구현

  • 자동으로 생성 후 3초 뒤 사라지는 아이템 위젯 클래스 생성
  • FadeOut 애니메이션 기반 부드러운 제거 효과
  • HorizontalBox Right Alignment를 활용한 자동 정렬

변경 파일:

  • Source/Onepiece/UI/Public/UTutorMessage.h: 간소화 (MessageText만 유지)
  • Source/Onepiece/UI/Private/UTutorMessage.cpp: NativeConstruct 제거
  • Source/Onepiece/UI/Public/UMainWidget.h: TutorMessage 자동 Hide 타이머 추가, ItemHorizontalBox 및 AutoDespawnItem 지원 추가
  • Source/Onepiece/UI/Private/UMainWidget.cpp: SetTutorMessage 타이머 로직, AddItemToBox 구현
  • Source/Onepiece/UI/Public/UAutoDespawnItem.h: (신규) 자동 제거 아이템 위젯 클래스
  • Source/Onepiece/UI/Private/UAutoDespawnItem.cpp: (신규) Lifetime 타이머 및 FadeOut 로직

주요 작업:

  • TutorMessage 3초 자동 Hide 기능 구현 완료
  • AutoDespawnItem 클래스 생성 및 생명주기 관리 로직 구현
  • MainWidget에 ItemHorizontalBox 연동 및 AddItemToBox 함수 추가
  • 애니메이션 콜백 기반 안전한 위젯 제거 처리

Commit 정보

Summary (EN): feat: implement TutorMessage auto-hide and AutoDespawnItem system

세부 내역:

  1. "TutorMessage 자동 숨김 기능 추가"

    • 3초 타이머 기반 자동 Hide 애니메이션 재생
    • 메시지 연속 호출 시 기존 타이머 클리어 및 재시작
    • 펜딩 메시지 처리 로직 (Hide → Show 연계)
  2. "AutoDespawnItem 시스템 구현"

    • 생성 후 3초 대기 → 0.3초 FadeOut → 자동 제거
    • UAutoDespawnItem 클래스 생성 (Lifetime 타이머 관리)
    • MainWidget에 ItemHorizontalBox 및 AddItemToBox 추가
    • HorizontalBox Right Alignment를 통한 자동 오른쪽 정렬
  3. "코드 개선 및 로깅 추가"

    • null 체크 및 안전성 강화
    • LogOnepiece를 활용한 디버깅 로그 추가
    • 애니메이션 콜백 기반 정확한 타이밍 제어

Next To Do

  1. UMG 블루프린트 설정

    • WBP_TutorMessage 생성 (MessageText TextBlock 추가)
    • WBP_MainWidget 애니메이션 설정 (TutorShowAnim, TutorHideAnim)
    • WBP_Item_120 생성 (Parent: UAutoDespawnItem, FadeOutAnim 추가)
    • ItemHorizontalBox 설정 (Horizontal Alignment: Right)
  2. 통합 테스트

    • TutorMessage 표시 및 자동 숨김 확인
    • 아이템 추가 및 자동 제거 확인
    • 연속 호출 시 정상 동작 검증
  3. 최종 커밋 및 문서화


Compact Log 2

  • 20251205 (추가 작업 완료)

작업 요약

UAutoDespawnItem을 UResultStatWidget 기반으로 변경

  • ItemIcon (UImage) → ItemWidget (UResultStatWidget)으로 변경
  • 단순 아이콘 표시에서 Grade/Score/Rate/Symbol 등 다양한 통계 표시 지원으로 확장
  • AddItemToBox() 반환값 추가하여 외부에서 ItemWidget 설정 가능

변경 파일:

  • Source/Onepiece/UI/Public/UAutoDespawnItem.h: ItemIcon 제거, ItemWidget (UResultStatWidget) 추가
  • Source/Onepiece/UI/Private/UAutoDespawnItem.cpp: SetIcon/SetIconTint 함수 제거, UResultStatWidget include로 변경
  • Source/Onepiece/UI/Public/UMainWidget.h: AddItemToBox() 반환 타입 변경 (void → UAutoDespawnItem*)
  • Source/Onepiece/UI/Private/UMainWidget.cpp: AddItemToBox()에서 생성된 아이템 반환하도록 수정

주요 작업:

  • UAutoDespawnItem이 UResultStatWidget을 활용하도록 리팩토링
  • AddItemToBox() 호출 시 UAutoDespawnItem* 반환하여 유연성 증가
  • SetIcon/SetIconTint 제거 (UResultStatWidget의 기능으로 대체)
  • 외부에서 ItemWidget 직접 제어 가능 (SetWidgetType, SetGradeValue 등)

Commit 정보

Summary (EN): refactor: change UAutoDespawnItem to use UResultStatWidget

세부 내역:

  1. "UAutoDespawnItem 구조 변경"

    • ItemIcon (UImage) → ItemWidget (UResultStatWidget)
    • 단일 아이콘에서 다양한 통계 위젯으로 확장
    • SetIcon/SetIconTint 함수 제거
  2. "AddItemToBox 반환값 추가"

    • void → UAutoDespawnItem* 반환
    • 호출자가 생성된 아이템의 ItemWidget을 직접 설정 가능
    • Grade, Score, Rate, Symbol 등 다양한 표시 타입 지원
  3. "사용성 개선"

    • UResultStatWidget의 모든 기능 활용 가능
    • ColorType을 통한 일관된 스타일 적용
    • 더 풍부한 UI 표현 지원

Next To Do

  1. UMG 블루프린트 수정

    • WBP_Item_120의 ItemIcon → ItemWidget으로 변경
    • ItemWidget을 WBP_ResultStatWidget 타입으로 설정
    • FadeOutAnim 타겟을 ItemWidget으로 변경
  2. 사용 예시 테스트

    • Grade 타입: SetWidgetType(Grade), SetGradeValue(Grade_S)
    • Score 타입: SetWidgetType(Score), SetScoreValue(1250.0f)
    • Rate 타입: SetWidgetType(Rate), SetRateValue(0.85f)
    • Symbol 타입: SetWidgetType(Symbol), SetSymbolValue(0.95f)
  3. 통합 테스트 및 최종 커밋


Compact Log 3

  • 20251206 13:55

작업 요약

Holder 시스템 구현 완료 (정답 Luggage 배치 및 비주얼 피드백)

  • Holder에 올라간 Luggage가 정답이면 공중에 띄우고 회전시키는 시스템 구현
  • Holder 머티리얼 파라미터 제어로 활성화 상태 비주얼 표시
  • 정답 Luggage의 모든 상호작용 차단 (pickup, hook, interact, widget)
  • 네트워크 복제 지원으로 멀티플레이어 환경 대응

변경 파일:

  • Source/Onepiece/Prop/Public/AHolder.h: Tick 함수 추가, Replicated 프로퍼티 설정, Visual Settings 추가
  • Source/Onepiece/Prop/Private/AHolder.cpp: Replication 설정, Tick에서 Luggage 회전 제어, 머티리얼 파라미터 초기화 및 설정, HasAuthority 체크 추가
  • Source/Onepiece/Interactable/Public/luggage.h: SetAllCollision(bool) 함수 추가
  • Source/Onepiece/Interactable/Private/luggage.cpp: SetAllCollision 구현 (모든 컴포넌트 충돌 제어 + InteractableComp DetectionRange 제어)

주요 작업:

  1. Holder 비주얼 피드백 시스템

    • BeginPlay에서 MeshComponent 머티리얼 파라미터 "Activate" 초기화 (0.0f)
    • 정답 시 "Activate" = 1.0f, 오답 시 "Activate" = 0.0f 설정
    • ActivatedHeightOffset, RotationSpeed를 블루프린트에서 조정 가능
  2. 정답 Luggage 회전 시스템

    • Luggage를 범용 클래스로 유지 (회전 로직 제거)
    • Holder의 Tick에서 CurrentLuggage 회전 직접 제어
    • HoldPos보다 ActivatedHeightOffset만큼 위에 배치
  3. 상호작용 완전 차단

    • Luggage::SetAllCollision(bool) 함수 구현
    • BoxComp, Mesh1/2/3Comp 충돌 비활성화
    • InteractableComp->DetectionRange 비활성화 (위젯 노출 방지)
    • Overlap 이벤트 차단으로 pickup, hook, interact 모두 불가
  4. 네트워크 복제 지원

    • AHolder에 bReplicates = true 설정
    • bIsActivated, CurTarget을 Replicated로 설정
    • GetLifetimeReplicatedProps 구현
    • OnBoxOverlapBegin에 HasAuthority() 체크 추가
    • 모든 클라이언트에서 동일한 Holder 상태 동기화

Commit 정보

Summary (EN): feat: implement Holder activation system with visual feedback and network replication

세부 내역:

  1. "Holder 활성화 비주얼 시스템 구현"

    • MeshComponent 머티리얼 파라미터 "Activate" 제어 (0.0f ↔ 1.0f)
    • 정답 Luggage 공중 배치 (ActivatedHeightOffset)
    • Holder Tick에서 정답 Luggage 회전 제어 (RotationSpeed)
  2. "Luggage 상호작용 완전 차단"

    • SetAllCollision(bool) 함수 추가 (활성화/비활성화 모두 지원)
    • 모든 컴포넌트 충돌 제어 (BoxComp, Mesh1/2/3Comp)
    • InteractableComp->DetectionRange 제어로 위젯 노출 방지
    • pickup, hook, interact 모두 차단
  3. "네트워크 복제 지원"

    • AHolder에 Replication 설정 (bReplicates, GetLifetimeReplicatedProps)
    • bIsActivated, CurTarget 복제
    • HasAuthority() 체크로 서버에서만 로직 실행
    • 모든 클라이언트에서 동일한 상태 보장
  4. "코드 구조 개선"

    • Luggage는 범용 클래스로 유지 (회전 로직 제거)
    • Holder가 Luggage 제어 책임 (명확한 책임 분리)
    • SetAllCollision으로 간결한 충돌 제어

Next To Do

  1. 블루프린트 설정

    • BP_Holder의 ActivatedHeightOffset 조정 (기본값: 50.0f)
    • BP_Holder의 RotationSpeed 조정 (기본값: 90.0f)
    • Holder Mesh 머티리얼에 "Activate" 스칼라 파라미터 추가
  2. 통합 테스트

    • 정답 Luggage 배치 시 공중에서 회전하는지 확인
    • Holder 머티리얼이 활성화 상태로 변경되는지 확인
    • 정답 Luggage 상호작용 완전 차단 확인 (pickup, hook, widget)
    • 멀티플레이어 환경에서 모든 클라이언트 동기화 확인
  3. 최종 커밋 및 다음 기능 구현


results matching ""

    No results matching ""