개요
CharacterModules/CharacterInfo/Wrapper
책임
- CharacterInfo 폴더가 규칙을 따르는지 검증한다.
- 컴포넌트별 래퍼를 생성하고 수명 주기를 추적해 중복 생성, 누수, 스트리밍 지연을 방지한다.
- 컴포넌트 이름 기반 조회 API를 제공해 호출자가 폴더 구조를 직접 순회하지 않도록 캡슐화한다.
- 스트리밍 지연으로 하위 폴더가 늦게 도착하는 경우에도 지연 등록/콜백을 통해 일관된 접근을 제공한다.
Constructors
fromFolder
(characterInfoFolder: Folder) -> (CharacterInfoWrapper) CharacterInfo 폴더를 직접 전달받아 래퍼를 생성한다. 폴더 명이 CharacterInfo 가 아니거나 Folder 가 아닌 경우 에러를 발생시킨다. 기존 하위 폴더를 즉시 스캔해 컴포넌트를 등록한다.
fromCharacterModel
(characterModel: Model) -> (CharacterInfoWrapper) Model 인스턴스에서 CharacterInfo 하위 폴더를 찾은 뒤 래핑한다. 폴더가 없거나 모델이 CollectionService 의 Character 태그를 갖지 않으면 에러르 반환한다.
Properties
Instance
Instance
래핑 중인 CharacterInfo 폴더. 외부에서 직접 수정하지 않고 조회 전용으로 사용한다.
직접 Attribute 를 :SetAttribute 로 조정하면, 잘못된 Attribute 값을 넣을 경우 검증이나 디버깅이 어렵기 때문.
또한 GetAttribute 의 경우 테이블이나 저장하지 못하는 값이 있기 때문에 직렬화->저장->역직렬화 순서를 거쳐야할 수 있기에,
내부 메소드인 :SetProperty와 :GetProperty를 사용해야한다.
CharacterModel
Model?
CharacterInfo 를 소유한 캐릭터 모델.
아직 캐릭터 모델에 들어가지 않았거나, fromFolder 로만 생성된 경우 nil 일 수 있다.
Maid
Maid
컴포넌트 파괴, 이벤트 연결 해제를 담당하는 정리자. Destroy 호출 시 전부 정리한다.
IsDestroyed
boolean
Destroy 호출로 래퍼가 해제되었는지 명시적으로 추적한다.