중간고사가 끝났기에 기말고사 전까지 헬테이커 스티커 모바일버전을 만들어 보려고 한다
과연 시간 내에 완성할 수 있을 것인가...
일단 어떻게 만들었는지 까먹었기 때문에 다시 코드를 봐야한다
디스코드 봇 개발하는 동안은 wsl에서 vim을 사용했기에 오랜만에 보는 visual studio다
다행히 주석이 적혀는 있다
기본적인 구조를 보면 MainWindow와 ControlWindow로 나누어져있다
MainWindow는 실제로 화면에 오버레이로 출력되는 캐릭터들이 표시되는 창이고
ControlWindow는 MainWindow를 관리하기 위한 창이다
각각 Window들은 xaml파일과 cs파일로 나누어져있는데
xaml파일은 html이나 css등과 비슷하게 보여지는 부분을 작성하는 부분이고
cs파일은 C#파일로 실제로 동작하는 코드를 작성한다
웹에 비유하면 프론트엔드와 백엔드라고 말할 수 있겠다
xaml코드는 그냥 디자인부분이니 딱히 다시 볼 필요는 없는것 같다
MainWinodw.xaml.cs
변수정의 및 초기화
일단 주석이 꽤 많다
필요없는 코드를 주석처리한 것도 있고 설명을 위한 주석도 있고...
MenuItem은 요런거다
트레이 아이콘을 우클릭했을 때 나오는 메뉴? 버튼? 이다
NotifyIcon은 트레이 아이콘이다
나머지는 주석에 대충 설명되어 있으니 넘어가자
메인 코드
frame_sheet의 길이를 가지는 Bitmap과 ImageSource배열을 선언한다
캐릭터의 MenuItem을 선언한다
각 캐릭터들에 대한 클릭이벤트를 추가한다
나중에 설명할 Animation함수를 통해 애니메이션을 재생하고
frame을 넘겨줄 timer를 사용한다
마우스 드래그, 우클릭, 더블클릭 등의 이벤트를 추가한다
NotifyIcon에 MenuItem들을 추가한다
설정을 초기화한다
ContextMenu에 추가할 MenuItem들의 클릭이벤트를 정의한다
각각 MenuItem들을 추가한다
마지막으로 menu를 NotifyIcon에 넣어주면 메인코드는 끝난다
사용자 정의 함수
위 코드에서 사용하는 함수들의 정의다
마우스 클릭 이벤트 관련 함수
애니메이션 재생 관련 함수
대충 기다란 사진을 프레임별로 나누는 함수다
나누어진 프레임들은 time에 추가했던 NextFrame에서 프레임이 넘겨진다
얘는 뭐하는 애지...
그리고 마지막으로 캐릭터 선택 함수들...
캐릭터 하나마다 저딴짓을 해놔서 코드가 조금 이상하다...
Mainwindow는 이렇게 끝났다
ControlWindow.xaml.cs
변수 정의 및 초기화
아까 MainWindow.xaml.cs에서 정의했던 것들도 여기 몇개 보인다
스크램블 코드의 전형적인 모습이다
미리보기 이미지를 만들면서 더 엉망이 되었던것 같다
얘는 주석도 제대로 안달아놨다
다행인건 변수이름이 그나마 직관적인거다
필요한 변수를 정의하고 WMP Player와 List<MainWindow>를 추가한다
저 List는 프레임을 맞추기 위해서 만들어둔것 같다
메인코드
Mainwindow 코드와 큰 틀은 비슷하다
추가로 설명할 부분은 별로 없는 것 같다
ControlWindow에서 MainWindow로 가는 변수들을 위한 timer와
버튼에 마우스를 올렸을 때 나오는 미리보기 이미지들을 위한 buttonTimer
그리고 WMP Player를 무한반복으로 설정하고 기본적인 URL을 설정한다
이 함수를 ControlWindow에서 MainWindow를 생성하는 함수다
새로운 MainWindow를 열고 windowList에 추가한다
이부분도 MainWindow 코드와 많이 겹치는 것 같은데 windowList에 있는 모든 Mainwindow의 fps를 맞춰주는 함수다
볼륨과 fps 슬라이더 관련 함수다
여기도 역시나 좋지 못한 코드다...
대충 이정도로 코드를 훑어봤다
다음에는 예전에 했던 floating widget를 다시 만들어보자...
노래를 1.5배속으로 틀고서 작업하니 왠지 긴박한 느낌과 함께 빨리해야할 것만 같은 느낌이 들었다...
'프로젝트 > 헬테이커 스티커 M' 카테고리의 다른 글
헬테이커 스티커 M#3 - 프레임 속도 선택 (0) | 2021.06.04 |
---|---|
헬테이커 스티커 M#2 - 애니메이션 (0) | 2021.05.21 |
헬테이커 스티커 M#1 - Floating Widget 다시 만들기 (1) | 2021.05.14 |
(구)헬테이커 스티커 모바일 만들기- floating widget (3) | 2020.08.11 |
헬테이커 스티커 모바일 개발 예정 (4) | 2020.07.02 |