SDVXBatteryWidget

요약

개발범위 전체
레포지터리 주소 https://github.com/CenoX/SDVXBatteryWidget
레포지터리 생성 일자 2016. 05. 09..
사용한 언어 Swift
사용한 개발 툴 (IDE) Xcode
활성화 된 기능 N/A
사용된 라이브러리 N/A
릴리즈 하지 않음

개요

KONAMI Amusement의 리듬게임인 Sound Voltex Gravity Wars(아카이브)의 인 게임 라이프게이지인 rate gauge를 배터리에 적용하여 맥 데스크톱 환경에 표시해주는 애플리케이션입니다.

안드로이드 홈 위젯으로 개발된 것을 macOS 애플리케이션으로 포팅하였습니다. 따라서 게이지의 리소스는 shiftpsh가 제작한 것을 받아 그대로 사용하였습니다. 실제 인 게임에 제작된 리소스는 KONAMI의 자산이기 때문에, 폰트 등을 사용하지 않았습니다.

배포를 목적으로 시작된 프로젝트였으나, 접근성이 떨어져 개발을 포기하였습니다.

앱 내용

스크린샷 2017-05-27 오전 5.26.21

실행 시 기본으로 SDVX III에서 기본으로 사용되는 게이지를 기반으로 사용자의 메인화면 왼쪽 상단에 표시됩니다. 게이지가 우측을 향하고 있으나 왼쪽 상단에 나오는 이유는 맥의 기본 파일정렬이 오른쪽이기 때문입니다.

스크린샷 2017-05-27 오전 6.09.41

스크린샷 2017-05-27 오전 6.09.40

맥의 배터리 잔량에 따라 게이지가 줄며 배터리 상태를 데스크톱에서 확인할 수 있습니다.

스크린샷 2017-05-27 오전 6.11.07

본작의 게임에서는 Effective Rate, Permissive Rate, Excessive Rate 그리고 Blastive Rate 총 4개의 게이지가 있습니다. 본 앱에서도 취향에 맞게 게이지를 테마로 제공하여 원하는 테마로 배터리 잔량을 확인할 수 있습니다.

크기는 1배, 0.5배, 0.25배를 지원하며, 위치는 이동할 수 없습니다.

제목 없음-1

노멀게이지는 원작의 Effective Rate 기준에 맞게 70%의 클리어 기준에 맞게 색상이 변합니다.

배터리와 이미지 계산 방식

배터리 잔량은 IOPSCopyPowerSourcesList 함수를 이용하여 IOPSCopyPowerSourcesInfotakeRetainedValue를 CFArray로써 받아오고, Array속의 값에서 kIOPSCurrentCapacityKey를 찾아 그 값을 반환시킴으로써 얻어오고, 각 테마마다 고정적으로 지정되어 있는 높이값과 게이지 시작점의 Prefix를 기반으로, 테마의 기본 이미지를 tiffRepresentation을 통해 Data로 변환 후 source와 image의 두 변수를 만든 후,

((게이지 Prefix + (배터리 잔량 * 창의 높이 / 100) / 스케일) + 게이지 시작점의 좌표값)

을 기준으로 y좌표와 높이값을 구하여 이미지를 crop 후 반환된 것을 게이지가 비어있는 부분에 덮어씌워 잔량을 표시합니다.

옆의 퍼센트 게이지는 아래의 식을 이용하여

((게이지 Prefix + (배터리 잔량 * 창의 높이 / 100) / 스케일)

인디케이터.origin.y의 값을 설정하고, 퍼센트의 이미지를 설정한 후 CATransaction.commit()을 통해 애니메이션 효과와 함께 높이를 조정합니다.