ojh050118 / Circle

Fanmade game client of "A Dance of Fire and Ice" (ADOFAI).
MIT License
7 stars 3 forks source link

Add support for reading .circlez #78

Closed ojh050118 closed 2 years ago

ojh050118 commented 2 years ago

매우 큰 변경사항에 따라 이 PR에서 변경되지 않은 파일도 확인해야합니다. 현재 올바르게 작동합니다.

주요 변경 사항

.circlez 파일을 지원합니다.

기존에 파일을 임포트 하려면 직접 리소스들을 폴더에 복사/이동을 해주어야 했습니다. 이 과정은 꽤 귀찮고 까다로우며 모바일 디바이스에서 하기 힘들었습니다. 그래서 새로운 파일 형식을 만들기로 결정했으며 비트맵에 필요한 모든리소스를 압축한 파일로 만들었습니다. Settings - Maintenance - Import beatmap을 통해 파일을 임포트 할 수 있습니다.

리소스를 비트맵 별로 분리합니다.

기존 저장 방식은 리소스 종류 별로 저장소를 만들어 엑세스 했습니다. 이 방식 때문에 쉬운 리소스 관리/엑세스와 중복되는 리소스 재사용 가능에 따라 낮은 저장 용량 등 이점이 있었습니다. 하지만 중복되는 리소스가 있으면 이름을 바꿔 수정해야 했고, 어느 리소스가 어느 비트맵에 쓰이는지 알 수 없었습니다.

저장 구조는 다음과 같습니다:

모든 비트맵 리소스에 대한 관리는 BeatmapStorage에서 관리 하며 리소스에 엑세스 하려면 리소스 파일의 부모 폴더/리소스 와 같이 엑세스 해야합니다. 이전 저장 구조에서 완전한 마이그레이션이 준비되었습니다.

BeatmapInfoBeatmap으로 변경되었으며 비트맵 파일에 대한 기본 정보를 제공하는 BeatmapInfo가 추가되었습니다.

위에 설명한 저장 방식 변경으로 리소스에 접근이 힘들어졌습니다. BeatmapInfoFileInfo와 같은 기본적인 정보를 제공하며 비트맵에 쓰이는 리소스의 절대/상대경로 등을 제공합니다.

게임 창 컨테이너를 BufferedContainer에서 GameScreenContainer로 변경되었습니다.

클래스 이름이 컨테이너의 용도와 맞지 않아 GameScreenContainer를 만들었습니다.

기타

ojh050118 commented 2 years ago

변경사항과 관련있는 클래스를 한번 살펴보았습니다. 나중에 일관성 없는 코드를 찾으면 수정해야합니다.