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의 자산이기 때문에, 폰트 등을 사용하지 않았습니다.
배포를 목적으로 시작된 프로젝트였으나, 접근성이 떨어져 개발을 포기하였습니다.
앱 내용
실행 시 기본으로 SDVX III에서 기본으로 사용되는 게이지를 기반으로 사용자의 메인화면 왼쪽 상단에 표시됩니다. 게이지가 우측을 향하고 있으나 왼쪽 상단에 나오는 이유는 맥의 기본 파일정렬이 오른쪽이기 때문입니다.
맥의 배터리 잔량에 따라 게이지가 줄며 배터리 상태를 데스크톱에서 확인할 수 있습니다.
본작의 게임에서는 Effective Rate, Permissive Rate, Excessive Rate 그리고 Blastive Rate 총 4개의 게이지가 있습니다. 본 앱에서도 취향에 맞게 게이지를 테마로 제공하여 원하는 테마로 배터리 잔량을 확인할 수 있습니다.
크기는 1배, 0.5배, 0.25배를 지원하며, 위치는 이동할 수 없습니다.
노멀게이지는 원작의 Effective Rate 기준에 맞게 70%의 클리어 기준에 맞게 색상이 변합니다.
배터리와 이미지 계산 방식
배터리 잔량은 IOPSCopyPowerSourcesList
함수를 이용하여 IOPSCopyPowerSourcesInfo
의 takeRetainedValue
를 CFArray로써 받아오고, Array속의 값에서 kIOPSCurrentCapacityKey
를 찾아 그 값을 반환시킴으로써 얻어오고, 각 테마마다 고정적으로 지정되어 있는 높이값과 게이지 시작점의 Prefix를 기반으로, 테마의 기본 이미지를 tiffRepresentation
을 통해 Data로 변환 후 source와 image의 두 변수를 만든 후,
((게이지 Prefix + (배터리 잔량 * 창의 높이 / 100) / 스케일) + 게이지 시작점의 좌표값)
을 기준으로 y좌표와 높이값을 구하여 이미지를 crop 후 반환된 것을 게이지가 비어있는 부분에 덮어씌워 잔량을 표시합니다.
옆의 퍼센트 게이지는 아래의 식을 이용하여
((게이지 Prefix + (배터리 잔량 * 창의 높이 / 100) / 스케일)
인디케이터.origin.y
의 값을 설정하고, 퍼센트의 이미지를 설정한 후 CATransaction.commit()
을 통해 애니메이션 효과와 함께 높이를 조정합니다.